| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.transformRoot = void 0;
- const compiler_core_1 = require("@vue/compiler-core");
- const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
- const ast_1 = require("../ast");
- const types_1 = require("@babel/types");
- const codegen_1 = require("../codegen");
- const transformRoot = (node, context) => {
- if (node.type !== 0 /* NodeTypes.ROOT */) {
- return;
- }
- if (context.bindingCssVars.length) {
- node.children.forEach((child) => {
- if (child.type !== 1 /* NodeTypes.ELEMENT */) {
- return;
- }
- addCssVars(child, context);
- });
- }
- };
- exports.transformRoot = transformRoot;
- const CSS_VARS = '__cssVars()';
- function addCssVars(node, context) {
- const styleProp = (0, compiler_core_1.findProp)(node, 'style', true);
- if (!styleProp) {
- node.props.push((0, uni_cli_shared_1.createBindDirectiveNode)('style', CSS_VARS));
- }
- else {
- if (styleProp.exp?.type === 4 /* NodeTypes.SIMPLE_EXPRESSION */) {
- let expr = (0, ast_1.parseExpr)(styleProp.exp.content, context);
- if ((0, types_1.isArrayExpression)(expr)) {
- expr.elements.push((0, types_1.identifier)(CSS_VARS));
- }
- else {
- expr = (0, types_1.arrayExpression)([expr, (0, types_1.identifier)(CSS_VARS)]);
- }
- styleProp.exp.content = (0, codegen_1.genBabelExpr)(expr);
- }
- }
- }
|