import { parseText } from 'compiler/parser/text-parser' import { parseStyleText } from 'web/util/style' import { getAndRemoveAttr, getBindingAttr, baseWarn } from 'compiler/helpers' import { ASTElement, CompilerOptions, ModuleOptions } from 'types/compiler' function transformNode(el: ASTElement, options: CompilerOptions) { const warn = options.warn || baseWarn const staticStyle = getAndRemoveAttr(el, 'style') if (staticStyle) { /* istanbul ignore if */ if (__DEV__) { const res = parseText(staticStyle, options.delimiters) if (res) { warn( `style="${staticStyle}": ` + 'Interpolation inside attributes has been removed. ' + 'Use v-bind or the colon shorthand instead. For example, ' + 'instead of
, use
.', el.rawAttrsMap['style'] ) } } el.staticStyle = JSON.stringify(parseStyleText(staticStyle)) } const styleBinding = getBindingAttr(el, 'style', false /* getStatic */) if (styleBinding) { el.styleBinding = styleBinding } } function genData(el: ASTElement): string { let data = '' if (el.staticStyle) { data += `staticStyle:${el.staticStyle},` } if (el.styleBinding) { data += `style:(${el.styleBinding}),` } return data } export default { staticKeys: ['staticStyle'], transformNode, genData } as ModuleOptions