2018-10-17 03:47:51 +08:00
|
|
|
import { isString } from '@vue/shared'
|
|
|
|
|
2019-10-16 22:31:40 +08:00
|
|
|
type Style = string | Partial<CSSStyleDeclaration> | null
|
|
|
|
|
|
|
|
export function patchStyle(el: Element, prev: Style, next: Style) {
|
|
|
|
const style = (el as HTMLElement).style
|
2018-09-19 23:35:38 +08:00
|
|
|
if (!next) {
|
|
|
|
el.removeAttribute('style')
|
2018-10-17 03:47:51 +08:00
|
|
|
} else if (isString(next)) {
|
2018-09-19 23:35:38 +08:00
|
|
|
style.cssText = next
|
|
|
|
} else {
|
2018-09-25 07:11:14 +08:00
|
|
|
for (const key in next) {
|
2019-10-16 22:31:40 +08:00
|
|
|
style[key] = next[key] as string
|
2018-09-19 23:35:38 +08:00
|
|
|
}
|
2018-10-17 03:47:51 +08:00
|
|
|
if (prev && !isString(prev)) {
|
2018-09-19 23:35:38 +08:00
|
|
|
for (const key in prev) {
|
2018-09-25 07:11:14 +08:00
|
|
|
if (!next[key]) {
|
2018-09-25 06:51:58 +08:00
|
|
|
style[key] = ''
|
2018-09-19 23:35:38 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|