| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- /* @flow */
- import { escape, noUnitNumericStyleProps } from '../util'
- import { hyphenate } from 'shared/util'
- import { getStyle } from 'web/util/style'
- export function genStyle (style: Object): string {
- let styleText = ''
- for (const key in style) {
- const value = style[key]
- const hyphenatedKey = hyphenate(key)
- if (Array.isArray(value)) {
- for (let i = 0, len = value.length; i < len; i++) {
- styleText += normalizeValue(hyphenatedKey, value[i])
- }
- } else {
- styleText += normalizeValue(hyphenatedKey, value)
- }
- }
- return styleText
- }
- function normalizeValue(key: string, value: any): string {
- if (
- typeof value === 'string' ||
- (typeof value === 'number' && noUnitNumericStyleProps[key]) ||
- value === 0
- ) {
- return `${key}:${value};`
- } else {
- // invalid values
- return ``
- }
- }
- export default function renderStyle (vnode: VNodeWithData): ?string {
- const styleText = genStyle(getStyle(vnode, false))
- if (styleText !== '') {
- return ` style=${JSON.stringify(escape(styleText))}`
- }
- }
|