refactor: avoid unnecessary style normalization
This commit is contained in:
parent
1ef0d03829
commit
369997bb1d
@ -4,12 +4,6 @@ import { isObservable } from '@vue/core'
|
|||||||
const nonNumericRE = /acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i
|
const nonNumericRE = /acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i
|
||||||
|
|
||||||
export function patchStyle(el: any, prev: any, next: any, data: any) {
|
export function patchStyle(el: any, prev: any, next: any, data: any) {
|
||||||
// If next is observed, the user is likely to mutate the style object.
|
|
||||||
// We need to normalize + clone it and replace data.style with the clone.
|
|
||||||
if (isObservable(next)) {
|
|
||||||
data.style = normalizeStyle(next)
|
|
||||||
}
|
|
||||||
|
|
||||||
const { style } = el
|
const { style } = el
|
||||||
if (!next) {
|
if (!next) {
|
||||||
el.removeAttribute('style')
|
el.removeAttribute('style')
|
||||||
@ -17,9 +11,14 @@ export function patchStyle(el: any, prev: any, next: any, data: any) {
|
|||||||
style.cssText = next
|
style.cssText = next
|
||||||
} else {
|
} else {
|
||||||
// TODO: warn invalid value in dev
|
// TODO: warn invalid value in dev
|
||||||
next = normalizeStyle(next)
|
const normalizedNext: any = normalizeStyle(next)
|
||||||
for (const key in next) {
|
// If next is observed, the user is likely to mutate the style object.
|
||||||
let value = next[key]
|
// We need to replace data.style with the normalized clone.
|
||||||
|
if (isObservable(next)) {
|
||||||
|
data.style = normalizedNext
|
||||||
|
}
|
||||||
|
for (const key in normalizedNext) {
|
||||||
|
let value = normalizedNext[key]
|
||||||
if (typeof value === 'number' && !nonNumericRE.test(key)) {
|
if (typeof value === 'number' && !nonNumericRE.test(key)) {
|
||||||
value = value + 'px'
|
value = value + 'px'
|
||||||
}
|
}
|
||||||
@ -28,7 +27,7 @@ export function patchStyle(el: any, prev: any, next: any, data: any) {
|
|||||||
if (prev && typeof prev !== 'string') {
|
if (prev && typeof prev !== 'string') {
|
||||||
prev = normalizeStyle(prev)
|
prev = normalizeStyle(prev)
|
||||||
for (const key in prev) {
|
for (const key in prev) {
|
||||||
if (!next[key]) {
|
if (!normalizedNext[key]) {
|
||||||
style.setProperty(key, '')
|
style.setProperty(key, '')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user