Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | 2x 2x 343x 343x 343x 46x 46x 91x 91x 3x 88x 91x 65x 92x 92x 65x 91x 46x 343x 271x 271x 343x 2x 2x 2x 2x 18x 18x 18x 18x 18x 29x 23x 23x 23x 18x 18x 18x 2x 22x 22x 22x 22x 22x 30x 30x 29x 29x 29x 30x 22x 22x 2x 378x 378x 179x 329x 104x 212x 212x 150x 150x 212x 124x 39x 46x 36x 36x 46x 39x 378x 378x 2x 1x 1x 1x 1x 1x 1x 1x 1x | import { hyphenate, isArray, isObject, isString } from './general' export type NormalizedStyle = Record<string, string | number> export function normalizeStyle( value: unknown, ): NormalizedStyle | string | undefined { if (isArray(value)) { const res: NormalizedStyle = {} for (let i = 0; i < value.length; i++) { const item = value[i] const normalized = isString(item) ? parseStringStyle(item) : (normalizeStyle(item) as NormalizedStyle) if (normalized) { for (const key in normalized) { res[key] = normalized[key] } } } return res } else if (isString(value) || isObject(value)) { return value } } const listDelimiterRE = /;(?![^(]*\))/g const propertyDelimiterRE = /:([^]+)/ const styleCommentRE = /\/\*[^]*?\*\//g export function parseStringStyle(cssText: string): NormalizedStyle { const ret: NormalizedStyle = {} cssText .replace(styleCommentRE, '') .split(listDelimiterRE) .forEach(item => { if (item) { const tmp = item.split(propertyDelimiterRE) tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim()) } }) return ret } export function stringifyStyle( styles: NormalizedStyle | string | undefined, ): string { let ret = '' if (!styles || isString(styles)) { return ret } for (const key in styles) { const value = styles[key] if (isString(value) || typeof value === 'number') { const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key) // only render valid values ret += `${normalizedKey}:${value};` } } return ret } export function normalizeClass(value: unknown): string { let res = '' if (isString(value)) { res = value } else if (isArray(value)) { for (let i = 0; i < value.length; i++) { const normalized = normalizeClass(value[i]) if (normalized) { res += normalized + ' ' } } } else if (isObject(value)) { for (const name in value) { if (value[name]) { res += name + ' ' } } } return res.trim() } export function normalizeProps( props: Record<string, any> | null, ): Record<string, any> | null { if (!props) return null let { class: klass, style } = props if (klass && !isString(klass)) { props.class = normalizeClass(klass) } if (style) { props.style = normalizeStyle(style) } return props } |