diff --git a/packages/mp-jsx-ts/_scripts/jsx2wxml/adapter.js b/packages/mp-jsx-ts/_scripts/jsx2wxml/adapter.js
new file mode 100644
index 000000000..7fa8e3697
--- /dev/null
+++ b/packages/mp-jsx-ts/_scripts/jsx2wxml/adapter.js
@@ -0,0 +1,69 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var Adapters;
+(function (Adapters) {
+ Adapters["weapp"] = "weapp";
+ Adapters["swan"] = "swan";
+ Adapters["alipay"] = "alipay";
+ Adapters["quickapp"] = "quickapp";
+ Adapters["tt"] = "tt";
+})(Adapters = exports.Adapters || (exports.Adapters = {}));
+const weixinAdapter = {
+ if: 'wx:if',
+ else: 'wx:else',
+ elseif: 'wx:elif',
+ for: 'wx:for',
+ forItem: 'wx:for-item',
+ forIndex: 'wx:for-index',
+ key: 'wx:key',
+ type: "weapp" /* weapp */
+};
+const swanAdapter = {
+ if: 's-if',
+ else: 's-else',
+ elseif: 's-elif',
+ for: 's-for',
+ forItem: 's-for-item',
+ forIndex: 's-for-index',
+ key: 's-key',
+ type: "swan" /* swan */
+};
+const alipayAdapter = {
+ if: 'a:if',
+ else: 'a:else',
+ elseif: 'a:elif',
+ for: 'a:for',
+ forItem: 'a:for-item',
+ forIndex: 'a:for-index',
+ key: 'a:key',
+ type: "alipay" /* alipay */
+};
+const ttAdapter = {
+ if: 'tt:if',
+ else: 'tt:else',
+ elseif: 'tt:elif',
+ for: 'tt:for',
+ forItem: 'tt:for-item',
+ forIndex: 'tt:for-index',
+ key: 'tt:key',
+ type: "tt" /* tt */
+};
+exports.Adapter = weixinAdapter;
+function setAdapter(adapter) {
+ switch (adapter.toLowerCase()) {
+ case "swan" /* swan */:
+ exports.Adapter = swanAdapter;
+ break;
+ case "alipay" /* alipay */:
+ exports.Adapter = alipayAdapter;
+ break;
+ case "tt" /* tt */:
+ exports.Adapter = ttAdapter;
+ break;
+ default:
+ exports.Adapter = weixinAdapter;
+ break;
+ }
+}
+exports.setAdapter = setAdapter;
+//# sourceMappingURL=adapter.js.map
\ No newline at end of file
diff --git a/packages/mp-jsx-ts/_scripts/jsx2wxml/adapter.js.map b/packages/mp-jsx-ts/_scripts/jsx2wxml/adapter.js.map
new file mode 100644
index 000000000..e00138eb7
--- /dev/null
+++ b/packages/mp-jsx-ts/_scripts/jsx2wxml/adapter.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/adapter.ts"],"names":[],"mappings":";;AAAA,IAAkB,QAMjB;AAND,WAAkB,QAAQ;IACxB,2BAAe,CAAA;IACf,yBAAa,CAAA;IACb,6BAAiB,CAAA;IACjB,iCAAqB,CAAA;IACrB,qBAAS,CAAA;AACX,CAAC,EANiB,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAMzB;AAaD,MAAM,aAAa,GAAY;IAC7B,EAAE,EAAE,OAAO;IACX,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,SAAS;IACjB,GAAG,EAAE,QAAQ;IACb,OAAO,EAAE,aAAa;IACtB,QAAQ,EAAE,cAAc;IACxB,GAAG,EAAE,QAAQ;IACb,IAAI,qBAAgB;CACrB,CAAA;AAED,MAAM,WAAW,GAAY;IAC3B,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,QAAQ;IAChB,GAAG,EAAE,OAAO;IACZ,OAAO,EAAE,YAAY;IACrB,QAAQ,EAAE,aAAa;IACvB,GAAG,EAAE,OAAO;IACZ,IAAI,mBAAe;CACpB,CAAA;AAED,MAAM,aAAa,GAAY;IAC7B,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,QAAQ;IAChB,GAAG,EAAE,OAAO;IACZ,OAAO,EAAE,YAAY;IACrB,QAAQ,EAAE,aAAa;IACvB,GAAG,EAAE,OAAO;IACZ,IAAI,uBAAiB;CACtB,CAAA;AAED,MAAM,SAAS,GAAY;IACzB,EAAE,EAAE,OAAO;IACX,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,SAAS;IACjB,GAAG,EAAE,QAAQ;IACb,OAAO,EAAE,aAAa;IACtB,QAAQ,EAAE,cAAc;IACxB,GAAG,EAAE,QAAQ;IACb,IAAI,eAAa;CAClB,CAAA;AAEU,QAAA,OAAO,GAAY,aAAa,CAAA;AAE3C,SAAgB,UAAU,CAAE,OAAiB;IAC3C,QAAQ,OAAO,CAAC,WAAW,EAAE,EAAE;QAC7B;YACE,eAAO,GAAG,WAAW,CAAA;YACrB,MAAK;QACP;YACE,eAAO,GAAG,aAAa,CAAA;YACvB,MAAK;QACP;YACE,eAAO,GAAG,SAAS,CAAA;YACnB,MAAK;QACP;YACE,eAAO,GAAG,aAAa,CAAA;YACvB,MAAK;KACR;AACH,CAAC;AAfD,gCAeC"}
\ No newline at end of file
diff --git a/packages/mp-jsx-ts/_scripts/jsx2wxml/class.js b/packages/mp-jsx-ts/_scripts/jsx2wxml/class.js
new file mode 100644
index 000000000..00b3679d5
--- /dev/null
+++ b/packages/mp-jsx-ts/_scripts/jsx2wxml/class.js
@@ -0,0 +1,616 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const t = require("babel-types");
+const utils_1 = require("./utils");
+const constant_1 = require("./constant");
+const lodash_1 = require("lodash");
+const render_1 = require("./render");
+const jsx_1 = require("./jsx");
+const adapter_1 = require("./adapter");
+const babel_generator_1 = require("babel-generator");
+function buildConstructor() {
+ const ctor = t.classMethod('constructor', t.identifier('constructor'), [t.identifier('props')], t.blockStatement([
+ t.expressionStatement(t.callExpression(t.identifier('super'), [
+ t.identifier('props')
+ ]))
+ ]));
+ return ctor;
+}
+function processThisPropsFnMemberProperties(member, path, args, binded) {
+ const propertyArray = [];
+ function traverseMember(member) {
+ const object = member.object;
+ const property = member.property;
+ if (t.isIdentifier(property)) {
+ propertyArray.push(property.name);
+ }
+ if (t.isMemberExpression(object)) {
+ if (t.isThisExpression(object.object) &&
+ t.isIdentifier(object.property) &&
+ object.property.name === 'props') {
+ if ("alipay" /* alipay */ === adapter_1.Adapter.type) {
+ if (binded)
+ args.shift();
+ path.replaceWith(t.callExpression(t.memberExpression(t.thisExpression(), t.identifier('__triggerPropsFn')), [
+ t.stringLiteral(propertyArray.reverse().join('.')),
+ t.arrayExpression(args)
+ ]));
+ }
+ else {
+ path.replaceWith(t.callExpression(t.memberExpression(t.thisExpression(), t.identifier('__triggerPropsFn')), [t.stringLiteral(propertyArray.reverse().join('.')), t.callExpression(t.memberExpression(t.arrayExpression([t.nullLiteral()]), t.identifier('concat')), [t.arrayExpression(args)])]));
+ }
+ }
+ traverseMember(object);
+ }
+ }
+ traverseMember(member);
+}
+class Transformer {
+ constructor(path, sourcePath, componentProperies) {
+ this.result = {
+ template: '',
+ components: [],
+ componentProperies: []
+ };
+ this.methods = new Map();
+ this.initState = new Set();
+ this.jsxReferencedIdentifiers = new Set();
+ this.customComponents = new Map();
+ this.anonymousMethod = new Map();
+ this.renderMethod = null;
+ this.customComponentNames = new Set();
+ this.usedState = new Set();
+ this.loopStateName = new Map();
+ this.customComponentData = [];
+ this.refs = [];
+ this.loopRefs = new Map();
+ this.anonymousFuncCounter = utils_1.incrementId();
+ this.buildPropsAnonymousFunc = (attr, expr, isBind = false) => {
+ const { code } = babel_generator_1.default(expr);
+ if (code.startsWith('this.props')) {
+ const methodName = utils_1.findMethodName(expr);
+ const hasMethodName = this.anonymousMethod.has(methodName) || !methodName;
+ const funcName = hasMethodName
+ ? this.anonymousMethod.get(methodName)
+ // 测试时使用1个稳定的 uniqueID 便于测试,实际使用5个英文字母,否则小程序不支持
+ : process.env.NODE_ENV === 'test' ? lodash_1.uniqueId('funPrivate') : `funPrivate${utils_1.createRandomLetters(5)}`;
+ this.anonymousMethod.set(methodName, funcName);
+ const newVal = isBind
+ ? t.callExpression(t.memberExpression(t.memberExpression(t.thisExpression(), t.identifier(funcName)), t.identifier('bind')), expr.arguments || [])
+ : t.memberExpression(t.thisExpression(), t.identifier(funcName));
+ attr.get('value.expression').replaceWith(newVal);
+ this.methods.set(funcName, null);
+ this.componentProperies.add(methodName);
+ if (hasMethodName) {
+ return;
+ }
+ const attrName = attr.node.name;
+ if (t.isJSXIdentifier(attrName) && attrName.name.startsWith('on')) {
+ this.componentProperies.add(`__fn_${attrName.name}`);
+ }
+ if (methodName.startsWith('on')) {
+ this.componentProperies.add(`__fn_${methodName}`);
+ }
+ const method = t.classMethod('method', t.identifier(funcName), [], t.blockStatement([
+ t.expressionStatement(t.callExpression(t.memberExpression(t.thisExpression(), t.identifier('__triggerPropsFn')), [t.stringLiteral(methodName), t.arrayExpression([t.spreadElement(t.identifier('arguments'))])]))
+ ]));
+ this.classPath.node.body.body = this.classPath.node.body.body.concat(method);
+ }
+ };
+ this.classPath = path;
+ this.sourcePath = sourcePath;
+ this.moduleNames = Object.keys(path.scope.getAllBindings('module'));
+ this.componentProperies = new Set(componentProperies);
+ this.compile();
+ }
+ setMultipleSlots() {
+ const body = this.classPath.node.body.body;
+ if (body.some(c => t.isClassProperty(c) && c.key.name === 'multipleSlots')) {
+ return;
+ }
+ const multipleSlots = t.classProperty(t.identifier('multipleSlots'), t.booleanLiteral(true));
+ multipleSlots.static = true;
+ body.push(multipleSlots);
+ }
+ createStringRef(componentName, id, refName) {
+ this.refs.push({
+ type: constant_1.DEFAULT_Component_SET.has(componentName) ? 'dom' : 'component',
+ id,
+ refName
+ });
+ }
+ createFunctionRef(componentName, id, fn) {
+ this.refs.push({
+ type: constant_1.DEFAULT_Component_SET.has(componentName) ? 'dom' : 'component',
+ id,
+ fn
+ });
+ }
+ handleRefs() {
+ const objExpr = this.refs.map(ref => {
+ return t.objectExpression([
+ t.objectProperty(t.identifier('type'), t.stringLiteral(ref.type)),
+ t.objectProperty(t.identifier('id'), t.stringLiteral(ref.id)),
+ t.objectProperty(t.identifier('refName'), t.stringLiteral(ref.refName || '')),
+ t.objectProperty(t.identifier('fn'), ref.fn ? ref.fn : t.nullLiteral())
+ ]);
+ });
+ this.classPath.node.body.body.push(t.classProperty(t.identifier('$$refs'), t.arrayExpression(objExpr)));
+ }
+ traverse() {
+ const self = this;
+ self.classPath.traverse({
+ JSXOpeningElement: (path) => {
+ const jsx = path.node;
+ const attrs = jsx.attributes;
+ if (!t.isJSXIdentifier(jsx.name)) {
+ return;
+ }
+ const loopCallExpr = path.findParent(p => utils_1.isArrayMapCallExpression(p));
+ const componentName = jsx.name.name;
+ const refAttr = jsx_1.findJSXAttrByName(attrs, 'ref');
+ if (!refAttr) {
+ return;
+ }
+ const idAttr = jsx_1.findJSXAttrByName(attrs, 'id');
+ let id = utils_1.createRandomLetters(5);
+ let idExpr;
+ if (!idAttr) {
+ if (loopCallExpr && loopCallExpr.isCallExpression()) {
+ const [func] = loopCallExpr.node.arguments;
+ let indexId = null;
+ if (t.isFunctionExpression(func) || t.isArrowFunctionExpression(func)) {
+ const params = func.params;
+ indexId = params[1];
+ }
+ if (indexId === null || !t.isIdentifier(indexId)) {
+ throw utils_1.codeFrameError(path.node, '在循环中使用 ref 必须暴露循环的第二个参数 `index`');
+ }
+ attrs.push(t.jSXAttribute(t.jSXIdentifier('id'), t.jSXExpressionContainer(t.binaryExpression('+', t.stringLiteral(id), indexId))));
+ }
+ else {
+ attrs.push(t.jSXAttribute(t.jSXIdentifier('id'), t.stringLiteral(id)));
+ }
+ }
+ else {
+ const idValue = idAttr.value;
+ if (t.isStringLiteral(idValue)) {
+ id = idValue.value;
+ }
+ else if (t.isJSXExpressionContainer(idValue)) {
+ if (t.isStringLiteral(idValue.expression)) {
+ id = idValue.expression.value;
+ }
+ else {
+ idExpr = idValue.expression;
+ }
+ }
+ }
+ if (t.isStringLiteral(refAttr.value)) {
+ if (loopCallExpr) {
+ throw utils_1.codeFrameError(refAttr, '循环中的 ref 只能使用函数。');
+ }
+ this.createStringRef(componentName, id, refAttr.value.value);
+ }
+ if (t.isJSXExpressionContainer(refAttr.value)) {
+ const expr = refAttr.value.expression;
+ if (t.isStringLiteral(expr)) {
+ if (loopCallExpr) {
+ throw utils_1.codeFrameError(refAttr, '循环中的 ref 只能使用函数。');
+ }
+ this.createStringRef(componentName, id, expr.value);
+ }
+ else if (t.isArrowFunctionExpression(expr) || t.isMemberExpression(expr)) {
+ const type = constant_1.DEFAULT_Component_SET.has(componentName) ? 'dom' : 'component';
+ if (loopCallExpr) {
+ this.loopRefs.set(path.parentPath.node, {
+ id: idExpr || id,
+ fn: expr,
+ type,
+ component: path.parentPath
+ });
+ }
+ else {
+ this.refs.push({
+ type,
+ id,
+ fn: expr
+ });
+ }
+ }
+ else {
+ throw utils_1.codeFrameError(refAttr, 'ref 仅支持传入字符串、匿名箭头函数和 class 中已声明的函数');
+ }
+ }
+ for (const [index, attr] of attrs.entries()) {
+ if (attr === refAttr) {
+ attrs.splice(index, 1);
+ }
+ }
+ },
+ ClassMethod(path) {
+ const node = path.node;
+ if (t.isIdentifier(node.key)) {
+ const name = node.key.name;
+ self.methods.set(name, path);
+ if (name === 'render') {
+ self.renderMethod = path;
+ path.traverse({
+ ReturnStatement(returnPath) {
+ const arg = returnPath.node.argument;
+ const ifStem = returnPath.findParent(p => p.isIfStatement());
+ if (ifStem && ifStem.isIfStatement() && arg === null) {
+ const consequent = ifStem.get('consequent');
+ if (consequent.isBlockStatement() && consequent.node.body.includes(returnPath.node)) {
+ returnPath.get('argument').replaceWith(t.nullLiteral());
+ }
+ }
+ }
+ });
+ }
+ if (name === 'constructor') {
+ path.traverse({
+ AssignmentExpression(p) {
+ if (t.isMemberExpression(p.node.left) &&
+ t.isThisExpression(p.node.left.object) &&
+ t.isIdentifier(p.node.left.property) &&
+ p.node.left.property.name === 'state' &&
+ t.isObjectExpression(p.node.right)) {
+ const properties = p.node.right.properties;
+ properties.forEach(p => {
+ if (t.isObjectProperty(p) && t.isIdentifier(p.key)) {
+ self.initState.add(p.key.name);
+ }
+ });
+ }
+ }
+ });
+ }
+ }
+ },
+ IfStatement(path) {
+ const test = path.get('test');
+ const consequent = path.get('consequent');
+ if (utils_1.isContainJSXElement(consequent) && utils_1.hasComplexExpression(test)) {
+ const scope = self.renderMethod && self.renderMethod.scope || path.scope;
+ utils_1.generateAnonymousState(scope, test, self.jsxReferencedIdentifiers, true);
+ }
+ },
+ ClassProperty(path) {
+ const { key: { name }, value } = path.node;
+ if (t.isArrowFunctionExpression(value) || t.isFunctionExpression(value)) {
+ self.methods.set(name, path);
+ }
+ if (name === 'state' && t.isObjectExpression(value)) {
+ value.properties.forEach(p => {
+ if (t.isObjectProperty(p)) {
+ if (t.isIdentifier(p.key)) {
+ self.initState.add(p.key.name);
+ }
+ }
+ });
+ }
+ },
+ JSXExpressionContainer(path) {
+ const attr = path.findParent(p => p.isJSXAttribute());
+ const isFunctionProp = attr && typeof attr.node.name.name === 'string' && attr.node.name.name.startsWith('on');
+ path.traverse({
+ MemberExpression(path) {
+ const sibling = path.getSibling('property');
+ if (path.get('object').isThisExpression() &&
+ (path.get('property').isIdentifier({ name: 'props' }) || path.get('property').isIdentifier({ name: 'state' })) &&
+ sibling.isIdentifier()) {
+ if (!isFunctionProp) {
+ self.usedState.add(sibling.node.name);
+ }
+ }
+ }
+ });
+ const expression = path.get('expression');
+ const scope = self.renderMethod && self.renderMethod.scope || path.scope;
+ const calleeExpr = expression.get('callee');
+ const parentPath = path.parentPath;
+ if (utils_1.hasComplexExpression(expression) &&
+ !isFunctionProp &&
+ !(calleeExpr &&
+ calleeExpr.isMemberExpression() &&
+ calleeExpr.get('object').isMemberExpression() &&
+ calleeExpr.get('property').isIdentifier({ name: 'bind' })) // is not bind
+ ) {
+ utils_1.generateAnonymousState(scope, expression, self.jsxReferencedIdentifiers);
+ }
+ else {
+ if (parentPath.isJSXAttribute()) {
+ if (!(expression.isMemberExpression() || expression.isIdentifier()) && parentPath.node.name.name === 'key') {
+ utils_1.generateAnonymousState(scope, expression, self.jsxReferencedIdentifiers);
+ }
+ }
+ }
+ if (!attr)
+ return;
+ const key = attr.node.name;
+ const value = attr.node.value;
+ if (!t.isJSXIdentifier(key)) {
+ return;
+ }
+ if (t.isJSXIdentifier(key) && key.name.startsWith('on') && t.isJSXExpressionContainer(value)) {
+ const expr = value.expression;
+ if (t.isCallExpression(expr) && t.isMemberExpression(expr.callee) && t.isIdentifier(expr.callee.property, { name: 'bind' })) {
+ self.buildPropsAnonymousFunc(attr, expr, true);
+ }
+ else if (t.isMemberExpression(expr)) {
+ self.buildPropsAnonymousFunc(attr, expr, false);
+ }
+ else if (t.isArrowFunctionExpression(expr)) {
+ const exprPath = attr.get('value.expression');
+ const stemParent = path.getStatementParent();
+ const counter = self.anonymousFuncCounter();
+ const anonymousFuncName = `anonymousFunc${counter}`;
+ const isCatch = utils_1.isContainStopPropagation(exprPath);
+ const classBody = self.classPath.node.body.body;
+ const loopCallExpr = path.findParent(p => utils_1.isArrayMapCallExpression(p));
+ let index;
+ if (loopCallExpr) {
+ index = lodash_1.get(loopCallExpr, 'node.arguments[0].params[1]');
+ if (!t.isIdentifier(index)) {
+ index = t.identifier('__index' + counter);
+ lodash_1.set(loopCallExpr, 'node.arguments[0].params[1]', index);
+ }
+ classBody.push(t.classProperty(t.identifier(anonymousFuncName + 'Array'), t.arrayExpression([])));
+ const arrayFunc = t.memberExpression(t.memberExpression(t.thisExpression(), t.identifier(anonymousFuncName + 'Array')), t.identifier(index.name), true);
+ classBody.push(t.classMethod('method', t.identifier(anonymousFuncName), [t.identifier(index.name), t.identifier('e')], t.blockStatement([
+ isCatch ? t.expressionStatement(t.callExpression(t.memberExpression(t.identifier('e'), t.identifier('stopPropagation')), [])) : t.emptyStatement(),
+ t.expressionStatement(t.logicalExpression('&&', arrayFunc, t.callExpression(arrayFunc, [t.identifier('e')])))
+ ])));
+ exprPath.replaceWith(t.callExpression(t.memberExpression(t.memberExpression(t.thisExpression(), t.identifier(anonymousFuncName)), t.identifier('bind')), [t.thisExpression(), t.identifier(index.name)]));
+ stemParent.insertBefore(t.expressionStatement(t.assignmentExpression('=', arrayFunc, expr)));
+ }
+ else {
+ classBody.push(t.classMethod('method', t.identifier(anonymousFuncName), [t.identifier('e')], t.blockStatement([
+ isCatch ? t.expressionStatement(t.callExpression(t.memberExpression(t.identifier('e'), t.identifier('stopPropagation')), [])) : t.emptyStatement()
+ ])));
+ exprPath.replaceWith(t.memberExpression(t.thisExpression(), t.identifier(anonymousFuncName)));
+ stemParent.insertBefore(t.expressionStatement(t.assignmentExpression('=', t.memberExpression(t.thisExpression(), t.identifier(anonymousFuncName)), expr)));
+ }
+ }
+ else {
+ throw utils_1.codeFrameError(path.node, '组件事件传参只能在使用匿名箭头函数,或使用类作用域下的确切引用(this.handleXX || this.props.handleXX),或使用 bind。');
+ }
+ }
+ const jsx = path.findParent(p => p.isJSXOpeningElement());
+ if (!jsx)
+ return;
+ const jsxName = jsx.node.name;
+ if (!t.isJSXIdentifier(jsxName))
+ return;
+ if (expression.isJSXElement())
+ return;
+ if (constant_1.DEFAULT_Component_SET.has(jsxName.name) || expression.isIdentifier() || expression.isMemberExpression() || expression.isLiteral() || expression.isLogicalExpression() || expression.isConditionalExpression() || key.name.startsWith('on') || expression.isCallExpression())
+ return;
+ utils_1.generateAnonymousState(scope, expression, self.jsxReferencedIdentifiers);
+ },
+ JSXElement(path) {
+ const id = path.node.openingElement.name;
+ if (t.isJSXIdentifier(id) &&
+ !constant_1.DEFAULT_Component_SET.has(id.name) &&
+ self.moduleNames.indexOf(id.name) !== -1) {
+ const name = id.name;
+ const binding = self.classPath.scope.getBinding(name);
+ if (binding && t.isImportDeclaration(binding.path.parent)) {
+ const sourcePath = binding.path.parent.source.value;
+ if (binding.path.isImportDefaultSpecifier()) {
+ self.customComponents.set(name, {
+ sourcePath,
+ type: 'default'
+ });
+ }
+ else {
+ self.customComponents.set(name, {
+ sourcePath,
+ type: 'pattern'
+ });
+ }
+ }
+ }
+ },
+ MemberExpression: (path) => {
+ const object = path.get('object');
+ const property = path.get('property');
+ if (!(object.isThisExpression() && property.isIdentifier({ name: 'props' }))) {
+ return;
+ }
+ const parentPath = path.parentPath;
+ if (parentPath.isMemberExpression()) {
+ const siblingProp = parentPath.get('property');
+ if (siblingProp.isIdentifier()) {
+ const name = siblingProp.node.name;
+ if (name === 'children') {
+ parentPath.replaceWith(t.jSXElement(t.jSXOpeningElement(t.jSXIdentifier('slot'), [], true), t.jSXClosingElement(t.jSXIdentifier('slot')), [], true));
+ }
+ else if (/^render[A-Z]/.test(name)) {
+ const slotName = utils_1.getSlotName(name);
+ parentPath.replaceWith(t.jSXElement(t.jSXOpeningElement(t.jSXIdentifier('slot'), [
+ t.jSXAttribute(t.jSXIdentifier('name'), t.stringLiteral(slotName))
+ ], true), t.jSXClosingElement(t.jSXIdentifier('slot')), []));
+ this.setMultipleSlots();
+ }
+ else {
+ self.componentProperies.add(siblingProp.node.name);
+ }
+ }
+ }
+ else if (parentPath.isVariableDeclarator()) {
+ const siblingId = parentPath.get('id');
+ if (siblingId.isObjectPattern()) {
+ const properties = siblingId.node.properties;
+ for (const prop of properties) {
+ if (t.isRestProperty(prop)) {
+ throw utils_1.codeFrameError(prop.loc, 'this.props 不支持使用 rest property 语法,请把每一个 prop 都单独列出来');
+ }
+ else if (t.isIdentifier(prop.key)) {
+ self.componentProperies.add(prop.key.name);
+ }
+ }
+ }
+ }
+ },
+ CallExpression(path) {
+ const node = path.node;
+ const callee = node.callee;
+ if (t.isMemberExpression(callee) && t.isMemberExpression(callee.object)) {
+ const property = callee.property;
+ if (t.isIdentifier(property)) {
+ if (property.name.startsWith('on')) {
+ self.componentProperies.add(`__fn_${property.name}`);
+ processThisPropsFnMemberProperties(callee, path, node.arguments, false);
+ }
+ else if (property.name === 'call' || property.name === 'apply') {
+ self.componentProperies.add(`__fn_${property.name}`);
+ processThisPropsFnMemberProperties(callee.object, path, node.arguments, true);
+ }
+ }
+ }
+ }
+ });
+ }
+ setComponents() {
+ this.customComponents.forEach((component, name) => {
+ this.result.components.push({
+ path: utils_1.pathResolver(component.sourcePath, this.sourcePath),
+ name: lodash_1.kebabCase(name),
+ type: component.type
+ });
+ });
+ }
+ setMethods() {
+ const methods = this.classPath.get('body').get('body');
+ for (const method of methods) {
+ if (method.isClassMethod()) {
+ const key = method.get('key');
+ if (key.isIdentifier()) {
+ this.methods.set(key.node.name, method);
+ }
+ }
+ }
+ }
+ resetConstructor() {
+ const body = this.classPath.node.body.body;
+ if (!this.methods.has('constructor')) {
+ const ctor = buildConstructor();
+ body.unshift(ctor);
+ }
+ if (process.env.NODE_ENV === 'test') {
+ return;
+ }
+ for (const method of body) {
+ if (t.isClassMethod(method) && method.kind === 'constructor') {
+ method.kind = 'method';
+ method.key = t.identifier('_constructor');
+ if (t.isBlockStatement(method.body)) {
+ for (const statement of method.body.body) {
+ if (t.isExpressionStatement(statement)) {
+ const expr = statement.expression;
+ if (t.isCallExpression(expr) && (t.isIdentifier(expr.callee, { name: 'super' }) || t.isSuper(expr.callee))) {
+ expr.callee = t.memberExpression(t.identifier('super'), t.identifier('_constructor'));
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ handleLifecyclePropParam(propParam, properties) {
+ let propsName = null;
+ if (!propParam) {
+ return null;
+ }
+ if (t.isIdentifier(propParam)) {
+ propsName = propParam.name;
+ }
+ else if (t.isObjectPattern(propParam)) {
+ for (const prop of propParam.properties) {
+ if (t.isObjectProperty(prop) && t.isIdentifier(prop.key)) {
+ properties.add(prop.key.name);
+ }
+ else if (t.isRestProperty(prop) && t.isIdentifier(prop.argument)) {
+ propsName = prop.argument.name;
+ }
+ }
+ }
+ else {
+ throw utils_1.codeFrameError(propParam.loc, '此生命周期的第一个参数只支持写标识符或对象解构');
+ }
+ return propsName;
+ }
+ findMoreProps() {
+ // 第一个参数是 props 的生命周期
+ const lifeCycles = new Set([
+ // 'constructor',
+ 'componentDidUpdate',
+ 'shouldComponentUpdate',
+ 'getDerivedStateFromProps',
+ 'getSnapshotBeforeUpdate',
+ 'componentWillReceiveProps',
+ 'componentWillUpdate'
+ ]);
+ const properties = new Set();
+ this.methods.forEach((method, name) => {
+ if (!lifeCycles.has(name)) {
+ return;
+ }
+ const node = method.node;
+ let propsName = null;
+ if (t.isClassMethod(node)) {
+ propsName = this.handleLifecyclePropParam(node.params[0], properties);
+ }
+ else if (t.isArrowFunctionExpression(node.value) || t.isFunctionExpression(node.value)) {
+ propsName = this.handleLifecyclePropParam(node.value.params[0], properties);
+ }
+ if (propsName === null) {
+ return;
+ }
+ method.traverse({
+ MemberExpression(path) {
+ if (!path.isReferencedMemberExpression()) {
+ return;
+ }
+ const { object, property } = path.node;
+ if (t.isIdentifier(object, { name: propsName }) && t.isIdentifier(property)) {
+ properties.add(property.name);
+ }
+ },
+ VariableDeclarator(path) {
+ const { id, init } = path.node;
+ if (t.isObjectPattern(id) && t.isIdentifier(init, { name: propsName })) {
+ for (const prop of id.properties) {
+ if (t.isObjectProperty(prop) && t.isIdentifier(prop.key)) {
+ properties.add(prop.key.name);
+ }
+ }
+ }
+ }
+ });
+ properties.forEach((value) => {
+ this.componentProperies.add(value);
+ });
+ });
+ }
+ parseRender() {
+ if (this.renderMethod) {
+ this.result.template = this.result.template
+ + new render_1.RenderParser(this.renderMethod, this.methods, this.initState, this.jsxReferencedIdentifiers, this.usedState, this.loopStateName, this.customComponentNames, this.customComponentData, this.componentProperies, this.loopRefs).outputTemplate;
+ }
+ }
+ compile() {
+ this.traverse();
+ this.setMethods();
+ this.setComponents();
+ this.resetConstructor();
+ this.findMoreProps();
+ this.handleRefs();
+ this.parseRender();
+ this.result.componentProperies = [...this.componentProperies];
+ }
+}
+exports.Transformer = Transformer;
+//# sourceMappingURL=class.js.map
\ No newline at end of file
diff --git a/packages/mp-jsx-ts/_scripts/jsx2wxml/class.js.map b/packages/mp-jsx-ts/_scripts/jsx2wxml/class.js.map
new file mode 100644
index 000000000..385cf5612
--- /dev/null
+++ b/packages/mp-jsx-ts/_scripts/jsx2wxml/class.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"class.js","sourceRoot":"","sources":["../../src/class.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/packages/mp-jsx-ts/_scripts/jsx2wxml/constant.js b/packages/mp-jsx-ts/_scripts/jsx2wxml/constant.js
new file mode 100644
index 000000000..54c6d417c
--- /dev/null
+++ b/packages/mp-jsx-ts/_scripts/jsx2wxml/constant.js
@@ -0,0 +1,94 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.THIRD_PARTY_COMPONENTS = new Set();
+// tslint:disable-next-line:variable-name
+exports.DEFAULT_Component_SET = new Set([
+ 'view',
+ 'scroll-view',
+ 'swiper',
+ 'movable-view',
+ 'cover-view',
+ 'cover-image',
+ 'icon',
+ 'text',
+ 'rich-text',
+ 'progress',
+ 'button',
+ 'checkbox',
+ 'form',
+ 'input',
+ 'label',
+ 'picker',
+ 'picker-view',
+ 'picker-view-column',
+ 'radio',
+ 'radio-group',
+ 'checkbox-group',
+ 'slider',
+ 'switch',
+ 'textarea',
+ 'navigator',
+ 'audio',
+ 'image',
+ 'video',
+ 'camera',
+ 'live-player',
+ 'live-pusher',
+ 'map',
+ 'canvas',
+ 'open-data',
+ 'web-view',
+ 'swiper-item',
+ 'movable-area',
+ 'movable-view',
+ 'functional-page-navigator',
+ 'ad',
+ 'block',
+ 'import',
+ 'official-account'
+]);
+exports.INTERNAL_SAFE_GET = 'internal_safe_get';
+exports.TARO_PACKAGE_NAME = '@tarojs/taro';
+exports.COMPONENTS_PACKAGE_NAME = '@tarojs/components';
+exports.REDUX_PACKAGE_NAME = '@tarojs/redux';
+exports.MOBX_PACKAGE_NAME = '@tarojs/mobx';
+exports.MAP_CALL_ITERATOR = '__item';
+exports.INTERNAL_INLINE_STYLE = 'internal_inline_style';
+exports.INTERNAL_GET_ORIGNAL = 'internal_get_original';
+exports.GEL_ELEMENT_BY_ID = 'getElementById';
+exports.LOOP_STATE = '$loopState';
+exports.LOOP_ORIGINAL = '$original';
+exports.setLoopOriginal = (s) => exports.LOOP_ORIGINAL = s;
+exports.LOOP_CALLEE = '$anonymousCallee_';
+exports.SPECIAL_COMPONENT_PROPS = new Map();
+exports.SPECIAL_COMPONENT_PROPS.set('Progress', new Set([
+ 'activeColor',
+ 'backgroundColor'
+]));
+exports.IMAGE_COMPONENTS = new Set([
+ 'Image',
+ 'CoverImage'
+]);
+exports.swanSpecialAttrs = {
+ 'ScrollView': ['scrollTop', 'scrollLeft', 'scrollIntoView'],
+ 'Input': ['value'],
+ 'Textarea': ['value'],
+ 'MovableView': ['x', 'y'],
+ 'Slider': ['value']
+};
+exports.ALIPAY_BUBBLE_EVENTS = new Set([
+ 'onTouchStart',
+ 'onTouchMove',
+ 'onTouchEnd',
+ 'onTouchCancel',
+ 'onClick',
+ 'onLongTap'
+]);
+exports.TRANSFORM_COMPONENT_PROPS = new Map();
+exports.TRANSFORM_COMPONENT_PROPS.set("alipay" /* alipay */, {
+ 'Canvas': {
+ 'canvasId': 'id'
+ }
+});
+exports.lessThanSignPlacehold = '__LESS_THAN_SIGN_PLACEHOLDER__';
+//# sourceMappingURL=constant.js.map
diff --git a/packages/mp-jsx-ts/_scripts/jsx2wxml/constant.js.map b/packages/mp-jsx-ts/_scripts/jsx2wxml/constant.js.map
new file mode 100644
index 000000000..722c501d2
--- /dev/null
+++ b/packages/mp-jsx-ts/_scripts/jsx2wxml/constant.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"constant.js","sourceRoot":"","sources":["../../src/constant.ts"],"names":[],"mappings":";;AAEa,QAAA,sBAAsB,GAAG,IAAI,GAAG,EAAU,CAAA;AAEvD,yCAAyC;AAC5B,QAAA,qBAAqB,GAAG,IAAI,GAAG,CAAS;IACnD,MAAM;IACN,YAAY;IACZ,QAAQ;IACR,aAAa;IACb,WAAW;IACX,YAAY;IACZ,MAAM;IACN,MAAM;IACN,UAAU;IACV,UAAU;IACV,QAAQ;IACR,UAAU;IACV,MAAM;IACN,OAAO;IACP,OAAO;IACP,QAAQ;IACR,YAAY;IACZ,kBAAkB;IAClB,OAAO;IACP,YAAY;IACZ,eAAe;IACf,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,WAAW;IACX,OAAO;IACP,OAAO;IACP,OAAO;IACP,QAAQ;IACR,YAAY;IACZ,YAAY;IACZ,KAAK;IACL,QAAQ;IACR,UAAU;IACV,SAAS;IACT,YAAY;IACZ,aAAa;IACb,aAAa;IACb,yBAAyB;IACzB,IAAI;IACJ,OAAO;IACP,QAAQ;IACR,iBAAiB;CAClB,CAAC,CAAA;AAEW,QAAA,iBAAiB,GAAG,mBAAmB,CAAA;AAEvC,QAAA,iBAAiB,GAAG,cAAc,CAAA;AAElC,QAAA,uBAAuB,GAAG,oBAAoB,CAAA;AAE9C,QAAA,kBAAkB,GAAG,eAAe,CAAA;AAEpC,QAAA,iBAAiB,GAAG,cAAc,CAAA;AAElC,QAAA,iBAAiB,GAAG,QAAQ,CAAA;AAE5B,QAAA,qBAAqB,GAAG,uBAAuB,CAAA;AAE/C,QAAA,oBAAoB,GAAG,uBAAuB,CAAA;AAE9C,QAAA,iBAAiB,GAAG,gBAAgB,CAAA;AAEpC,QAAA,UAAU,GAAG,YAAY,CAAA;AAE3B,QAAA,aAAa,GAAG,WAAW,CAAA;AAEzB,QAAA,eAAe,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,qBAAa,GAAG,CAAC,CAAA;AAElD,QAAA,WAAW,GAAG,mBAAmB,CAAA;AAEjC,QAAA,uBAAuB,GAAG,IAAI,GAAG,EAAuB,CAAA;AAErE,+BAAuB,CAAC,GAAG,CACzB,UAAU,EACV,IAAI,GAAG,CAAC;IACN,aAAa;IACb,iBAAiB;CAClB,CAAC,CACH,CAAA;AAEY,QAAA,gBAAgB,GAAG,IAAI,GAAG,CAAS;IAC9C,OAAO;IACP,YAAY;CACb,CAAC,CAAA;AAEW,QAAA,gBAAgB,GAAG;IAC9B,YAAY,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,gBAAgB,CAAC;IAC3D,OAAO,EAAE,CAAC,OAAO,CAAC;IAClB,UAAU,EAAE,CAAC,OAAO,CAAC;IACrB,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;IACzB,QAAQ,EAAE,CAAC,OAAO,CAAC;CACpB,CAAA;AAEY,QAAA,oBAAoB,GAAG,IAAI,GAAG,CAAS;IAClD,cAAc;IACd,aAAa;IACb,YAAY;IACZ,eAAe;IACf,SAAS;IACT,WAAW;CACZ,CAAC,CAAA;AAEW,QAAA,yBAAyB,GAAG,IAAI,GAAG,EAA0D,CAAA;AAE1G,iCAAyB,CAAC,GAAG,wBAAkB;IAC7C,QAAQ,EAAE;QACR,UAAU,EAAE,IAAI;KACjB;CACF,CAAC,CAAA;AAEW,QAAA,qBAAqB,GAAG,gCAAgC,CAAA"}
\ No newline at end of file
diff --git a/packages/mp-jsx-ts/_scripts/jsx2wxml/create-html-element.js b/packages/mp-jsx-ts/_scripts/jsx2wxml/create-html-element.js
new file mode 100644
index 000000000..98859f18b
--- /dev/null
+++ b/packages/mp-jsx-ts/_scripts/jsx2wxml/create-html-element.js
@@ -0,0 +1,43 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const voidHtmlTags = new Set([
+ // 'image',
+ 'img',
+ 'input',
+ 'import'
+]);
+if (process.env.NODE_ENV === 'test') {
+ voidHtmlTags.add('image');
+}
+function stringifyAttributes(input) {
+ const attributes = [];
+ for (const key of Object.keys(input)) {
+ let value = input[key];
+ if (value === false) {
+ continue;
+ }
+ if (Array.isArray(value)) {
+ value = value.join(' ');
+ }
+ let attribute = key;
+ if (value !== true) {
+ attribute += `="${String(value)}"`;
+ }
+ attributes.push(attribute);
+ }
+ return attributes.length > 0 ? ' ' + attributes.join(' ') : '';
+}
+exports.createHTMLElement = (options) => {
+ options = Object.assign({
+ name: 'div',
+ attributes: {},
+ value: ''
+ }, options);
+ const isVoidTag = voidHtmlTags.has(options.name);
+ let ret = `<${options.name}${stringifyAttributes(options.attributes)}${isVoidTag ? `/` : ''}>`;
+ if (!isVoidTag) {
+ ret += `${options.value}${options.name}>`;
+ }
+ return ret;
+};
+//# sourceMappingURL=create-html-element.js.map
\ No newline at end of file
diff --git a/packages/mp-jsx-ts/_scripts/jsx2wxml/create-html-element.js.map b/packages/mp-jsx-ts/_scripts/jsx2wxml/create-html-element.js.map
new file mode 100644
index 000000000..5c20fb7be
--- /dev/null
+++ b/packages/mp-jsx-ts/_scripts/jsx2wxml/create-html-element.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"create-html-element.js","sourceRoot":"","sources":["../../src/create-html-element.ts"],"names":[],"mappings":";;AAAA,MAAM,YAAY,GAAG,IAAI,GAAG,CAAS;IACnC,WAAW;IACX,KAAK;IACL,OAAO;IACP,QAAQ;CACT,CAAC,CAAA;AAEF,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE;IACnC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;CAC1B;AAQD,SAAS,mBAAmB,CAAE,KAAa;IACzC,MAAM,UAAU,GAAa,EAAE,CAAA;IAE/B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;QACpC,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;QAEtB,IAAI,KAAK,KAAK,KAAK,EAAE;YACnB,SAAQ;SACT;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACxB,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;SACxB;QAED,IAAI,SAAS,GAAG,GAAG,CAAA;QAEnB,IAAI,KAAK,KAAK,IAAI,EAAE;YAClB,SAAS,IAAI,KAAK,MAAM,CAAC,KAAK,CAAC,GAAG,CAAA;SACnC;QAED,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;KAC3B;IAED,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;AAEhE,CAAC;AAEY,QAAA,iBAAiB,GAAG,CAAC,OAAgB,EAAE,EAAE;IACpD,OAAO,GAAG,MAAM,CAAC,MAAM,CACrB;QACE,IAAI,EAAE,KAAK;QACX,UAAU,EAAE,EAAE;QACd,KAAK,EAAE,EAAE;KACV,EACD,OAAO,CACR,CAAA;IAED,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAEhD,IAAI,GAAG,GAAG,IAAI,OAAO,CAAC,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAG,GAAG,CAAA;IAE/F,IAAI,CAAC,SAAS,EAAE;QACd,GAAG,IAAI,GAAG,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,IAAI,GAAG,CAAA;KAC5C;IAED,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA"}
\ No newline at end of file
diff --git a/packages/mp-jsx-ts/_scripts/jsx2wxml/eslint.js b/packages/mp-jsx-ts/_scripts/jsx2wxml/eslint.js
new file mode 100644
index 000000000..a44d44bb1
--- /dev/null
+++ b/packages/mp-jsx-ts/_scripts/jsx2wxml/eslint.js
@@ -0,0 +1,47 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const eslint_1 = require("eslint");
+const utils_1 = require("./utils");
+const cli = new eslint_1.CLIEngine({
+ baseConfig: {
+ extends: ['plugin:taro/transformer']
+ },
+ useEslintrc: false,
+ parser: 'babel-eslint',
+ parserOptions: {
+ ecmaVersion: 2018,
+ ecmaFeatures: {
+ jsx: true,
+ legacyDecorators: true
+ }
+ }
+});
+exports.eslintValidation = () => {
+ return {
+ visitor: {
+ Program(_, state) {
+ const { file: { code } } = state;
+ const report = cli.executeOnText(code);
+ if (report.errorCount > 0) {
+ for (const result of report.results) {
+ for (const msg of result.messages) {
+ const err = utils_1.codeFrameError({
+ start: {
+ line: msg.line,
+ column: msg.column
+ },
+ end: {
+ line: msg.endLine,
+ column: msg.endColumn
+ }
+ }, msg.message);
+ // tslint:disable-next-line
+ console.warn('\n' + `ESLint(${msg.ruleId}) 错误:` + err.message + '\n');
+ }
+ }
+ }
+ }
+ }
+ };
+};
+//# sourceMappingURL=eslint.js.map
\ No newline at end of file
diff --git a/packages/mp-jsx-ts/_scripts/jsx2wxml/eslint.js.map b/packages/mp-jsx-ts/_scripts/jsx2wxml/eslint.js.map
new file mode 100644
index 000000000..05f4f5104
--- /dev/null
+++ b/packages/mp-jsx-ts/_scripts/jsx2wxml/eslint.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"eslint.js","sourceRoot":"","sources":["../../src/eslint.ts"],"names":[],"mappings":";;AAAA,mCAAkC;AAElC,mCAAwC;AAExC,MAAM,GAAG,GAAG,IAAI,kBAAS,CAAC;IACxB,UAAU,EAAE;QACV,OAAO,EAAE,CAAC,yBAAyB,CAAC;KACrC;IACD,WAAW,EAAE,KAAK;IAClB,MAAM,EAAE,cAAc;IACtB,aAAa,EAAE;QACb,WAAW,EAAE,IAAI;QACjB,YAAY,EAAE;YACZ,GAAG,EAAE,IAAI;YACT,gBAAgB,EAAE,IAAI;SACvB;KACF;CACF,CAAC,CAAA;AAEW,QAAA,gBAAgB,GAEzB,GAAG,EAAE;IACP,OAAO;QACL,OAAO,EAAE;YACP,OAAO,CAAE,CAAC,EAAE,KAAK;gBACf,MAAM,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,KAAK,CAAA;gBAChC,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;gBACtC,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,EAAE;oBACzB,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE;wBACnC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE;4BACjC,MAAM,GAAG,GAAG,sBAAc,CAAC;gCACzB,KAAK,EAAE;oCACL,IAAI,EAAE,GAAG,CAAC,IAAI;oCACd,MAAM,EAAE,GAAG,CAAC,MAAM;iCACnB;gCACD,GAAG,EAAE;oCACH,IAAI,EAAE,GAAG,CAAC,OAAO;oCACjB,MAAM,EAAE,GAAG,CAAC,SAAS;iCACtB;6BACF,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;4BACf,2BAA2B;4BAC3B,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,UAAU,GAAG,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,CAAA;yBACtE;qBACF;iBACF;YACH,CAAC;SACF;KACF,CAAA;AACH,CAAC,CAAA"}
\ No newline at end of file
diff --git a/packages/mp-jsx-ts/_scripts/jsx2wxml/functional.js b/packages/mp-jsx-ts/_scripts/jsx2wxml/functional.js
new file mode 100644
index 000000000..05cc06191
--- /dev/null
+++ b/packages/mp-jsx-ts/_scripts/jsx2wxml/functional.js
@@ -0,0 +1,83 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const utils_1 = require("./utils");
+const t = require("babel-types");
+const lodash_1 = require("lodash");
+function initialIsCapital(word) {
+ return word[0] !== word[0].toLowerCase();
+}
+exports.functionalComponent = () => {
+ return {
+ visitor: {
+ JSXElement(path) {
+ const arrowFuncExpr = path.findParent(p => p.isArrowFunctionExpression());
+ if (arrowFuncExpr && arrowFuncExpr.isArrowFunctionExpression() && arrowFuncExpr.parentPath.isVariableDeclarator()) {
+ const valDecl = arrowFuncExpr.parentPath.parentPath;
+ if (!valDecl.isVariableDeclaration()) {
+ throw utils_1.codeFrameError(valDecl.node, '函数式组件不能同时定义多个值');
+ }
+ const id = arrowFuncExpr.parentPath.node.id;
+ if (!t.isIdentifier(id)) {
+ throw utils_1.codeFrameError(id, '函数式组件只能使用普通标识符定义');
+ }
+ if (!initialIsCapital(id.name)) {
+ throw utils_1.codeFrameError(id, '组件命名规则请遵守帕斯卡命名法(Pascal Case)');
+ }
+ const hasClassDecl = arrowFuncExpr.findParent(p => p.isClassDeclaration());
+ if (hasClassDecl) {
+ // @TODO: 加上链接
+ throw utils_1.codeFrameError(arrowFuncExpr.node, '在类中的函数式组件请写成类函数式组件:参考:');
+ }
+ const { body } = arrowFuncExpr.node;
+ if (t.isBlockStatement(body)) {
+ valDecl.replaceWith(t.functionDeclaration(id, arrowFuncExpr.node.params, body));
+ }
+ else {
+ valDecl.replaceWith(t.functionDeclaration(id, arrowFuncExpr.node.params, t.blockStatement([
+ t.returnStatement(body)
+ ])));
+ }
+ return;
+ }
+ const functionDecl = path.findParent(p => p.isFunctionDeclaration());
+ if (functionDecl && functionDecl.isFunctionDeclaration()) {
+ const hasClassDecl = functionDecl.findParent(p => p.isClassDeclaration());
+ if (hasClassDecl) {
+ // @TODO: 加上链接
+ throw utils_1.codeFrameError(functionDecl.node, '在类中的函数式组件请写成类函数式组件:参考:');
+ }
+ const { id, body, params } = functionDecl.node;
+ let arg = null;
+ if (params.length > 1) {
+ throw utils_1.codeFrameError(id, '函数式组件的参数最多只能传入一个');
+ }
+ else if (params.length === 1) {
+ arg = params[0];
+ }
+ const cloneBody = lodash_1.cloneDeep(body);
+ if (!initialIsCapital(id.name)) {
+ throw utils_1.codeFrameError(id, '组件命名规则请遵守帕斯卡命名法(Pascal Case)');
+ }
+ if (arg) {
+ if (t.isIdentifier(arg)) {
+ cloneBody.body.push(utils_1.buildConstVariableDeclaration(arg.name, t.memberExpression(t.thisExpression(), t.identifier('props'))));
+ }
+ else if (t.isObjectPattern(arg)) {
+ cloneBody.body.push(t.variableDeclaration('const', [
+ t.variableDeclarator(arg, t.memberExpression(t.thisExpression(), t.identifier('props')))
+ ]));
+ }
+ else {
+ throw utils_1.codeFrameError(arg, '函数式组件只支持传入一个简单标识符或使用对象结构');
+ }
+ }
+ const classDecl = t.classDeclaration(id, t.memberExpression(t.identifier('Taro'), t.identifier('Component')), t.classBody([
+ t.classMethod('method', t.identifier('render'), [], cloneBody)
+ ]), []);
+ functionDecl.replaceWith(classDecl);
+ }
+ }
+ }
+ };
+};
+//# sourceMappingURL=functional.js.map
\ No newline at end of file
diff --git a/packages/mp-jsx-ts/_scripts/jsx2wxml/functional.js.map b/packages/mp-jsx-ts/_scripts/jsx2wxml/functional.js.map
new file mode 100644
index 000000000..5ea47265a
--- /dev/null
+++ b/packages/mp-jsx-ts/_scripts/jsx2wxml/functional.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"functional.js","sourceRoot":"","sources":["../../src/functional.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/packages/mp-jsx-ts/_scripts/jsx2wxml/index.js b/packages/mp-jsx-ts/_scripts/jsx2wxml/index.js
new file mode 100644
index 000000000..da532d896
--- /dev/null
+++ b/packages/mp-jsx-ts/_scripts/jsx2wxml/index.js
@@ -0,0 +1,507 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const babel_traverse_1 = require("babel-traverse");
+const babel_generator_1 = require("babel-generator");
+const html_1 = require("html");
+const babel_core_1 = require("babel-core");
+const ts = require("typescript");
+const class_1 = require("./class");
+const utils_1 = require("./utils");
+const t = require("babel-types");
+const constant_1 = require("./constant");
+const adapter_1 = require("./adapter");
+const options_1 = require("./options");
+const lodash_1 = require("lodash");
+const template = require('babel-template');
+function getIdsFromMemberProps(member) {
+ let ids = [];
+ const { object, property } = member;
+ if (t.isMemberExpression(object)) {
+ ids = ids.concat(getIdsFromMemberProps(object));
+ }
+ if (t.isThisExpression(object)) {
+ ids.push('this');
+ }
+ if (t.isIdentifier(object)) {
+ ids.push(object.name);
+ }
+ if (t.isIdentifier(property)) {
+ ids.push(property.name);
+ }
+ return ids;
+}
+/**
+ * TS 编译器会把 class property 移到构造器,
+ * 而小程序要求 `config` 和所有函数在初始化(after new Class)之后就收集到所有的函数和 config 信息,
+ * 所以当如构造器里有 this.func = () => {...} 的形式,就给他转换成普通的 classProperty function
+ * 如果有 config 就给他还原
+ */
+function resetTSClassProperty(body) {
+ for (const method of body) {
+ if (t.isClassMethod(method) && method.kind === 'constructor') {
+ if (t.isBlockStatement(method.body)) {
+ method.body.body = method.body.body.filter(statement => {
+ if (t.isExpressionStatement(statement) && t.isAssignmentExpression(statement.expression)) {
+ const expr = statement.expression;
+ const { left, right } = expr;
+ if (t.isMemberExpression(left) &&
+ t.isThisExpression(left.object) &&
+ t.isIdentifier(left.property)) {
+ if ((t.isArrowFunctionExpression(right) || t.isFunctionExpression(right))
+ ||
+ (left.property.name === 'config' && t.isObjectExpression(right))) {
+ const classProp = t.classProperty(left.property, right);
+ body.push(classProp);
+ handleThirdPartyComponent(classProp);
+ return false;
+ }
+ }
+ }
+ return true;
+ });
+ }
+ }
+ }
+}
+function findDeclarationScope(path, id) {
+ const scopePath = path.findParent(p => !!p.scope.getOwnBindingIdentifier(id.name));
+ if (scopePath) {
+ return scopePath;
+ }
+ throw utils_1.codeFrameError(path.node, '该引用从未被定义');
+}
+function buildFullPathThisPropsRef(id, memberIds, path) {
+ const scopePath = findDeclarationScope(path, id);
+ const binding = scopePath.scope.getOwnBinding(id.name);
+ if (binding) {
+ const bindingPath = binding.path;
+ if (bindingPath.isVariableDeclarator()) {
+ const dclId = bindingPath.get('id');
+ const dclInit = bindingPath.get('init');
+ let dclInitIds = [];
+ if (dclInit.isMemberExpression()) {
+ dclInitIds = getIdsFromMemberProps(dclInit.node);
+ if (dclId.isIdentifier()) {
+ memberIds.shift();
+ }
+ if (dclInitIds[0] === 'this' && dclInitIds[1] === 'props') {
+ return template(dclInitIds.concat(memberIds).join('.'))().expression;
+ }
+ }
+ }
+ }
+}
+function handleThirdPartyComponent(expr) {
+ if (t.isClassProperty(expr) && expr.key.name === 'config' && t.isObjectExpression(expr.value)) {
+ const properties = expr.value.properties;
+ for (const prop of properties) {
+ if (t.isObjectProperty(prop) &&
+ (t.isIdentifier(prop.key, { name: 'usingComponents' }) || t.isStringLiteral(prop.key, { value: 'usingComponents' })) &&
+ t.isObjectExpression(prop.value)) {
+ for (const value of prop.value.properties) {
+ if (t.isObjectProperty(value)) {
+ if (t.isStringLiteral(value.key)) {
+ constant_1.THIRD_PARTY_COMPONENTS.add(value.key.value);
+ }
+ if (t.isIdentifier(value.key)) {
+ constant_1.THIRD_PARTY_COMPONENTS.add(value.key.name);
+ }
+ }
+ }
+ }
+ }
+ }
+}
+function transform(options) {
+ if (options.adapter) {
+ adapter_1.setAdapter(options.adapter);
+ }
+ if (adapter_1.Adapter.type === "swan" /* swan */) {
+ constant_1.setLoopOriginal('privateOriginal');
+ }
+ constant_1.THIRD_PARTY_COMPONENTS.clear();
+ const code = options.isTyped
+ ? ts.transpile(options.code, {
+ jsx: ts.JsxEmit.Preserve,
+ target: ts.ScriptTarget.ESNext,
+ importHelpers: true,
+ noEmitHelpers: true
+ })
+ : options.code;
+ options.env = Object.assign({ 'process.env.TARO_ENV': options.adapter || 'weapp' }, options.env || {});
+ options_1.setTransformOptions(options);
+ utils_1.setting.sourceCode = code;
+ // babel-traverse 无法生成 Hub
+ // 导致 Path#getSource|buildCodeFrameError 都无法直接使用
+ // 原因大概是 babylon.parse 没有生成 File 实例导致 scope 和 path 原型上都没有 `file`
+ // 将来升级到 babel@7 可以直接用 parse 而不是 transform
+ const ast = babel_core_1.transform(code, options_1.buildBabelTransformOptions()).ast;
+ if (options.isNormal) {
+ return { ast };
+ }
+ // transformFromAst(ast, code)
+ let result;
+ const componentSourceMap = new Map();
+ const imageSource = new Set();
+ const importSources = new Set();
+ let componentProperies = [];
+ let mainClass;
+ let storeName;
+ let renderMethod;
+ let isImportTaro = false;
+ babel_traverse_1.default(ast, {
+ TemplateLiteral(path) {
+ const nodes = [];
+ const { quasis, expressions } = path.node;
+ let index = 0;
+ if (path.parentPath.isTaggedTemplateExpression()) {
+ return;
+ }
+ for (const elem of quasis) {
+ if (elem.value.cooked) {
+ nodes.push(t.stringLiteral(elem.value.cooked));
+ }
+ if (index < expressions.length) {
+ const expr = expressions[index++];
+ if (!t.isStringLiteral(expr, { value: '' })) {
+ nodes.push(expr);
+ }
+ }
+ }
+ // + 号连接符必须保证第一和第二个 node 都是字符串
+ if (!t.isStringLiteral(nodes[0]) && !t.isStringLiteral(nodes[1])) {
+ nodes.unshift(t.stringLiteral(''));
+ }
+ let root = nodes[0];
+ for (let i = 1; i < nodes.length; i++) {
+ root = t.binaryExpression('+', root, nodes[i]);
+ }
+ path.replaceWith(root);
+ },
+ ClassDeclaration(path) {
+ mainClass = path;
+ const superClass = utils_1.getSuperClassCode(path);
+ if (superClass) {
+ try {
+ componentProperies = transform({
+ isRoot: false,
+ isApp: false,
+ code: superClass.code,
+ isTyped: true,
+ sourcePath: superClass.sourcePath,
+ outputPath: superClass.sourcePath
+ }).componentProperies;
+ }
+ catch (error) {
+ //
+ }
+ }
+ },
+ ClassExpression(path) {
+ mainClass = path;
+ },
+ ClassMethod(path) {
+ if (t.isIdentifier(path.node.key) && path.node.key.name === 'render') {
+ renderMethod = path;
+ }
+ },
+ IfStatement(path) {
+ const consequent = path.get('consequent');
+ if (!consequent.isBlockStatement()) {
+ consequent.replaceWith(t.blockStatement([
+ consequent.node
+ ]));
+ }
+ },
+ CallExpression(path) {
+ const callee = path.get('callee');
+ if (utils_1.isContainJSXElement(path)) {
+ return;
+ }
+ if (callee.isReferencedMemberExpression()) {
+ const id = utils_1.findFirstIdentifierFromMemberExpression(callee.node);
+ const property = callee.node.property;
+ if (t.isIdentifier(property) && property.name.startsWith('on')) {
+ const funcExpr = path.findParent(p => p.isFunctionExpression());
+ if (funcExpr && funcExpr.isFunctionExpression()) {
+ const taroAPI = funcExpr.findParent(p => p.isCallExpression() && t.isMemberExpression(p.node.callee) && t.isIdentifier(p.node.callee.object, { name: 'Taro' }));
+ if (taroAPI && taroAPI.isCallExpression()) {
+ throw utils_1.codeFrameError(funcExpr.node, '在回调函数使用从 props 传递的函数时,请把回调函数改造为箭头函数并一直使用 `this` 取值');
+ }
+ }
+ }
+ const calleeIds = getIdsFromMemberProps(callee.node);
+ if (t.isIdentifier(id) && id.name.startsWith('on') && "alipay" /* alipay */ !== adapter_1.Adapter.type) {
+ const fullPath = buildFullPathThisPropsRef(id, calleeIds, path);
+ if (fullPath) {
+ path.replaceWith(t.callExpression(fullPath, path.node.arguments));
+ }
+ }
+ }
+ if (callee.isReferencedIdentifier()) {
+ const id = callee.node;
+ const ids = [id.name];
+ if (t.isIdentifier(id) && id.name.startsWith('on')) {
+ const funcExpr = path.findParent(p => p.isFunctionExpression());
+ if (funcExpr && funcExpr.isFunctionExpression()) {
+ const taroAPI = funcExpr.findParent(p => p.isCallExpression() && t.isMemberExpression(p.node.callee) && t.isIdentifier(p.node.callee.object, { name: 'Taro' }));
+ if (taroAPI && taroAPI.isCallExpression()) {
+ throw utils_1.codeFrameError(funcExpr.node, '在回调函数使用从 props 传递的函数时,请把回调函数改造为箭头函数并一直使用 `this` 取值');
+ }
+ }
+ const fullPath = buildFullPathThisPropsRef(id, ids, path);
+ if (fullPath) {
+ path.replaceWith(t.callExpression(fullPath, path.node.arguments));
+ }
+ }
+ }
+ },
+ // JSXIdentifier (path) {
+ // const parentPath = path.parentPath
+ // if (!parentPath.isJSXAttribute()) {
+ // return
+ // }
+ // const element = parentPath.parentPath
+ // if (!element.isJSXOpeningElement()) {
+ // return
+ // }
+ // const elementName = element.get('name')
+ // if (!elementName.isJSXIdentifier()) {
+ // return
+ // }
+ // if (DEFAULT_Component_SET.has(elementName.node.name)) {
+ // return
+ // }
+ // const expr = parentPath.get('value.expression')
+ // },
+ JSXElement(path) {
+ const assignment = path.findParent(p => p.isAssignmentExpression());
+ if (assignment && assignment.isAssignmentExpression() && !options.isTyped) {
+ const left = assignment.node.left;
+ if (t.isIdentifier(left)) {
+ const binding = assignment.scope.getBinding(left.name);
+ if (binding && binding.scope === assignment.scope) {
+ if (binding.path.isVariableDeclarator()) {
+ binding.path.node.init = path.node;
+ assignment.remove();
+ }
+ else {
+ throw utils_1.codeFrameError(path.node, '同一个作用域的JSX 变量延时赋值没有意义。详见:https://github.com/NervJS/taro/issues/550');
+ }
+ }
+ }
+ }
+ const switchStatement = path.findParent(p => p.isSwitchStatement());
+ if (switchStatement && switchStatement.isSwitchStatement()) {
+ const { discriminant, cases } = switchStatement.node;
+ const ifStatement = cases.map((Case, index) => {
+ const [consequent] = Case.consequent;
+ if (!t.isBlockStatement(consequent)) {
+ throw utils_1.codeFrameError(switchStatement.node, '含有 JSX 的 switch case 语句必须每种情况都用花括号 `{}` 包裹结果');
+ }
+ const block = t.blockStatement(consequent.body.filter(b => !t.isBreakStatement(b)));
+ if (index !== cases.length - 1 && t.isNullLiteral(Case.test)) {
+ throw utils_1.codeFrameError(Case, '含有 JSX 的 switch case 语句只有最后一个 case 才能是 default');
+ }
+ const test = Case.test === null ? t.nullLiteral() : t.binaryExpression('===', discriminant, Case.test);
+ return { block, test };
+ }).reduceRight((ifStatement, item) => {
+ if (t.isNullLiteral(item.test)) {
+ ifStatement.alternate = item.block;
+ return ifStatement;
+ }
+ const newStatement = t.ifStatement(item.test, item.block, t.isBooleanLiteral(ifStatement.test, { value: false })
+ ? ifStatement.alternate
+ : ifStatement);
+ return newStatement;
+ }, t.ifStatement(t.booleanLiteral(false), t.blockStatement([])));
+ switchStatement.insertAfter(ifStatement);
+ switchStatement.remove();
+ }
+ const isForStatement = (p) => p && (p.isForStatement() || p.isForInStatement() || p.isForOfStatement());
+ const forStatement = path.findParent(isForStatement);
+ if (isForStatement(forStatement)) {
+ throw utils_1.codeFrameError(forStatement.node, '不行使用 for 循环操作 JSX 元素,详情:https://github.com/NervJS/taro/blob/master/packages/eslint-plugin-taro/docs/manipulate-jsx-as-array.md');
+ }
+ const loopCallExpr = path.findParent(p => utils_1.isArrayMapCallExpression(p));
+ if (loopCallExpr && loopCallExpr.isCallExpression()) {
+ const [func] = loopCallExpr.node.arguments;
+ if (t.isArrowFunctionExpression(func) && !t.isBlockStatement(func.body)) {
+ func.body = t.blockStatement([
+ t.returnStatement(func.body)
+ ]);
+ }
+ }
+ },
+ JSXOpeningElement(path) {
+ const { name } = path.node.name;
+ const binding = path.scope.getBinding(name);
+ if (process.env.NODE_ENV !== 'test' && constant_1.DEFAULT_Component_SET.has(name) && binding && binding.kind === 'module') {
+ const bindingPath = binding.path;
+ if (bindingPath.parentPath.isImportDeclaration()) {
+ const source = bindingPath.parentPath.node.source;
+ if (source.value !== constant_1.COMPONENTS_PACKAGE_NAME) {
+ throw utils_1.codeFrameError(bindingPath.parentPath.node, `内置组件名: '${name}' 只能从 ${constant_1.COMPONENTS_PACKAGE_NAME} 引入。`);
+ }
+ }
+ }
+ if (name === 'Provider') {
+ const modules = path.scope.getAllBindings('module');
+ const providerBinding = Object.values(modules).some((m) => m.identifier.name === 'Provider');
+ if (providerBinding) {
+ path.node.name = t.jSXIdentifier('view');
+ const store = path.node.attributes.find(attr => attr.name.name === 'store');
+ if (store && t.isJSXExpressionContainer(store.value) && t.isIdentifier(store.value.expression)) {
+ storeName = store.value.expression.name;
+ }
+ path.node.attributes = [];
+ }
+ }
+ if (constant_1.IMAGE_COMPONENTS.has(name)) {
+ for (const attr of path.node.attributes) {
+ if (attr.name.name === 'src') {
+ if (t.isStringLiteral(attr.value)) {
+ imageSource.add(attr.value.value);
+ }
+ else if (t.isJSXExpressionContainer(attr.value)) {
+ if (t.isStringLiteral(attr.value.expression)) {
+ imageSource.add(attr.value.expression.value);
+ }
+ }
+ }
+ }
+ }
+ },
+ JSXAttribute(path) {
+ const { name, value } = path.node;
+ if (options.jsxAttributeNameReplace) {
+ for (const r in options.jsxAttributeNameReplace) {
+ if (options.jsxAttributeNameReplace.hasOwnProperty(r)) {
+ const element = options.jsxAttributeNameReplace[r];
+ if (t.isJSXIdentifier(name, { name: r })) {
+ path.node.name = t.jSXIdentifier(element);
+ }
+ }
+ }
+ }
+ if (!t.isJSXIdentifier(name) || value === null || t.isStringLiteral(value) || t.isJSXElement(value)) {
+ return;
+ }
+ const expr = value.expression;
+ const exprPath = path.get('value.expression');
+ const classDecl = path.findParent(p => p.isClassDeclaration());
+ const classDeclName = classDecl && classDecl.isClassDeclaration() && lodash_1.get(classDecl, 'node.id.name', '');
+ let isConverted = false;
+ if (classDeclName) {
+ isConverted = classDeclName === '_C' || classDeclName.endsWith('Tmpl');
+ }
+ if (!t.isBinaryExpression(expr, { operator: '+' }) && !t.isLiteral(expr) && name.name === 'style' && !isConverted) {
+ const jsxID = path.findParent(p => p.isJSXOpeningElement()).get('name');
+ if (jsxID && jsxID.isJSXIdentifier() && constant_1.DEFAULT_Component_SET.has(jsxID.node.name)) {
+ exprPath.replaceWith(t.callExpression(t.identifier(constant_1.INTERNAL_INLINE_STYLE), [expr]));
+ }
+ }
+ if (name.name.startsWith('on')) {
+ if (exprPath.isReferencedIdentifier()) {
+ const ids = [expr.name];
+ const fullPath = buildFullPathThisPropsRef(expr, ids, path);
+ if (fullPath) {
+ exprPath.replaceWith(fullPath);
+ }
+ }
+ if (exprPath.isReferencedMemberExpression()) {
+ const id = utils_1.findFirstIdentifierFromMemberExpression(expr);
+ const ids = getIdsFromMemberProps(expr);
+ if (t.isIdentifier(id)) {
+ const fullPath = buildFullPathThisPropsRef(id, ids, path);
+ if (fullPath) {
+ exprPath.replaceWith(fullPath);
+ }
+ }
+ }
+ // @TODO: bind 的处理待定
+ }
+ },
+ ImportDeclaration(path) {
+ const source = path.node.source.value;
+ if (importSources.has(source)) {
+ throw utils_1.codeFrameError(path.node, '无法在同一文件重复 import 相同的包。');
+ }
+ else {
+ importSources.add(source);
+ }
+ const names = [];
+ if (source === constant_1.TARO_PACKAGE_NAME) {
+ isImportTaro = true;
+ path.node.specifiers.push(t.importSpecifier(t.identifier(constant_1.INTERNAL_SAFE_GET), t.identifier(constant_1.INTERNAL_SAFE_GET)), t.importSpecifier(t.identifier(constant_1.INTERNAL_GET_ORIGNAL), t.identifier(constant_1.INTERNAL_GET_ORIGNAL)), t.importSpecifier(t.identifier(constant_1.INTERNAL_INLINE_STYLE), t.identifier(constant_1.INTERNAL_INLINE_STYLE)), t.importSpecifier(t.identifier(constant_1.GEL_ELEMENT_BY_ID), t.identifier(constant_1.GEL_ELEMENT_BY_ID)));
+ }
+ if (source === constant_1.REDUX_PACKAGE_NAME || source === constant_1.MOBX_PACKAGE_NAME) {
+ path.node.specifiers.forEach((s, index, specs) => {
+ if (s.local.name === 'Provider') {
+ specs.splice(index, 1);
+ specs.push(t.importSpecifier(t.identifier('setStore'), t.identifier('setStore')));
+ }
+ });
+ }
+ path.traverse({
+ ImportDefaultSpecifier(path) {
+ const name = path.node.local.name;
+ names.push(name);
+ },
+ ImportSpecifier(path) {
+ const name = path.node.imported.name;
+ names.push(name);
+ if (source === constant_1.TARO_PACKAGE_NAME && name === 'Component') {
+ path.node.local = t.identifier('__BaseComponent');
+ }
+ }
+ });
+ componentSourceMap.set(source, names);
+ }
+ });
+ if (!isImportTaro) {
+ ast.program.body.unshift(t.importDeclaration([
+ t.importDefaultSpecifier(t.identifier('Taro')),
+ t.importSpecifier(t.identifier(constant_1.INTERNAL_SAFE_GET), t.identifier(constant_1.INTERNAL_SAFE_GET)),
+ t.importSpecifier(t.identifier(constant_1.INTERNAL_GET_ORIGNAL), t.identifier(constant_1.INTERNAL_GET_ORIGNAL)),
+ t.importSpecifier(t.identifier(constant_1.INTERNAL_INLINE_STYLE), t.identifier(constant_1.INTERNAL_INLINE_STYLE))
+ ], t.stringLiteral('@tarojs/taro')));
+ }
+ if (!mainClass) {
+ throw new Error('未找到 Taro.Component 的类定义');
+ }
+ mainClass.node.body.body.forEach(handleThirdPartyComponent);
+ const storeBinding = mainClass.scope.getBinding(storeName);
+ mainClass.scope.rename('Component', '__BaseComponent');
+ if (storeBinding) {
+ const statementPath = storeBinding.path.getStatementParent();
+ if (statementPath) {
+ ast.program.body.forEach((node, index, body) => {
+ if (node === statementPath.node) {
+ body.splice(index + 1, 0, t.expressionStatement(t.callExpression(t.identifier('setStore'), [
+ t.identifier(storeName)
+ ])));
+ }
+ });
+ }
+ }
+ resetTSClassProperty(mainClass.node.body.body);
+ if (options.isApp) {
+ renderMethod.replaceWith(t.classMethod('method', t.identifier('_createData'), [], t.blockStatement([])));
+ return { ast };
+ }
+ result = new class_1.Transformer(mainClass, options.sourcePath, componentProperies).result;
+ result.code = babel_generator_1.default(ast).code;
+ result.ast = ast;
+ const lessThanSignReg = new RegExp(constant_1.lessThanSignPlacehold, 'g');
+ result.compressedTemplate = result.template;
+ result.template = html_1.prettyPrint(result.template, {
+ max_char: 0,
+ unformatted: process.env.NODE_ENV === 'test' ? [] : ['text']
+ });
+ result.template = result.template.replace(lessThanSignReg, '<');
+ result.imageSrcs = Array.from(imageSource);
+ return result;
+}
+exports.default = transform;
+//# sourceMappingURL=index.js.map
diff --git a/packages/mp-jsx-ts/_scripts/jsx2wxml/index.js.map b/packages/mp-jsx-ts/_scripts/jsx2wxml/index.js.map
new file mode 100644
index 000000000..92bc1e07b
--- /dev/null
+++ b/packages/mp-jsx-ts/_scripts/jsx2wxml/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/packages/mp-jsx-ts/_scripts/jsx2wxml/jsx.js b/packages/mp-jsx-ts/_scripts/jsx2wxml/jsx.js
new file mode 100644
index 000000000..f9a3d1bcc
--- /dev/null
+++ b/packages/mp-jsx-ts/_scripts/jsx2wxml/jsx.js
@@ -0,0 +1,258 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const babel_generator_1 = require("babel-generator");
+const t = require("babel-types");
+const lodash_1 = require("lodash");
+const constant_1 = require("./constant");
+const create_html_element_1 = require("./create-html-element");
+const utils_1 = require("./utils");
+const adapter_1 = require("./adapter");
+function isStartWithWX(str) {
+ return str[0] === 'w' && str[1] === 'x';
+}
+exports.isStartWithWX = isStartWithWX;
+const specialComponentName = ['block', 'Block', 'slot', 'Slot'];
+function removeJSXThisProperty(path) {
+ if (!path.parentPath.isCallExpression()) {
+ const p = path.getSibling('property');
+ if (p.isIdentifier({ name: 'props' }) ||
+ p.isIdentifier({ name: 'state' })) {
+ path.parentPath.replaceWithSourceString('this');
+ }
+ else {
+ path.parentPath.replaceWith(p);
+ }
+ }
+}
+exports.removeJSXThisProperty = removeJSXThisProperty;
+function findJSXAttrByName(attrs, name) {
+ for (const attr of attrs) {
+ if (!t.isJSXIdentifier(attr.name)) {
+ break;
+ }
+ if (attr.name.name === name) {
+ return attr;
+ }
+ }
+ return null;
+}
+exports.findJSXAttrByName = findJSXAttrByName;
+function buildRefTemplate(name, refName, loop, key) {
+ const attrs = [
+ t.jSXAttribute(t.jSXIdentifier('is'), t.stringLiteral(name)),
+ t.jSXAttribute(t.jSXIdentifier('data'), t.stringLiteral(`{{...${refName ? `${loop ? '' : '$$'}${refName}` : '__data'}}}`))
+ ];
+ if (key) {
+ attrs.push(key);
+ }
+ return t.jSXElement(t.jSXOpeningElement(t.jSXIdentifier('template'), attrs), t.jSXClosingElement(t.jSXIdentifier('template')), []);
+}
+exports.buildRefTemplate = buildRefTemplate;
+function buildJSXAttr(name, value) {
+ return t.jSXAttribute(t.jSXIdentifier(name), t.jSXExpressionContainer(value));
+}
+exports.buildJSXAttr = buildJSXAttr;
+function newJSXIfAttr(jsx, value) {
+ jsx.openingElement.attributes.push(buildJSXAttr(adapter_1.Adapter.if, value));
+}
+exports.newJSXIfAttr = newJSXIfAttr;
+function setJSXAttr(jsx, name, value, path) {
+ const element = jsx.openingElement;
+ if (!t.isJSXIdentifier(element.name)) {
+ return;
+ }
+ if (element.name.name === 'Block' || element.name.name === 'block' || !path) {
+ jsx.openingElement.attributes.push(t.jSXAttribute(t.jSXIdentifier(name), value));
+ }
+ else {
+ const block = buildBlockElement();
+ setJSXAttr(block, name, value);
+ block.children = [jsx];
+ path.node = block;
+ }
+}
+exports.setJSXAttr = setJSXAttr;
+function isAllLiteral(...args) {
+ return args.every(p => t.isLiteral(p));
+}
+exports.isAllLiteral = isAllLiteral;
+function buildBlockElement() {
+ return t.jSXElement(t.jSXOpeningElement(t.jSXIdentifier('block'), []), t.jSXClosingElement(t.jSXIdentifier('block')), []);
+}
+exports.buildBlockElement = buildBlockElement;
+function parseJSXChildren(children) {
+ return children
+ .filter(child => {
+ return !(t.isJSXText(child) && child.value.trim() === '');
+ })
+ .reduce((str, child) => {
+ if (t.isJSXText(child)) {
+ const strings = [];
+ child.value.split(/(\r?\n\s*)/).forEach((val) => {
+ const value = val.replace(/\u00a0/g, ' ').trimLeft();
+ if (!value) {
+ return;
+ }
+ if (value.startsWith('\n')) {
+ return;
+ }
+ strings.push(value);
+ });
+ return str + strings.join('');
+ }
+ if (t.isJSXElement(child)) {
+ return str + parseJSXElement(child);
+ }
+ if (t.isJSXExpressionContainer(child)) {
+ if (t.isJSXElement(child.expression)) {
+ return str + parseJSXElement(child.expression);
+ }
+ return str + `{${utils_1.decodeUnicode(babel_generator_1.default(child, {
+ quotes: 'single',
+ jsonCompatibleStrings: true
+ })
+ .code)
+ .replace(/(this\.props\.)|(this\.state\.)/g, '')
+ .replace(/(props\.)|(state\.)/g, '')
+ .replace(/this\./g, '')
+ .replace(/ {
+ if (a.name.name === adapter_1.Adapter.else && !['block', 'Block'].includes(componentName) && !isDefaultComponent) {
+ hasElseAttr = true;
+ attributes.splice(index, 1);
+ }
+ });
+ if (hasElseAttr) {
+ return create_html_element_1.createHTMLElement({
+ name: 'block',
+ attributes: {
+ [adapter_1.Adapter.else]: true
+ },
+ value: parseJSXChildren([element])
+ });
+ }
+ let attributesTrans = {};
+ if (attributes.length) {
+ attributesTrans = attributes.reduce((obj, attr) => {
+ if (t.isJSXSpreadAttribute(attr)) {
+ throw utils_1.codeFrameError(attr.loc, 'JSX 参数暂不支持 ...spread 表达式');
+ }
+ let name = attr.name.name;
+ if (constant_1.DEFAULT_Component_SET.has(componentName)) {
+ if (name === 'className') {
+ name = 'class';
+ }
+ }
+ let value = true;
+ let attrValue = attr.value;
+ if (typeof name === 'string') {
+ const isAlipayEvent = adapter_1.Adapter.type === "alipay" /* alipay */ && /(^on[A-Z_])|(^catch[A-Z_])/.test(name);
+ if (t.isStringLiteral(attrValue)) {
+ value = attrValue.value;
+ }
+ else if (t.isJSXExpressionContainer(attrValue)) {
+ let isBindEvent = (name.startsWith('bind') && name !== 'bind') || (name.startsWith('catch') && name !== 'catch');
+ let code = utils_1.decodeUnicode(babel_generator_1.default(attrValue.expression, {
+ quotes: 'single',
+ concise: true
+ }).code)
+ .replace(/"/g, "'")
+ .replace(/(this\.props\.)|(this\.state\.)/g, '')
+ .replace(/this\./g, '');
+ if ("swan" /* swan */ === adapter_1.Adapter.type &&
+ code !== 'true' &&
+ code !== 'false' &&
+ constant_1.swanSpecialAttrs[componentName] &&
+ constant_1.swanSpecialAttrs[componentName].includes(name)) {
+ value = `{= ${code} =}`;
+ }
+ else {
+ if (adapter_1.Adapter.key === name) {
+ const splitCode = code.split('.');
+ if (splitCode.length > 1) {
+ value = splitCode.slice(1).join('.');
+ }
+ else {
+ value = code;
+ }
+ }
+ else {
+ value = isBindEvent || isAlipayEvent ? code : `{{${code}}}`;
+ }
+ }
+ if (adapter_1.Adapter.type === "swan" /* swan */ && name === adapter_1.Adapter.for) {
+ value = code;
+ }
+ if (t.isStringLiteral(attrValue.expression)) {
+ value = attrValue.expression.value;
+ }
+ }
+ else if (attrValue === null && name !== adapter_1.Adapter.else) {
+ value = `{{true}}`;
+ }
+ if (constant_1.THIRD_PARTY_COMPONENTS.has(componentName) && /^bind/.test(name) && name.includes('-')) {
+ name = name.replace(/^bind/, 'bind:');
+ }
+ if (componentTransfromProps && componentTransfromProps[componentName]) {
+ const transfromProps = componentTransfromProps[componentName];
+ Object.keys(transfromProps).forEach(oriName => {
+ if (transfromProps.hasOwnProperty(name)) {
+ name = transfromProps[oriName];
+ }
+ });
+ }
+ if ((componentName === 'Input' || componentName === 'input') && name === 'maxLength') {
+ obj['maxlength'] = value;
+ }
+ else if (componentSpecialProps && componentSpecialProps.has(name) ||
+ name.startsWith('__fn_') ||
+ isAlipayEvent) {
+ obj[name] = value;
+ }
+ else {
+ obj[isDefaultComponent && !name.includes('-') && !name.includes(':') ? lodash_1.kebabCase(name) : name] = value;
+ }
+ }
+ // if (!isDefaultComponent && !specialComponentName.includes(componentName)) {
+ // obj[TRIGGER_OBSERER] = '{{ _triggerObserer }}';
+ // }
+ return obj;
+ }, {});
+ }
+ // else if (!isDefaultComponent && !specialComponentName.includes(componentName)) {
+ // attributesTrans[TRIGGER_OBSERER] = '{{ _triggerObserer }}';
+ // }
+ return create_html_element_1.createHTMLElement({
+ name: lodash_1.kebabCase(componentName),
+ attributes: attributesTrans,
+ value: parseJSXChildren(children)
+ });
+}
+exports.parseJSXElement = parseJSXElement;
+function generateHTMLTemplate(template, name) {
+ return create_html_element_1.createHTMLElement({
+ name: 'template',
+ attributes: {
+ name
+ },
+ value: parseJSXElement(template)
+ });
+}
+exports.generateHTMLTemplate = generateHTMLTemplate;
+//# sourceMappingURL=jsx.js.map
diff --git a/packages/mp-jsx-ts/_scripts/jsx2wxml/jsx.js.map b/packages/mp-jsx-ts/_scripts/jsx2wxml/jsx.js.map
new file mode 100644
index 000000000..163ac6caa
--- /dev/null
+++ b/packages/mp-jsx-ts/_scripts/jsx2wxml/jsx.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"jsx.js","sourceRoot":"","sources":["../../src/jsx.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/packages/mp-jsx-ts/_scripts/jsx2wxml/lifecycle.js b/packages/mp-jsx-ts/_scripts/jsx2wxml/lifecycle.js
new file mode 100644
index 000000000..0dd3bd888
--- /dev/null
+++ b/packages/mp-jsx-ts/_scripts/jsx2wxml/lifecycle.js
@@ -0,0 +1,33 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+var Lifecycle;
+(function (Lifecycle) {
+ Lifecycle["constructor"] = "constructor";
+ Lifecycle["componentWillMount"] = "componentWillMount";
+ Lifecycle["componentDidMount"] = "componentDidMount";
+ Lifecycle["componentWillUpdate"] = "componentWillUpdate";
+ Lifecycle["componentDidUpdate"] = "componentDidUpdate";
+ Lifecycle["componentWillUnmount"] = "componentWillUnmount";
+ Lifecycle["componentDidCatch"] = "componentDidCatch";
+ Lifecycle["componentDidShow"] = "componentDidShow";
+ Lifecycle["componentDidHide"] = "componentDidHide";
+ Lifecycle["componentDidAttached"] = "componentDidAttached";
+ Lifecycle["componentDidMoved"] = "componentDidMoved";
+ Lifecycle["shouldComponentUpdate"] = "shouldComponentUpdate";
+ Lifecycle["componentWillReceiveProps"] = "componentWillReceiveProps";
+})(Lifecycle = exports.Lifecycle || (exports.Lifecycle = {}));
+exports.PageLifecycle = {
+ [Lifecycle.componentDidMount]: 'onLaunch',
+ [Lifecycle.componentWillMount]: 'onLoad',
+ [Lifecycle.componentWillUnmount]: 'onUnload',
+ [Lifecycle.componentDidShow]: 'onShow',
+ [Lifecycle.componentDidHide]: 'onHide'
+};
+exports.ComponentLifeCycle = {
+ [Lifecycle.componentWillMount]: 'created',
+ [Lifecycle.componentDidAttached]: 'attached',
+ [Lifecycle.componentDidMount]: 'ready',
+ [Lifecycle.componentDidMoved]: 'moved',
+ [Lifecycle.componentWillUnmount]: 'detached'
+};
+//# sourceMappingURL=lifecycle.js.map
\ No newline at end of file
diff --git a/packages/mp-jsx-ts/_scripts/jsx2wxml/lifecycle.js.map b/packages/mp-jsx-ts/_scripts/jsx2wxml/lifecycle.js.map
new file mode 100644
index 000000000..f6fb74dee
--- /dev/null
+++ b/packages/mp-jsx-ts/_scripts/jsx2wxml/lifecycle.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/lifecycle.ts"],"names":[],"mappings":";;AAAA,IAAY,SAcX;AAdD,WAAY,SAAS;IACnB,wCAA2B,CAAA;IAC3B,sDAAyC,CAAA;IACzC,oDAAuC,CAAA;IACvC,wDAA2C,CAAA;IAC3C,sDAAyC,CAAA;IACzC,0DAA6C,CAAA;IAC7C,oDAAuC,CAAA;IACvC,kDAAqC,CAAA;IACrC,kDAAqC,CAAA;IACrC,0DAA6C,CAAA;IAC7C,oDAAuC,CAAA;IACvC,4DAA+C,CAAA;IAC/C,oEAAuD,CAAA;AACzD,CAAC,EAdW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAcpB;AAEY,QAAA,aAAa,GAAG;IAC3B,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,UAAU;IACzC,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,QAAQ;IACxC,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,UAAU;IAC5C,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,QAAQ;IACtC,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,QAAQ;CACvC,CAAA;AAEY,QAAA,kBAAkB,GAAG;IAChC,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,SAAS;IACzC,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,UAAU;IAC5C,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,OAAO;IACtC,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,OAAO;IACtC,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,UAAU;CAC7C,CAAA"}
\ No newline at end of file
diff --git a/packages/mp-jsx-ts/_scripts/jsx2wxml/loop-component.js b/packages/mp-jsx-ts/_scripts/jsx2wxml/loop-component.js
new file mode 100644
index 000000000..00ef7f8bc
--- /dev/null
+++ b/packages/mp-jsx-ts/_scripts/jsx2wxml/loop-component.js
@@ -0,0 +1,227 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const t = require("babel-types");
+const utils_1 = require("./utils");
+const jsx_1 = require("./jsx");
+const constant_1 = require("./constant");
+const adapter_1 = require("./adapter");
+// @TODO
+// 重构 parseRender 和 parseLoop 失败
+// 尚不清楚 babel 的 state 和 context 传参机制
+// 目前先写两份代码,有时间看看 babel 具体对 state 和 context 做了什么导致传参失败
+function parseLoopBody(body, jsxDeclarations,
+// @TODO
+// 把 templates 换成 Map 可以支持 shalow variables declared
+// 现在先用 ESLint 的 no-shalow 顶着
+templates, loopScopes, finalReturnElement, returnedPaths) {
+ const bodyScope = body.scope;
+ body.traverse({
+ JSXElement(jsxElementPath) {
+ const parentNode = jsxElementPath.parent;
+ const parentPath = jsxElementPath.parentPath;
+ const isFinalReturn = jsxElementPath.getFunctionParent().isClassMethod();
+ const isJSXChildren = t.isJSXElement(parentNode);
+ if (!isJSXChildren) {
+ let statementParent = jsxElementPath.getStatementParent();
+ if (!(statementParent.isVariableDeclaration() ||
+ statementParent.isExpressionStatement())) {
+ statementParent = statementParent.findParent(s => s.isVariableDeclaration() || s.isExpressionStatement());
+ }
+ jsxDeclarations.add(statementParent);
+ if (t.isVariableDeclarator(parentNode)) {
+ if (statementParent) {
+ const name = utils_1.findIdentifierFromStatement(statementParent.node);
+ // setTemplate(name, path, templates)
+ name && templates.set(name, jsxElementPath.node);
+ }
+ }
+ else if (t.isLogicalExpression(parentNode)) {
+ const { left, operator } = parentNode;
+ if (operator === '&&') {
+ if (t.isExpression(left)) {
+ utils_1.newJSXIfAttr(jsxElementPath.node, left);
+ parentPath.replaceWith(jsxElementPath.node);
+ if (statementParent) {
+ const name = utils_1.findIdentifierFromStatement(statementParent.node);
+ utils_1.setTemplate(name, jsxElementPath, templates);
+ // name && templates.set(name, path.node)
+ }
+ }
+ }
+ }
+ else if (t.isConditionalExpression(parentNode)) {
+ const { test, consequent, alternate } = parentNode;
+ const block = jsx_1.buildBlockElement();
+ if (t.isJSXElement(consequent) && t.isLiteral(alternate)) {
+ const { value, confident } = parentPath.get('alternate').evaluate();
+ if (confident && !value) {
+ utils_1.newJSXIfAttr(block, test);
+ block.children = [jsxElementPath.node];
+ // newJSXIfAttr(jsxElementPath.node, test)
+ parentPath.replaceWith(block);
+ if (statementParent) {
+ const name = utils_1.findIdentifierFromStatement(statementParent.node);
+ utils_1.setTemplate(name, jsxElementPath, templates);
+ // name && templates.set(name, path.node)
+ }
+ }
+ }
+ else if (t.isLiteral(consequent) && t.isJSXElement(consequent)) {
+ if (t.isNullLiteral(consequent)) {
+ utils_1.newJSXIfAttr(block, utils_1.reverseBoolean(test));
+ // newJSXIfAttr(jsxElementPath.node, reverseBoolean(test))
+ parentPath.replaceWith(block);
+ if (statementParent) {
+ const name = utils_1.findIdentifierFromStatement(statementParent.node);
+ utils_1.setTemplate(name, jsxElementPath, templates);
+ // name && templates.set(name, path.node)
+ }
+ }
+ }
+ else if (t.isJSXElement(consequent) && t.isJSXElement(alternate)) {
+ const block2 = jsx_1.buildBlockElement();
+ block.children = [consequent];
+ utils_1.newJSXIfAttr(block, test);
+ jsx_1.setJSXAttr(block2, adapter_1.Adapter.else);
+ block2.children = [alternate];
+ const parentBlock = jsx_1.buildBlockElement();
+ parentBlock.children = [block, block2];
+ parentPath.replaceWith(parentBlock);
+ if (statementParent) {
+ const name = utils_1.findIdentifierFromStatement(statementParent.node);
+ utils_1.setTemplate(name, jsxElementPath, templates);
+ }
+ }
+ else {
+ // console.log('todo')
+ }
+ }
+ else if (t.isReturnStatement(parentNode)) {
+ if (!isFinalReturn) {
+ const caller = parentPath.findParent(p => p.isCallExpression());
+ if (caller.isCallExpression()) {
+ const callee = caller.node.callee;
+ if (t.isMemberExpression(callee) &&
+ t.isIdentifier(callee.property) &&
+ callee.property.name === 'map') {
+ let ary = callee.object;
+ const blockStatementPath = parentPath.findParent(p => p.isBlockStatement());
+ const body = blockStatementPath.node.body;
+ let stateToBeAssign = new Set();
+ for (const statement of body) {
+ if (t.isVariableDeclaration(statement)) {
+ for (const dcl of statement.declarations) {
+ if (t.isIdentifier(dcl.id)) {
+ const scope = blockStatementPath.scope;
+ const stateName = scope.generateUid(constant_1.LOOP_STATE);
+ stateToBeAssign.add(stateName);
+ blockStatementPath.scope.rename(dcl.id.name, stateName);
+ }
+ }
+ }
+ }
+ if (t.isCallExpression(ary) || utils_1.isContainFunction(caller.get('callee').get('object'))) {
+ const variableName = `anonymousState_${bodyScope.generateUid()}`;
+ caller.getStatementParent().insertBefore(utils_1.buildConstVariableDeclaration(variableName, ary));
+ ary = t.identifier(variableName);
+ }
+ jsx_1.setJSXAttr(jsxElementPath.node, adapter_1.Adapter.for, t.jSXExpressionContainer(ary));
+ const [func] = caller.node.arguments;
+ if (t.isFunctionExpression(func) ||
+ t.isArrowFunctionExpression(func)) {
+ const [item, index] = func.params;
+ if (t.isIdentifier(item)) {
+ jsx_1.setJSXAttr(jsxElementPath.node, adapter_1.Adapter.forItem, t.stringLiteral(item.name));
+ loopScopes.add(item.name);
+ }
+ else {
+ jsx_1.setJSXAttr(jsxElementPath.node, adapter_1.Adapter.forItem, t.stringLiteral('__item'));
+ }
+ if (t.isIdentifier(index)) {
+ jsx_1.setJSXAttr(jsxElementPath.node, adapter_1.Adapter.forIndex, t.stringLiteral(index.name));
+ loopScopes.add(index.name);
+ }
+ caller.replaceWith(jsxElementPath.node);
+ if (statementParent) {
+ const name = utils_1.findIdentifierFromStatement(statementParent.node);
+ // setTemplate(name, path, templates)
+ name && templates.set(name, jsxElementPath.node);
+ }
+ }
+ }
+ }
+ }
+ else {
+ const ifStatement = parentPath.findParent(p => p.isIfStatement());
+ const blockStatement = parentPath.findParent(p => p.isBlockStatement());
+ const block = finalReturnElement || jsx_1.buildBlockElement();
+ if (utils_1.isBlockIfStatement(ifStatement, blockStatement)) {
+ const { test, alternate, consequent } = ifStatement.node;
+ if (alternate === blockStatement.node) {
+ throw utils_1.codeFrameError(parentNode.loc, '不必要的 else 分支,请遵从 ESLint consistent-return: https://eslint.org/docs/rules/consistent-return');
+ }
+ else if (consequent === blockStatement.node) {
+ const parentIfStatement = ifStatement.findParent(p => p.isIfStatement());
+ if (parentIfStatement) {
+ jsx_1.setJSXAttr(jsxElementPath.node, adapter_1.Adapter.elseif, t.jSXExpressionContainer(test));
+ }
+ else {
+ utils_1.newJSXIfAttr(jsxElementPath.node, test);
+ }
+ }
+ }
+ else if (block.children.length !== 0) {
+ jsx_1.setJSXAttr(jsxElementPath.node, adapter_1.Adapter.else);
+ }
+ block.children.push(jsxElementPath.node);
+ finalReturnElement = block;
+ returnedPaths.push(parentPath);
+ }
+ }
+ else if (t.isArrowFunctionExpression(parentNode)) {
+ //
+ }
+ else if (t.isAssignmentExpression(parentNode)) {
+ if (t.isIdentifier(parentNode.left)) {
+ const name = parentNode.left.name;
+ const bindingNode = bodyScope.getOwnBinding(name).path.node;
+ const block = templates.get(name) || jsx_1.buildBlockElement();
+ if (utils_1.isEmptyDeclarator(bindingNode)) {
+ const ifStatement = parentPath.findParent(p => p.isIfStatement());
+ const blockStatement = parentPath.findParent(p => p.isBlockStatement());
+ if (utils_1.isBlockIfStatement(ifStatement, blockStatement)) {
+ const { test, alternate, consequent } = ifStatement.node;
+ if (alternate === blockStatement.node) {
+ jsx_1.setJSXAttr(jsxElementPath.node, adapter_1.Adapter.else);
+ }
+ else if (consequent === blockStatement.node) {
+ const parentIfStatement = ifStatement.findParent(p => p.isIfStatement());
+ if (parentIfStatement && parentIfStatement.get('alternate') === ifStatement) {
+ jsx_1.setJSXAttr(jsxElementPath.node, adapter_1.Adapter.elseif, t.jSXExpressionContainer(test));
+ }
+ else {
+ if (parentIfStatement) {
+ utils_1.newJSXIfAttr(block, parentIfStatement.node.test);
+ }
+ utils_1.newJSXIfAttr(jsxElementPath.node, test);
+ }
+ }
+ block.children.push(jsxElementPath.node);
+ // setTemplate(name, path, templates)
+ name && templates.set(name, block);
+ }
+ }
+ else {
+ throw utils_1.codeFrameError(jsxElementPath.node.loc, '请将 JSX 赋值表达式初始化为 null,然后再进行 if 条件表达式赋值。');
+ }
+ }
+ }
+ else if (!t.isJSXElement(parentNode)) {
+ // throwError(path, '考虑只对 JSX 元素赋值一次。')
+ }
+ }
+ }
+ });
+}
+exports.parseLoopBody = parseLoopBody;
+//# sourceMappingURL=loop-component.js.map
\ No newline at end of file
diff --git a/packages/mp-jsx-ts/_scripts/jsx2wxml/loop-component.js.map b/packages/mp-jsx-ts/_scripts/jsx2wxml/loop-component.js.map
new file mode 100644
index 000000000..d9f771122
--- /dev/null
+++ b/packages/mp-jsx-ts/_scripts/jsx2wxml/loop-component.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"loop-component.js","sourceRoot":"","sources":["../../src/loop-component.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/packages/mp-jsx-ts/_scripts/jsx2wxml/options.js b/packages/mp-jsx-ts/_scripts/jsx2wxml/options.js
new file mode 100644
index 000000000..1682411d2
--- /dev/null
+++ b/packages/mp-jsx-ts/_scripts/jsx2wxml/options.js
@@ -0,0 +1,37 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const eslint_1 = require("./eslint");
+exports.transformOptions = {};
+exports.setTransformOptions = (options) => {
+ for (const key in options) {
+ if (options.hasOwnProperty(key)) {
+ exports.transformOptions[key] = options[key];
+ }
+ }
+};
+exports.buildBabelTransformOptions = () => {
+ return {
+ parserOpts: {
+ sourceType: 'module',
+ plugins: [
+ 'classProperties',
+ 'jsx',
+ 'flow',
+ 'flowComment',
+ 'trailingFunctionCommas',
+ 'asyncFunctions',
+ 'exponentiationOperator',
+ 'asyncGenerators',
+ 'objectRestSpread',
+ 'decorators',
+ 'dynamicImport'
+ ]
+ },
+ plugins: [
+ require('babel-plugin-transform-flow-strip-types'),
+ [require('babel-plugin-transform-define').default, exports.transformOptions.env]
+ ].concat(process.env.ESLINT === 'false' || exports.transformOptions.isNormal || exports.transformOptions.isTyped ? [] : eslint_1.eslintValidation)
+ .concat((process.env.NODE_ENV === 'test') ? [] : require('babel-plugin-remove-dead-code').default)
+ };
+};
+//# sourceMappingURL=options.js.map
\ No newline at end of file
diff --git a/packages/mp-jsx-ts/_scripts/jsx2wxml/options.js.map b/packages/mp-jsx-ts/_scripts/jsx2wxml/options.js.map
new file mode 100644
index 000000000..f8c466232
--- /dev/null
+++ b/packages/mp-jsx-ts/_scripts/jsx2wxml/options.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/options.ts"],"names":[],"mappings":";;AACA,qCAA2C;AAgB9B,QAAA,gBAAgB,GAAY,EAAS,CAAA;AAErC,QAAA,mBAAmB,GAAG,CAAC,OAAgB,EAAE,EAAE;IACtD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE;QACzB,IAAI,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;YAC/B,wBAAgB,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;SACrC;KACF;AACH,CAAC,CAAA;AAEY,QAAA,0BAA0B,GAA2B,GAAG,EAAE;IACrE,OAAO;QACL,UAAU,EAAE;YACV,UAAU,EAAE,QAAQ;YACpB,OAAO,EAAE;gBACP,iBAAiB;gBACjB,KAAK;gBACL,MAAM;gBACN,aAAa;gBACb,wBAAwB;gBACxB,gBAAgB;gBAChB,wBAAwB;gBACxB,iBAAiB;gBACjB,kBAAkB;gBAClB,YAAY;gBACZ,eAAe;aACP;SACX;QACD,OAAO,EAAE;YACP,OAAO,CAAC,yCAAyC,CAAC;YAClD,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC,OAAO,EAAE,wBAAgB,CAAC,GAAG,CAAC;SACzE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,OAAO,IAAI,wBAAgB,CAAC,QAAQ,IAAI,wBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAgB,CAAC;aACxH,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC,OAAO,CAAC;KACnG,CAAA;AACH,CAAC,CAAA"}
\ No newline at end of file
diff --git a/packages/mp-jsx-ts/_scripts/jsx2wxml/plugins.js b/packages/mp-jsx-ts/_scripts/jsx2wxml/plugins.js
new file mode 100644
index 000000000..c1fa59f43
--- /dev/null
+++ b/packages/mp-jsx-ts/_scripts/jsx2wxml/plugins.js
@@ -0,0 +1,45 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const t = require("babel-types");
+function isString(node) {
+ return t.isLiteral(node) && typeof node.value === 'string';
+}
+function buildBinaryExpression(left, right) {
+ return t.binaryExpression('+', left, right);
+}
+function templateLiterals(path, state) {
+ let nodes = [];
+ const expressions = path.get('expressions');
+ for (const elem of (path.node.quasis)) {
+ nodes.push(t.stringLiteral(elem.value.cooked));
+ const expr = expressions.shift();
+ if (expr) {
+ // tslint:disable-next-line:no-multi-spaces
+ if (state.opts.spec && !expr.isBaseType('string') && !expr.isBaseType('number')) {
+ nodes.push(t.callExpression(t.identifier('String'), [expr.node]));
+ }
+ else {
+ nodes.push(expr.node);
+ }
+ }
+ }
+ // filter out empty string literals
+ nodes = nodes.filter((n) => !t.isLiteral(n, { value: '' }));
+ // since `+` is left-to-right associative
+ // ensure the first node is a string if first/second isn't
+ if (!isString(nodes[0]) && !isString(nodes[1])) {
+ nodes.unshift(t.stringLiteral(''));
+ }
+ if (nodes.length > 1) {
+ let root = buildBinaryExpression(nodes.shift(), nodes.shift());
+ for (const node of nodes) {
+ root = buildBinaryExpression(root, node);
+ }
+ path.replaceWith(root);
+ }
+ else {
+ path.replaceWith(nodes[0]);
+ }
+}
+exports.templateLiterals = templateLiterals;
+//# sourceMappingURL=plugins.js.map
\ No newline at end of file
diff --git a/packages/mp-jsx-ts/_scripts/jsx2wxml/plugins.js.map b/packages/mp-jsx-ts/_scripts/jsx2wxml/plugins.js.map
new file mode 100644
index 000000000..898d70b7a
--- /dev/null
+++ b/packages/mp-jsx-ts/_scripts/jsx2wxml/plugins.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/plugins.ts"],"names":[],"mappings":";;AAAA,iCAAgC;AAEhC,SAAS,QAAQ,CAAE,IAAI;IACrB,OAAO,CAAC,CAAC,SAAS,CAAC,IAAW,CAAC,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAA;AACnE,CAAC;AAED,SAAS,qBAAqB,CAAE,IAAI,EAAE,KAAK;IACzC,OAAO,CAAC,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;AAC7C,CAAC;AACD,SAAgB,gBAAgB,CAAE,IAAI,EAAE,KAAK;IAE3C,IAAI,KAAK,GAAkB,EAAE,CAAA;IAE7B,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;IAE3C,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;QACrC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;QAE9C,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,EAAE,CAAA;QAChC,IAAI,IAAI,EAAE;YACR,2CAA2C;YAC3C,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAG;gBAChF,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;aAClE;iBAAM;gBACL,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;aACtB;SACF;KACF;IAED,mCAAmC;IACnC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;IAE3D,yCAAyC;IACzC,0DAA0D;IAC1D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;QAC9C,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAA;KACnC;IAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;QACpB,IAAI,IAAI,GAAG,qBAAqB,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAA;QAE9D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,IAAI,GAAG,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;SACzC;QAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;KACvB;SAAM;QACL,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;KAC3B;AACH,CAAC;AAxCD,4CAwCC"}
\ No newline at end of file
diff --git a/packages/mp-jsx-ts/_scripts/jsx2wxml/plugins/remove-dead-code.js b/packages/mp-jsx-ts/_scripts/jsx2wxml/plugins/remove-dead-code.js
new file mode 100644
index 000000000..d108edecf
--- /dev/null
+++ b/packages/mp-jsx-ts/_scripts/jsx2wxml/plugins/remove-dead-code.js
@@ -0,0 +1,1137 @@
+/* eslint-disable */
+// 修改自: https://github.com/babel/minify/blob/master/packages/babel-plugin-minify-dead-code-elimination/src/index.js
+// 主要更改了 `toStatements` 函数,remove if statement 发生在 render JSX 函数时不生成 block statement
+const { some } = require("lodash");
+const { markEvalScopes, hasEval } = require("babel-helper-mark-eval-scopes");
+const evaluate = require("babel-helper-evaluate-path");
+function evaluateTruthy(path) {
+ const res = evaluate(path);
+ if (res.confident)
+ return !!res.value;
+}
+function prevSiblings(path) {
+ const parentPath = path.parentPath;
+ const siblings = [];
+ let key = parentPath.key;
+ while ((path = parentPath.getSibling(--key)).type) {
+ siblings.push(path);
+ }
+ return siblings;
+}
+function forEachAncestor(path, callback) {
+ while ((path = path.parentPath)) {
+ callback(path);
+ }
+}
+function containJSXElement(path) {
+ let matched = false;
+ path.traverse({
+ JSXElement(p) {
+ matched = true;
+ p.stop();
+ }
+ });
+ return matched;
+}
+module.exports = ({ types: t, traverse }) => {
+ const removeOrVoid = require("babel-helper-remove-or-void")(t);
+ const shouldRevisit = Symbol("shouldRevisit");
+ // this is used for tracking fn params that can be removed
+ // as traversal takes place from left and
+ // unused params can be removed only on the right
+ const markForRemoval = Symbol("markForRemoval");
+ const main = {
+ // remove side effectless statement
+ ExpressionStatement(path) {
+ if (path.get("expression").isPure()) {
+ removeOrVoid(path);
+ }
+ },
+ Function: {
+ // Let's take all the vars in a function that are not in the top level scope and hoist them
+ // with the first var declaration in the top-level scope. This transform in itself may
+ // not yield much returns (or even can be marginally harmful to size). However it's great
+ // for taking away statements from blocks that can be only expressions which the `simplify`
+ // plugin can turn into other things (e.g. if => conditional).
+ exit(path) {
+ // This hurts gzip size.
+ if (!this.optimizeRawSize) {
+ return;
+ }
+ const { node, scope } = path;
+ const seen = new Set();
+ const declars = [];
+ const mutations = [];
+ for (const name in scope.bindings) {
+ const binding = scope.bindings[name];
+ if (!binding.path.isVariableDeclarator()) {
+ continue;
+ }
+ const declarPath = binding.path.parentPath;
+ if (seen.has(declarPath)) {
+ continue;
+ }
+ seen.add(declarPath);
+ if (declarPath.parentPath.isForInStatement()) {
+ continue;
+ }
+ if (declarPath.parentPath.parentPath.isFunction()) {
+ continue;
+ }
+ if (!declarPath.node || !declarPath.node.declarations) {
+ continue;
+ }
+ const assignmentSequence = [];
+ for (const declar of declarPath.node.declarations) {
+ declars.push(declar);
+ if (declar.init) {
+ assignmentSequence.push(t.assignmentExpression("=", declar.id, declar.init));
+ mutations.push(() => {
+ declar.init = null;
+ });
+ }
+ }
+ if (assignmentSequence.length) {
+ mutations.push(() => declarPath.replaceWith(t.sequenceExpression(assignmentSequence)));
+ }
+ else {
+ mutations.push(() => removeOrVoid(declarPath));
+ }
+ }
+ if (declars.length) {
+ mutations.forEach(f => f());
+ for (const statement of node.body.body) {
+ if (t.isVariableDeclaration(statement)) {
+ statement.declarations.push(...declars);
+ return;
+ }
+ }
+ const varDecl = t.variableDeclaration("var", declars);
+ node.body.body.unshift(varDecl);
+ }
+ }
+ },
+ // Remove bindings with no references.
+ Scope: {
+ exit(path) {
+ if (path.node[shouldRevisit]) {
+ delete path.node[shouldRevisit];
+ path.visit();
+ }
+ },
+ enter(path) {
+ if (path.isProgram()) {
+ return;
+ }
+ if (hasEval(path.scope)) {
+ return;
+ }
+ const { scope } = path;
+ // if the scope is created by a function, we obtain its
+ // parameter list
+ const canRemoveParams = path.isFunction() && path.node.kind !== "set";
+ const paramsList = canRemoveParams ? path.get("params") : [];
+ for (let i = paramsList.length - 1; i >= 0; i--) {
+ const param = paramsList[i];
+ if (param.isIdentifier()) {
+ const binding = scope.bindings[param.node.name];
+ if (!binding)
+ continue;
+ if (binding.referenced) {
+ // when the first binding is referenced (right to left)
+ // exit without marking anything after this
+ break;
+ }
+ binding[markForRemoval] = true;
+ continue;
+ }
+ else if (param.isAssignmentPattern()) {
+ const left = param.get("left");
+ const right = param.get("right");
+ if (left.isIdentifier() && right.isPure()) {
+ const binding = scope.bindings[left.node.name];
+ if (binding.referenced) {
+ // when the first binding is referenced (right to left)
+ // exit without marking anything after this
+ break;
+ }
+ binding[markForRemoval] = true;
+ continue;
+ }
+ }
+ // other patterns - assignment, object have side-effects
+ // and cannot be safely removed
+ break;
+ }
+ for (const name in scope.bindings) {
+ const binding = scope.bindings[name];
+ if (!binding.referenced && binding.kind !== "module") {
+ if (binding.kind === "param" &&
+ (this.keepFnArgs || !binding[markForRemoval])) {
+ continue;
+ }
+ else if (binding.path.isVariableDeclarator()) {
+ const declaration = binding.path.parentPath;
+ const maybeBlockParent = declaration.parentPath;
+ if (maybeBlockParent &&
+ maybeBlockParent.isForXStatement({
+ left: declaration.node
+ })) {
+ // Can't remove if in a for-in/for-of/for-await statement `for (var x in wat)`.
+ continue;
+ }
+ }
+ else if (!scope.isPure(binding.path.node)) {
+ // TODO: AssignmentPattern are marked as impure and unused ids aren't removed yet
+ continue;
+ }
+ else if (binding.path.isFunctionExpression() ||
+ binding.path.isClassExpression()) {
+ // `bar(function foo() {})` foo is not referenced but it's used.
+ continue;
+ }
+ else if (
+ // ClassDeclaration has binding in two scopes
+ // 1. The scope in which it is declared
+ // 2. The class's own scope
+ binding.path.isClassDeclaration() &&
+ binding.path === scope.path) {
+ continue;
+ }
+ const mutations = [];
+ let bail = false;
+ // Make sure none of the assignments value is used
+ binding.constantViolations.forEach(p => {
+ if (bail || p === binding.path) {
+ return;
+ }
+ if (!p.parentPath.isExpressionStatement()) {
+ bail = true;
+ }
+ if (p.isAssignmentExpression()) {
+ if (t.isArrayPattern(p.node.left) ||
+ t.isObjectPattern(p.node.left)) {
+ bail = true;
+ }
+ else if (p.get("right").isPure()) {
+ mutations.push(() => removeOrVoid(p));
+ }
+ else {
+ mutations.push(() => p.replaceWith(p.get("right")));
+ }
+ }
+ });
+ if (bail) {
+ continue;
+ }
+ if (binding.path.isVariableDeclarator()) {
+ if (!binding.path.get("id").isIdentifier()) {
+ // deopt for object and array pattern
+ continue;
+ }
+ // if declarator has some impure init expression
+ // var x = foo();
+ // => foo();
+ if (binding.path.node.init &&
+ !scope.isPure(binding.path.node.init) &&
+ binding.path.parentPath.node.declarations) {
+ // binding path has more than one declarations
+ if (binding.path.parentPath.node.declarations.length !== 1) {
+ continue;
+ }
+ binding.path.parentPath.replaceWith(binding.path.node.init);
+ }
+ else {
+ updateReferences(binding.path, this);
+ removeOrVoid(binding.path);
+ }
+ }
+ else {
+ updateReferences(binding.path, this);
+ removeOrVoid(binding.path);
+ }
+ mutations.forEach(f => f());
+ scope.removeBinding(name);
+ }
+ else if (binding.constant) {
+ if (binding.path.isFunctionDeclaration() ||
+ (binding.path.isVariableDeclarator() &&
+ binding.path.get("init").isFunction())) {
+ const fun = binding.path.isFunctionDeclaration()
+ ? binding.path
+ : binding.path.get("init");
+ let allInside = true;
+ for (const ref of binding.referencePaths) {
+ if (!ref.find(p => p.node === fun.node)) {
+ allInside = false;
+ break;
+ }
+ }
+ if (allInside) {
+ scope.removeBinding(name);
+ updateReferences(binding.path, this);
+ removeOrVoid(binding.path);
+ continue;
+ }
+ }
+ if (binding.references === 1 &&
+ binding.kind !== "param" &&
+ binding.kind !== "module" &&
+ binding.constant) {
+ let replacement = binding.path.node;
+ let replacementPath = binding.path;
+ let isReferencedBefore = false;
+ const refPath = binding.referencePaths[0];
+ if (t.isVariableDeclarator(replacement)) {
+ const _prevSiblings = prevSiblings(replacementPath);
+ // traverse ancestors of a reference checking if it's before declaration
+ forEachAncestor(refPath, ancestor => {
+ if (_prevSiblings.indexOf(ancestor) > -1) {
+ isReferencedBefore = true;
+ }
+ });
+ // deopt if reference is in different scope than binding
+ // since we don't know if it's sync or async execution
+ // (i.e. whether value has been assigned to a reference or not)
+ if (isReferencedBefore && refPath.scope !== binding.scope) {
+ continue;
+ }
+ // simulate hoisting by replacing value
+ // with undefined if declaration is after reference
+ replacement = isReferencedBefore
+ ? t.unaryExpression("void", t.numericLiteral(0), true)
+ : replacement.init;
+ // Bail out for ArrayPattern and ObjectPattern
+ // TODO: maybe a more intelligent approach instead of simply bailing out
+ if (!replacementPath.get("id").isIdentifier()) {
+ continue;
+ }
+ replacementPath = replacementPath.get("init");
+ }
+ if (!replacement) {
+ continue;
+ }
+ if (!scope.isPure(replacement, true) && !isReferencedBefore) {
+ continue;
+ }
+ let bail = false;
+ if (replacementPath.isIdentifier()) {
+ const binding = scope.getBinding(replacement.name);
+ // the reference should be in the same scope
+ // and the replacement should be a constant - this is to
+ // ensure that the duplication of replacement is not affected
+ // https://github.com/babel/minify/issues/685
+ bail = !(binding &&
+ refPath.scope.getBinding(replacement.name) === binding &&
+ binding.constantViolations.length === 0);
+ }
+ else {
+ replacementPath.traverse({
+ Function(path) {
+ path.skip();
+ },
+ ReferencedIdentifier({ node }) {
+ if (bail) {
+ return;
+ }
+ const binding = scope.getBinding(node.name);
+ if (binding &&
+ refPath.scope.getBinding(node.name) === binding) {
+ bail = binding.constantViolations.length > 0;
+ }
+ }
+ });
+ }
+ if (bail) {
+ continue;
+ }
+ let parent = binding.path.parent;
+ if (t.isVariableDeclaration(parent)) {
+ parent = binding.path.parentPath.parent;
+ }
+ // 1. Make sure we share the parent with the node. In other words it's lexically defined
+ // and not in an if statement or otherwise.
+ // 2. If the replacement is an object then we have to make sure we are not in a loop or a function
+ // because otherwise we'll be inlining and doing a lot more allocation than we have to
+ // which would also could affect correctness in that they are not the same reference.
+ let mayLoop = false;
+ const sharesRoot = refPath.find(({ node }) => {
+ if (!mayLoop) {
+ mayLoop =
+ t.isWhileStatement(node) ||
+ t.isFor(node) ||
+ t.isFunction(node);
+ }
+ return node === parent;
+ });
+ // Anything that inherits from Object.
+ const isObj = n => t.isFunction(n) ||
+ t.isObjectExpression(n) ||
+ t.isArrayExpression(n);
+ const isReplacementObj = isObj(replacement) || some(replacement, isObj);
+ if (!sharesRoot || (isReplacementObj && mayLoop)) {
+ continue;
+ }
+ // check if it's safe to replace
+ // To solve https://github.com/babel/minify/issues/691
+ // Here we bail for property checks using the "in" operator
+ // This is because - `in` is a side-effect-free operation but the property
+ // could be deleted between the replacementPath and referencePath
+ // It is expensive to compute the delete operation and we bail for
+ // all the binary "in" operations
+ let inExpression = replacementPath.isBinaryExpression({
+ operator: "in"
+ });
+ if (!inExpression) {
+ replacementPath.traverse({
+ Function(path) {
+ path.skip();
+ },
+ BinaryExpression(path) {
+ if (path.node.operator === "in") {
+ inExpression = true;
+ path.stop();
+ }
+ }
+ });
+ }
+ if (inExpression) {
+ continue;
+ }
+ const replaced = replace(binding.referencePaths[0], {
+ binding,
+ scope,
+ replacement,
+ replacementPath
+ });
+ if (replaced) {
+ scope.removeBinding(name);
+ if (binding.path.node) {
+ removeOrVoid(binding.path);
+ }
+ }
+ }
+ }
+ } // end-for-of
+ }
+ },
+ // Remove unreachable code.
+ BlockStatement(path) {
+ const paths = path.get("body");
+ let purge = false;
+ for (let i = 0; i < paths.length; i++) {
+ const p = paths[i];
+ if (!purge && p.isCompletionStatement()) {
+ purge = true;
+ continue;
+ }
+ if (purge && !canExistAfterCompletion(p)) {
+ removeOrVoid(p);
+ }
+ }
+ },
+ // Double check unreachable code and remove return statements that
+ // have no semantic meaning
+ ReturnStatement(path) {
+ const { node } = path;
+ if (!path.inList) {
+ return;
+ }
+ // Not last in its block? (See BlockStatement visitor)
+ if (path.container.length - 1 !== path.key &&
+ !canExistAfterCompletion(path.getSibling(path.key + 1)) &&
+ path.parentPath.isBlockStatement()) {
+ // This is probably a new oppurtinity by some other transform
+ // let's call the block visitor on this again before proceeding.
+ path.parentPath.pushContext(path.context);
+ path.parentPath.visit();
+ path.parentPath.popContext();
+ return;
+ }
+ if (node.argument) {
+ return;
+ }
+ let noNext = true;
+ let parentPath = path.parentPath;
+ while (parentPath && !parentPath.isFunction() && noNext) {
+ // https://github.com/babel/minify/issues/265
+ if (hasLoopParent(parentPath)) {
+ noNext = false;
+ break;
+ }
+ const nextPath = parentPath.getSibling(parentPath.key + 1);
+ if (nextPath.node) {
+ if (nextPath.isReturnStatement()) {
+ nextPath.pushContext(path.context);
+ nextPath.visit();
+ nextPath.popContext();
+ if (parentPath.getSibling(parentPath.key + 1).node) {
+ noNext = false;
+ break;
+ }
+ }
+ else {
+ noNext = false;
+ break;
+ }
+ }
+ parentPath = parentPath.parentPath;
+ }
+ if (noNext) {
+ removeOrVoid(path);
+ }
+ },
+ ConditionalExpression(path) {
+ const { node } = path;
+ const evaluateTest = evaluateTruthy(path.get("test"));
+ if (evaluateTest === true) {
+ path.replaceWith(node.consequent);
+ }
+ else if (evaluateTest === false) {
+ path.replaceWith(node.alternate);
+ }
+ },
+ SwitchStatement: {
+ exit(path) {
+ const discriminantPath = path.get("discriminant");
+ const evaluated = evaluate(discriminantPath, { tdz: this.tdz });
+ if (!evaluated.confident)
+ return;
+ // the simplify transformation might have brought in the previous
+ // expressions into the switch's test expression and instead of
+ // bailing out of impure path, we collect the impurities of it's
+ // a sequence expression and bail out if the primary test itself
+ // is impure
+ let beforeTest = [];
+ if (t.isSequenceExpression(discriminantPath.node)) {
+ const expressions = discriminantPath.get("expressions");
+ const lastExpression = expressions[expressions.length - 1];
+ if (!lastExpression.isPure()) {
+ return;
+ }
+ beforeTest = [
+ t.expressionStatement(t.sequenceExpression(expressions
+ .slice(0, expressions.length - 1)
+ .map(path => path.node)))
+ ];
+ }
+ else if (!discriminantPath.isPure()) {
+ return;
+ }
+ const discriminant = evaluated.value;
+ const cases = path.get("cases");
+ let matchingCaseIndex = -1;
+ let defaultCaseIndex = -1;
+ for (let i = 0; i < cases.length; i++) {
+ const test = cases[i].get("test");
+ // handle default case
+ if (test.node === null) {
+ defaultCaseIndex = i;
+ continue;
+ }
+ const testResult = evaluate(test, {
+ tdz: this.tdz
+ });
+ // if we are not able to deternine a test during
+ // compile time, we terminate immediately
+ if (!testResult.confident)
+ return;
+ if (testResult.value === discriminant) {
+ matchingCaseIndex = i;
+ break;
+ }
+ }
+ let result;
+ if (matchingCaseIndex === -1) {
+ if (defaultCaseIndex === -1) {
+ path.skip();
+ path.replaceWithMultiple(extractVars(path));
+ return;
+ }
+ else {
+ result = getStatementsUntilBreak(defaultCaseIndex);
+ }
+ }
+ else {
+ result = getStatementsUntilBreak(matchingCaseIndex);
+ }
+ if (result.bail)
+ return;
+ // we extract vars from the entire switch statement
+ // and there will be duplicates which
+ // will be again removed by DCE
+ replaceSwitch([
+ ...extractVars(path),
+ ...beforeTest,
+ ...result.statements
+ ]);
+ function getStatementsUntilBreak(start) {
+ const result = { bail: false, statements: [] };
+ for (let i = start; i < cases.length; i++) {
+ const consequent = cases[i].get("consequent");
+ for (let j = 0; j < consequent.length; j++) {
+ const _isBreaking = isBreaking(consequent[j], path);
+ if (_isBreaking.bail) {
+ result.bail = true;
+ return result;
+ }
+ if (_isBreaking.break) {
+ // compute no more
+ // exit out of the loop
+ return result;
+ }
+ else {
+ result.statements.push(consequent[j].node);
+ }
+ }
+ }
+ return result;
+ }
+ function replaceSwitch(statements) {
+ let isBlockRequired = false;
+ for (let i = 0; i < statements.length; i++) {
+ if (t.isVariableDeclaration(statements[i], { kind: "let" })) {
+ isBlockRequired = true;
+ break;
+ }
+ if (t.isVariableDeclaration(statements[i], { kind: "const" })) {
+ isBlockRequired = true;
+ break;
+ }
+ }
+ if (isBlockRequired) {
+ path.replaceWith(t.BlockStatement(statements));
+ }
+ else {
+ path.replaceWithMultiple(statements);
+ }
+ }
+ }
+ },
+ WhileStatement(path) {
+ const test = path.get("test");
+ const result = evaluate(test, { tdz: this.tdz });
+ if (result.confident && test.isPure() && !result.value) {
+ path.remove();
+ }
+ },
+ ForStatement(path) {
+ const test = path.get("test");
+ if (!test.isPure())
+ return;
+ const result = evaluate(test, { tdz: this.tdz });
+ if (result.confident) {
+ if (result.value) {
+ test.remove();
+ }
+ else {
+ const init = path.get("init");
+ if (init.node && !init.isPure()) {
+ path.replaceWith(init);
+ }
+ else {
+ path.remove();
+ }
+ }
+ }
+ },
+ DoWhileStatement(path) {
+ const test = path.get("test");
+ const result = evaluate(test, { tdz: this.tdz });
+ if (result.confident && test.isPure() && !result.value) {
+ const body = path.get("body");
+ if (body.isBlockStatement()) {
+ const stmts = body.get("body");
+ for (const stmt of stmts) {
+ const _isBreaking = isBreaking(stmt, path);
+ if (_isBreaking.bail || _isBreaking.break)
+ return;
+ const _isContinuing = isContinuing(stmt, path);
+ if (_isContinuing.bail || isContinuing.continue)
+ return;
+ }
+ path.replaceWith(body.node);
+ }
+ else if (body.isBreakStatement()) {
+ const _isBreaking = isBreaking(body, path);
+ if (_isBreaking.bail)
+ return;
+ if (_isBreaking.break)
+ path.remove();
+ }
+ else if (body.isContinueStatement()) {
+ return;
+ }
+ else {
+ path.replaceWith(body.node);
+ }
+ }
+ },
+ // Join assignment and definition when in sequence.
+ // var x; x = 1; -> var x = 1;
+ AssignmentExpression(path) {
+ if (!path.get("left").isIdentifier() ||
+ !path.parentPath.isExpressionStatement()) {
+ return;
+ }
+ const prev = path.parentPath.getSibling(path.parentPath.key - 1);
+ if (!(prev && prev.isVariableDeclaration())) {
+ return;
+ }
+ const declars = prev.node.declarations;
+ if (declars.length !== 1 ||
+ declars[0].init ||
+ declars[0].id.name !== path.get("left").node.name) {
+ return;
+ }
+ declars[0].init = path.node.right;
+ removeOrVoid(path);
+ },
+ // Remove named function expression name. While this is dangerous as it changes
+ // `function.name` all minifiers do it and hence became a standard.
+ FunctionExpression(path) {
+ if (!this.keepFnName) {
+ removeUnreferencedId(path);
+ }
+ },
+ // remove class names
+ ClassExpression(path) {
+ if (!this.keepClassName) {
+ removeUnreferencedId(path);
+ }
+ },
+ // Put the `var` in the left if feasible.
+ ForInStatement(path) {
+ const left = path.get("left");
+ if (!left.isIdentifier()) {
+ return;
+ }
+ const binding = path.scope.getBinding(left.node.name);
+ if (!binding) {
+ return;
+ }
+ if (binding.scope.getFunctionParent() !== path.scope.getFunctionParent()) {
+ return;
+ }
+ if (!binding.path.isVariableDeclarator()) {
+ return;
+ }
+ if (binding.path.parentPath.parentPath.isForInStatement({
+ left: binding.path.parent
+ })) {
+ return;
+ }
+ // If it has company then it's probably more efficient to keep.
+ if (binding.path.parent.declarations.length > 1) {
+ return;
+ }
+ // meh
+ if (binding.path.node.init) {
+ return;
+ }
+ removeOrVoid(binding.path);
+ path.node.left = t.variableDeclaration("var", [
+ t.variableDeclarator(left.node)
+ ]);
+ binding.path = path.get("left").get("declarations")[0];
+ }
+ };
+ return {
+ name: "minify-dead-code-elimination",
+ visitor: {
+ IfStatement: {
+ exit(path, { opts: { tdz = false } = {} }) {
+ const consequent = path.get("consequent");
+ const alternate = path.get("alternate");
+ const test = path.get("test");
+ const evalResult = evaluate(test, { tdz });
+ const isPure = test.isPure();
+ const replacements = [];
+ const isRenderFunction = !!path.findParent(p => p.isClassMethod() && t.isIdentifier(p.node.key) && p.node.key.name.startsWith('render')) && containJSXElement(path);
+ if (evalResult.confident && !isPure && test.isSequenceExpression()) {
+ replacements.push(t.expressionStatement(extractSequenceImpure(test)));
+ }
+ // we can check if a test will be truthy 100% and if so then we can inline
+ // the consequent and completely ignore the alternate
+ //
+ // if (true) { foo; } -> { foo; }
+ // if ("foo") { foo; } -> { foo; }
+ //
+ if (evalResult.confident && evalResult.value) {
+ path.replaceWithMultiple([
+ ...replacements,
+ ...toStatements(consequent, isRenderFunction),
+ ...extractVars(alternate)
+ ]);
+ return;
+ }
+ // we can check if a test will be falsy 100% and if so we can inline the
+ // alternate if there is one and completely remove the consequent
+ //
+ // if ("") { bar; } else { foo; } -> { foo; }
+ // if ("") { bar; } ->
+ //
+ if (evalResult.confident && !evalResult.value) {
+ if (alternate.node) {
+ path.replaceWithMultiple([
+ ...replacements,
+ ...toStatements(alternate, isRenderFunction),
+ ...extractVars(consequent)
+ ]);
+ return;
+ }
+ else {
+ path.replaceWithMultiple([
+ ...replacements,
+ ...extractVars(consequent)
+ ]);
+ }
+ }
+ // remove alternate blocks that are empty
+ //
+ // if (foo) { foo; } else {} -> if (foo) { foo; }
+ //
+ if (alternate.isBlockStatement() && !alternate.node.body.length) {
+ alternate.remove();
+ // For if-statements babel-traverse replaces with an empty block
+ path.node.alternate = null;
+ }
+ // if the consequent block is empty turn alternate blocks into a consequent
+ // and flip the test
+ //
+ // if (foo) {} else { bar; } -> if (!foo) { bar; }
+ //
+ if (consequent.isBlockStatement() &&
+ !consequent.node.body.length &&
+ alternate.isBlockStatement() &&
+ alternate.node.body.length) {
+ consequent.replaceWith(alternate.node);
+ alternate.remove();
+ // For if-statements babel-traverse replaces with an empty block
+ path.node.alternate = null;
+ test.replaceWith(t.unaryExpression("!", test.node, true));
+ }
+ }
+ },
+ EmptyStatement(path) {
+ if (path.parentPath.isBlockStatement() || path.parentPath.isProgram()) {
+ path.remove();
+ }
+ },
+ Program: {
+ exit(path, { opts: {
+ // set defaults
+ optimizeRawSize = false, keepFnName = false, keepClassName = false, keepFnArgs = false, tdz = false } = {} } = {}) {
+ (traverse.clearCache || traverse.cache.clear)();
+ path.scope.crawl();
+ markEvalScopes(path);
+ // We need to run this plugin in isolation.
+ path.traverse(main, {
+ functionToBindings: new Map(),
+ optimizeRawSize,
+ keepFnName,
+ keepClassName,
+ keepFnArgs,
+ tdz
+ });
+ }
+ }
+ }
+ };
+ function toStatements(path, isRenderFunction) {
+ const { node } = path;
+ if (path.isBlockStatement()) {
+ if (isRenderFunction) {
+ return node.body;
+ }
+ let hasBlockScoped = false;
+ for (let i = 0; i < node.body.length; i++) {
+ const bodyNode = node.body[i];
+ if (t.isBlockScoped(bodyNode)) {
+ hasBlockScoped = true;
+ }
+ }
+ if (!hasBlockScoped) {
+ return node.body;
+ }
+ }
+ return [node];
+ }
+ // Extracts vars from a path
+ // Useful for removing blocks or paths that can contain
+ // variable declarations inside them
+ // Note:
+ // drops are inits
+ // extractVars({ var x = 5, y = x }) => var x, y;
+ function extractVars(path) {
+ const declarators = [];
+ if (path.isVariableDeclaration({ kind: "var" })) {
+ for (const decl of path.node.declarations) {
+ const bindingIds = Object.keys(t.getBindingIdentifiers(decl.id));
+ declarators.push(...bindingIds.map(name => t.variableDeclarator(t.identifier(name))));
+ }
+ }
+ else {
+ path.traverse({
+ VariableDeclaration(varPath) {
+ if (!varPath.isVariableDeclaration({ kind: "var" }))
+ return;
+ if (!isSameFunctionScope(varPath, path))
+ return;
+ for (const decl of varPath.node.declarations) {
+ const bindingIds = Object.keys(t.getBindingIdentifiers(decl.id));
+ declarators.push(...bindingIds.map(name => t.variableDeclarator(t.identifier(name))));
+ }
+ }
+ });
+ }
+ if (declarators.length <= 0)
+ return [];
+ return [t.variableDeclaration("var", declarators)];
+ }
+ function replace(path, options) {
+ const { replacement, replacementPath, scope, binding } = options;
+ // Same name, different binding.
+ if (scope.getBinding(path.node.name) !== binding) {
+ return;
+ }
+ // We don't want to move code around to different scopes because:
+ // 1. Original bindings that is referenced could be shadowed
+ // 2. Moving defintions to potentially hot code is bad
+ if (scope !== path.scope) {
+ if (t.isClass(replacement) || t.isFunction(replacement)) {
+ return;
+ }
+ let bail = false;
+ traverse(replacement, {
+ Function(path) {
+ if (bail) {
+ return;
+ }
+ bail = true;
+ path.stop();
+ }
+ }, scope);
+ if (bail) {
+ return;
+ }
+ }
+ // Avoid recursion.
+ if (path.find(({ node }) => node === replacement)) {
+ return;
+ }
+ // https://github.com/babel/minify/issues/611
+ // this is valid only for FunctionDeclaration where we convert
+ // function declaration to expression in the next step
+ if (replacementPath.isFunctionDeclaration()) {
+ const fnName = replacementPath.get("id").node.name;
+ for (let name in replacementPath.scope.bindings) {
+ if (name === fnName) {
+ return;
+ }
+ }
+ }
+ // https://github.com/babel/minify/issues/130
+ if (!t.isExpression(replacement)) {
+ t.toExpression(replacement);
+ }
+ // We don't remove fn name here, we let the FnExpr & ClassExpr visitors
+ // check its references and remove unreferenced ones
+ // if (t.isFunction(replacement)) {
+ // replacement.id = null;
+ // }
+ path.replaceWith(replacement);
+ return true;
+ }
+ function updateReferences(fnToDeletePath) {
+ if (!fnToDeletePath.isFunction()) {
+ return;
+ }
+ fnToDeletePath.traverse({
+ ReferencedIdentifier(path) {
+ const { node, scope } = path;
+ const binding = scope.getBinding(node.name);
+ if (!binding ||
+ !binding.path.isFunction() ||
+ binding.scope === scope ||
+ !binding.constant) {
+ return;
+ }
+ const index = binding.referencePaths.indexOf(path);
+ if (index === -1) {
+ return;
+ }
+ binding.references--;
+ binding.referencePaths.splice(index, 1);
+ if (binding.references === 0) {
+ binding.referenced = false;
+ }
+ if (binding.references <= 1 && binding.scope.path.node) {
+ binding.scope.path.node[shouldRevisit] = true;
+ }
+ }
+ });
+ }
+ function removeUnreferencedId(path) {
+ const id = path.get("id").node;
+ if (!id) {
+ return;
+ }
+ const { node, scope } = path;
+ const binding = scope.getBinding(id.name);
+ // Check if shadowed or is not referenced.
+ if (binding && (binding.path.node !== node || !binding.referenced)) {
+ node.id = null;
+ }
+ }
+ // path1 -> path2
+ // is path1 an ancestor of path2
+ function isAncestor(path1, path2) {
+ return !!path2.findParent(parent => parent === path1);
+ }
+ function isSameFunctionScope(path1, path2) {
+ return path1.scope.getFunctionParent() === path2.scope.getFunctionParent();
+ }
+ function isBreaking(stmt, path) {
+ return isControlTransfer(stmt, path, "break");
+ }
+ function isContinuing(stmt, path) {
+ return isControlTransfer(stmt, path, "continue");
+ }
+ // tells if a "stmt" is a break/continue statement
+ function isControlTransfer(stmt, path, control = "break") {
+ const { [control]: type } = {
+ break: "BreakStatement",
+ continue: "ContinueStatement"
+ };
+ if (!type) {
+ throw new Error("Can only handle break and continue statements");
+ }
+ const checker = `is${type}`;
+ if (stmt[checker]()) {
+ return _isControlTransfer(stmt, path);
+ }
+ let isTransferred = false;
+ let result = {
+ [control]: false,
+ bail: false
+ };
+ stmt.traverse({
+ [type](cPath) {
+ // if we already detected a break/continue statement,
+ if (isTransferred)
+ return;
+ result = _isControlTransfer(cPath, path);
+ if (result.bail || result[control]) {
+ isTransferred = true;
+ }
+ }
+ });
+ return result;
+ function _isControlTransfer(cPath, path) {
+ const label = cPath.get("label");
+ if (label.node !== null) {
+ // labels are fn scoped and not accessible by inner functions
+ // path is the switch statement
+ if (!isSameFunctionScope(path, cPath)) {
+ // we don't have to worry about this break statement
+ return {
+ break: false,
+ bail: false
+ };
+ }
+ // here we handle the break labels
+ // if they are outside switch, we bail out
+ // if they are within the case, we keep them
+ let labelPath;
+ if (path.scope.getLabel) {
+ labelPath = getLabel(label.node.name, path);
+ }
+ else {
+ labelPath = path.scope.getBinding(label.node.name).path;
+ }
+ const _isAncestor = isAncestor(labelPath, path);
+ return {
+ bail: _isAncestor,
+ [control]: _isAncestor
+ };
+ }
+ // set the flag that it is indeed breaking
+ let isCTransfer = true;
+ // this flag is to capture
+ // switch(0) { case 0: while(1) if (x) break; }
+ let possibleRunTimeControlTransfer = false;
+ // and compute if it's breaking the correct thing
+ let parent = cPath.parentPath;
+ while (parent !== stmt.parentPath) {
+ // loops and nested switch cases
+ if (parent.isLoop() || parent.isSwitchCase()) {
+ // invalidate all the possible runtime breaks captured
+ // while (1) { if (x) break; }
+ possibleRunTimeControlTransfer = false;
+ // and set that it's not breaking our switch statement
+ isCTransfer = false;
+ break;
+ }
+ //
+ // this is a special case and depends on
+ // the fact that SwitchStatement is handled in the
+ // exit hook of the traverse
+ //
+ // switch (0) {
+ // case 0: if (x) break;
+ // }
+ //
+ // here `x` is runtime only.
+ // in this case, we need to bail out. So we depend on exit hook
+ // of switch so that, it would have visited the IfStatement first
+ // before the SwitchStatement and would have removed the
+ // IfStatement if it was a compile time determined
+ //
+ if (parent.isIfStatement()) {
+ possibleRunTimeControlTransfer = true;
+ }
+ parent = parent.parentPath;
+ }
+ return {
+ [control]: possibleRunTimeControlTransfer || isCTransfer,
+ bail: possibleRunTimeControlTransfer
+ };
+ }
+ }
+ // things that are hoisted
+ function canExistAfterCompletion(path) {
+ return (path.isFunctionDeclaration() ||
+ path.isVariableDeclaration({ kind: "var" }));
+ }
+ function getLabel(name, _path) {
+ let label, path = _path;
+ do {
+ label = path.scope.getLabel(name);
+ if (label) {
+ return label;
+ }
+ } while ((path = path.parentPath));
+ return null;
+ }
+ function hasLoopParent(path) {
+ let parent = path;
+ do {
+ if (parent.isLoop()) {
+ return true;
+ }
+ } while ((parent = parent.parentPath));
+ return false;
+ }
+ function extractSequenceImpure(seq) {
+ const expressions = seq.get("expressions");
+ const result = [];
+ for (let i = 0; i < expressions.length; i++) {
+ if (!expressions[i].isPure()) {
+ result.push(expressions[i].node);
+ }
+ }
+ return t.sequenceExpression(result);
+ }
+};
+//# sourceMappingURL=remove-dead-code.js.map
\ No newline at end of file
diff --git a/packages/mp-jsx-ts/_scripts/jsx2wxml/plugins/remove-dead-code.js.map b/packages/mp-jsx-ts/_scripts/jsx2wxml/plugins/remove-dead-code.js.map
new file mode 100644
index 000000000..3d9a44730
--- /dev/null
+++ b/packages/mp-jsx-ts/_scripts/jsx2wxml/plugins/remove-dead-code.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"remove-dead-code.js","sourceRoot":"","sources":["../../../src/plugins/remove-dead-code.js"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/packages/mp-jsx-ts/_scripts/jsx2wxml/render.js b/packages/mp-jsx-ts/_scripts/jsx2wxml/render.js
new file mode 100644
index 000000000..25781234d
--- /dev/null
+++ b/packages/mp-jsx-ts/_scripts/jsx2wxml/render.js
@@ -0,0 +1,1530 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const babel_traverse_1 = require("babel-traverse");
+const t = require("babel-types");
+const babel_core_1 = require("babel-core");
+const utils_1 = require("./utils");
+const lodash_1 = require("lodash");
+const jsx_1 = require("./jsx");
+const constant_1 = require("./constant");
+const adapter_1 = require("./adapter");
+const options_1 = require("./options");
+const babel_generator_1 = require("babel-generator");
+const template = require('babel-template');
+function findParents(path, cb) {
+ const parents = [];
+ // tslint:disable-next-line:no-conditional-assignment
+ while (path = path.parentPath) {
+ if (cb(path)) {
+ parents.push(path);
+ }
+ }
+ return parents;
+}
+function isClassDcl(p) {
+ return p.isClassExpression() || p.isClassDeclaration();
+}
+function isChildrenOfJSXAttr(p) {
+ return !!p.findParent(p => p.isJSXAttribute());
+}
+function buildAssignState(pendingState) {
+ return t.expressionStatement(t.callExpression(t.memberExpression(t.identifier('Object'), t.identifier('assign')), [
+ t.memberExpression(t.thisExpression(), t.identifier('state')),
+ pendingState
+ ]));
+}
+class RenderParser {
+ constructor(renderPath, methods, initState, referencedIdentifiers, usedState, loopStateName, customComponentNames, customComponentData, componentProperies, loopRefs) {
+ this.classProperties = new Set();
+ this.templates = new Map();
+ this.jsxDeclarations = new Set();
+ this.loopScopes = new Set();
+ this.returnedPaths = [];
+ this.usedThisState = new Set();
+ this.loopComponents = new Map();
+ this.loopRefIdentifiers = new Map();
+ this.reserveStateWords = new Set(['state', 'props']);
+ this.topLevelIfStatement = new Set();
+ this.usedEvents = new Set();
+ this.loopCalleeId = new Set();
+ this.usedThisProperties = new Set();
+ this.incrementCalleeId = utils_1.incrementId();
+ this.classComputedState = new Set();
+ this.loopIfStemComponentMap = new Map();
+ this.hasNoReturnLoopStem = false;
+ this.handleJSXElement = (jsxElementPath, func) => {
+ const parentNode = jsxElementPath.parent;
+ const parentPath = jsxElementPath.parentPath;
+ const isJSXChildren = t.isJSXElement(parentNode);
+ if (!isJSXChildren) {
+ let statementParent = jsxElementPath.getStatementParent();
+ const isReturnStatement = statementParent.isReturnStatement();
+ const isIfStemInLoop = this.isIfStemInLoop(jsxElementPath);
+ const isFinalReturn = statementParent.getFunctionParent().isClassMethod();
+ if (!(statementParent.isVariableDeclaration() ||
+ statementParent.isExpressionStatement())) {
+ statementParent = statementParent.findParent(s => s.isVariableDeclaration() || s.isExpressionStatement());
+ }
+ if (t.isVariableDeclarator(parentNode)) {
+ if (statementParent) {
+ const name = utils_1.findIdentifierFromStatement(statementParent.node);
+ // setTemplate(name, path, templates)
+ name && this.templates.set(name, jsxElementPath.node);
+ }
+ }
+ func({ parentNode, parentPath, statementParent, isReturnStatement, isFinalReturn, isIfStemInLoop });
+ }
+ };
+ this.isIfStemInLoop = (p) => {
+ const ifStem = p.findParent(p => p.isIfStatement());
+ if (ifStem && ifStem.isIfStatement()) {
+ const loopStem = ifStem.findParent(p => p.isCallExpression());
+ if (loopStem && utils_1.isArrayMapCallExpression(loopStem)) {
+ return true;
+ }
+ }
+ return false;
+ };
+ this.isLiteralOrUndefined = (node) => t.isLiteral(node) || t.isIdentifier(node, { name: 'undefined' });
+ this.replaceIdWithTemplate = (handleRefId = false) => (path) => {
+ if (!t.isJSXAttribute(path.parent)) {
+ path.traverse({
+ Identifier: (path) => {
+ const parentPath = path.parentPath;
+ if (parentPath.isConditionalExpression() ||
+ parentPath.isLogicalExpression() ||
+ path.isReferencedIdentifier()) {
+ const name = path.node.name;
+ if (handleRefId && Object.keys(this.renderScope.getAllBindings()).includes(name)) {
+ this.addRefIdentifier(path, path.node);
+ // referencedIdentifiers.add(path.node)
+ }
+ if (this.templates.has(name)) {
+ path.replaceWith(this.templates.get(name));
+ }
+ }
+ }
+ });
+ }
+ };
+ this.hasStateOrProps = (key) => (p) => t.isObjectProperty(p) && t.isIdentifier(p.key) && p.key.name === key;
+ this.loopComponentVisitor = {
+ VariableDeclarator: (path) => {
+ const id = path.get('id');
+ const init = path.get('init');
+ const parentPath = path.parentPath;
+ if (id.isObjectPattern() &&
+ init.isThisExpression() &&
+ parentPath.isVariableDeclaration()) {
+ const { properties } = id.node;
+ this.destructStateOrProps('state', path, properties, parentPath);
+ this.destructStateOrProps('props', path, properties, parentPath);
+ }
+ },
+ JSXElement: {
+ enter: (jsxElementPath) => {
+ this.handleJSXElement(jsxElementPath, (options) => {
+ this.handleConditionExpr(options, jsxElementPath);
+ if (this.isIfStemInLoop(jsxElementPath)) {
+ this.handleJSXInIfStatement(jsxElementPath, options);
+ this.removeJSXStatement();
+ }
+ });
+ },
+ exit: (jsxElementPath) => {
+ this.handleJSXElement(jsxElementPath, ({ parentNode, parentPath, statementParent, isFinalReturn }) => {
+ if (statementParent && statementParent.findParent(p => p === this.renderPath)) {
+ this.jsxDeclarations.add(statementParent);
+ }
+ if (t.isReturnStatement(parentNode)) {
+ if (!isFinalReturn) {
+ const callExpr = parentPath.findParent(p => p.isCallExpression());
+ if (callExpr.isCallExpression()) {
+ const callee = callExpr.node.callee;
+ if (this.loopComponents.has(callExpr)) {
+ return;
+ }
+ if (t.isMemberExpression(callee) &&
+ t.isIdentifier(callee.property) &&
+ callee.property.name === 'map') {
+ let ary = callee.object;
+ if (t.isCallExpression(ary) || utils_1.isContainFunction(callExpr.get('callee').get('object'))) {
+ const variableName = `${constant_1.LOOP_CALLEE}_${this.incrementCalleeId()}`;
+ callExpr.getStatementParent().insertBefore(utils_1.buildConstVariableDeclaration(variableName, utils_1.setParentCondition(jsxElementPath, ary, true)));
+ ary = t.identifier(variableName);
+ }
+ if (t.isMemberExpression(ary)) {
+ const id = utils_1.findFirstIdentifierFromMemberExpression(ary);
+ if (t.isIdentifier(id)) {
+ this.referencedIdentifiers.add(id);
+ }
+ }
+ else if (t.isIdentifier(ary)) {
+ const parentCallExpr = callExpr.find(p => p.isCallExpression());
+ if (!utils_1.isArrayMapCallExpression(parentCallExpr) && parentCallExpr !== callExpr) {
+ this.referencedIdentifiers.add(ary);
+ }
+ }
+ jsx_1.setJSXAttr(jsxElementPath.node, adapter_1.Adapter.for, t.jSXExpressionContainer(ary));
+ this.loopCalleeId.add(utils_1.findFirstIdentifierFromMemberExpression(callee));
+ const [func] = callExpr.node.arguments;
+ if (t.isFunctionExpression(func) ||
+ t.isArrowFunctionExpression(func)) {
+ const [item, index] = func.params;
+ if (t.isIdentifier(item)) {
+ jsx_1.setJSXAttr(jsxElementPath.node, adapter_1.Adapter.forItem, t.stringLiteral(item.name));
+ this.loopScopes.add(item.name);
+ }
+ else if (t.isObjectPattern(item)) {
+ throw utils_1.codeFrameError(item.loc, 'JSX map 循环参数暂时不支持使用 Object pattern 解构。');
+ }
+ else {
+ jsx_1.setJSXAttr(jsxElementPath.node, adapter_1.Adapter.forItem, t.stringLiteral('__item'));
+ }
+ if (t.isIdentifier(index)) {
+ jsx_1.setJSXAttr(jsxElementPath.node, adapter_1.Adapter.forIndex, t.stringLiteral(index.name));
+ this.loopScopes.add(index.name);
+ }
+ else if (index === undefined) {
+ if (process.env.NODE_ENV !== 'test') {
+ jsx_1.setJSXAttr(jsxElementPath.node, adapter_1.Adapter.forIndex, t.stringLiteral(this.renderScope.generateUid('anonIdx')));
+ }
+ }
+ else {
+ throw utils_1.codeFrameError(index, '包含 JSX 的 map 循环第二个参数只能是一个普通标识符');
+ }
+ this.loopComponents.set(callExpr, jsxElementPath);
+ // caller.replaceWith(jsxElementPath.node)
+ if (statementParent) {
+ const name = utils_1.findIdentifierFromStatement(statementParent.node);
+ // setTemplate(name, path, templates)
+ name && this.templates.set(name, jsxElementPath.node);
+ }
+ }
+ }
+ }
+ }
+ }
+ else if (t.isArrowFunctionExpression(parentNode)) {
+ parentPath.replaceWith(t.arrowFunctionExpression(parentNode.params, t.blockStatement([
+ t.returnStatement(jsxElementPath.node)
+ ])));
+ }
+ });
+ }
+ }
+ };
+ this.renameIfScopeVaribale = (blockStatement) => {
+ return {
+ VariableDeclarator: (p) => {
+ const { id, init } = p.node;
+ const ifStem = p.parentPath.parentPath.parentPath;
+ if (!ifStem.isIfStatement() || utils_1.isContainJSXElement(p)) {
+ return;
+ }
+ if (t.isIdentifier(id)) {
+ if (id.name.startsWith('loopArray') || id.name.startsWith(constant_1.LOOP_CALLEE)) {
+ this.renderPath.node.body.body.unshift(t.variableDeclaration('let', [t.variableDeclarator(t.identifier(id.name))]));
+ p.parentPath.replaceWith(template('ID = INIT;')({ ID: t.identifier(id.name), INIT: init }));
+ }
+ else {
+ const newId = this.renderScope.generateDeclaredUidIdentifier('$' + id.name);
+ blockStatement.scope.rename(id.name, newId.name);
+ p.parentPath.replaceWith(template('ID = INIT;')({ ID: newId, INIT: init || t.identifier('undefined') }));
+ }
+ }
+ },
+ JSXElement: (jsxElementPath) => {
+ this.handleJSXElement(jsxElementPath, (options) => {
+ this.handleConditionExpr(options, jsxElementPath);
+ });
+ },
+ JSXExpressionContainer: this.replaceIdWithTemplate(true)
+ };
+ };
+ this.findParallelIfStem = (p) => {
+ const exprs = new Set();
+ let expr = p.parentPath;
+ while (expr.isIfStatement()) {
+ exprs.add(expr);
+ expr = expr.parentPath;
+ }
+ return exprs;
+ };
+ this.handleNestedIfStatement = (block, jsx, test, hasNest) => {
+ if (this.isEmptyBlock(block)) {
+ return;
+ }
+ for (const child of block.children) {
+ if (!t.isJSXElement(child)) {
+ continue;
+ }
+ const ifAttr = child.openingElement.attributes.find(a => a.name.name === adapter_1.Adapter.if);
+ const ifElseAttr = child.openingElement.attributes.find(a => a.name.name === adapter_1.Adapter.elseif);
+ if ((ifAttr && t.isJSXExpressionContainer(ifAttr.value, { expression: test }))
+ ||
+ (ifElseAttr && t.isJSXExpressionContainer(ifElseAttr.value, { expression: test }))) {
+ child.children.push(jsx);
+ hasNest = true;
+ break;
+ }
+ else {
+ this.handleNestedIfStatement(child, jsx, test, hasNest);
+ }
+ }
+ };
+ this.isEmptyBlock = ((block) => block.children.length === 0 && block.openingElement.attributes.length === 0);
+ this.jsxElementVisitor = {
+ JSXElement: (jsxElementPath) => {
+ this.handleJSXElement(jsxElementPath, (options) => {
+ this.handleConditionExpr(options, jsxElementPath);
+ this.handleJSXInIfStatement(jsxElementPath, options);
+ });
+ // handle jsx attrs
+ jsxElementPath.traverse(this.jsxAttrVisitor);
+ }
+ };
+ this.jsxAttrVisitor = {
+ JSXExpressionContainer: (path) => {
+ if (!isChildrenOfJSXAttr(path)) {
+ return;
+ }
+ const expression = path.get('expression');
+ if (expression.isStringLiteral()) {
+ path.replaceWith(expression);
+ }
+ else if (expression.isCallExpression()) {
+ const node = expression.node;
+ if (t.isMemberExpression(node.callee) &&
+ t.isIdentifier(node.callee.property) &&
+ node.callee.property.name === 'bind') {
+ const JSXElement = path.findParent(p => p.isJSXElement())
+ .node;
+ // const JSXAttribute = path.findParent(p => p.isJSXAttribute())
+ let bindCalleeName = null;
+ if (t.isIdentifier(node.callee.object)) {
+ bindCalleeName = node.callee.object.name;
+ }
+ else if (t.isMemberExpression(node.callee.object)) {
+ if (t.isIdentifier(node.callee.object.property)) {
+ bindCalleeName = node.callee.object.property.name;
+ }
+ }
+ if (bindCalleeName !== null) {
+ const attr = path.parentPath.node;
+ let bindEventName = attr.name.name;
+ bindEventName = bindEventName.replace(/^bind|^catch/, '');
+ const args = expression.get('arguments');
+ args.forEach((arg, index) => {
+ const node = arg.node;
+ const argName = babel_generator_1.default(node).code;
+ if (index === 0) {
+ jsx_1.setJSXAttr(JSXElement, `data-e-${bindEventName}-so`, t.stringLiteral(argName));
+ }
+ else {
+ let expr = null;
+ if (t.isIdentifier(node) && path.scope.hasBinding(argName)) {
+ this.addRefIdentifier(path, node);
+ expr = t.jSXExpressionContainer(node);
+ }
+ else if (t.isMemberExpression(node)) {
+ const id = utils_1.findFirstIdentifierFromMemberExpression(node);
+ this.addRefIdentifier(path, id);
+ expr = t.jSXExpressionContainer(node);
+ }
+ else if (node.type === 'NumericLiteral' || t.isStringLiteral(node) || t.isBooleanLiteral(node) || t.isNullLiteral(node)) {
+ expr = t.jSXExpressionContainer(node);
+ }
+ else if (utils_1.hasComplexExpression(arg)) {
+ const isCookedLoop = JSXElement.openingElement.attributes.some(attr => attr.name.name === adapter_1.Adapter.for);
+ if (isCookedLoop) {
+ throw utils_1.codeFrameError(arg.node, '在循环中使用 bind 时,需要声明将此复杂表达式声明为一个变量再放入 bind 参数中。');
+ }
+ else {
+ const id = utils_1.generateAnonymousState(this.renderScope, arg, this.referencedIdentifiers);
+ expr = t.jSXExpressionContainer(id);
+ }
+ }
+ else {
+ expr = t.jSXExpressionContainer(t.identifier(argName));
+ }
+ jsx_1.setJSXAttr(JSXElement, `data-e-${bindEventName}-a-${utils_1.toLetters(index)}`, expr);
+ }
+ });
+ expression.replaceWith(t.stringLiteral(`${bindCalleeName}`));
+ }
+ }
+ }
+ },
+ JSXAttribute: (path) => {
+ const { name, value } = path.node;
+ let eventShouldBeCatched = false;
+ const jsxElementPath = path.parentPath.parentPath;
+ if (t.isJSXIdentifier(name) && jsxElementPath.isJSXElement()) {
+ const componentName = jsxElementPath.node.openingElement.name.name;
+ const isThirdPartyKey = name.name === 'taroKey';
+ if (name.name === 'key' || isThirdPartyKey) {
+ if (constant_1.THIRD_PARTY_COMPONENTS.has(componentName) && !isThirdPartyKey) {
+ return;
+ }
+ const jsx = path.findParent(p => p.isJSXElement());
+ const loopBlock = jsx.findParent(p => {
+ if (p.isJSXElement()) {
+ const element = p.get('openingElement');
+ if (element.get('name').isJSXIdentifier({ name: 'block' })) {
+ const attrs = element.node.attributes;
+ const hasWXForLoop = attrs.some(attr => t.isJSXIdentifier(attr.name, { name: adapter_1.Adapter.for }));
+ const hasWXKey = attrs.some(attr => t.isJSXIdentifier(attr.name, { name: adapter_1.Adapter.key }));
+ return hasWXForLoop && !hasWXKey;
+ }
+ }
+ return false;
+ });
+ if (loopBlock) {
+ jsx_1.setJSXAttr(loopBlock.node, adapter_1.Adapter.key, value);
+ path.remove();
+ }
+ else {
+ path.get('name').replaceWith(t.jSXIdentifier(adapter_1.Adapter.key));
+ }
+ }
+ else if (name.name.startsWith('on')) {
+ if (t.isJSXExpressionContainer(value)) {
+ const methodName = utils_1.findMethodName(value.expression);
+ methodName && this.usedEvents.add(methodName);
+ const method = this.methods.get(methodName);
+ const classDecl = path.findParent(p => p.isClassDeclaration());
+ const componentName = jsxElementPath.node.openingElement.name;
+ // if (method && t.isIdentifier(method.node.key)) {
+ // this.usedEvents.add(methodName)
+ // } else if (method === null) {
+ // this.usedEvents.add(methodName)
+ // }
+ if (!babel_generator_1.default(value.expression).code.includes('.bind')) {
+ path.node.value = t.stringLiteral(`${methodName}`);
+ }
+ if (this.methods.has(methodName)) {
+ eventShouldBeCatched = utils_1.isContainStopPropagation(method);
+ }
+ if (classDecl && classDecl.isClassDeclaration()) {
+ const superClass = utils_1.getSuperClassCode(classDecl);
+ if (superClass) {
+ try {
+ const ast = babel_core_1.transform(superClass.code, options_1.buildBabelTransformOptions()).ast;
+ babel_traverse_1.default(ast, {
+ ClassMethod(p) {
+ if (!p.get('key').isIdentifier({ name: methodName })) {
+ return;
+ }
+ eventShouldBeCatched = utils_1.isContainStopPropagation(method);
+ },
+ ClassProperty(p) {
+ if (!p.get('key').isIdentifier({ name: methodName })) {
+ return;
+ }
+ eventShouldBeCatched = utils_1.isContainStopPropagation(method);
+ }
+ });
+ }
+ catch (error) {
+ //
+ }
+ }
+ }
+ if (t.isJSXIdentifier(componentName) && !constant_1.DEFAULT_Component_SET.has(componentName.name)) {
+ const element = path.parent;
+ if (process.env.NODE_ENV !== 'test' && adapter_1.Adapter.type !== "alipay" /* alipay */) {
+ const fnName = `__fn_${name.name}`;
+ element.attributes = element.attributes.concat([t.jSXAttribute(t.jSXIdentifier(fnName))]);
+ }
+ }
+ }
+ if (t.isJSXIdentifier(jsxElementPath.node.openingElement.name)) {
+ const componentName = jsxElementPath.node.openingElement.name.name;
+ if (adapter_1.Adapter.type === "alipay" /* alipay */) {
+ let transformName = name.name;
+ if (constant_1.DEFAULT_Component_SET.has(componentName) && constant_1.ALIPAY_BUBBLE_EVENTS.has(name.name)) {
+ if (name.name === 'onClick') {
+ transformName = eventShouldBeCatched ? 'catchTap' : 'onTap';
+ }
+ else {
+ transformName = `${eventShouldBeCatched ? 'catch' : 'on'}${name.name.slice(2)}`;
+ }
+ }
+ path.node.name = t.jSXIdentifier(transformName);
+ }
+ else if (constant_1.DEFAULT_Component_SET.has(componentName)) {
+ let transformName = `${eventShouldBeCatched ? 'catch' : 'bind'}`
+ + name.name.slice(2).toLowerCase();
+ if (name.name === 'onClick') {
+ transformName = eventShouldBeCatched ? 'catchtap' : 'bindtap';
+ }
+ path.node.name = t.jSXIdentifier(transformName);
+ }
+ else if (constant_1.THIRD_PARTY_COMPONENTS.has(componentName)) {
+ path.node.name = t.jSXIdentifier('bind' + name.name[2].toLowerCase() + name.name.slice(3));
+ }
+ else {
+ path.node.name = t.jSXIdentifier('bind' + name.name.toLowerCase());
+ }
+ }
+ // let transformName = `${eventShouldBeCatched ? 'catch' : 'bind'}` + name.name.slice(2, name.name.length)
+ // transformName = eventShouldBeCatched
+ // ? CATCH_EVENT_MAP.get(name.name)!
+ // : BIND_EVENT_MAP.get(name.name)!
+ }
+ else if (/^render[A-Z]/.test(name.name) && !constant_1.DEFAULT_Component_SET.has(componentName)) {
+ if (!t.isJSXExpressionContainer(value)) {
+ throw utils_1.codeFrameError(value, '以 render 开头的 props 只能传入包含一个 JSX 元素的 JSX 表达式。');
+ }
+ const expression = value.expression;
+ if (!t.isJSXElement(expression)) {
+ throw utils_1.codeFrameError(value, '以 render 开头的 props 只能传入包含一个 JSX 元素的 JSX 表达式。');
+ }
+ const slotName = utils_1.getSlotName(name.name);
+ const slot = lodash_1.cloneDeep(expression);
+ jsx_1.setJSXAttr(slot, 'slot', t.stringLiteral(slotName));
+ jsxElementPath.node.children.push(slot);
+ path.remove();
+ }
+ }
+ },
+ Identifier: (path) => {
+ if (!isChildrenOfJSXAttr(path)) {
+ return;
+ }
+ if (!path.isReferencedIdentifier()) {
+ return;
+ }
+ const parentPath = path.parentPath;
+ if (parentPath.isConditionalExpression() ||
+ parentPath.isLogicalExpression() ||
+ parentPath.isJSXExpressionContainer() ||
+ parentPath.isBinaryExpression() ||
+ this.renderScope.hasOwnBinding(path.node.name)) {
+ this.addRefIdentifier(path, path.node);
+ }
+ },
+ MemberExpression: {
+ exit: (path) => {
+ const { object, property } = path.node;
+ if (!path.isReferencedMemberExpression()) {
+ return;
+ }
+ if (!t.isThisExpression(object)) {
+ return;
+ }
+ const reserves = new Set([
+ 'state',
+ 'props',
+ ...this.methods.keys()
+ ]);
+ if (t.isIdentifier(property) || t.isMemberExpression(property)) {
+ const id = t.isIdentifier(property) ? property : utils_1.findFirstIdentifierFromMemberExpression(property);
+ if (reserves.has(id.name)) {
+ return;
+ }
+ const jsxAttr = path.findParent(p => p.isJSXAttribute());
+ if (jsxAttr && t.isJSXIdentifier(jsxAttr.node.name) && jsxAttr.node.name.name.startsWith('on')) {
+ return;
+ }
+ if (t.isIdentifier(id)) {
+ this.referencedIdentifiers.add(id);
+ this.usedThisProperties.add(id.name);
+ }
+ }
+ },
+ enter: (path) => {
+ if (!isChildrenOfJSXAttr(path)) {
+ return;
+ }
+ if (!path.isReferencedMemberExpression() || path.parentPath.isMemberExpression()) {
+ return;
+ }
+ const { object, property } = path.node;
+ if (t.isMemberExpression(object) &&
+ t.isThisExpression(object.object) &&
+ t.isIdentifier(object.property, { name: 'state' })) {
+ if (t.isIdentifier(property)) {
+ this.usedThisState.add(property.name);
+ }
+ else if (t.isMemberExpression(property)) {
+ const id = utils_1.findFirstIdentifierFromMemberExpression(property);
+ if (id && this.renderScope.hasBinding(id.name)) {
+ this.usedThisState.add(id.name);
+ }
+ }
+ return;
+ }
+ const code = babel_generator_1.default(path.node).code;
+ if (code.includes('this.$router.params') && t.isIdentifier(property)) {
+ const name = this.renderScope.generateUid(property.name);
+ const dcl = utils_1.buildConstVariableDeclaration(name, path.node);
+ this.renderPath.node.body.body.unshift(dcl);
+ path.replaceWith(t.identifier(name));
+ }
+ const parentPath = path.parentPath;
+ const id = utils_1.findFirstIdentifierFromMemberExpression(path.node);
+ if (t.isThisExpression(id)) {
+ return;
+ }
+ if (parentPath.isConditionalExpression() ||
+ parentPath.isLogicalExpression() ||
+ parentPath.isJSXExpressionContainer() ||
+ parentPath.isBinaryExpression() ||
+ (this.renderScope.hasOwnBinding(id.name))) {
+ this.addRefIdentifier(path, id);
+ }
+ }
+ },
+ ArrowFunctionExpression: (path) => {
+ if (!isChildrenOfJSXAttr(path)) {
+ return;
+ }
+ const uid = path.scope.generateUid('_anonymous_function_');
+ const c = t.classProperty(t.identifier(uid), path.node);
+ this.classProperties.add(c);
+ }
+ };
+ this.visitors = Object.assign({ VariableDeclarator: (path) => {
+ const init = path.get('init');
+ const id = path.get('id');
+ const ifStem = init.findParent(p => p.isIfStatement());
+ if (ifStem && init.node === null) {
+ init.replaceWith(t.identifier('undefined'));
+ }
+ let isDerivedFromState = false;
+ if (init.isMemberExpression()) {
+ const object = init.get('object');
+ if (object.isMemberExpression() && object.get('object').isThisExpression() && object.get('property').isIdentifier({ name: 'state' })) {
+ isDerivedFromState = true;
+ }
+ if (object.isThisExpression() && init.get('property').isIdentifier({ name: 'state' })) {
+ isDerivedFromState = true;
+ }
+ }
+ if (!isDerivedFromState) {
+ const errMsg = 'Warning: render 函数定义一个不从 this.state 解构或赋值而来的变量,此变量又与 this.state 下的变量重名可能会导致无法渲染。';
+ if (id.isIdentifier()) {
+ const name = id.node.name;
+ if (this.initState.has(name)) {
+ // tslint:disable-next-line
+ console.log(utils_1.codeFrameError(id.node, errMsg).message);
+ }
+ }
+ if (id.isObjectPattern()) {
+ const { properties } = id.node;
+ for (const p of properties) {
+ if (t.isIdentifier(p)) {
+ if (this.initState.has(p.name)) {
+ // tslint:disable-next-line
+ console.log(utils_1.codeFrameError(id.node, errMsg).message);
+ }
+ }
+ if (t.isSpreadProperty(p) && t.isIdentifier(p.argument)) {
+ if (this.initState.has(p.argument.name)) {
+ // tslint:disable-next-line
+ console.log(utils_1.codeFrameError(id.node, errMsg).message);
+ }
+ }
+ }
+ }
+ }
+ }, JSXEmptyExpression(path) {
+ const parent = path.parentPath;
+ if (path.parentPath.isJSXExpressionContainer()) {
+ parent.remove();
+ }
+ },
+ NullLiteral(path) {
+ const statementParent = path.getStatementParent();
+ if (statementParent && statementParent.isReturnStatement() && !t.isBinaryExpression(path.parent) && !isChildrenOfJSXAttr(path)) {
+ path.replaceWith(t.jSXElement(t.jSXOpeningElement(t.jSXIdentifier('view'), []), undefined, [], true));
+ }
+ }, ReturnStatement: (path) => {
+ const parentPath = path.parentPath;
+ if (parentPath.parentPath.isClassMethod() ||
+ (parentPath.parentPath.isIfStatement() && parentPath.parentPath.parentPath.isClassMethod())) {
+ this.replaceIdWithTemplate()(path);
+ }
+ } }, this.jsxElementVisitor, { JSXExpressionContainer: this.replaceIdWithTemplate(true) });
+ /**
+ * jsxDeclarations,
+ * renderScope,
+ * methods,
+ * loopScopes,
+ * initState,
+ * templates
+ */
+ this.handleLoopComponents = () => {
+ const loopArrayId = utils_1.incrementId();
+ const replaceQueue = [];
+ let hasLoopRef = false;
+ this.loopComponents.forEach((component, callee) => {
+ if (!callee.isCallExpression()) {
+ return;
+ }
+ if (this.loopIfStemComponentMap.has(callee)) {
+ const block = this.loopIfStemComponentMap.get(callee);
+ const attrs = component.node.openingElement.attributes;
+ const wxForDirectives = new Set([adapter_1.Adapter.for, adapter_1.Adapter.forIndex, adapter_1.Adapter.forItem]);
+ const ifAttrs = attrs.filter(a => wxForDirectives.has(a.name.name));
+ if (ifAttrs.length) {
+ block.openingElement.attributes.push(...ifAttrs);
+ component.node.openingElement.attributes = attrs.filter(a => !wxForDirectives.has(a.name.name));
+ }
+ jsx_1.setJSXAttr(component.node, adapter_1.Adapter.else);
+ block.children.push(component.node);
+ component.replaceWith(block);
+ }
+ for (const dcl of this.jsxDeclarations) {
+ const isChildren = dcl && dcl.findParent(d => d === callee);
+ if (isChildren) {
+ this.jsxDeclarations.delete(dcl);
+ dcl.remove();
+ }
+ }
+ const blockStatementPath = component.findParent(p => p.isBlockStatement());
+ const body = blockStatementPath.node.body;
+ let loopRefComponent;
+ this.loopRefs.forEach((ref, jsx) => {
+ if (ref.component.findParent(p => p === component)) {
+ loopRefComponent = jsx;
+ }
+ });
+ if (this.loopRefs.has(component.node) || loopRefComponent) {
+ hasLoopRef = true;
+ const ref = this.loopRefs.get(component.node) || this.loopRefs.get(loopRefComponent);
+ const [func] = callee.node.arguments;
+ let indexId = null;
+ if (t.isFunctionExpression(func) || t.isArrowFunctionExpression(func)) {
+ const params = func.params;
+ indexId = params[1];
+ }
+ if (indexId === null || !t.isIdentifier(indexId)) {
+ throw utils_1.codeFrameError(component.node, '在循环中使用 ref 必须暴露循环的第二个参数 `index`');
+ }
+ const id = typeof ref.id === 'string' ? t.binaryExpression('+', t.stringLiteral(ref.id), indexId) : ref.id;
+ const refDeclName = '__ref';
+ const args = [
+ t.identifier('__scope'),
+ t.binaryExpression('+', t.stringLiteral('#'), id)
+ ];
+ if (ref.type === 'component') {
+ args.push(t.stringLiteral('component'));
+ }
+ const callGetElementById = t.callExpression(t.identifier(constant_1.GEL_ELEMENT_BY_ID), args);
+ const refDecl = utils_1.buildConstVariableDeclaration(refDeclName, process.env.NODE_ENV === 'test' ? callGetElementById : t.logicalExpression('&&', t.identifier('__scope'), t.logicalExpression('&&', t.identifier('__runloopRef'), callGetElementById)));
+ const callRef = t.callExpression(ref.fn, [t.identifier(refDeclName)]);
+ const callRefFunc = t.expressionStatement(process.env.NODE_ENV === 'test' ? callRef : t.logicalExpression('&&', t.identifier(refDeclName), callRef));
+ body.push(refDecl, callRefFunc);
+ }
+ let stateToBeAssign = new Set(lodash_1.difference(Object.keys(blockStatementPath.scope.getAllBindings()), Object.keys(this.renderScope.getAllBindings())).filter(i => {
+ return !this.methods.has(i);
+ })
+ .filter(i => !this.loopScopes.has(i))
+ .filter(i => !this.initState.has(i))
+ .filter(i => !this.templates.has(i))
+ .filter(i => !i.includes('.'))
+ .filter(i => i !== constant_1.MAP_CALL_ITERATOR));
+ if (body.length > 1) {
+ const [func] = callee.node.arguments;
+ if (t.isFunctionExpression(func) || t.isArrowFunctionExpression(func)) {
+ const [item, indexParam] = func.params;
+ const parents = findParents(callee, (p) => utils_1.isArrayMapCallExpression(p));
+ const iterators = new Set([item.name, ...parents
+ .map((p) => lodash_1.get(p, 'node.arguments[0].params[0].name', ''))
+ .filter(Boolean)]);
+ for (const [index, statement] of body.entries()) {
+ if (t.isVariableDeclaration(statement)) {
+ for (const dcl of statement.declarations) {
+ if (t.isIdentifier(dcl.id)) {
+ const name = dcl.id.name;
+ if (name.startsWith(constant_1.LOOP_STATE) ||
+ name.startsWith(constant_1.LOOP_CALLEE)) {
+ stateToBeAssign.add(name);
+ dcl.id = t.identifier(name);
+ }
+ }
+ }
+ }
+ if (t.isReturnStatement(statement)) {
+ body.splice(index, 1);
+ }
+ }
+ stateToBeAssign.forEach(s => this.loopRefIdentifiers.set(s, callee));
+ const properties = Array.from(stateToBeAssign).map(state => t.objectProperty(t.identifier(state), t.identifier(state)));
+ // tslint:disable-next-line:no-inner-declarations
+ function replaceOriginal(path, parent, name) {
+ if (path.isReferencedIdentifier() &&
+ iterators.has(name) &&
+ !(t.isMemberExpression(parent) && t.isIdentifier(parent.property, { name: constant_1.LOOP_ORIGINAL })) &&
+ !(t.isMemberExpression(parent) && t.isIdentifier(parent.property) && (parent.property.name.startsWith(constant_1.LOOP_STATE) || parent.property.name.startsWith(constant_1.LOOP_CALLEE)))) {
+ path.replaceWith(t.memberExpression(t.identifier(name), t.identifier(constant_1.LOOP_ORIGINAL)));
+ }
+ }
+ const bodyPath = callee.get('arguments')[0].get('body');
+ bodyPath.traverse({
+ Identifier(path) {
+ const name = path.node.name;
+ const parent = path.parent;
+ replaceOriginal(path, parent, name);
+ }
+ });
+ const replacements = new Set();
+ component.traverse({
+ JSXAttribute: !t.isIdentifier(indexParam) ? utils_1.noop : (path) => {
+ const { value } = path.node;
+ if (t.isJSXExpressionContainer(value) && t.isIdentifier(value.expression, { name: indexParam.name })) {
+ if (process.env.TERM_PROGRAM) { // 无法找到 cli 名称的工具(例如 idea/webstorm)显示这个报错可能会乱码
+ // tslint:disable-next-line:no-console
+ console.log(utils_1.codeFrameError(value.expression, '建议修改:使用循环的 index 变量作为 key 是一种反优化。参考:https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/no-array-index-key.md').message);
+ }
+ }
+ },
+ JSXExpressionContainer: this.replaceIdWithTemplate(),
+ Identifier: (path) => {
+ const name = path.node.name;
+ const parent = path.parent;
+ const parentCallExpr = path.findParent(p => p.isCallExpression());
+ if (replacements.has(parent) || (this.renderScope.hasOwnBinding(name) &&
+ (this.loopCalleeId.has(path.node) || parentCallExpr && this.loopCalleeId.has(parentCallExpr.node)))) {
+ return;
+ }
+ if (stateToBeAssign.has(name) && path.isReferencedIdentifier()) {
+ if (t.isMemberExpression(parent) && t.isIdentifier(parent.property, { name: 'map' })) {
+ const grandParentPath = path.parentPath.parentPath;
+ if (grandParentPath.isCallExpression() && this.loopComponents.has(grandParentPath)) {
+ return;
+ }
+ }
+ const replacement = t.memberExpression(t.identifier(item.name), path.node);
+ path.replaceWith(replacement);
+ replacements.add(replacement);
+ }
+ else {
+ replaceOriginal(path, parent, name);
+ }
+ },
+ MemberExpression(path) {
+ const { object, property } = path.node;
+ if (t.isThisExpression(object) && t.isIdentifier(property, { name: 'state' })) {
+ if (path.parentPath.isMemberExpression() && path.parentPath.parentPath.isMemberExpression()) {
+ // tslint:disable-next-line
+ console.warn(utils_1.codeFrameError(path.parentPath.parentPath.node, `在循环中使用 this.state.xx.xx 可能会存在问题,请给 xx 起一个别名,例如 const { xx } = this.state`));
+ }
+ }
+ }
+ });
+ const originalProp = t.objectProperty(t.identifier(constant_1.LOOP_ORIGINAL), t.memberExpression(t.identifier(item.name), t.identifier(constant_1.LOOP_ORIGINAL)));
+ properties.push(originalProp);
+ body.unshift(t.expressionStatement(t.assignmentExpression('=', t.identifier(item.name), t.objectExpression([
+ t.objectProperty(t.identifier(constant_1.LOOP_ORIGINAL), t.callExpression(t.identifier(constant_1.INTERNAL_GET_ORIGNAL), [t.identifier(item.name)]))
+ ]))));
+ const returnStatement = t.returnStatement(properties.length ? t.objectExpression(properties) : item);
+ const parentCallee = callee.findParent(c => utils_1.isArrayMapCallExpression(c));
+ if (utils_1.isArrayMapCallExpression(parentCallee)) {
+ const [func] = parentCallee.node.arguments;
+ const { object } = callee.node.callee;
+ if (t.isFunctionExpression(func) || t.isArrowFunctionExpression(func)) {
+ const funcBody = func.body;
+ if (t.isBlockStatement(funcBody)) {
+ if (t.isIdentifier(object) || t.isMemberExpression(object)) {
+ const variableName = `${constant_1.LOOP_CALLEE}_${this.incrementCalleeId()}`;
+ funcBody.body.splice(funcBody.body.length - 1, 0, utils_1.buildConstVariableDeclaration(variableName, utils_1.setParentCondition(component, callee.node, true)));
+ const iterator = func.params[0];
+ component.node.openingElement.attributes.forEach(attr => {
+ if (attr.name.name === adapter_1.Adapter.for && t.isIdentifier(iterator)) {
+ attr.value = t.jSXExpressionContainer(t.memberExpression(iterator, t.identifier(variableName)));
+ }
+ });
+ }
+ else {
+ throw utils_1.codeFrameError(object.loc, '多层循环中循环的数组只能是一个变量或成员表达式');
+ }
+ }
+ }
+ body.push(returnStatement);
+ }
+ else {
+ body.push(returnStatement);
+ const stateName = 'loopArray' + loopArrayId();
+ this.loopStateName.forEach((newName, callExpr) => {
+ if (callExpr === callee) {
+ const classBody = this.renderPath.parent;
+ for (const property of classBody.body) {
+ if (t.isClassProperty(property) && property.key.name === '$dynamicComponents') {
+ const objects = property.value;
+ for (const objProp of objects.properties) {
+ if (t.isObjectProperty(objProp) && t.isIdentifier(objProp.key, { name: newName })) {
+ const func = objProp.value;
+ func.body.body[0] = utils_1.buildConstVariableDeclaration('stateName', t.stringLiteral(stateName));
+ }
+ }
+ }
+ }
+ }
+ });
+ // setJSXAttr(returned, Adapter.for, t.identifier(stateName))
+ this.addRefIdentifier(callee, t.identifier(stateName));
+ // this.referencedIdentifiers.add(t.identifier(stateName))
+ jsx_1.setJSXAttr(component.node, adapter_1.Adapter.for, t.jSXExpressionContainer(t.identifier(stateName)));
+ const returnBody = this.renderPath.node.body.body;
+ const ifStem = callee.findParent(p => p.isIfStatement());
+ // @TEST
+ if (ifStem && ifStem.isIfStatement()) {
+ const consequent = ifStem.get('consequent');
+ if (consequent.isBlockStatement()) {
+ const assignment = t.expressionStatement(t.assignmentExpression('=', t.identifier(stateName), utils_1.setParentCondition(component, callee.node, true)));
+ returnBody.unshift(t.variableDeclaration('let', [t.variableDeclarator(t.identifier(stateName))]));
+ consequent.node.body.push(assignment);
+ }
+ }
+ else {
+ const decl = utils_1.buildConstVariableDeclaration(stateName, utils_1.setParentCondition(component, callee.node, true));
+ returnBody.push(decl);
+ }
+ }
+ }
+ }
+ replaceQueue.push(() => {
+ const statement = component.getStatementParent();
+ callee.replaceWith(statement.isReturnStatement()
+ ? statement.get('argument').node
+ : component.node);
+ });
+ });
+ if (hasLoopRef) {
+ const scopeDecl = template('const __scope = this.$scope')();
+ this.renderPath.node.body.body.unshift(scopeDecl);
+ }
+ replaceQueue.forEach(func => func());
+ };
+ this.setReserveWord = (word) => {
+ const binding = this.renderScope.getOwnBinding(word);
+ let hasStateId = false;
+ if (binding) {
+ const path = binding.path;
+ const id = path.get('id');
+ const init = path.get('init');
+ if (init.isThisExpression()) {
+ return hasStateId;
+ }
+ if (id.isObjectPattern()) {
+ hasStateId = id.node.properties.some(p => {
+ return (t.isObjectProperty(p) && t.isIdentifier(p.key, { name: word }))
+ || (t.isRestProperty(p) && t.isIdentifier(p.argument, { name: word }));
+ });
+ }
+ else if (id.isIdentifier({ name: word })) {
+ hasStateId = true;
+ }
+ if (hasStateId) {
+ this.referencedIdentifiers.add(t.identifier(word));
+ }
+ }
+ if (hasStateId) {
+ this.reserveStateWords.delete(word);
+ }
+ };
+ this.renderPath = renderPath;
+ this.methods = methods;
+ this.initState = initState;
+ this.referencedIdentifiers = referencedIdentifiers;
+ this.loopStateName = loopStateName;
+ this.usedState = usedState;
+ this.customComponentNames = customComponentNames;
+ this.customComponentData = customComponentData;
+ this.componentProperies = componentProperies;
+ this.loopRefs = loopRefs;
+ const renderBody = renderPath.get('body');
+ this.renderScope = renderBody.scope;
+ const [, error] = renderPath.node.body.body.filter(s => t.isReturnStatement(s));
+ if (error) {
+ throw utils_1.codeFrameError(error.loc, 'render 函数顶级作用域暂时只支持一个 return');
+ }
+ renderBody.traverse(this.loopComponentVisitor);
+ if (this.hasNoReturnLoopStem) {
+ renderBody.traverse({
+ JSXElement: this.loopComponentVisitor.JSXElement.exit[0]
+ });
+ }
+ this.handleLoopComponents();
+ renderBody.traverse(this.visitors);
+ this.setOutputTemplate();
+ this.checkDuplicateName();
+ this.removeJSXStatement();
+ this.setUsedState();
+ this.setPendingState();
+ this.setCustomEvent();
+ this.createData();
+ this.setProperies();
+ this.setLoopRefFlag();
+ }
+ handleConditionExpr({ parentNode, parentPath, statementParent }, jsxElementPath) {
+ if (parentPath.isObjectProperty()) {
+ const value = parentPath.get('value');
+ if (value !== jsxElementPath) {
+ return;
+ }
+ if (!parentPath.parentPath.isObjectExpression()) {
+ return;
+ }
+ const properties = parentPath.parentPath.get('properties');
+ if (!parentPath.parentPath.parentPath.isMemberExpression()) {
+ return;
+ }
+ const rval = parentPath.parentPath.parentPath.get('property');
+ if (!rval || !rval.node || !Array.isArray(properties)) {
+ return;
+ }
+ const children = properties.map(p => p.node).map((p, index) => {
+ const block = jsx_1.buildBlockElement();
+ const tester = t.binaryExpression('===', p.key, rval.node);
+ block.children = [t.jSXExpressionContainer(p.value)];
+ if (index === 0) {
+ utils_1.newJSXIfAttr(block, tester);
+ }
+ else {
+ jsx_1.setJSXAttr(block, adapter_1.Adapter.elseif, t.jSXExpressionContainer(tester));
+ }
+ return block;
+ });
+ const block = jsx_1.buildBlockElement();
+ block.children = children;
+ parentPath.parentPath.parentPath.replaceWith(block);
+ }
+ else if (t.isLogicalExpression(parentNode)) {
+ const { left, operator, right } = parentNode;
+ const leftExpression = parentPath.get('left');
+ if (operator === '&&' && t.isExpression(left)) {
+ if (utils_1.hasComplexExpression(leftExpression)) {
+ utils_1.generateAnonymousState(this.renderScope, leftExpression, this.referencedIdentifiers, true);
+ }
+ const block = jsx_1.buildBlockElement();
+ utils_1.newJSXIfAttr(block, leftExpression.node);
+ block.children = [jsxElementPath.node];
+ parentPath.replaceWith(block);
+ if (statementParent) {
+ const name = utils_1.findIdentifierFromStatement(statementParent.node);
+ utils_1.setTemplate(name, jsxElementPath, this.templates);
+ // name && templates.set(name, path.node)
+ }
+ }
+ if (operator === '||' && t.isExpression(left)) {
+ const newNode = t.conditionalExpression(left, left, right);
+ parentPath.replaceWith(newNode);
+ // this.handleConditionExpr({ parentNode: newNode, parentPath, statementParent }, jsxElementPath)
+ }
+ }
+ else if (t.isConditionalExpression(parentNode)) {
+ const { consequent, alternate } = parentNode;
+ const testExpression = parentPath.get('test');
+ const block = jsx_1.buildBlockElement();
+ if (utils_1.hasComplexExpression(testExpression)) {
+ utils_1.generateAnonymousState(parentPath.scope, testExpression, this.referencedIdentifiers, true);
+ }
+ const test = testExpression.node;
+ if (t.isJSXElement(consequent) && this.isLiteralOrUndefined(alternate)) {
+ const { value, confident } = parentPath.get('alternate').evaluate();
+ if (confident && !value || t.isIdentifier({ name: 'undefined' })) {
+ utils_1.newJSXIfAttr(block, test);
+ block.children = [jsxElementPath.node];
+ // newJSXIfAttr(jsxElementPath.node, test)
+ parentPath.replaceWith(block);
+ }
+ else {
+ const block2 = jsx_1.buildBlockElement();
+ block.children = [consequent];
+ utils_1.newJSXIfAttr(block, test);
+ jsx_1.setJSXAttr(block2, adapter_1.Adapter.else);
+ block2.children = [t.jSXExpressionContainer(alternate)];
+ const parentBlock = jsx_1.buildBlockElement();
+ parentBlock.children = [block, block2];
+ parentPath.replaceWith(parentBlock);
+ }
+ if (statementParent) {
+ const name = utils_1.findIdentifierFromStatement(statementParent.node);
+ utils_1.setTemplate(name, jsxElementPath, this.templates);
+ // name && templates.set(name, path.node)
+ }
+ }
+ else if (this.isLiteralOrUndefined(consequent) && t.isJSXElement(alternate)) {
+ const { value, confident } = parentPath.get('consequent').evaluate();
+ if (confident && !value || t.isIdentifier({ name: 'undefined' })) {
+ utils_1.newJSXIfAttr(block, utils_1.reverseBoolean(test));
+ block.children = [jsxElementPath.node];
+ // newJSXIfAttr(jsxElementPath.node, test)
+ parentPath.replaceWith(block);
+ }
+ else {
+ const block2 = jsx_1.buildBlockElement();
+ block.children = [t.jSXExpressionContainer(consequent)];
+ utils_1.newJSXIfAttr(block, test);
+ jsx_1.setJSXAttr(block2, adapter_1.Adapter.else);
+ block2.children = [alternate];
+ const parentBlock = jsx_1.buildBlockElement();
+ parentBlock.children = [block, block2];
+ parentPath.replaceWith(parentBlock);
+ }
+ if (statementParent) {
+ const name = utils_1.findIdentifierFromStatement(statementParent.node);
+ utils_1.setTemplate(name, jsxElementPath, this.templates);
+ // name && templates.set(name, path.node)
+ }
+ }
+ else if (t.isJSXElement(consequent) && t.isJSXElement(alternate)) {
+ const block2 = jsx_1.buildBlockElement();
+ block.children = [consequent];
+ utils_1.newJSXIfAttr(block, test);
+ jsx_1.setJSXAttr(block2, adapter_1.Adapter.else);
+ block2.children = [alternate];
+ const parentBlock = jsx_1.buildBlockElement();
+ parentBlock.children = [block, block2];
+ parentPath.replaceWith(parentBlock);
+ if (statementParent) {
+ const name = utils_1.findIdentifierFromStatement(statementParent.node);
+ utils_1.setTemplate(name, jsxElementPath, this.templates);
+ }
+ }
+ else if (t.isJSXElement(consequent) && t.isCallExpression(alternate) && !utils_1.isArrayMapCallExpression(parentPath.get('alternate'))) {
+ const id = utils_1.generateAnonymousState(this.renderScope, parentPath.get('alternate'), this.referencedIdentifiers, true);
+ parentPath.get('alternate').replaceWith(id);
+ //
+ }
+ else if (t.isJSXElement(alternate) && t.isCallExpression(consequent) && !utils_1.isArrayMapCallExpression(parentPath.get('consequent'))) {
+ const id = utils_1.generateAnonymousState(this.renderScope, parentPath.get('consequent'), this.referencedIdentifiers, true);
+ parentPath.get('consequent').replaceWith(id);
+ }
+ else {
+ block.children = [t.jSXExpressionContainer(consequent)];
+ utils_1.newJSXIfAttr(block, test);
+ const block2 = jsx_1.buildBlockElement();
+ jsx_1.setJSXAttr(block2, adapter_1.Adapter.else);
+ block2.children = [t.jSXExpressionContainer(alternate)];
+ const parentBlock = jsx_1.buildBlockElement();
+ parentBlock.children = [block, block2];
+ parentPath.replaceWith(parentBlock);
+ if (statementParent) {
+ const name = utils_1.findIdentifierFromStatement(statementParent.node);
+ utils_1.setTemplate(name, jsxElementPath, this.templates);
+ }
+ }
+ }
+ }
+ setProperies() {
+ const properties = [];
+ this.componentProperies.forEach((propName) => {
+ properties.push(t.objectProperty(t.stringLiteral(propName), t.objectExpression([
+ t.objectProperty(t.stringLiteral('type'), t.nullLiteral()),
+ t.objectProperty(t.stringLiteral('value'), t.nullLiteral())
+ ])));
+ });
+ let classProp = t.classProperty(t.identifier('properties'), t.objectExpression(properties));
+ classProp.static = true;
+ const classPath = this.renderPath.findParent(isClassDcl);
+ adapter_1.Adapter.type !== "alipay" /* alipay */ && classPath.node.body.body.unshift(classProp);
+ }
+ setLoopRefFlag() {
+ if (this.loopRefs.size) {
+ const classPath = this.renderPath.findParent(isClassDcl);
+ classPath.node.body.body.unshift(t.classProperty(t.identifier('$$hasLoopRef'), t.booleanLiteral(true)));
+ }
+ }
+ destructStateOrProps(key, path, properties, parentPath) {
+ const hasStateOrProps = properties.filter(p => t.isObjectProperty(p) && t.isIdentifier(p.key) && key === p.key.name);
+ if (hasStateOrProps.length === 0) {
+ return;
+ }
+ if (hasStateOrProps.length !== properties.length) {
+ throw utils_1.codeFrameError(path.node, 'state 或 props 只能单独从 this 中解构');
+ }
+ const declareState = template(`const ${key} = this.${key};`)();
+ if (properties.length > 1) {
+ const index = properties.findIndex(p => t.isObjectProperty(p) && t.isIdentifier(p.key, { name: key }));
+ properties.splice(index, 1);
+ parentPath.insertAfter(declareState);
+ }
+ else {
+ parentPath.insertAfter(declareState);
+ parentPath.remove();
+ }
+ }
+ handleJSXInIfStatement(jsxElementPath, { parentNode, parentPath, isFinalReturn, isIfStemInLoop }) {
+ if (t.isReturnStatement(parentNode)) {
+ if (!isFinalReturn && !isIfStemInLoop) {
+ return;
+ }
+ else {
+ const ifStatement = parentPath.findParent(p => p.isIfStatement());
+ const blockStatement = parentPath.findParent(p => p.isBlockStatement() && (p.parentPath === ifStatement));
+ const loopCallExpr = jsxElementPath.findParent(p => utils_1.isArrayMapCallExpression(p));
+ if (blockStatement && blockStatement.isBlockStatement()) {
+ blockStatement.traverse(this.renameIfScopeVaribale(blockStatement));
+ }
+ const block = this.finalReturnElement || jsx_1.buildBlockElement();
+ if (utils_1.isBlockIfStatement(ifStatement, blockStatement)) {
+ const { test, alternate, consequent } = ifStatement.node;
+ // blockStatement.node.body.push(t.returnStatement(
+ // t.memberExpression(t.thisExpression(), t.identifier('state'))
+ // ))
+ if (alternate === blockStatement.node) {
+ throw utils_1.codeFrameError(parentNode.loc, '不必要的 else 分支,请遵从 ESLint consistent-return: https://eslint.org/docs/rules/consistent-return');
+ }
+ else if (consequent === blockStatement.node) {
+ const parentIfStatement = ifStatement.findParent(p => p.isIfStatement());
+ if (parentIfStatement) {
+ jsx_1.setJSXAttr(jsxElementPath.node, adapter_1.Adapter.elseif, t.jSXExpressionContainer(test), jsxElementPath);
+ if (loopCallExpr && this.loopIfStemComponentMap.has(loopCallExpr)) {
+ const block = this.loopIfStemComponentMap.get(loopCallExpr);
+ block.children.push(jsxElementPath.node);
+ }
+ }
+ else {
+ if (isIfStemInLoop && loopCallExpr && loopCallExpr.isCallExpression()) {
+ if (this.loopIfStemComponentMap.has(loopCallExpr)) {
+ const component = this.loopIfStemComponentMap.get(loopCallExpr);
+ utils_1.newJSXIfAttr(jsxElementPath.node, test, jsxElementPath);
+ component.children.push(jsxElementPath.node);
+ }
+ else {
+ utils_1.newJSXIfAttr(jsxElementPath.node, test, jsxElementPath);
+ this.loopIfStemComponentMap.set(loopCallExpr, block);
+ const arrowFunc = loopCallExpr.node.arguments[0];
+ if (t.isArrowFunctionExpression(arrowFunc) && t.isBlockStatement(arrowFunc.body) && !arrowFunc.body.body.some(s => t.isReturnStatement(s))) {
+ arrowFunc.body.body.push(t.returnStatement(jsx_1.buildBlockElement()));
+ this.hasNoReturnLoopStem = true;
+ }
+ }
+ }
+ else {
+ if (this.topLevelIfStatement.size > 0) {
+ jsx_1.setJSXAttr(jsxElementPath.node, adapter_1.Adapter.elseif, t.jSXExpressionContainer(test), jsxElementPath);
+ }
+ else {
+ utils_1.newJSXIfAttr(jsxElementPath.node, test, jsxElementPath);
+ this.topLevelIfStatement.add(ifStatement);
+ }
+ }
+ }
+ }
+ }
+ else if (block.children.length !== 0) {
+ if (this.topLevelIfStatement.size > 0) {
+ jsx_1.setJSXAttr(jsxElementPath.node, adapter_1.Adapter.else);
+ }
+ }
+ block.children.push(jsxElementPath.node);
+ if (!this.loopIfStemComponentMap.has(loopCallExpr)) {
+ this.finalReturnElement = block;
+ }
+ this.returnedPaths.push(parentPath);
+ }
+ }
+ else if (t.isArrowFunctionExpression(parentNode)) {
+ // console.log('arrow')
+ }
+ else if (t.isAssignmentExpression(parentNode)) {
+ const ifStatement = parentPath.findParent(p => p.isIfStatement());
+ const blockStatement = parentPath.findParent(p => p.isBlockStatement() && (p.parentPath === ifStatement));
+ if (blockStatement && blockStatement.isBlockStatement()) {
+ blockStatement.traverse(this.renameIfScopeVaribale(blockStatement));
+ }
+ if (t.isIdentifier(parentNode.left)) {
+ const assignmentName = parentNode.left.name;
+ const renderScope = isIfStemInLoop ? jsxElementPath.findParent(p => utils_1.isArrayMapCallExpression(p)).get('arguments')[0].get('body').scope : this.renderScope;
+ const bindingNode = renderScope.getOwnBinding(assignmentName).path.node;
+ // tslint:disable-next-line
+ const parallelIfStems = this.findParallelIfStem(ifStatement);
+ const parentIfStatement = ifStatement.findParent(p => p.isIfStatement() && !parallelIfStems.has(p));
+ // @TODO: 重构 this.templates 为基于作用域的 HashMap,现在仍然可能会存在重复的情况
+ let block = this.templates.get(assignmentName) || jsx_1.buildBlockElement();
+ if (utils_1.isEmptyDeclarator(bindingNode)) {
+ const blockStatement = parentPath.findParent(p => p.isBlockStatement());
+ if (utils_1.isBlockIfStatement(ifStatement, blockStatement)) {
+ const { test, alternate, consequent } = ifStatement.node;
+ if (alternate === blockStatement.node) {
+ const newBlock = jsx_1.buildBlockElement();
+ jsx_1.setJSXAttr(newBlock, adapter_1.Adapter.else);
+ newBlock.children = [jsxElementPath.node];
+ jsxElementPath.node = newBlock;
+ }
+ else if (consequent === blockStatement.node) {
+ const parentIfStatement = ifStatement.findParent(p => p.isIfStatement());
+ const assignments = [];
+ let isAssignedBefore = false;
+ // @TODO: 重构这两种循环为通用模块
+ // 如果这个 JSX assigmnent 的作用域中有其他的 if block 曾经赋值过,它应该是 else-if
+ if (blockStatement && blockStatement.isBlockStatement()) {
+ for (const parentStatement of blockStatement.node.body) {
+ if (t.isIfStatement(parentStatement) && t.isBlockStatement(parentStatement.consequent)) {
+ const statements = parentStatement.consequent.body;
+ for (const statement of statements) {
+ if (t.isExpressionStatement(statement) && t.isAssignmentExpression(statement.expression) && t.isIdentifier(statement.expression.left, { name: assignmentName })) {
+ isAssignedBefore = true;
+ }
+ }
+ }
+ }
+ }
+ // 如果这个 JSX assigmnent 的的父级作用域中的 prev sibling 有相同的赋值,它应该是 else-if
+ if (parentIfStatement) {
+ const { consequent } = parentIfStatement.node;
+ if (t.isBlockStatement(consequent)) {
+ const body = consequent.body;
+ for (const parentStatement of body) {
+ if (t.isIfStatement(parentStatement) && t.isBlockStatement(parentStatement.consequent)) {
+ const statements = parentStatement.consequent.body;
+ for (const statement of statements) {
+ if (t.isExpressionStatement(statement) && t.isAssignmentExpression(statement.expression) && t.isIdentifier(statement.expression.left, { name: assignmentName })) {
+ assignments.push(statement.expression);
+ }
+ }
+ }
+ }
+ }
+ }
+ if ((parentIfStatement &&
+ (parentIfStatement.get('alternate') === ifStatement ||
+ assignments.findIndex(a => a === parentNode) > 0))
+ ||
+ isAssignedBefore) {
+ jsx_1.setJSXAttr(jsxElementPath.node, adapter_1.Adapter.elseif, t.jSXExpressionContainer(test), jsxElementPath);
+ }
+ else {
+ if (parentIfStatement) {
+ if (this.isEmptyBlock(block)) {
+ utils_1.newJSXIfAttr(block, parentIfStatement.node.test, jsxElementPath);
+ }
+ else {
+ const newBlock = jsx_1.buildBlockElement();
+ jsx_1.setJSXAttr(newBlock, adapter_1.Adapter.elseif, t.jSXExpressionContainer(parentIfStatement.node.test), jsxElementPath);
+ block.children.push(newBlock);
+ }
+ }
+ utils_1.newJSXIfAttr(jsxElementPath.node, test, jsxElementPath);
+ }
+ }
+ const ifAttr = block.openingElement.attributes.find(a => a.name.name === adapter_1.Adapter.if);
+ if (ifAttr && t.isJSXExpressionContainer(ifAttr.value, { expression: test })) {
+ const newBlock = jsx_1.buildBlockElement();
+ newBlock.children = [block, jsxElementPath.node];
+ block = newBlock;
+ }
+ else if (parentIfStatement && ifStatement.parentPath !== parentIfStatement) {
+ let hasNest = false;
+ this.handleNestedIfStatement(block, jsxElementPath.node, parentIfStatement.node.test, hasNest);
+ if (!hasNest && parentIfStatement.get('alternate') !== ifStatement) {
+ const ifAttr = block.openingElement.attributes.find(a => a.name.name === adapter_1.Adapter.if);
+ if (ifAttr && t.isJSXExpressionContainer(ifAttr.value, { expression: parentIfStatement.node.test })) {
+ const newBlock = jsx_1.buildBlockElement();
+ block.children.push(jsxElementPath.node);
+ newBlock.children = [block];
+ block = newBlock;
+ }
+ }
+ }
+ else {
+ block.children.push(jsxElementPath.node);
+ }
+ // setTemplate(name, path, templates)
+ assignmentName && this.templates.set(assignmentName, block);
+ if (isIfStemInLoop) {
+ this.returnedPaths.push(parentPath);
+ }
+ }
+ }
+ else {
+ throw utils_1.codeFrameError(jsxElementPath.node.loc, '请将 JSX 赋值表达式初始化为 null,然后再进行 if 条件表达式赋值。');
+ }
+ }
+ }
+ else if (!t.isJSXElement(parentNode)) {
+ // throwError(path, '考虑只对 JSX 元素赋值一次。')
+ }
+ }
+ checkDuplicateData() {
+ this.initState.forEach((stateName) => {
+ if (this.templates.has(stateName)) {
+ throw utils_1.codeFrameError(this.templates.get(stateName), `自定义变量组件名: \`${stateName}\` 和已有 this.state.${stateName} 重复。请使用另一个变量名。`);
+ }
+ });
+ this.componentProperies.forEach((componentName) => {
+ if (this.componentProperies.has(componentName)) {
+ throw utils_1.codeFrameError(this.renderPath.node, `state: \`${componentName}\` 和已有 this.props.${componentName} 重复。请使用另一个变量名。`);
+ }
+ if (this.templates.has(componentName)) {
+ throw utils_1.codeFrameError(this.templates.get(componentName), `自定义变量组件名: \`${componentName}\` 和已有 this.props.${componentName} 重复。请使用另一个变量名。`);
+ }
+ });
+ }
+ addRefIdentifier(path, id) {
+ const arrayMap = path.findParent(p => utils_1.isArrayMapCallExpression(p));
+ if (arrayMap && arrayMap.isCallExpression()) {
+ this.loopRefIdentifiers.set(id.name, arrayMap);
+ }
+ else {
+ id && this.referencedIdentifiers.add(id);
+ }
+ }
+ setOutputTemplate() {
+ this.outputTemplate = jsx_1.parseJSXElement(this.finalReturnElement);
+ }
+ removeJSXStatement() {
+ this.jsxDeclarations.forEach(d => d && d.remove());
+ this.returnedPaths.forEach((p) => {
+ if (p.removed) {
+ return;
+ }
+ const ifStem = p.findParent(_ => _.isIfStatement());
+ if (ifStem) {
+ const node = p.node;
+ if (!node) {
+ return;
+ }
+ if (t.isJSXElement(node.argument)) {
+ const jsx = node.argument;
+ if (jsx.children.length === 0 && jsx.openingElement.attributes.length === 0 && !this.isIfStemInLoop(p.get('argument'))) {
+ node.argument = t.nullLiteral();
+ }
+ else {
+ p.remove();
+ }
+ }
+ else {
+ const isValid = p.get('argument').evaluateTruthy();
+ if (isValid === false) {
+ node.argument = t.nullLiteral();
+ }
+ else {
+ p.remove();
+ }
+ }
+ }
+ else {
+ p.remove();
+ }
+ });
+ }
+ setCustomEvent() {
+ const classPath = this.renderPath.findParent(isClassDcl);
+ let classProp = t.classProperty(t.identifier('$$events'), t.arrayExpression(Array.from(this.usedEvents).map(s => t.stringLiteral(s)))); // babel 6 typing 没有 static
+ classProp.static = true;
+ classPath.node.body.body.unshift(classProp);
+ }
+ setUsedState() {
+ for (const [key, method] of this.methods) {
+ if (method) {
+ if (method.isClassMethod()) {
+ const kind = method.node.kind;
+ if (kind === 'get') {
+ this.classComputedState.add(key);
+ }
+ }
+ }
+ }
+ const componentProperies = lodash_1.cloneDeep(this.componentProperies);
+ componentProperies.forEach(s => {
+ if (s.startsWith('__fn_')) {
+ const eventName = s.slice(5);
+ if (componentProperies.has(eventName)) {
+ componentProperies.delete(s);
+ componentProperies.delete(eventName);
+ }
+ }
+ });
+ Array.from(this.reserveStateWords).forEach(this.setReserveWord);
+ const usedState = Array.from(new Set(Array.from(this.referencedIdentifiers)
+ .map(i => i.name)
+ .concat([...this.initState, ...this.usedThisState, ...componentProperies, ...this.classComputedState])))
+ .concat(...this.usedState)
+ // .filter(i => {
+ // return !methods.has(i)
+ // })
+ .filter(i => !this.loopScopes.has(i))
+ .filter(i => !this.templates.has(i))
+ .filter(Boolean);
+ const classPath = this.renderPath.findParent(isClassDcl);
+ classPath.node.body.body.unshift(t.classProperty(t.identifier('$usedState'), t.arrayExpression([...new Set(usedState
+ .filter(s => !this.loopScopes.has(s.split('.')[0]))
+ .filter(i => i !== constant_1.MAP_CALL_ITERATOR && !this.reserveStateWords.has(i))
+ .filter(i => utils_1.isVarName(i))
+ .filter(i => !this.loopRefIdentifiers.has(i))
+ .concat(Array.from(this.customComponentNames)))]
+ .map(s => t.stringLiteral(s)))));
+ }
+ checkDuplicateName() {
+ this.loopScopes.forEach(s => {
+ if (this.renderPath.scope.hasBinding(s)) {
+ const err = utils_1.codeFrameError(this.renderPath.scope.getBinding(s).path.node, '此变量声明与循环变量冲突,可能会造成问题。');
+ // tslint:disable-next-line
+ console.warn('Warning: ', err.message);
+ this.loopScopes.delete(s);
+ }
+ });
+ }
+ setPendingState() {
+ const propertyKeys = Array.from(new Set(Array.from(this.referencedIdentifiers)
+ .map(i => i.name)))
+ .filter(i => {
+ const method = this.methods.get(i);
+ let isGet = false;
+ if (method) {
+ if (method.isClassMethod()) {
+ const kind = method.node.kind;
+ if (kind === 'get') {
+ isGet = true;
+ }
+ }
+ }
+ return !this.methods.has(i) || isGet;
+ })
+ .filter(i => !this.loopScopes.has(i))
+ .filter(i => !this.initState.has(i))
+ .filter(i => !this.templates.has(i))
+ .filter(i => utils_1.isVarName(i))
+ .filter(i => i !== constant_1.MAP_CALL_ITERATOR && !this.reserveStateWords.has(i))
+ .filter(i => !i.startsWith('$$'))
+ .filter(i => !this.loopRefIdentifiers.has(i));
+ let properties = propertyKeys.map(i => t.objectProperty(t.identifier(i), t.identifier(i)));
+ if (this.customComponentData.length > 0) {
+ properties = properties.concat(this.customComponentData);
+ }
+ const pendingState = t.objectExpression(properties.concat(adapter_1.Adapter.type === "swan" /* swan */ && options_1.transformOptions.isRoot ? t.objectProperty(t.identifier('_triggerObserer'), t.booleanLiteral(false)) : []).concat(Array.from(this.classComputedState).filter(i => {
+ return !propertyKeys.includes(i);
+ }).map(i => {
+ return t.objectProperty(t.identifier(i), t.memberExpression(t.thisExpression(), t.identifier(i)));
+ })));
+ this.renderPath.node.body.body = this.renderPath.node.body.body.concat(buildAssignState(pendingState), t.returnStatement(t.memberExpression(t.thisExpression(), t.identifier('state'))));
+ }
+ createData() {
+ const renderBody = this.renderPath.get('body');
+ renderBody.traverse({
+ ThisExpression(path) {
+ const property = path.getSibling('property');
+ if (property.isIdentifier({ name: 'state' })) {
+ property.replaceWith(t.identifier('__state'));
+ }
+ if (property.isIdentifier({ name: 'props' })) {
+ property.replaceWith(t.identifier('__props'));
+ }
+ }
+ });
+ this.usedThisProperties.forEach(prop => {
+ if (this.renderScope.hasBinding(prop)) {
+ const binding = this.renderScope.getBinding(prop);
+ throw utils_1.codeFrameError(binding.path.node, `此变量声明与 this.${prop} 的声明冲突,请更改其中一个变量名。详情见:https://github.com/NervJS/taro/issues/822`);
+ }
+ });
+ this.renderPath.node.body.body.unshift(template(`this.__state = arguments[0] || this.state || {};`)(), template(`this.__props = arguments[1] || this.props || {};`)(), template(`const __runloopRef = arguments[2];`)(), this.usedThisProperties.size
+ ? t.variableDeclaration('const', [
+ t.variableDeclarator(t.objectPattern(Array.from(this.usedThisProperties).map(p => t.objectProperty(t.identifier(p), t.identifier(p)))), t.thisExpression())
+ ])
+ : t.emptyStatement());
+ if (t.isIdentifier(this.renderPath.node.key)) {
+ this.renderPath.node.key.name = '_createData';
+ }
+ }
+}
+exports.RenderParser = RenderParser;
+//# sourceMappingURL=render.js.map
diff --git a/packages/mp-jsx-ts/_scripts/jsx2wxml/render.js.map b/packages/mp-jsx-ts/_scripts/jsx2wxml/render.js.map
new file mode 100644
index 000000000..37fdaba6b
--- /dev/null
+++ b/packages/mp-jsx-ts/_scripts/jsx2wxml/render.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/render.ts"],"names":[],"mappings":";;AAAA,mDAAmE;AACnE,iCAAgC;AAChC,2CAA+C;AAC/C,mCAwBgB;AAChB,mCAA8D;AAC9D,+BAIc;AACd,yCAUmB;AACnB,uCAA6C;AAC7C,uCAAwE;AACxE,qDAAsC;AAEtC,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAA;AAI1C,SAAS,WAAW,CAAE,IAAsB,EAAE,EAAoC;IAChF,MAAM,OAAO,GAAuB,EAAE,CAAA;IACtC,qDAAqD;IACrD,OAAO,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE;QAC7B,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE;YACZ,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;SACnB;KACF;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,SAAS,UAAU,CAAE,CAAmB;IACtC,OAAO,CAAC,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC,kBAAkB,EAAE,CAAA;AACxD,CAAC;AAWD,SAAS,mBAAmB,CAAE,CAAmB;IAC/C,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAA;AAChD,CAAC;AAED,SAAS,gBAAgB,CACvB,YAAgC;IAEhC,OAAO,CAAC,CAAC,mBAAmB,CAC1B,CAAC,CAAC,cAAc,CACd,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAClE;QACE,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC7D,YAAY;KACb,CACF,CACF,CAAA;AACH,CAAC;AAED,MAAa,YAAY;IAqmCvB,YACE,UAAmC,EACnC,OAAwB,EACxB,SAAsB,EACtB,qBAAwC,EACxC,SAAsB,EACtB,aAAsD,EACtD,oBAAiC,EACjC,mBAA4C,EAC5C,kBAA+B,EAC/B,QAAoC;QA5mC9B,oBAAe,GAAG,IAAI,GAAG,EAAmB,CAAA;QAC5C,cAAS,GAAG,IAAI,GAAG,EAAwB,CAAA;QAC3C,oBAAe,GAAG,IAAI,GAAG,EAAoB,CAAA;QAC7C,eAAU,GAAG,IAAI,GAAG,EAAU,CAAA;QAC9B,kBAAa,GAAuB,EAAE,CAAA;QACtC,kBAAa,GAAG,IAAI,GAAG,EAAU,CAAA;QACjC,mBAAc,GAAG,IAAI,GAAG,EAAsD,CAAA;QAC9E,uBAAkB,GAAG,IAAI,GAAG,EAAsC,CAAA;QAClE,sBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;QAC/C,wBAAmB,GAAG,IAAI,GAAG,EAA2B,CAAA;QACxD,eAAU,GAAG,IAAI,GAAG,EAAU,CAAA;QAE9B,iBAAY,GAAG,IAAI,GAAG,EAAgB,CAAA;QACtC,uBAAkB,GAAG,IAAI,GAAG,EAAU,CAAA;QACtC,sBAAiB,GAAG,mBAAW,EAAE,CAAA;QACjC,uBAAkB,GAAG,IAAI,GAAG,EAAU,CAAA;QACtC,2BAAsB,GAAG,IAAI,GAAG,EAA4C,CAAA;QAC5E,wBAAmB,GAAG,KAAK,CAAA;QAenC,qBAAgB,GAAG,CACjB,cAAsC,EACtC,IAAyG,EACzG,EAAE;YACF,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CAAA;YACxC,MAAM,UAAU,GAAG,cAAc,CAAC,UAAU,CAAA;YAC5C,MAAM,aAAa,GAAG,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;YAChD,IAAI,CAAC,aAAa,EAAE;gBAClB,IAAI,eAAe,GAAG,cAAc,CAAC,kBAAkB,EAAE,CAAA;gBACzD,MAAM,iBAAiB,GAAG,eAAe,CAAC,iBAAiB,EAAE,CAAA;gBAC7D,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAA;gBAC1D,MAAM,aAAa,GAAG,eAAe,CAAC,iBAAiB,EAAE,CAAC,aAAa,EAAE,CAAA;gBACzE,IACE,CAAC,CACC,eAAe,CAAC,qBAAqB,EAAE;oBACvC,eAAe,CAAC,qBAAqB,EAAE,CACxC,EACD;oBACA,eAAe,GAAG,eAAe,CAAC,UAAU,CAC1C,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC,qBAAqB,EAAE,CACnC,CAAA;iBAC3B;gBACD,IAAI,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE;oBACtC,IAAI,eAAe,EAAE;wBACnB,MAAM,IAAI,GAAG,mCAA2B,CAAC,eAAe,CAAC,IAA6B,CAAC,CAAA;wBACvF,qCAAqC;wBACrC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,CAAA;qBACtD;iBACF;gBACD,IAAI,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,iBAAiB,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC,CAAA;aACpG;QACH,CAAC,CAAA;QAEO,mBAAc,GAAG,CAAC,CAAyB,EAAW,EAAE;YAC9D,MAAM,MAAM,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAA;YACnD,IAAI,MAAM,IAAI,MAAM,CAAC,aAAa,EAAE,EAAE;gBACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAA;gBAC7D,IAAI,QAAQ,IAAI,gCAAwB,CAAC,QAAQ,CAAC,EAAE;oBAClD,OAAO,IAAI,CAAA;iBACZ;aACF;YACD,OAAO,KAAK,CAAA;QACd,CAAC,CAAA;QAED,yBAAoB,GAAG,CAAC,IAAY,EAAoC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAA;QAkL3I,0BAAqB,GAAG,CAAC,WAAW,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC,IAAsB,EAAE,EAAE;YAC1E,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBAClC,IAAI,CAAC,QAAQ,CAAC;oBACZ,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE;wBACnB,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;wBAClC,IACE,UAAU,CAAC,uBAAuB,EAAE;4BACpC,UAAU,CAAC,mBAAmB,EAAE;4BAChC,IAAI,CAAC,sBAAsB,EAAE,EAC7B;4BACA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;4BAC3B,IAAI,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gCAChF,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;gCACtC,uCAAuC;6BACxC;4BACD,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gCAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,CAAA;6BAC5C;yBACF;oBACH,CAAC;iBACF,CAAC,CAAA;aACH;QACH,CAAC,CAAA;QAED,oBAAe,GAAG,CAAC,GAAsB,EAAE,EAAE,CAAC,CAAC,CAAwC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,CAAA;QA0BxJ,yBAAoB,GAAY;YACtC,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;gBACzB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;gBAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;gBAClC,IACE,EAAE,CAAC,eAAe,EAAE;oBACpB,IAAI,CAAC,gBAAgB,EAAE;oBACvB,UAAU,CAAC,qBAAqB,EAAE,EAClC;oBACA,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAA;oBAC9B,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;oBAChE,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAA;iBACjE;YACH,CAAC;YACD,UAAU,EAAE;gBACV,KAAK,EAAE,CAAC,cAAsC,EAAE,EAAE;oBAChD,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,EAAE;wBAChD,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAA;wBACjD,IAAI,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE;4BACvC,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAA;4BACpD,IAAI,CAAC,kBAAkB,EAAE,CAAA;yBAC1B;oBACH,CAAC,CAAC,CAAA;gBACJ,CAAC;gBACD,IAAI,EAAE,CAAC,cAAsC,EAAE,EAAE;oBAC/C,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,EAAE,EAAE;wBACnG,IAAI,eAAe,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,EAAE;4BAC7E,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;yBAC1C;wBACD,IAAI,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE;4BACnC,IAAI,CAAC,aAAa,EAAE;gCAClB,MAAM,QAAQ,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAA;gCACjE,IAAI,QAAQ,CAAC,gBAAgB,EAAE,EAAE;oCAC/B,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAA;oCACnC,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;wCACrC,OAAM;qCACP;oCACD,IACE,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC;wCAC5B,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC;wCAC/B,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,KAAK,EAC9B;wCACA,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,CAAA;wCACvB,IAAI,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,yBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE;4CACtF,MAAM,YAAY,GAAG,GAAG,sBAAW,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAA;4CACjE,QAAQ,CAAC,kBAAkB,EAAE,CAAC,YAAY,CACxC,qCAA6B,CAAC,YAAY,EAAE,0BAAkB,CAAC,cAAc,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAC3F,CAAA;4CACD,GAAG,GAAG,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;yCACjC;wCACD,IAAI,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE;4CAC7B,MAAM,EAAE,GAAG,+CAAuC,CAAC,GAAG,CAAC,CAAA;4CACvD,IAAI,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE;gDACtB,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;6CACnC;yCACF;6CAAM,IAAI,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE;4CAC9B,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAA;4CAC/D,IAAI,CAAC,gCAAwB,CAAC,cAAc,CAAC,IAAI,cAAc,KAAK,QAAQ,EAAE;gDAC5E,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;6CACpC;yCACF;wCACD,gBAAU,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAO,CAAC,GAAG,EAAE,CAAC,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAA;wCAC3E,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,+CAAuC,CAAC,MAAM,CAAC,CAAC,CAAA;wCACtE,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAA;wCACtC,IACE,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC;4CAC5B,CAAC,CAAC,yBAAyB,CAAC,IAAI,CAAC,EACjC;4CACA,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAA;4CACjC,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;gDACxB,gBAAU,CACR,cAAc,CAAC,IAAI,EACnB,iBAAO,CAAC,OAAO,EACf,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAC3B,CAAA;gDACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;6CAC/B;iDAAM,IAAI,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;gDAClC,MAAM,sBAAc,CAAC,IAAI,CAAC,GAAG,EAAE,wCAAwC,CAAC,CAAA;6CACzE;iDAAM;gDACL,gBAAU,CACR,cAAc,CAAC,IAAI,EACnB,iBAAO,CAAC,OAAO,EACf,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAC1B,CAAA;6CACF;4CACD,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;gDACzB,gBAAU,CACR,cAAc,CAAC,IAAI,EACnB,iBAAO,CAAC,QAAQ,EAChB,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAC5B,CAAA;gDACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;6CAChC;iDAAM,IAAI,KAAK,KAAK,SAAS,EAAE;gDAC9B,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE;oDACnC,gBAAU,CACR,cAAc,CAAC,IAAI,EACnB,iBAAO,CAAC,QAAQ,EAChB,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CACzD,CAAA;iDACF;6CACF;iDAAM;gDACL,MAAM,sBAAc,CAAC,KAAK,EAAE,gCAAgC,CAAC,CAAA;6CAC9D;4CACD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAA;4CACjD,0CAA0C;4CAC1C,IAAI,eAAe,EAAE;gDACnB,MAAM,IAAI,GAAG,mCAA2B,CACtC,eAAe,CAAC,IAA6B,CAC9C,CAAA;gDACD,qCAAqC;gDACrC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,CAAA;6CACtD;yCACF;qCACF;iCACF;6BACF;yBACF;6BAAM,IAAI,CAAC,CAAC,yBAAyB,CAAC,UAAU,CAAC,EAAE;4BAClD,UAAU,CAAC,WAAW,CACpB,CAAC,CAAC,uBAAuB,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,cAAc,CAAC;gCAC5D,CAAC,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC;6BACvC,CAAC,CAAC,CACJ,CAAA;yBACF;oBACH,CAAC,CAAC,CAAA;gBACJ,CAAC;aACF;SACF,CAAA;QAEO,0BAAqB,GAAG,CAAC,cAA0C,EAAW,EAAE;YACtF,OAAO;gBACL,kBAAkB,EAAE,CAAC,CAAC,EAAE,EAAE;oBACxB,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAA;oBAC3B,MAAM,MAAM,GAAG,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAA;oBACjD,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,2BAAmB,CAAC,CAAC,CAAC,EAAE;wBACrD,OAAM;qBACP;oBACD,IAAI,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE;wBACtB,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,sBAAW,CAAC,EAAE;4BACtE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CACpC,CAAC,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAC5E,CAAA;4BACD,CAAC,CAAC,UAAU,CAAC,WAAW,CACtB,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAClE,CAAA;yBACF;6BAAM;4BACL,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,6BAA6B,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;4BAC3E,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;4BAChD,CAAC,CAAC,UAAU,CAAC,WAAW,CACtB,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC,CAC/E,CAAA;yBACF;qBACF;gBACH,CAAC;gBACD,UAAU,EAAE,CAAC,cAAc,EAAE,EAAE;oBAC7B,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,EAAE;wBAChD,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAA;oBACnD,CAAC,CAAC,CAAA;gBACJ,CAAC;gBACD,sBAAsB,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;aACzD,CAAA;QACH,CAAC,CAAA;QAED,uBAAkB,GAAG,CAAC,CAAmB,EAAE,EAAE;YAC3C,MAAM,KAAK,GAAiC,IAAI,GAAG,EAAE,CAAA;YACrD,IAAI,IAAI,GAAG,CAAC,CAAC,UAAU,CAAA;YACvB,OAAO,IAAI,CAAC,aAAa,EAAE,EAAE;gBAC3B,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;gBACf,IAAI,GAAG,IAAI,CAAC,UAAU,CAAA;aACvB;YACD,OAAO,KAAK,CAAA;QACd,CAAC,CAAA;QA2ND,4BAAuB,GAAG,CAAC,KAAmB,EAAE,GAAiB,EAAE,IAAkB,EAAE,OAAgB,EAAE,EAAE;YACzG,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;gBAC5B,OAAM;aACP;YAED,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE;gBAClC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;oBAC1B,SAAQ;iBACT;gBACD,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,iBAAO,CAAC,EAAE,CAAC,CAAA;gBACpF,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,iBAAO,CAAC,MAAM,CAAC,CAAA;gBAC5F,IACE,CAAC,MAAM,IAAI,CAAC,CAAC,wBAAwB,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;;wBAE1E,CAAC,UAAU,IAAI,CAAC,CAAC,wBAAwB,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EAClF;oBACA,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;oBACxB,OAAO,GAAG,IAAI,CAAA;oBACd,MAAK;iBACN;qBAAM;oBACL,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;iBACxD;aACF;QACH,CAAC,CAAA;QAED,iBAAY,GAAG,CAAC,CAAC,KAAmB,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAA;QAE7G,sBAAiB,GAAY;YACnC,UAAU,EAAE,CAAC,cAAc,EAAE,EAAE;gBAC7B,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,EAAE;oBAChD,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAA;oBACjD,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAA;gBACtD,CAAC,CAAC,CAAA;gBAEF,mBAAmB;gBACnB,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;YAC9C,CAAC;SACF,CAAA;QAEO,mBAAc,GAAY;YAChC,sBAAsB,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC/B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE;oBAC9B,OAAM;iBACP;gBACD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAA2B,CAAA;gBACnE,IAAI,UAAU,CAAC,eAAe,EAAE,EAAE;oBAChC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;iBAC7B;qBAAM,IAAI,UAAU,CAAC,gBAAgB,EAAE,EAAE;oBACxC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAA;oBAC5B,IACE,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;wBACjC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;wBACpC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,EACpC;wBACA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC;6BACtD,IAAoB,CAAA;wBACvB,gEAAgE;wBAChE,IAAI,cAAc,GAAkB,IAAI,CAAA;wBACxC,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;4BACtC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAA;yBACzC;6BAAM,IAAI,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;4BACnD,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;gCAC/C,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAA;6BAClD;yBACF;wBACD,IAAI,cAAc,KAAK,IAAI,EAAE;4BAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAsB,CAAA;4BACnD,IAAI,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,IAAc,CAAA;4BAC5C,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;4BAEzD,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,WAAW,CAAQ,CAAA;4BAC9C,IAA2B,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;gCAClD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAA;gCACrB,MAAM,OAAO,GAAG,yBAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAA;gCACnC,IAAI,KAAK,KAAK,CAAC,EAAE;oCACf,gBAAU,CACR,UAAU,EACV,UAAU,aAAa,KAAK,EAC5B,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CACzB,CAAA;iCACF;qCAAM;oCACL,IAAI,IAAI,GAAQ,IAAI,CAAA;oCACpB,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;wCAC1D,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAoB,CAAC,CAAA;wCACjD,IAAI,GAAG,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAA;qCACtC;yCAAM,IAAI,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE;wCACrC,MAAM,EAAE,GAAG,+CAAuC,CAAC,IAAI,CAAC,CAAA;wCACxD,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;wCAC/B,IAAI,GAAG,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAA;qCACtC;yCAAM,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,IAAI,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;wCACzH,IAAI,GAAG,CAAC,CAAC,sBAAsB,CAAC,IAAW,CAAC,CAAA;qCAC7C;yCAAM,IAAI,4BAAoB,CAAC,GAAG,CAAC,EAAE;wCACpC,MAAM,YAAY,GAAG,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,iBAAO,CAAC,GAAG,CAAC,CAAA;wCACtG,IAAI,YAAY,EAAE;4CAChB,MAAM,sBAAc,CAAC,GAAG,CAAC,IAAI,EAAE,+CAA+C,CAAC,CAAA;yCAChF;6CAAM;4CACL,MAAM,EAAE,GAAG,8BAAsB,CAAC,IAAI,CAAC,WAAW,EAAE,GAAU,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAA;4CAC3F,IAAI,GAAG,CAAC,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAA;yCACpC;qCACF;yCAAM;wCACL,IAAI,GAAG,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAA;qCACvD;oCACD,gBAAU,CACR,UAAU,EACV,UAAU,aAAa,MAAM,iBAAS,CAAC,KAAK,CAAC,EAAE,EAC/C,IAAK,CACN,CAAA;iCACF;4BACH,CAAC,CAAC,CAAA;4BACF,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,cAAc,EAAE,CAAC,CAAC,CAAA;yBAC7D;qBACF;iBACF;YACH,CAAC;YACD,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE;gBACrB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,CAAA;gBACjC,IAAI,oBAAoB,GAAG,KAAK,CAAA;gBAChC,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAA;gBACjD,IAAI,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,YAAY,EAAE,EAAE;oBAC5D,MAAM,aAAa,GAAI,cAAc,CAAC,IAAI,CAAC,cAAsB,CAAC,IAAI,CAAC,IAAI,CAAA;oBAC3E,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,CAAA;oBAC/C,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,eAAe,EAAE;wBAC1C,IAAI,iCAAsB,CAAC,GAAG,CAAC,aAAuB,CAAC,IAAI,CAAC,eAAe,EAAE;4BAC3E,OAAM;yBACP;wBACD,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAA;wBAClD,MAAM,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;4BACnC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE;gCACpB,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAkC,CAAA;gCACxE,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE;oCAC1D,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAA;oCACrC,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,iBAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;oCAC5F,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,iBAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;oCACxF,OAAO,YAAY,IAAI,CAAC,QAAQ,CAAA;iCACjC;6BACF;4BACD,OAAO,KAAK,CAAA;wBACd,CAAC,CAA2B,CAAA;wBAC5B,IAAI,SAAS,EAAE;4BACb,gBAAU,CAAC,SAAS,CAAC,IAAI,EAAE,iBAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;4BAC9C,IAAI,CAAC,MAAM,EAAE,CAAA;yBACd;6BAAM;4BACL,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,iBAAO,CAAC,GAAG,CAAC,CAAC,CAAA;yBAC3D;qBACF;yBAAM,IACL,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAC1B;wBACA,IAAI,CAAC,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE;4BACrC,MAAM,UAAU,GAAG,sBAAc,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;4BACnD,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;4BAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;4BAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAA;4BAC9D,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAA;4BAC7D,mDAAmD;4BACnD,oCAAoC;4BACpC,gCAAgC;4BAChC,oCAAoC;4BACpC,IAAI;4BACJ,IAAI,CAAC,yBAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;gCACtD,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,aAAa,CAAC,GAAG,UAAU,EAAE,CAAC,CAAA;6BACnD;4BACD,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;gCAChC,oBAAoB,GAAG,gCAAwB,CAAC,MAAM,CAAC,CAAA;6BACxD;4BACD,IAAI,SAAS,IAAI,SAAS,CAAC,kBAAkB,EAAE,EAAE;gCAC/C,MAAM,UAAU,GAAG,yBAAiB,CAAC,SAAS,CAAC,CAAA;gCAC/C,IAAI,UAAU,EAAE;oCACd,IAAI;wCACF,MAAM,GAAG,GAAG,sBAAK,CAAC,UAAU,CAAC,IAAI,EAAE,oCAA0B,EAAE,CAAC,CAAC,GAAa,CAAA;wCAC9E,wBAAQ,CAAC,GAAG,EAAE;4CACZ,WAAW,CAAE,CAAC;gDACZ,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE;oDACpD,OAAM;iDACP;gDACD,oBAAoB,GAAG,gCAAwB,CAAC,MAAM,CAAC,CAAA;4CACzD,CAAC;4CACD,aAAa,CAAE,CAAC;gDACd,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE;oDACpD,OAAM;iDACP;gDACD,oBAAoB,GAAG,gCAAwB,CAAC,MAAM,CAAC,CAAA;4CACzD,CAAC;yCACF,CAAC,CAAA;qCACH;oCAAC,OAAO,KAAK,EAAE;wCACd,EAAE;qCACH;iCACF;6BACF;4BACD,IAAI,CAAC,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,gCAAqB,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;gCACtF,MAAM,OAAO,GAAG,IAAI,CAAC,MAA6B,CAAA;gCAClD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,IAAI,iBAAO,CAAC,IAAI,0BAAoB,EAAE;oCACvE,MAAM,MAAM,GAAG,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAA;oCAClC,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;iCAC1F;6BACF;yBACF;wBACD,IACE,CAAC,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAC1D;4BACA,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAA;4BAClE,IAAI,iBAAO,CAAC,IAAI,0BAAoB,EAAE;gCACpC,IAAI,aAAa,GAAG,IAAI,CAAC,IAAI,CAAA;gCAC7B,IAAI,gCAAqB,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,+BAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oCACnF,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;wCAC3B,aAAa,GAAG,oBAAoB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAA;qCAC5D;yCAAM;wCACL,aAAa,GAAG,GAAG,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;qCAChF;iCACF;gCACD,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,CAAA;6BAChD;iCAAM,IAAI,gCAAqB,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE;gCACnD,IAAI,aAAa,GAAG,GAAG,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE;sCAC5D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;gCACpC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;oCAC3B,aAAa,GAAG,oBAAoB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAA;iCAC9D;gCACD,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,aAAa,CAAC,CAAA;6BAChD;iCAAM,IAAI,iCAAsB,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE;gCACpD,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;6BAC3F;iCAAM;gCACL,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;6BACnE;yBACF;wBACD,0GAA0G;wBAC1G,uCAAuC;wBACvC,sCAAsC;wBACtC,qCAAqC;qBACtC;yBAAM,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gCAAqB,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE;wBACtF,IAAI,CAAC,CAAC,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE;4BACtC,MAAM,sBAAc,CAAC,KAAK,EAAE,8CAA8C,CAAC,CAAA;yBAC5E;wBACD,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAA;wBACnC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;4BAC/B,MAAM,sBAAc,CAAC,KAAK,EAAE,8CAA8C,CAAC,CAAA;yBAC5E;wBACD,MAAM,QAAQ,GAAG,mBAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;wBACvC,MAAM,IAAI,GAAG,kBAAS,CAAC,UAAU,CAAC,CAAA;wBAClC,gBAAU,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAA;wBACnD,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;wBACvC,IAAI,CAAC,MAAM,EAAE,CAAA;qBACd;iBACF;YACH,CAAC;YACD,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE;gBACnB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE;oBAC9B,OAAM;iBACP;gBACD,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE;oBAClC,OAAM;iBACP;gBACD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;gBAClC,IACE,UAAU,CAAC,uBAAuB,EAAE;oBACpC,UAAU,CAAC,mBAAmB,EAAE;oBAChC,UAAU,CAAC,wBAAwB,EAAE;oBACrC,UAAU,CAAC,kBAAkB,EAAE;oBAC/B,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAC9C;oBACA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;iBACvC;YACH,CAAC;YACD,gBAAgB,EAAE;gBAChB,IAAI,EAAE,CAAC,IAAkC,EAAE,EAAE;oBAC3C,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,IAAI,CAAA;oBACtC,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE,EAAE;wBACxC,OAAM;qBACP;oBACD,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE;wBAC/B,OAAM;qBACP;oBACD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC;wBACvB,OAAO;wBACP,OAAO;wBACP,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;qBACvB,CAAC,CAAA;oBACF,IAAI,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE;wBAC9D,MAAM,EAAE,GAAG,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,+CAAuC,CAAC,QAAQ,CAAC,CAAA;wBAClG,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;4BACzB,OAAM;yBACP;wBACD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,CAA6B,CAAA;wBACpF,IAAI,OAAO,IAAI,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;4BAC9F,OAAM;yBACP;wBACD,IAAI,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE;4BACtB,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;4BAClC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;yBACrC;qBACF;gBACH,CAAC;gBACD,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE;oBACd,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE;wBAC9B,OAAM;qBACP;oBACD,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,EAAE;wBAChF,OAAM;qBACP;oBACD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,IAAI,CAAA;oBACtC,IACE,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC;wBAC5B,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC;wBACjC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAClD;wBACA,IAAI,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;4BAC5B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;yBACtC;6BAAM,IAAI,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE;4BACzC,MAAM,EAAE,GAAG,+CAAuC,CAAC,QAAQ,CAAC,CAAA;4BAC5D,IAAI,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;gCAC9C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;6BAChC;yBACF;wBACD,OAAM;qBACP;oBACD,MAAM,IAAI,GAAG,yBAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAA;oBACrC,IAAI,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;wBACpE,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;wBACxD,MAAM,GAAG,GAAG,qCAA6B,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;wBAC1D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;wBAC3C,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;qBACrC;oBACD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;oBAClC,MAAM,EAAE,GAAG,+CAAuC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBAC7D,IAAI,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE;wBAC1B,OAAM;qBACP;oBACD,IACE,UAAU,CAAC,uBAAuB,EAAE;wBACpC,UAAU,CAAC,mBAAmB,EAAE;wBAChC,UAAU,CAAC,wBAAwB,EAAE;wBACrC,UAAU,CAAC,kBAAkB,EAAE;wBAC/B,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EACzC;wBACA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;qBAChC;gBACH,CAAC;aACF;YACD,uBAAuB,EAAE,CAAC,IAAI,EAAE,EAAE;gBAChC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE;oBAC9B,OAAM;iBACP;gBACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAA;gBAC1D,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;gBACvD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YAC7B,CAAC;SACF,CAAA;QAEO,aAAQ,mBACd,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;gBAC7B,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;gBACzB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAA;gBACtD,IAAI,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;oBAChC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAA;iBAC5C;gBACD,IAAI,kBAAkB,GAAG,KAAK,CAAA;gBAC9B,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;oBAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;oBACjC,IAAI,MAAM,CAAC,kBAAkB,EAAE,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,IAAI,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE;wBACpI,kBAAkB,GAAG,IAAI,CAAA;qBAC1B;oBACD,IAAI,MAAM,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE;wBACrF,kBAAkB,GAAG,IAAI,CAAA;qBAC1B;iBACF;gBACD,IAAI,CAAC,kBAAkB,EAAE;oBACvB,MAAM,MAAM,GAAG,kFAAkF,CAAA;oBACjG,IAAI,EAAE,CAAC,YAAY,EAAE,EAAE;wBACrB,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAA;wBACzB,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;4BAC5B,2BAA2B;4BAC3B,OAAO,CAAC,GAAG,CAAC,sBAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,CAAA;yBACrD;qBACF;oBACD,IAAI,EAAE,CAAC,eAAe,EAAE,EAAE;wBACxB,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAA;wBAC9B,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE;4BAC1B,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;gCACrB,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;oCAC9B,2BAA2B;oCAC3B,OAAO,CAAC,GAAG,CAAC,sBAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,CAAA;iCACrD;6BACF;4BACD,IAAI,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE;gCACvD,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;oCACvC,2BAA2B;oCAC3B,OAAO,CAAC,GAAG,CAAC,sBAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,CAAA;iCACrD;6BACF;yBACF;qBACF;iBACF;YACH,CAAC,EACD,kBAAkB,CAAE,IAAI;gBACtB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAA;gBAC9B,IAAI,IAAI,CAAC,UAAU,CAAC,wBAAwB,EAAE,EAAE;oBAC9C,MAAM,CAAC,MAAM,EAAE,CAAA;iBAChB;YACH,CAAC;YACD,WAAW,CAAE,IAAI;gBACf,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAA;gBACjD,IAAI,eAAe,IAAI,eAAe,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE;oBAC9H,IAAI,CAAC,WAAW,CACd,CAAC,CAAC,UAAU,CACV,CAAC,CAAC,iBAAiB,CACjB,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,EACvB,EAAE,CACH,EACD,SAAS,EACT,EAAE,EACF,IAAI,CACL,CACF,CAAA;iBACF;YACH,CAAC,EACD,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE;gBACxB,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;gBAClC,IACE,UAAU,CAAC,UAAU,CAAC,aAAa,EAAE;oBACrC,CAAC,UAAU,CAAC,UAAU,CAAC,aAAa,EAAE,IAAI,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,EAC3F;oBACA,IAAI,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC,CAAA;iBACnC;YACH,CAAC,IAEE,IAAI,CAAC,iBAAiB,IACzB,sBAAsB,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IACzD;QA6ED;;;;;;;WAOG;QACH,yBAAoB,GAAG,GAAG,EAAE;YAC1B,MAAM,WAAW,GAAG,mBAAW,EAAE,CAAA;YACjC,MAAM,YAAY,GAAe,EAAE,CAAA;YACnC,IAAI,UAAU,GAAG,KAAK,CAAA;YACtB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE;gBAChD,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,EAAE;oBAC9B,OAAM;iBACP;gBACD,IAAI,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;oBAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAE,CAAA;oBACtD,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAA;oBACtD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,iBAAO,CAAC,GAAG,EAAE,iBAAO,CAAC,QAAQ,EAAE,iBAAO,CAAC,OAAO,CAAC,CAAC,CAAA;oBACjF,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAc,CAAC,CAAC,CAAA;oBAC7E,IAAI,OAAO,CAAC,MAAM,EAAE;wBAClB,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAA;wBAChD,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAc,CAAC,CAAC,CAAA;qBAC1G;oBACD,gBAAU,CAAC,SAAS,CAAC,IAAI,EAAE,iBAAO,CAAC,IAAI,CAAC,CAAA;oBACxC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;oBACnC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;iBAC7B;gBACD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,eAAe,EAAE;oBACtC,MAAM,UAAU,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAA;oBAC3D,IAAI,UAAU,EAAE;wBACd,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;wBAChC,GAAG,CAAC,MAAM,EAAE,CAAA;qBACb;iBACF;gBACD,MAAM,kBAAkB,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAA+B,CAAA;gBACxG,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAA;gBACzC,IAAI,gBAA8B,CAAA;gBAClC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;oBACjC,IAAI,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,EAAE;wBAClD,gBAAgB,GAAG,GAAG,CAAA;qBACvB;gBACH,CAAC,CAAC,CAAA;gBACF,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,gBAAiB,EAAE;oBAC1D,UAAU,GAAG,IAAI,CAAA;oBACjB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;oBACrF,MAAM,CAAE,IAAI,CAAE,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAA;oBACtC,IAAI,OAAO,GAAwB,IAAI,CAAA;oBACvC,IAAI,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE;wBACrE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAwB,CAAA;wBAC5C,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;qBACpB;oBACD,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,OAAQ,CAAC,EAAE;wBACjD,MAAM,sBAAc,CAAC,SAAS,CAAC,IAAI,EAAE,iCAAiC,CAAC,CAAA;qBACxE;oBACD,MAAM,EAAE,GAAG,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAA;oBAC1G,MAAM,WAAW,GAAG,OAAO,CAAA;oBAC3B,MAAM,IAAI,GAAU;wBAClB,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC;wBACvB,CAAC,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;qBAClD,CAAA;oBACD,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE;wBAC5B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAA;qBACxC;oBACD,MAAM,kBAAkB,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,4BAAiB,CAAC,EAAE,IAAI,CAAC,CAAA;oBAClF,MAAM,OAAO,GAAG,qCAA6B,CAAC,WAAW,EACvD,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,kBAAkB,CAAC,CAAC,CACvL,CAAA;oBACD,MAAM,OAAO,GAAG,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;oBACrE,MAAM,WAAW,GAAG,CAAC,CAAC,mBAAmB,CACvC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAC1G,CAAA;oBACD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;iBAChC;gBACD,IAAI,eAAe,GAAG,IAAI,GAAG,CAC3B,mBAAU,CACR,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,EACtD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,CAC/C,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;oBACX,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;gBAC7B,CAAC,CAAC;qBACD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;qBACpC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;qBACnC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;qBACnC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;qBAC7B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,4BAAiB,CAAC,CACtC,CAAA;gBACD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;oBACnB,MAAM,CAAE,IAAI,CAAE,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAA;oBACtC,IAAI,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE;wBACrE,MAAM,CAAE,IAAI,EAAE,UAAU,CAAE,GAAG,IAAI,CAAC,MAAwB,CAAA;wBAC1D,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,gCAAwB,CAAC,CAAC,CAAC,CAAC,CAAA;wBACvE,MAAM,SAAS,GAAG,IAAI,GAAG,CACvB,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,OAAO;iCACnB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAO,CAAC,CAAC,EAAE,kCAAkC,EAAE,EAAE,CAAC,CAAC;iCAC9D,MAAM,CAAC,OAAO,CAAC,CAAC,CACpB,CAAA;wBACD,KAAK,MAAM,CAAE,KAAK,EAAE,SAAS,CAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;4BACjD,IAAI,CAAC,CAAC,qBAAqB,CAAC,SAAS,CAAC,EAAE;gCACtC,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,YAAY,EAAE;oCACxC,IAAI,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;wCAC1B,MAAM,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,IAAI,CAAA;wCACxB,IACE,IAAI,CAAC,UAAU,CAAC,qBAAU,CAAC;4CAC3B,IAAI,CAAC,UAAU,CAAC,sBAAW,CAAC,EAC5B;4CACA,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;4CACzB,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;yCAC5B;qCACF;iCACF;6BACF;4BACD,IAAI,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE;gCAClC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;6BACtB;yBACF;wBACD,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAA;wBACpE,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;wBACvH,iDAAiD;wBACjD,SAAS,eAAe,CAAE,IAAI,EAAE,MAAM,EAAE,IAAI;4BAC1C,IACE,IAAI,CAAC,sBAAsB,EAAE;gCAC7B,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;gCACnB,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,wBAAa,EAAE,CAAC,CAAC;gCAC3F,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAU,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,sBAAW,CAAC,CAAC,CAAC,EACnK;gCACA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,CACjC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAClB,CAAC,CAAC,UAAU,CAAC,wBAAa,CAAC,CAC5B,CAAC,CAAA;6BACH;wBACH,CAAC;wBACD,MAAM,QAAQ,GAAI,MAAM,CAAC,GAAG,CAAC,WAAW,CAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;wBAChE,QAAQ,CAAC,QAAQ,CAAC;4BAChB,UAAU,CAAE,IAAI;gCACd,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;gCAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;gCAC1B,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;4BACrC,CAAC;yBACF,CAAC,CAAA;wBACF,MAAM,YAAY,GAAG,IAAI,GAAG,EAAE,CAAA;wBAC9B,SAAS,CAAC,QAAQ,CAAC;4BACjB,YAAY,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,YAAI,CAAC,CAAC,CAAC,CAAC,IAA8B,EAAE,EAAE;gCACpF,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,CAAA;gCAC3B,IAAI,CAAC,CAAC,wBAAwB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE;oCACpG,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,8CAA8C;wCAC5E,sCAAsC;wCACtC,OAAO,CAAC,GAAG,CAAC,sBAAc,CAAC,KAAK,CAAC,UAAU,EAAE,qIAAqI,CAAC,CAAC,OAAO,CAAC,CAAA;qCAC7L;iCACF;4BACH,CAAC;4BACD,sBAAsB,EAAE,IAAI,CAAC,qBAAqB,EAAE;4BACpD,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE;gCACnB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;gCAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;gCAC1B,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAA;gCACjE,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAC9B,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC;oCACpC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,cAAc,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,IAAW,CAAC,CAAC,CAC1G,EAAE;oCACD,OAAM;iCACP;gCAED,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,sBAAsB,EAAE,EAAE;oCAC9D,IAAI,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE;wCACpF,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAA;wCAClD,IAAI,eAAe,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;4CAClF,OAAM;yCACP;qCACF;oCACD,MAAM,WAAW,GAAG,CAAC,CAAC,gBAAgB,CACpC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EACvB,IAAI,CAAC,IAAI,CACV,CAAA;oCACD,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;oCAC7B,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;iCAC9B;qCAAM;oCACL,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;iCACpC;4BAEH,CAAC;4BACD,gBAAgB,CAAE,IAAI;gCACpB,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,IAAI,CAAA;gCACtC,IAAI,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE;oCAC7E,IAAI,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,kBAAkB,EAAE,EAAE;wCAC3F,2BAA2B;wCAC3B,OAAO,CAAC,IAAI,CACV,sBAAc,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,EAC5C,0EAA0E,CAC3E,CACF,CAAA;qCACF;iCACF;4BACH,CAAC;yBACF,CAAC,CAAA;wBACF,MAAM,YAAY,GAAG,CAAC,CAAC,cAAc,CACnC,CAAC,CAAC,UAAU,CAAC,wBAAa,CAAC,EAC3B,CAAC,CAAC,gBAAgB,CAChB,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EACvB,CAAC,CAAC,UAAU,CAAC,wBAAa,CAAC,CAC5B,CACF,CAAA;wBACD,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;wBAC7B,IAAI,CAAC,OAAO,CACV,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,oBAAoB,CAAC,GAAG,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC;4BAC5F,CAAC,CAAC,cAAc,CACd,CAAC,CAAC,UAAU,CAAC,wBAAa,CAAC,EAC3B,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,+BAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAChF;yBACF,CAAC,CAAC,CAAC,CACL,CAAA;wBACD,MAAM,eAAe,GAAG,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;wBACpG,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,gCAAwB,CAAC,CAAC,CAAC,CAAC,CAAA;wBACxE,IAAI,gCAAwB,CAAC,YAAY,CAAC,EAAE;4BAC1C,MAAM,CAAE,IAAI,CAAE,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,CAAA;4BAC5C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,MAA4B,CAAA;4BAC3D,IAAI,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE;gCACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAA;gCAC1B,IAAI,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE;oCAChC,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE;wCAC1D,MAAM,YAAY,GAAG,GAAG,sBAAW,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAA;wCACjE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAClB,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EACxB,CAAC,EACD,qCAA6B,CAC3B,YAAY,EACZ,0BAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CACjD,CACF,CAAA;wCACD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;wCAC/B,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;4CACtD,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,iBAAO,CAAC,GAAG,IAAI,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;gDAC9D,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,sBAAsB,CACnC,CAAC,CAAC,gBAAgB,CAChB,QAAQ,EACR,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAC3B,CACF,CAAA;6CACF;wCACH,CAAC,CAAC,CAAA;qCACH;yCAAM;wCACL,MAAM,sBAAc,CAAC,MAAM,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAA;qCAC5D;iCACF;6BACF;4BACD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;yBAC3B;6BAAM;4BACL,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;4BAC1B,MAAM,SAAS,GAAG,WAAW,GAAG,WAAW,EAAE,CAAA;4BAC7C,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;gCAC/C,IAAI,QAAQ,KAAK,MAAM,EAAE;oCACvB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,MAAqB,CAAA;oCACvD,KAAK,MAAM,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE;wCACrC,IAAI,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,oBAAoB,EAAE;4CAC7E,MAAM,OAAO,GAAG,QAAQ,CAAC,KAA2B,CAAA;4CACpD,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,UAAU,EAAE;gDACxC,IAAI,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE;oDACjF,MAAM,IAAI,GAAG,OAAO,CAAC,KAAY,CAAA;oDACjC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,qCAA6B,CAAC,WAAW,EAAE,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAA;iDAC3F;6CACF;yCACF;qCACF;iCACF;4BACH,CAAC,CAAC,CAAA;4BACF,6DAA6D;4BAC7D,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAA;4BACtD,0DAA0D;4BAC1D,gBAAU,CAAC,SAAS,CAAC,IAAI,EAAE,iBAAO,CAAC,GAAG,EAAE,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;4BAC1F,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;4BACjD,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAA;4BACxD,QAAQ;4BACR,IAAI,MAAM,IAAI,MAAM,CAAC,aAAa,EAAE,EAAE;gCACpC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;gCAC3C,IAAI,UAAU,CAAC,gBAAgB,EAAE,EAAE;oCACjC,MAAM,UAAU,GAAG,CAAC,CAAC,mBAAmB,CACtC,CAAC,CAAC,oBAAoB,CACpB,GAAG,EACH,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,EACvB,0BAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CACjD,CACF,CAAA;oCACD,UAAU,CAAC,OAAO,CAChB,CAAC,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAC9E,CAAA;oCACD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;iCACtC;6BACF;iCAAM;gCACL,MAAM,IAAI,GAAG,qCAA6B,CAAC,SAAS,EAAE,0BAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;gCACvG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;6BACtB;yBACF;qBACF;iBACF;gBACD,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE;oBACrB,MAAM,SAAS,GAAG,SAAS,CAAC,kBAAkB,EAAE,CAAA;oBAChD,MAAM,CAAC,WAAW,CAChB,SAAS,CAAC,iBAAiB,EAAE;wBAC7B,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI;wBAChC,CAAC,CAAC,SAAS,CAAC,IAAI,CACjB,CAAA;gBACH,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;YACF,IAAI,UAAU,EAAE;gBACd,MAAM,SAAS,GAAG,QAAQ,CAAC,6BAA6B,CAAC,EAAE,CAAA;gBAC3D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;aAClD;YACD,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAA;QACtC,CAAC,CAAA;QAuCD,mBAAc,GAAG,CAAC,IAAY,EAAE,EAAE;YAChC,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;YACpD,IAAI,UAAU,GAAG,KAAK,CAAA;YACtB,IAAI,OAAO,EAAE;gBACX,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;gBACzB,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;gBACzB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;gBAC7B,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE;oBAC3B,OAAO,UAAU,CAAA;iBAClB;gBACD,IAAI,EAAE,CAAC,eAAe,EAAE,EAAE;oBACxB,UAAU,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;wBACvC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;+BAClE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;oBAC1E,CAAC,CAAC,CAAA;iBACH;qBAAM,IAAI,EAAE,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;oBAC1C,UAAU,GAAG,IAAI,CAAA;iBAClB;gBACD,IAAI,UAAU,EAAE;oBACd,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;iBACnD;aACF;YACD,IAAI,UAAU,EAAE;gBACd,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;aACpC;QACH,CAAC,CAAA;QApbC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAA;QAClD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;QAClC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAA;QAChD,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAA;QAC9C,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAA;QAC5C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACzC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,KAAK,CAAA;QAEnC,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAA;QAC/E,IAAI,KAAK,EAAE;YACT,MAAM,sBAAc,CAAC,KAAK,CAAC,GAAG,EAAE,8BAA8B,CAAC,CAAA;SAChE;QAED,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;QAC9C,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,UAAU,CAAC,QAAQ,CAAC;gBAClB,UAAU,EAAG,IAAI,CAAC,oBAAoB,CAAC,UAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;aAClE,CAAC,CAAA;SACH;QACD,IAAI,CAAC,oBAAoB,EAAE,CAAA;QAC3B,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAClC,IAAI,CAAC,iBAAiB,EAAE,CAAA;QACxB,IAAI,CAAC,kBAAkB,EAAE,CAAA;QACzB,IAAI,CAAC,kBAAkB,EAAE,CAAA;QACzB,IAAI,CAAC,YAAY,EAAE,CAAA;QACnB,IAAI,CAAC,eAAe,EAAE,CAAA;QACtB,IAAI,CAAC,cAAc,EAAE,CAAA;QACrB,IAAI,CAAC,UAAU,EAAE,CAAA;QACjB,IAAI,CAAC,YAAY,EAAE,CAAA;QACnB,IAAI,CAAC,cAAc,EAAE,CAAA;IACvB,CAAC;IAnkCD,mBAAmB,CAAE,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAc,EAAE,cAAsC;QAClH,IAAI,UAAU,CAAC,gBAAgB,EAAE,EAAE;YACjC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACrC,IAAI,KAAK,KAAK,cAAc,EAAE;gBAC5B,OAAM;aACP;YACD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,kBAAkB,EAAE,EAAE;gBAC/C,OAAM;aACP;YACD,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;YAC1D,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,kBAAkB,EAAE,EAAE;gBAC1D,OAAM;aACP;YACD,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;YAC7D,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;gBACrD,OAAM;aACP;YACD,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;gBAC5D,MAAM,KAAK,GAAG,uBAAiB,EAAE,CAAA;gBACjC,MAAM,MAAM,GAAG,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,IAAW,CAAC,CAAA;gBACjE,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;gBACpD,IAAI,KAAK,KAAK,CAAC,EAAE;oBACf,oBAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;iBAC5B;qBAAM;oBACL,gBAAU,CAAC,KAAK,EAAE,iBAAO,CAAC,MAAM,EAAE,CAAC,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAA;iBACpE;gBACD,OAAO,KAAK,CAAA;YACd,CAAC,CAAC,CAAA;YACF,MAAM,KAAK,GAAG,uBAAiB,EAAE,CAAA;YACjC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAA;YACzB,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;SACpD;aAAM,IAAI,CAAC,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE;YAC5C,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,UAAU,CAAA;YAC5C,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAA2B,CAAA;YACvE,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;gBAC7C,IAAI,4BAAoB,CAAC,cAAc,CAAC,EAAE;oBACxC,8BAAsB,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAA;iBAC3F;gBACD,MAAM,KAAK,GAAG,uBAAiB,EAAE,CAAA;gBACjC,oBAAY,CAAC,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,CAAA;gBACxC,KAAK,CAAC,QAAQ,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;gBACtC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;gBAC7B,IAAI,eAAe,EAAE;oBACnB,MAAM,IAAI,GAAG,mCAA2B,CAAC,eAAe,CAAC,IAA6B,CAAC,CAAA;oBACvF,mBAAW,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;oBACjD,yCAAyC;iBAC1C;aACF;YACD,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;gBAC7C,MAAM,OAAO,GAAG,CAAC,CAAC,qBAAqB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;gBAC1D,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;gBAC/B,iGAAiG;aAClG;SACF;aAAM,IAAI,CAAC,CAAC,uBAAuB,CAAC,UAAU,CAAC,EAAE;YAChD,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,UAAU,CAAA;YAC5C,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAA2B,CAAA;YACvE,MAAM,KAAK,GAAG,uBAAiB,EAAE,CAAA;YACjC,IAAI,4BAAoB,CAAC,cAAc,CAAC,EAAE;gBACxC,8BAAsB,CAAC,UAAU,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAA;aAC3F;YACD,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAA;YAChC,IAAI,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,EAAE;gBACtE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAA;gBACnE,IAAI,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE;oBAChE,oBAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;oBACzB,KAAK,CAAC,QAAQ,GAAG,CAAE,cAAc,CAAC,IAAI,CAAE,CAAA;oBACxC,0CAA0C;oBAC1C,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;iBAC9B;qBAAM;oBACL,MAAM,MAAM,GAAG,uBAAiB,EAAE,CAAA;oBAClC,KAAK,CAAC,QAAQ,GAAG,CAAC,UAAU,CAAC,CAAA;oBAC7B,oBAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;oBACzB,gBAAU,CAAC,MAAM,EAAE,iBAAO,CAAC,IAAI,CAAC,CAAA;oBAChC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAA;oBACvD,MAAM,WAAW,GAAG,uBAAiB,EAAE,CAAA;oBACvC,WAAW,CAAC,QAAQ,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;oBACtC,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;iBACpC;gBACD,IAAI,eAAe,EAAE;oBACnB,MAAM,IAAI,GAAG,mCAA2B,CACtC,eAAe,CAAC,IAA6B,CAC9C,CAAA;oBACD,mBAAW,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;oBACjD,yCAAyC;iBAC1C;aACF;iBAAM,IAAI,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;gBAC7E,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAA;gBACpE,IAAI,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE;oBAChE,oBAAY,CAAC,KAAK,EAAE,sBAAc,CAAC,IAAI,CAAC,CAAC,CAAA;oBACzC,KAAK,CAAC,QAAQ,GAAG,CAAE,cAAc,CAAC,IAAI,CAAE,CAAA;oBACxC,0CAA0C;oBAC1C,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;iBAC9B;qBAAM;oBACL,MAAM,MAAM,GAAG,uBAAiB,EAAE,CAAA;oBAClC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAA;oBACvD,oBAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;oBACzB,gBAAU,CAAC,MAAM,EAAE,iBAAO,CAAC,IAAI,CAAC,CAAA;oBAChC,MAAM,CAAC,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAA;oBAC7B,MAAM,WAAW,GAAG,uBAAiB,EAAE,CAAA;oBACvC,WAAW,CAAC,QAAQ,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;oBACtC,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;iBACpC;gBACD,IAAI,eAAe,EAAE;oBACnB,MAAM,IAAI,GAAG,mCAA2B,CACtC,eAAe,CAAC,IAA6B,CAC9C,CAAA;oBACD,mBAAW,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;oBACjD,yCAAyC;iBAC1C;aACF;iBAAM,IAAI,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;gBAClE,MAAM,MAAM,GAAG,uBAAiB,EAAE,CAAA;gBAClC,KAAK,CAAC,QAAQ,GAAG,CAAC,UAAU,CAAC,CAAA;gBAC7B,oBAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;gBACzB,gBAAU,CAAC,MAAM,EAAE,iBAAO,CAAC,IAAI,CAAC,CAAA;gBAChC,MAAM,CAAC,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAA;gBAC7B,MAAM,WAAW,GAAG,uBAAiB,EAAE,CAAA;gBACvC,WAAW,CAAC,QAAQ,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;gBACtC,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;gBACnC,IAAI,eAAe,EAAE;oBACnB,MAAM,IAAI,GAAG,mCAA2B,CACtC,eAAe,CAAC,IAA6B,CAC9C,CAAA;oBACD,mBAAW,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;iBAClD;aACF;iBAAM,IAAI,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,gCAAwB,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,EAAE;gBAChI,MAAM,EAAE,GAAG,8BAAsB,CAAC,IAAI,CAAC,WAAY,EAAE,UAAU,CAAC,GAAG,CAAC,WAAW,CAAQ,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAA;gBAC1H,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;gBAC3C,EAAE;aACH;iBAAM,IAAI,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,gCAAwB,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE;gBACjI,MAAM,EAAE,GAAG,8BAAsB,CAAC,IAAI,CAAC,WAAY,EAAE,UAAU,CAAC,GAAG,CAAC,YAAY,CAAQ,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAA;gBAC3H,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;aAC7C;iBAAM;gBACL,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAA;gBACvD,oBAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;gBACzB,MAAM,MAAM,GAAG,uBAAiB,EAAE,CAAA;gBAClC,gBAAU,CAAC,MAAM,EAAE,iBAAO,CAAC,IAAI,CAAC,CAAA;gBAChC,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAA;gBACvD,MAAM,WAAW,GAAG,uBAAiB,EAAE,CAAA;gBACvC,WAAW,CAAC,QAAQ,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;gBACtC,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;gBACnC,IAAI,eAAe,EAAE;oBACnB,MAAM,IAAI,GAAG,mCAA2B,CACtC,eAAe,CAAC,IAA6B,CAC9C,CAAA;oBACD,mBAAW,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;iBAClD;aACF;SACF;IACH,CAAC;IAED,YAAY;QACV,MAAM,UAAU,GAAuB,EAAE,CAAA;QACzC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC3C,UAAU,CAAC,IAAI,CACb,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC;gBAC7D,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC1D,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;aAC5D,CAAC,CAAC,CACJ,CAAA;QACH,CAAC,CAAC,CAAA;QACF,IAAI,SAAS,GAAG,CAAC,CAAC,aAAa,CAC7B,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,EAC1B,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,CACxB,CAAA;QACR,SAAS,CAAC,MAAM,GAAG,IAAI,CAAA;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAiC,CAAA;QACxF,iBAAO,CAAC,IAAI,0BAAoB,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IACjF,CAAC;IAED,cAAc;QACZ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;YACtB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAiC,CAAA;YACxF,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;SACxG;IACH,CAAC;IA4BO,oBAAoB,CAC1B,GAAsB,EACtB,IAAoC,EACpC,UAAqD,EACrD,UAA4B;QAE5B,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACpH,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;YAChC,OAAM;SACP;QACD,IAAI,eAAe,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE;YAChD,MAAM,sBAAc,CAAC,IAAI,CAAC,IAAI,EAAE,8BAA8B,CAAC,CAAA;SAChE;QACD,MAAM,YAAY,GAAG,QAAQ,CAAC,SAAS,GAAG,WAAW,GAAG,GAAG,CAAC,EAAE,CAAA;QAC9D,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YACzB,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;YACtG,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;YAC3B,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;SACrC;aAAM;YACL,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;YACpC,UAAU,CAAC,MAAM,EAAE,CAAA;SACpB;IACH,CAAC;IA+KO,sBAAsB,CAAE,cAAsC,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAc;QAC3I,IAAI,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE;YACnC,IAAI,CAAC,aAAa,IAAI,CAAC,cAAc,EAAE;gBACrC,OAAM;aACP;iBAAM;gBACL,MAAM,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAA;gBACjE,MAAM,cAAc,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,KAAK,WAAW,CAAC,CAA+B,CAAA;gBACvI,MAAM,YAAY,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,gCAAwB,CAAC,CAAC,CAAC,CAAsC,CAAA;gBACrH,IAAI,cAAc,IAAI,cAAc,CAAC,gBAAgB,EAAE,EAAE;oBACvD,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAA;iBACpE;gBACD,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,IAAI,uBAAiB,EAAE,CAAA;gBAC5D,IAAI,0BAAkB,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE;oBACnD,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,WAAW,CAAC,IAAI,CAAA;oBACxD,mDAAmD;oBACnD,kEAAkE;oBAClE,KAAK;oBACL,IAAI,SAAS,KAAK,cAAc,CAAC,IAAI,EAAE;wBACrC,MAAM,sBAAc,CAAC,UAAU,CAAC,GAAG,EAAE,4FAA4F,CAAC,CAAA;qBACnI;yBAAM,IAAI,UAAU,KAAK,cAAc,CAAC,IAAI,EAAE;wBAC7C,MAAM,iBAAiB,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAA;wBACxE,IAAI,iBAAiB,EAAE;4BACrB,gBAAU,CACR,cAAc,CAAC,IAAI,EACnB,iBAAO,CAAC,MAAM,EACd,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAC9B,cAAc,CACf,CAAA;4BACD,IAAI,YAAY,IAAI,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;gCACjE,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,YAAY,CAAE,CAAA;gCAC5D,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;6BACzC;yBACF;6BAAM;4BACL,IAAI,cAAc,IAAI,YAAY,IAAI,YAAY,CAAC,gBAAgB,EAAE,EAAE;gCACrE,IAAI,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;oCACjD,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,YAAY,CAAE,CAAA;oCAChE,oBAAY,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAA;oCACvD,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;iCAC7C;qCAAM;oCACL,oBAAY,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAA;oCACvD,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,CAAA;oCACpD,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;oCAChD,IAAI,CAAC,CAAC,yBAAyB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE;wCAC1I,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,uBAAiB,EAAE,CAAC,CAAC,CAAA;wCAChE,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAA;qCAChC;iCACF;6BACF;iCAAM;gCACL,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,GAAG,CAAC,EAAE;oCACrC,gBAAU,CACR,cAAc,CAAC,IAAI,EACnB,iBAAO,CAAC,MAAM,EACd,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAC9B,cAAc,CACf,CAAA;iCACF;qCAAM;oCACL,oBAAY,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAA;oCACvD,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;iCAC1C;6BACF;yBACF;qBACF;iBACF;qBAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;oBACtC,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,GAAG,CAAC,EAAE;wBACrC,gBAAU,CAAC,cAAc,CAAC,IAAI,EAAE,iBAAO,CAAC,IAAI,CAAC,CAAA;qBAC9C;iBACF;gBACD,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;gBACxC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,YAAmB,CAAC,EAAE;oBACzD,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAA;iBAChC;gBACD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;aACpC;SACF;aAAM,IAAI,CAAC,CAAC,yBAAyB,CAAC,UAAU,CAAC,EAAE;YAClD,uBAAuB;SACxB;aAAM,IAAI,CAAC,CAAC,sBAAsB,CAAC,UAAU,CAAC,EAAE;YAC/C,MAAM,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAA;YACjE,MAAM,cAAc,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,KAAK,WAAW,CAAC,CAA+B,CAAA;YACvI,IAAI,cAAc,IAAI,cAAc,CAAC,gBAAgB,EAAE,EAAE;gBACvD,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAA;aACpE;YACD,IAAI,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;gBACnC,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAA;gBAC3C,MAAM,WAAW,GAAG,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,gCAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAA;gBACzJ,MAAM,WAAW,GAAG,WAAW,CAAC,aAAa,CAAC,cAAc,CAAE,CAAC,IAAI,CAAC,IAAI,CAAA;gBACxE,2BAA2B;gBAC3B,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAA;gBAC5D,MAAM,iBAAiB,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CACnD,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAClB,CAAA;gBAC5B,0DAA0D;gBAC1D,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,uBAAiB,EAAE,CAAA;gBACrE,IAAI,yBAAiB,CAAC,WAAW,CAAC,EAAE;oBAClC,MAAM,cAAc,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAC/C,CAAC,CAAC,gBAAgB,EAAE,CACrB,CAAA;oBACD,IAAI,0BAAkB,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE;wBACnD,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,WAAW,CAAC,IAAI,CAAA;wBACxD,IAAI,SAAS,KAAK,cAAc,CAAC,IAAI,EAAE;4BACrC,MAAM,QAAQ,GAAG,uBAAiB,EAAE,CAAA;4BACpC,gBAAU,CAAC,QAAQ,EAAE,iBAAO,CAAC,IAAI,CAAC,CAAA;4BAClC,QAAQ,CAAC,QAAQ,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;4BACzC,cAAc,CAAC,IAAI,GAAG,QAAQ,CAAA;yBAC/B;6BAAM,IAAI,UAAU,KAAK,cAAc,CAAC,IAAI,EAAE;4BAC7C,MAAM,iBAAiB,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CACnD,CAAC,CAAC,aAAa,EAAE,CACS,CAAA;4BAC5B,MAAM,WAAW,GAA6B,EAAE,CAAA;4BAChD,IAAI,gBAAgB,GAAG,KAAK,CAAA;4BAC5B,sBAAsB;4BAEtB,4DAA4D;4BAC5D,IAAI,cAAc,IAAI,cAAc,CAAC,gBAAgB,EAAE,EAAE;gCACvD,KAAK,MAAM,eAAe,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE;oCACtD,IAAI,CAAC,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE;wCACtF,MAAM,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC,IAAI,CAAA;wCAClD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;4CAClC,IAAI,CAAC,CAAC,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,sBAAsB,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,EAAE;gDAC/J,gBAAgB,GAAG,IAAI,CAAA;6CACxB;yCACF;qCACF;iCACF;6BACF;4BAED,iEAAiE;4BACjE,IAAI,iBAAiB,EAAE;gCACrB,MAAM,EAAE,UAAU,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAA;gCAC7C,IAAI,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE;oCAClC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAA;oCAC5B,KAAK,MAAM,eAAe,IAAI,IAAI,EAAE;wCAClC,IAAI,CAAC,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE;4CACtF,MAAM,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC,IAAI,CAAA;4CAClD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;gDAClC,IAAI,CAAC,CAAC,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,sBAAsB,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,EAAE;oDAC/J,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;iDACvC;6CACF;yCACF;qCACF;iCACF;6BACF;4BACD,IACE,CACE,iBAAiB;gCACjB,CACE,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,WAAW;oCAClD,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC,GAAG,CAAC,CACjD,CACF;;oCAED,gBAAgB,EAChB;gCACA,gBAAU,CACR,cAAc,CAAC,IAAI,EACnB,iBAAO,CAAC,MAAM,EACd,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAC9B,cAAc,CACf,CAAA;6BACF;iCAAM;gCACL,IAAI,iBAAiB,EAAE;oCACrB,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;wCAC5B,oBAAY,CAAC,KAAK,EAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;qCACjE;yCAAM;wCACL,MAAM,QAAQ,GAAG,uBAAiB,EAAE,CAAA;wCACpC,gBAAU,CACR,QAAQ,EACR,iBAAO,CAAC,MAAM,EACd,CAAC,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EACrD,cAAc,CACf,CAAA;wCACD,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;qCAC9B;iCACF;gCACD,oBAAY,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAA;6BACxD;yBACF;wBACD,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,iBAAO,CAAC,EAAE,CAAC,CAAA;wBACpF,IAAI,MAAM,IAAI,CAAC,CAAC,wBAAwB,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE;4BAC5E,MAAM,QAAQ,GAAG,uBAAiB,EAAE,CAAA;4BACpC,QAAQ,CAAC,QAAQ,GAAG,CAAC,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,CAAA;4BAChD,KAAK,GAAG,QAAQ,CAAA;yBACjB;6BAAM,IACL,iBAAiB,IAAI,WAAW,CAAC,UAAU,KAAK,iBAAiB,EACjE;4BACA,IAAI,OAAO,GAAG,KAAK,CAAA;4BACnB,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,cAAc,CAAC,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;4BAC9F,IAAI,CAAC,OAAO,IAAI,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,WAAW,EAAE;gCAClE,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,iBAAO,CAAC,EAAE,CAAC,CAAA;gCACpF,IAAI,MAAM,IAAI,CAAC,CAAC,wBAAwB,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE;oCACnG,MAAM,QAAQ,GAAG,uBAAiB,EAAE,CAAA;oCACpC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;oCACxC,QAAQ,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAA;oCAC3B,KAAK,GAAG,QAAQ,CAAA;iCACjB;6BACF;yBACF;6BAAM;4BACL,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;yBACzC;wBACD,qCAAqC;wBACrC,cAAc,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,CAAA;wBAC3D,IAAI,cAAc,EAAE;4BAClB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;yBACpC;qBACF;iBACF;qBAAM;oBACL,MAAM,sBAAc,CAClB,cAAc,CAAC,IAAI,CAAC,GAAG,EACvB,yCAAyC,CAC1C,CAAA;iBACF;aACF;SACF;aAAM,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;YACtC,uCAAuC;SACxC;IACH,CAAC;IA+dD,kBAAkB;QAChB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;YACnC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;gBACjC,MAAM,sBAAc,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAE,EAAE,eAAe,SAAS,qBAAqB,SAAS,gBAAgB,CAAC,CAAA;aAC7H;QACH,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,EAAE;YAChD,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE;gBAC9C,MAAM,sBAAc,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,YAAY,aAAa,qBAAqB,aAAa,gBAAgB,CAAC,CAAA;aACxH;YACD,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE;gBACrC,MAAM,sBAAc,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAE,EAAE,eAAe,aAAa,qBAAqB,aAAa,gBAAgB,CAAC,CAAA;aACzI;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,gBAAgB,CAAE,IAAsB,EAAE,EAAgB;QACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,gCAAwB,CAAC,CAAC,CAAC,CAAC,CAAA;QAClE,IAAI,QAAQ,IAAI,QAAQ,CAAC,gBAAgB,EAAE,EAAE;YAC3C,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;SAC/C;aAAM;YACL,EAAE,IAAI,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;SACzC;IACH,CAAC;IAyTD,iBAAiB;QACf,IAAI,CAAC,cAAc,GAAG,qBAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;IAChE,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;QAClD,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAA8B,EAAE,EAAE;YAC5D,IAAI,CAAC,CAAC,OAAO,EAAE;gBACb,OAAM;aACP;YACD,MAAM,MAAM,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAA;YACnD,IAAI,MAAM,EAAE;gBACV,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAA;gBACnB,IAAI,CAAC,IAAI,EAAE;oBACT,OAAM;iBACP;gBACD,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;oBACjC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAA;oBACzB,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAQ,CAAC,EAAE;wBAC7H,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,WAAW,EAAE,CAAA;qBAChC;yBAAM;wBACL,CAAC,CAAC,MAAM,EAAE,CAAA;qBACX;iBACF;qBAAM;oBACL,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,cAAc,EAAE,CAAA;oBAClD,IAAI,OAAO,KAAK,KAAK,EAAE;wBACrB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,WAAW,EAAE,CAAA;qBAChC;yBAAM;wBACL,CAAC,CAAC,MAAM,EAAE,CAAA;qBACX;iBACF;aACF;iBAAM;gBACL,CAAC,CAAC,MAAM,EAAE,CAAA;aACX;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IA6BD,cAAc;QACZ,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAiC,CAAA;QACxF,IAAI,SAAS,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAQ,CAAA,CAAC,2BAA2B;QACzK,SAAS,CAAC,MAAM,GAAG,IAAI,CAAA;QACvB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAC7C,CAAC;IAED,YAAY;QACV,KAAK,MAAM,CAAE,GAAG,EAAE,MAAM,CAAE,IAAI,IAAI,CAAC,OAAO,EAAE;YAC1C,IAAI,MAAM,EAAE;gBACV,IAAI,MAAM,CAAC,aAAa,EAAE,EAAE;oBAC1B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAA;oBAC7B,IAAI,IAAI,KAAK,KAAK,EAAE;wBAClB,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;qBACjC;iBACF;aACF;SACF;QAED,MAAM,kBAAkB,GAAG,kBAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;QAE7D,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAC7B,IAAI,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;gBACzB,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;gBAC5B,IAAI,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;oBACrC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;oBAC5B,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;iBACrC;aACF;QACH,CAAC,CAAC,CAAA;QAEF,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAC/D,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAC1B,IAAI,GAAG,CACL,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC;aACnC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aAChB,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,kBAAkB,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CACvG,CACJ;aACA,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;YAC1B,iBAAiB;YACjB,2BAA2B;YAC3B,KAAK;aACJ,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACpC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACnC,MAAM,CAAC,OAAO,CAAC,CAAA;QAEhB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAiC,CAAA;QACxF,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,eAAe,CAC5F,CAAC,GAAG,IAAI,GAAG,CACT,SAAS;iBACR,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAClD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,4BAAiB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;iBACtE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAS,CAAC,CAAC,CAAC,CAAC;iBACzB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;iBAC5C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAC/C,CAAC;aACC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAChC,CAAC,CAAC,CAAA;IACL,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAC1B,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;gBACvC,MAAM,GAAG,GAAG,sBAAc,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAA;gBACnG,2BAA2B;gBAC3B,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;gBACtC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;aAC1B;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,eAAe;QACb,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAC3B,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC;aAC7C,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CACnB;aACA,MAAM,CAAC,CAAC,CAAC,EAAE;YACV,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YAClC,IAAI,KAAK,GAAG,KAAK,CAAA;YACjB,IAAI,MAAM,EAAE;gBACV,IAAI,MAAM,CAAC,aAAa,EAAE,EAAE;oBAC1B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAA;oBAC7B,IAAI,IAAI,KAAK,KAAK,EAAE;wBAClB,KAAK,GAAG,IAAI,CAAA;qBACb;iBACF;aACF;YACD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAA;QACtC,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACpC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACnC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACnC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,iBAAS,CAAC,CAAC,CAAC,CAAC;aACzB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,4BAAiB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACtE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;aAChC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QAC/C,IAAI,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC1F,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE;YACvC,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;SACzD;QACD,MAAM,YAAY,GAAG,CAAC,CAAC,gBAAgB,CACrC,UAAU,CAAC,MAAM,CACf,iBAAO,CAAC,IAAI,sBAAkB,IAAI,0BAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAC1E,CAAC,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAC/B,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CACxB,CAAC,CAAC,CAAC,EAAE,CACP,CAAC,MAAM,CACN,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YAC7C,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QAClC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACT,OAAO,CAAC,CAAC,cAAc,CACrB,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EACf,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CACxD,CAAA;QACH,CAAC,CAAC,CACH,CACF,CAAA;QACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CACpE,gBAAgB,CAAC,YAAY,CAAC,EAC9B,CAAC,CAAC,eAAe,CACf,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAC9D,CACF,CAAA;IACH,CAAC;IAED,UAAU;QACR,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC9C,UAAU,CAAC,QAAQ,CAAC;YAClB,cAAc,CAAE,IAAI;gBAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;gBAC5C,IAAI,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,EAAG,OAAO,EAAE,CAAC,EAAE;oBAC7C,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAA;iBAC9C;gBACD,IAAI,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,EAAG,OAAO,EAAE,CAAC,EAAE;oBAC7C,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAA;iBAC9C;YACH,CAAC;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACrC,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;gBACrC,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAE,CAAA;gBAClD,MAAM,sBAAc,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,IAAI,iEAAiE,CAAC,CAAA;aAC9H;QACH,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CACpC,QAAQ,CAAC,kDAAkD,CAAC,EAAE,EAC9D,QAAQ,CAAC,kDAAkD,CAAC,EAAE,EAC9D,QAAQ,CAAC,oCAAoC,CAAC,EAAE,EAChD,IAAI,CAAC,kBAAkB,CAAC,IAAI;YAC1B,CAAC,CAAC,CAAC,CAAC,mBAAmB,CACrB,OAAO,EACP;gBACE,CAAC,CAAC,kBAAkB,CAClB,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAC3E,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EACf,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CACT,CAAC,CAAC,EACV,CAAC,CAAC,cAAc,EAAE,CACnB;aACF,CACF;YACD,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CACvB,CAAA;QAED,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAC5C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,aAAa,CAAA;SAC9C;IACH,CAAC;CACF;AAltDD,oCAktDC"}
\ No newline at end of file
diff --git a/packages/mp-jsx-ts/_scripts/jsx2wxml/utils.js b/packages/mp-jsx-ts/_scripts/jsx2wxml/utils.js
new file mode 100644
index 000000000..3ff8dac7a
--- /dev/null
+++ b/packages/mp-jsx-ts/_scripts/jsx2wxml/utils.js
@@ -0,0 +1,512 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const t = require("babel-types");
+const babel_generator_1 = require("babel-generator");
+const code_frame_1 = require("@babel/code-frame");
+const constant_1 = require("./constant");
+const lodash_1 = require("lodash");
+const fs = require("fs");
+const path = require("path");
+const jsx_1 = require("./jsx");
+const adapter_1 = require("./adapter");
+const options_1 = require("./options");
+const template = require('babel-template');
+exports.incrementId = () => {
+ let id = 0;
+ return () => id++;
+};
+// tslint:disable-next-line:no-empty
+exports.noop = function () { };
+function getSuperClassCode(path) {
+ const superClass = path.node.superClass;
+ if (t.isIdentifier(superClass)) {
+ const binding = path.scope.getBinding(superClass.name);
+ if (binding && binding.kind === 'module') {
+ const bindingPath = binding.path.parentPath;
+ if (bindingPath.isImportDeclaration()) {
+ const source = bindingPath.node.source;
+ if (source.value === constant_1.TARO_PACKAGE_NAME) {
+ return;
+ }
+ try {
+ const p = pathResolver(source.value, options_1.transformOptions.sourcePath) + (options_1.transformOptions.isTyped ? '.tsx' : '.js');
+ const code = fs.readFileSync(p, 'utf8');
+ return {
+ code,
+ sourcePath: source.value
+ };
+ }
+ catch (error) {
+ return;
+ }
+ }
+ }
+ }
+}
+exports.getSuperClassCode = getSuperClassCode;
+function isContainStopPropagation(path) {
+ let matched = false;
+ if (path) {
+ path.traverse({
+ Identifier(p) {
+ if (p.node.name === 'stopPropagation' &&
+ p.parentPath.parentPath.isCallExpression()) {
+ matched = true;
+ }
+ }
+ });
+ }
+ return matched;
+}
+exports.isContainStopPropagation = isContainStopPropagation;
+function decodeUnicode(s) {
+ return unescape(s.replace(/\\(u[0-9a-fA-F]{4})/gm, '%$1'));
+}
+exports.decodeUnicode = decodeUnicode;
+function isVarName(str) {
+ if (typeof str !== 'string') {
+ return false;
+ }
+ if (str.trim() !== str) {
+ return false;
+ }
+ try {
+ // tslint:disable-next-line:no-unused-expression
+ new Function(str, 'var ' + str);
+ }
+ catch (e) {
+ return false;
+ }
+ return true;
+}
+exports.isVarName = isVarName;
+function findMethodName(expression) {
+ let methodName;
+ if (t.isIdentifier(expression) ||
+ t.isJSXIdentifier(expression)) {
+ methodName = expression.name;
+ }
+ else if (t.isStringLiteral(expression)) {
+ methodName = expression.value;
+ }
+ else if (t.isMemberExpression(expression) &&
+ t.isIdentifier(expression.property)) {
+ const { code } = babel_generator_1.default(expression);
+ const ids = code.split('.');
+ if (ids[0] === 'this' && ids[1] === 'props' && ids[2]) {
+ methodName = code.replace('this.props.', '');
+ }
+ else {
+ methodName = expression.property.name;
+ }
+ }
+ else if (t.isCallExpression(expression) &&
+ t.isMemberExpression(expression.callee) &&
+ t.isIdentifier(expression.callee.object)) {
+ methodName = expression.callee.object.name;
+ }
+ else if (t.isCallExpression(expression) &&
+ t.isMemberExpression(expression.callee) &&
+ t.isMemberExpression(expression.callee.object) &&
+ t.isIdentifier(expression.callee.property) &&
+ expression.callee.property.name === 'bind' &&
+ t.isIdentifier(expression.callee.object.property)) {
+ methodName = expression.callee.object.property.name;
+ }
+ else {
+ throw codeFrameError(expression.loc, '当 props 为事件时(props name 以 `on` 开头),只能传入一个 this 作用域下的函数。');
+ }
+ return methodName;
+}
+exports.findMethodName = findMethodName;
+function setParentCondition(jsx, expr, array = false) {
+ const conditionExpr = jsx.findParent(p => p.isConditionalExpression());
+ const logicExpr = jsx.findParent(p => p.isLogicalExpression({ operator: '&&' }));
+ if (array) {
+ const ifAttrSet = new Set([
+ adapter_1.Adapter.if,
+ adapter_1.Adapter.else
+ ]);
+ const logicalJSX = jsx.findParent(p => p.isJSXElement() && p.node.openingElement.attributes.some(a => ifAttrSet.has(a.name.name)));
+ if (logicalJSX) {
+ const attr = logicalJSX.node.openingElement.attributes.find(a => ifAttrSet.has(a.name.name));
+ if (attr) {
+ if (attr.name.name === adapter_1.Adapter.else) {
+ const prevElement = logicalJSX.getPrevSibling();
+ if (prevElement && prevElement.isJSXElement()) {
+ const attr = prevElement.node.openingElement.attributes.find(a => a.name.name === adapter_1.Adapter.if);
+ if (attr && t.isJSXExpressionContainer(attr.value)) {
+ expr = t.conditionalExpression(reverseBoolean(lodash_1.cloneDeep(attr.value.expression)), expr, t.arrayExpression());
+ return expr;
+ }
+ }
+ }
+ else if (t.isJSXExpressionContainer(attr.value)) {
+ expr = t.conditionalExpression(lodash_1.cloneDeep(attr.value.expression), expr, t.arrayExpression());
+ return expr;
+ }
+ }
+ }
+ }
+ if (conditionExpr && conditionExpr.isConditionalExpression()) {
+ const consequent = conditionExpr.get('consequent');
+ if (consequent === jsx || jsx.findParent(p => p === consequent)) {
+ expr = t.conditionalExpression(lodash_1.cloneDeep(conditionExpr.get('test').node), expr, array ? t.arrayExpression([]) : t.nullLiteral());
+ }
+ }
+ if (logicExpr && logicExpr.isLogicalExpression({ operator: '&&' })) {
+ const consequent = logicExpr.get('right');
+ if (consequent === jsx || jsx.findParent(p => p === consequent)) {
+ expr = t.conditionalExpression(lodash_1.cloneDeep(logicExpr.get('left').node), expr, array ? t.arrayExpression([]) : t.nullLiteral());
+ }
+ }
+ return expr;
+}
+exports.setParentCondition = setParentCondition;
+function generateAnonymousState(scope, expression, refIds, isLogical) {
+ let variableName = `anonymousState_${scope.generateUid()}`;
+ let statementParent = expression.getStatementParent();
+ if (!statementParent) {
+ throw codeFrameError(expression.node.loc, '无法生成匿名 State,尝试先把值赋到一个变量上再把变量调换。');
+ }
+ const jsx = isLogical ? expression : expression.findParent(p => p.isJSXElement());
+ const callExpr = jsx.findParent(p => p.isCallExpression() && isArrayMapCallExpression(p));
+ const ifExpr = jsx.findParent(p => p.isIfStatement());
+ const blockStatement = jsx.findParent(p => p.isBlockStatement() && p.parentPath === ifExpr);
+ const expr = setParentCondition(jsx, lodash_1.cloneDeep(expression.node));
+ if (!callExpr) {
+ refIds.add(t.identifier(variableName));
+ statementParent.insertBefore(buildConstVariableDeclaration(variableName, expr));
+ if (blockStatement && blockStatement.isBlockStatement()) {
+ blockStatement.traverse({
+ VariableDeclarator: (p) => {
+ const { id, init } = p.node;
+ if (t.isIdentifier(id) && !id.name.startsWith(constant_1.LOOP_STATE)) {
+ const newId = scope.generateDeclaredUidIdentifier('$' + id.name);
+ refIds.forEach((refId) => {
+ if (refId.name === variableName && !variableName.startsWith('_$')) {
+ refIds.delete(refId);
+ }
+ });
+ variableName = newId.name;
+ refIds.add(t.identifier(variableName));
+ blockStatement.scope.rename(id.name, newId.name);
+ p.parentPath.replaceWith(template('ID = INIT;')({ ID: newId, INIT: init }));
+ }
+ }
+ });
+ }
+ }
+ else {
+ variableName = `${constant_1.LOOP_STATE}_${callExpr.scope.generateUid()}`;
+ const func = callExpr.node.arguments[0];
+ if (t.isArrowFunctionExpression(func)) {
+ if (!t.isBlockStatement(func.body)) {
+ func.body = t.blockStatement([
+ buildConstVariableDeclaration(variableName, expr),
+ t.returnStatement(func.body)
+ ]);
+ }
+ else {
+ if (ifExpr && ifExpr.isIfStatement() && ifExpr.findParent(p => p === callExpr)) {
+ const consequent = ifExpr.get('consequent');
+ const test = ifExpr.get('test');
+ if (consequent.isBlockStatement()) {
+ if (jsx === test || jsx.findParent(p => p === test)) {
+ func.body.body.unshift(buildConstVariableDeclaration(variableName, expr));
+ }
+ else {
+ func.body.body.unshift(t.variableDeclaration('let', [t.variableDeclarator(t.identifier(variableName), t.nullLiteral())]));
+ consequent.node.body.push(t.expressionStatement(t.assignmentExpression('=', t.identifier(variableName), expr)));
+ }
+ }
+ else {
+ throw codeFrameError(consequent.node, 'if 表达式的结果必须由一个花括号包裹');
+ }
+ }
+ else {
+ func.body.body.splice(func.body.body.length - 1, 0, buildConstVariableDeclaration(variableName, expr));
+ }
+ }
+ }
+ }
+ const id = t.identifier(variableName);
+ expression.replaceWith(id);
+ return id;
+}
+exports.generateAnonymousState = generateAnonymousState;
+function isArrayMapCallExpression(callExpression) {
+ return callExpression &&
+ t.isCallExpression(callExpression.node) &&
+ t.isMemberExpression(callExpression.node.callee) &&
+ t.isIdentifier(callExpression.node.callee.property, { name: 'map' });
+}
+exports.isArrayMapCallExpression = isArrayMapCallExpression;
+function buildConstVariableDeclaration(variableName, expresion) {
+ return t.variableDeclaration('const', [
+ t.variableDeclarator(t.identifier(variableName), expresion)
+ ]);
+}
+exports.buildConstVariableDeclaration = buildConstVariableDeclaration;
+function setTemplate(name, path, templates) {
+ const parentPath = path.parentPath;
+ const jsxChildren = parentPath.findParent(p => p.isJSXElement());
+ if (name && !jsxChildren) {
+ templates.set(name, path.node);
+ }
+}
+exports.setTemplate = setTemplate;
+function isContainFunction(p) {
+ let bool = false;
+ p.traverse({
+ CallExpression() {
+ bool = true;
+ }
+ });
+ return bool;
+}
+exports.isContainFunction = isContainFunction;
+function slash(input) {
+ const isExtendedLengthPath = /^\\\\\?\\/.test(input);
+ const hasNonAscii = /[^\u0000-\u0080]+/.test(input);
+ const hasChinese = /[^\u4e00-\u9fa5]+/.test(input); // has Chinese characters
+ if (isExtendedLengthPath || (hasNonAscii && !hasChinese)) {
+ return input;
+ }
+ return input.replace(/\\/g, '/');
+}
+function pathResolver(source, location) {
+ const extName = path.extname(source);
+ const promotedPath = source;
+ if (!['js', 'tsx'].includes(extName)) {
+ try {
+ const pathExist = fs.existsSync(path.resolve(path.dirname(location), source, 'index.js'));
+ const tsxPathExist = fs.existsSync(path.resolve(path.dirname(location), source, 'index.tsx'));
+ if (pathExist || tsxPathExist) {
+ let p = path.join(promotedPath, 'index');
+ if (!p.startsWith('.')) {
+ p = './' + p;
+ }
+ return slash(p);
+ }
+ return slash(promotedPath);
+ }
+ catch (error) {
+ return slash(promotedPath);
+ }
+ }
+ return slash(promotedPath.split('.').slice(0, -1).join('.'));
+}
+exports.pathResolver = pathResolver;
+function codeFrameError(node, msg) {
+ let errMsg = '';
+ try {
+ errMsg = code_frame_1.codeFrameColumns(exports.setting.sourceCode, node && node.type && node.loc ? node.loc : node, {
+ highlightCode: true
+ });
+ }
+ catch (error) {
+ errMsg = 'failed to locate source';
+ }
+ return new Error(`${msg}
+-----
+${errMsg}`);
+}
+exports.codeFrameError = codeFrameError;
+exports.setting = {
+ sourceCode: ''
+};
+function createUUID() {
+ return '$' + 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
+ let r = Math.random() * 16 | 0;
+ let v = c === 'x' ? r : (r & 0x3 | 0x8);
+ return v.toString(16);
+ }).replace(/-/g, '').slice(0, 8);
+}
+exports.createUUID = createUUID;
+function createRandomLetters(n) {
+ const str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
+ return Array(n).join().split(',').map(function () { return str.charAt(Math.floor(Math.random() * str.length)); }).join('');
+}
+exports.createRandomLetters = createRandomLetters;
+function isBlockIfStatement(ifStatement, blockStatement) {
+ return ifStatement && blockStatement &&
+ ifStatement.isIfStatement() &&
+ blockStatement.isBlockStatement();
+}
+exports.isBlockIfStatement = isBlockIfStatement;
+function buildCodeFrame(code) {
+ return (loc) => code_frame_1.codeFrameColumns(code, loc);
+}
+exports.buildCodeFrame = buildCodeFrame;
+function isNumeric(n) {
+ return !isNaN(parseFloat(n)) && isFinite(n);
+}
+exports.isNumeric = isNumeric;
+function buildJSXAttr(name, value) {
+ return t.jSXAttribute(t.jSXIdentifier(name), t.jSXExpressionContainer(value));
+}
+exports.buildJSXAttr = buildJSXAttr;
+function newJSXIfAttr(jsx, value, path) {
+ const element = jsx.openingElement;
+ if (!t.isJSXIdentifier(element.name)) {
+ return;
+ }
+ if (element.name.name === 'Block' || element.name.name === 'block' || !path) {
+ element.attributes.push(buildJSXAttr(adapter_1.Adapter.if, value));
+ }
+ else {
+ const block = jsx_1.buildBlockElement();
+ newJSXIfAttr(block, value);
+ block.children.push(jsx);
+ path.node = block;
+ }
+}
+exports.newJSXIfAttr = newJSXIfAttr;
+function getSlotName(name) {
+ return name.slice(6).toLowerCase();
+}
+exports.getSlotName = getSlotName;
+function isContainJSXElement(path) {
+ let matched = false;
+ path.traverse({
+ JSXElement(p) {
+ matched = true;
+ p.stop();
+ }
+ });
+ return matched;
+}
+exports.isContainJSXElement = isContainJSXElement;
+function hasComplexExpression(path) {
+ let matched = false;
+ if (isContainJSXElement(path)) {
+ return false;
+ }
+ if (path.isObjectExpression()) {
+ return true;
+ }
+ if (path.isTemplateLiteral() || path.isCallExpression()) {
+ return true;
+ }
+ if (path.isArrayExpression()) {
+ const { elements } = path.node;
+ if (elements.some(el => t.isObjectExpression(el) || t.isArrayExpression(el))) {
+ return true;
+ }
+ }
+ path.traverse({
+ CallExpression: (p) => {
+ matched = true;
+ p.stop();
+ },
+ TemplateLiteral(p) {
+ matched = true;
+ p.stop();
+ },
+ ObjectExpression(p) {
+ matched = true;
+ p.stop();
+ },
+ ArrayExpression(p) {
+ const { elements } = p.node;
+ if (elements.some(el => t.isObjectExpression(el))) {
+ return true;
+ }
+ },
+ TaggedTemplateExpression(p) {
+ matched = true;
+ p.stop();
+ },
+ MemberExpression(path) {
+ const jsxElement = path.findParent(p => p.isJSXExpressionContainer());
+ const object = path.get('object');
+ const property = path.get('property');
+ const parentPath = path.parentPath;
+ if (jsxElement &&
+ object.isThisExpression() &&
+ property.isIdentifier({ name: 'state' }) &&
+ parentPath.isMemberExpression() &&
+ parentPath.parentPath.isMemberExpression()) {
+ const sourceCode = parentPath.parentPath.getSource();
+ if (sourceCode.includes('[') && sourceCode.includes(']')) {
+ matched = true;
+ path.stop();
+ }
+ }
+ }
+ });
+ return matched;
+}
+exports.hasComplexExpression = hasComplexExpression;
+function findFirstIdentifierFromMemberExpression(node, member) {
+ let id;
+ let object = node.object;
+ while (true) {
+ if (t.identifier(object) && !t.isMemberExpression(object)) {
+ id = object;
+ if (member) {
+ object = member;
+ }
+ break;
+ }
+ object = object.object;
+ }
+ return id;
+}
+exports.findFirstIdentifierFromMemberExpression = findFirstIdentifierFromMemberExpression;
+function getArgumentName(arg) {
+ if (t.isThisExpression(arg)) {
+ return 'this';
+ }
+ else if (t.isNullLiteral(arg)) {
+ return 'null';
+ }
+ else if (t.isStringLiteral(arg) || t.isNumericLiteral(arg)) {
+ return arg.value;
+ }
+ else if (t.isIdentifier(arg)) {
+ return arg.name;
+ }
+ else {
+ return babel_generator_1.default(arg).code;
+ }
+ throw new Error(`bind 不支持传入该参数: ${arg}`);
+}
+exports.getArgumentName = getArgumentName;
+function isAllLiteral(...args) {
+ return args.every(p => t.isLiteral(p));
+}
+exports.isAllLiteral = isAllLiteral;
+function reverseBoolean(expression) {
+ return t.unaryExpression('!', expression);
+}
+exports.reverseBoolean = reverseBoolean;
+function isEmptyDeclarator(node) {
+ if (t.isVariableDeclarator(node) &&
+ (node.init === null ||
+ t.isNullLiteral(node.init))) {
+ return true;
+ }
+ return false;
+}
+exports.isEmptyDeclarator = isEmptyDeclarator;
+function toLetters(num) {
+ let mod = num % 26;
+ let pow = num / 26 | 0;
+ let out = mod ? String.fromCharCode(64 + mod) : (--pow, 'Z');
+ const letter = pow ? toLetters(pow) + out : out;
+ return letter.toLowerCase();
+}
+exports.toLetters = toLetters;
+function findIdentifierFromStatement(statement) {
+ if (t.isVariableDeclaration(statement)) {
+ const declarator = statement.declarations.find(s => t.isIdentifier(s.id));
+ if (declarator && t.isIdentifier(declarator.id)) {
+ return declarator.id.name;
+ }
+ }
+ return '__return';
+}
+exports.findIdentifierFromStatement = findIdentifierFromStatement;
+//# sourceMappingURL=utils.js.map
\ No newline at end of file
diff --git a/packages/mp-jsx-ts/_scripts/jsx2wxml/utils.js.map b/packages/mp-jsx-ts/_scripts/jsx2wxml/utils.js.map
new file mode 100644
index 000000000..a3aebb6c9
--- /dev/null
+++ b/packages/mp-jsx-ts/_scripts/jsx2wxml/utils.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/packages/mp-jsx-ts/_scripts/test/index.js b/packages/mp-jsx-ts/_scripts/test/index.js
new file mode 100644
index 000000000..f4b100116
--- /dev/null
+++ b/packages/mp-jsx-ts/_scripts/test/index.js
@@ -0,0 +1,74 @@
+/* mp-jsx v0.1.0
+ base on taro-transformer-wx v1.2.22
+ https://github.com/NervJS/taro/tree/master/packages/taro-transformer-wx
+*/
+const jsx2wxml = require('../jsx2wxml')
+const fs = require('fs')
+const path = require('path')
+
+
+function buildComponent(code) {
+ return `
+class WeElement {
+ render () {
+ return ${code}
+ }
+}
+`
+}
+
+
+const baseOptions = {
+ isRoot: false,
+ isApp: false,
+ sourcePath: __dirname,
+ outputPath: __dirname,
+ code: '',
+ isTyped: false
+}
+
+let { template } = jsx2wxml.default({
+ ...baseOptions,
+ code: buildComponent(fs.readFileSync(path.join(__dirname, "./test.jsx"), 'utf8'))
+})
+
+
+console.log(template ===
+`
+ show
+`)
+
+template = jsx2wxml.default({
+ ...baseOptions,
+ code: buildComponent(fs.readFileSync(path.join(__dirname, "./test.1.jsx"), 'utf8'))
+}).template
+
+
+console.log(template ===
+`
+
+
+ show
+
+
+ hide
+
+
+`)
+
+
+
+template = jsx2wxml.default({
+ ...baseOptions,
+ code: buildComponent(fs.readFileSync(path.join(__dirname, "./test.2.jsx"), 'utf8'))
+}).template
+
+
+console.log(template ===
+`
+
+ {{item.name}}
+
+
+`)
+
diff --git a/packages/mp-jsx-ts/_scripts/test/test.1.jsx b/packages/mp-jsx-ts/_scripts/test/test.1.jsx
new file mode 100644
index 000000000..ff2937f53
--- /dev/null
+++ b/packages/mp-jsx-ts/_scripts/test/test.1.jsx
@@ -0,0 +1 @@
+bb?show:hide
diff --git a/packages/mp-jsx-ts/_scripts/test/test.2.jsx b/packages/mp-jsx-ts/_scripts/test/test.2.jsx
new file mode 100644
index 000000000..792aef4f6
--- /dev/null
+++ b/packages/mp-jsx-ts/_scripts/test/test.2.jsx
@@ -0,0 +1,7 @@
+
+{array.map(item => (
+
+ {item.name}
+
+))}
+
diff --git a/packages/mp-jsx-ts/_scripts/test/test.jsx b/packages/mp-jsx-ts/_scripts/test/test.jsx
new file mode 100644
index 000000000..d0de88354
--- /dev/null
+++ b/packages/mp-jsx-ts/_scripts/test/test.jsx
@@ -0,0 +1 @@
+show
diff --git a/packages/mp-jsx-ts/package.json b/packages/mp-jsx-ts/package.json
index d67e0e45a..97fdb6f8a 100644
--- a/packages/mp-jsx-ts/package.json
+++ b/packages/mp-jsx-ts/package.json
@@ -3,9 +3,24 @@
"version": "1.0.0",
"scripts": {
"tsc": "./node_modules/typescript/bin/tsc",
- "compile": "tsc"
+ "compile": "tsc",
+ "start": "gulp",
+ "_test": "node _scripts/test/index.js"
},
"devDependencies": {
"typescript": "^3.1.6"
+ },
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "@tarojs/transformer-wx": "^1.2.22",
+ "babel-core": "^6.26.3",
+ "babel-generator": "^6.26.1",
+ "babel-template": "^6.26.0",
+ "babel-traverse": "^6.26.0",
+ "babel-types": "^6.26.0",
+ "gulp": "^3.9.1",
+ "gulp-tap": "^1.0.1",
+ "gulp-watch": "^5.0.1",
+ "lodash": "^4.17.11"
}
}