-
Notifications
You must be signed in to change notification settings - Fork 7
fix: Set style properties directly in mutation #211
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: sentry-v2
Are you sure you want to change the base?
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -34,7 +34,7 @@ | |
'now you can use replayer.getMirror() to access the mirror instance of a replayer,' + | ||
'\r\n' + | ||
'or you can use record.mirror to access the mirror instance during recording.'; | ||
/** @deprecated */ | ||
Check warning on line 37 in packages/rrweb/src/utils.ts
|
||
export let _mirror: DeprecatedMirror = { | ||
map: {}, | ||
getId() { | ||
|
@@ -118,7 +118,7 @@ | |
set(value) { | ||
// put hooked setter into event loop to avoid of set latency | ||
setTimeout(() => { | ||
d.set!.call(this, value); | ||
}, 0); | ||
if (original && original.set) { | ||
original.set.call(this, value); | ||
|
@@ -131,7 +131,7 @@ | |
|
||
// copy from https://github.com/getsentry/sentry-javascript/blob/b2109071975af8bf0316d3b5b38f519bdaf5dc15/packages/utils/src/object.ts | ||
export function patch( | ||
source: { [key: string]: any }, | ||
name: string, | ||
replacement: (...args: unknown[]) => unknown, | ||
): () => void { | ||
|
@@ -670,3 +670,28 @@ | |
): ReturnType<typeof window.clearTimeout> { | ||
return getImplementation('clearTimeout')(...rest); | ||
} | ||
|
||
/** | ||
* Takes a styles attribute string and converts it to key value pairs | ||
* @param styles - The full stype attributes string | ||
chargome marked this conversation as resolved.
Show resolved
Hide resolved
|
||
* | ||
*/ | ||
export function splitStyleAttributes(styles: string) { | ||
const splitStyles = styles.split(';'); | ||
return splitStyles | ||
.filter((value) => value.split(':').length == 2) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Q: Is this safe? Could styles not include colons in other places? Not 100% sure, just want to double check! There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. That will probably be an issue sooner or later, you're right |
||
.map((style) => { | ||
let [property, value] = style.trim().split(':'); | ||
|
||
property = property.trim(); | ||
value = value.trim(); | ||
|
||
// Convert kebab-case to camelCase | ||
const camelCasedProperty = property.replace( | ||
/-([a-z])/g, | ||
(match, letter: string) => letter.toUpperCase(), | ||
); | ||
|
||
return { property: camelCasedProperty, value }; | ||
}); | ||
} |
Uh oh!
There was an error while loading. Please reload this page.