houhaoyu@huawei.com

Signed-off-by: houhaoyu <houhaoyu@huawei.com>
Change-Id: I17e140c358493014c9ea14f22f173d3348e3c111
This commit is contained in:
houhaoyu
2022-01-19 17:55:44 +08:00
parent 87315d8ab2
commit bfe39b6ec1
+15 -8
View File
@@ -491,7 +491,7 @@ interface AnimationInfo {
export function bindComponentAttr(node: ts.ExpressionStatement, identifierNode: ts.Identifier, export function bindComponentAttr(node: ts.ExpressionStatement, identifierNode: ts.Identifier,
newStatements: ts.Statement[], log: LogInfo[], reverse: boolean = true, newStatements: ts.Statement[], log: LogInfo[], reverse: boolean = true,
isStylesAttr: boolean = false): void { isStylesAttr: boolean = false, isGlobalStyles: boolean = false): void {
let temp: any = node.expression; let temp: any = node.expression;
const statements: ts.Statement[] = []; const statements: ts.Statement[] = [];
const lastStatement: AnimationInfo = { statement: null, kind: false }; const lastStatement: AnimationInfo = { statement: null, kind: false };
@@ -499,13 +499,13 @@ export function bindComponentAttr(node: ts.ExpressionStatement, identifierNode:
if (ts.isPropertyAccessExpression(temp.expression) && if (ts.isPropertyAccessExpression(temp.expression) &&
temp.expression.name && ts.isIdentifier(temp.expression.name)) { temp.expression.name && ts.isIdentifier(temp.expression.name)) {
addComponentAttr(temp, temp.expression.name, lastStatement, statements, identifierNode, log, addComponentAttr(temp, temp.expression.name, lastStatement, statements, identifierNode, log,
isStylesAttr); isStylesAttr, isGlobalStyles);
temp = temp.expression.expression; temp = temp.expression.expression;
} else if (ts.isIdentifier(temp.expression)) { } else if (ts.isIdentifier(temp.expression)) {
if (!INNER_COMPONENT_NAMES.has(temp.expression.getText()) && if (!INNER_COMPONENT_NAMES.has(temp.expression.getText()) &&
!GESTURE_TYPE_NAMES.has(temp.expression.getText())) { !GESTURE_TYPE_NAMES.has(temp.expression.getText())) {
addComponentAttr(temp, temp.expression, lastStatement, statements, identifierNode, log, addComponentAttr(temp, temp.expression, lastStatement, statements, identifierNode, log,
isStylesAttr); isStylesAttr, isGlobalStyles);
} }
break; break;
} }
@@ -558,7 +558,7 @@ function updateArgumentFor$$(argument: any): ts.Expression {
function addComponentAttr(temp: any, node: ts.Identifier, lastStatement: any, function addComponentAttr(temp: any, node: ts.Identifier, lastStatement: any,
statements: ts.Statement[], identifierNode: ts.Identifier, log: LogInfo[], statements: ts.Statement[], identifierNode: ts.Identifier, log: LogInfo[],
isStylesAttr: boolean): void { isStylesAttr: boolean, isGlobalStyles: boolean): void {
const propName: string = node.getText(); const propName: string = node.getText();
if (propName === ATTRIBUTE_ANIMATION) { if (propName === ATTRIBUTE_ANIMATION) {
if (!lastStatement.statement) { if (!lastStatement.statement) {
@@ -595,8 +595,13 @@ function addComponentAttr(temp: any, node: ts.Identifier, lastStatement: any,
} else if (GLOBAL_STYLE_FUNCTION.has(propName) || INNER_STYLE_FUNCTION.has(propName)) { } else if (GLOBAL_STYLE_FUNCTION.has(propName) || INNER_STYLE_FUNCTION.has(propName)) {
const styleBlock: ts.Block = const styleBlock: ts.Block =
GLOBAL_STYLE_FUNCTION.get(propName) || INNER_STYLE_FUNCTION.get(propName); GLOBAL_STYLE_FUNCTION.get(propName) || INNER_STYLE_FUNCTION.get(propName);
bindComponentAttr(styleBlock.statements[0] as ts.ExpressionStatement, identifierNode, if (GLOBAL_STYLE_FUNCTION.has(propName)) {
statements, log, false, true); bindComponentAttr(styleBlock.statements[0] as ts.ExpressionStatement, identifierNode,
statements, log, false, true, true);
} else {
bindComponentAttr(styleBlock.statements[0] as ts.ExpressionStatement, identifierNode,
statements, log, false, true, false);
}
lastStatement.kind = true; lastStatement.kind = true;
} else if (propName === BIND_POPUP && temp.arguments.length === 2 && } else if (propName === BIND_POPUP && temp.arguments.length === 2 &&
temp.arguments[0].getText().match(/^\$\$(.|\n)+/)) { temp.arguments[0].getText().match(/^\$\$(.|\n)+/)) {
@@ -612,8 +617,10 @@ function addComponentAttr(temp: any, node: ts.Identifier, lastStatement: any,
if (!COMMON_ATTRS.has(propName)) { if (!COMMON_ATTRS.has(propName)) {
validateStateStyleSyntax(temp, log); validateStateStyleSyntax(temp, log);
} }
for (let i=0; i<temp.arguments.length; i++) { if (isGlobalStyles) {
temp.arguments[i] = traverseStylesAttr(temp.arguments[i]); for (let i=0; i<temp.arguments.length; i++) {
temp.arguments[i] = traverseStylesAttr(temp.arguments[i]);
}
} }
} }
statements.push(ts.factory.createExpressionStatement( statements.push(ts.factory.createExpressionStatement(