@lwc/template-compiler 2.7.2 → 2.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dist/commonjs/codegen/codegen.js +89 -16
  2. package/dist/commonjs/codegen/codegen.js.map +1 -1
  3. package/dist/commonjs/codegen/formatters/function.js +3 -1
  4. package/dist/commonjs/codegen/formatters/function.js.map +1 -1
  5. package/dist/commonjs/codegen/formatters/module.js +3 -1
  6. package/dist/commonjs/codegen/formatters/module.js.map +1 -1
  7. package/dist/commonjs/codegen/helpers.js +34 -20
  8. package/dist/commonjs/codegen/helpers.js.map +1 -1
  9. package/dist/commonjs/codegen/index.js +184 -194
  10. package/dist/commonjs/codegen/index.js.map +1 -1
  11. package/dist/commonjs/codegen/optimize.js +115 -0
  12. package/dist/commonjs/codegen/optimize.js.map +1 -0
  13. package/dist/commonjs/index.js +12 -5
  14. package/dist/commonjs/index.js.map +1 -1
  15. package/dist/commonjs/parser/attribute.js +5 -7
  16. package/dist/commonjs/parser/attribute.js.map +1 -1
  17. package/dist/commonjs/parser/constants.js +1 -10
  18. package/dist/commonjs/parser/constants.js.map +1 -1
  19. package/dist/commonjs/parser/expression.js +5 -2
  20. package/dist/commonjs/parser/expression.js.map +1 -1
  21. package/dist/commonjs/parser/html.js +18 -1
  22. package/dist/commonjs/parser/html.js.map +1 -1
  23. package/dist/commonjs/parser/index.js +371 -342
  24. package/dist/commonjs/parser/index.js.map +1 -1
  25. package/dist/commonjs/parser/parse5Errors.js +77 -0
  26. package/dist/commonjs/parser/parse5Errors.js.map +1 -0
  27. package/dist/commonjs/parser/parser.js +85 -30
  28. package/dist/commonjs/parser/parser.js.map +1 -1
  29. package/dist/commonjs/shared/ast.js +303 -0
  30. package/dist/commonjs/shared/ast.js.map +1 -0
  31. package/dist/commonjs/shared/estree.js +9 -1
  32. package/dist/commonjs/shared/estree.js.map +1 -1
  33. package/dist/commonjs/shared/parse5.js +1 -15
  34. package/dist/commonjs/shared/parse5.js.map +1 -1
  35. package/dist/commonjs/shared/types.js +1 -7
  36. package/dist/commonjs/shared/types.js.map +1 -1
  37. package/dist/types/codegen/codegen.d.ts +25 -3
  38. package/dist/types/codegen/helpers.d.ts +11 -5
  39. package/dist/types/codegen/index.d.ts +2 -2
  40. package/dist/types/codegen/optimize.d.ts +33 -0
  41. package/dist/types/index.d.ts +1 -2
  42. package/dist/types/parser/attribute.d.ts +7 -7
  43. package/dist/types/parser/constants.d.ts +0 -9
  44. package/dist/types/parser/expression.d.ts +3 -4
  45. package/dist/types/parser/parse5Errors.d.ts +2 -0
  46. package/dist/types/parser/parser.d.ts +57 -28
  47. package/dist/types/shared/ast.d.ts +45 -0
  48. package/dist/types/shared/estree.d.ts +2 -2
  49. package/dist/types/shared/parse5.d.ts +0 -1
  50. package/dist/types/shared/types.d.ts +129 -86
  51. package/package.json +4 -4
  52. package/LICENSE +0 -10
  53. package/dist/commonjs/codegen/scope.js +0 -61
  54. package/dist/commonjs/codegen/scope.js.map +0 -1
  55. package/dist/commonjs/shared/ir.js +0 -90
  56. package/dist/commonjs/shared/ir.js.map +0 -1
  57. package/dist/types/codegen/scope.d.ts +0 -8
  58. package/dist/types/shared/ir.d.ts +0 -15
@@ -31,66 +31,41 @@ Object.defineProperty(exports, "__esModule", { value: true });
31
31
  const astring = __importStar(require("astring"));
32
32
  const shared_1 = require("@lwc/shared");
33
33
  const errors_1 = require("@lwc/errors");
34
- const ir_1 = require("../shared/ir");
34
+ const ast_1 = require("../shared/ast");
35
35
  const constants_1 = require("../shared/constants");
36
- const types_1 = require("../shared/types");
37
36
  const codegen_1 = __importDefault(require("./codegen"));
38
- const scope_1 = require("./scope");
39
37
  const helpers_1 = require("./helpers");
40
38
  const module_1 = require("./formatters/module");
41
39
  const function_1 = require("./formatters/function");
42
40
  const t = __importStar(require("../shared/estree"));
43
41
  const attribute_1 = require("../parser/attribute");
44
- const constants_2 = require("../parser/constants");
45
42
  function transform(codeGen) {
46
- const parentStack = [];
47
43
  function transformElement(element) {
48
44
  const databag = elementDataBag(element);
49
45
  let res;
50
46
  const children = transformChildren(element);
51
47
  // Check wether it has the special directive lwc:dynamic
52
- if (element.lwc && element.lwc.dynamic) {
53
- const expression = (0, scope_1.bindExpression)(element.lwc.dynamic, element, parentStack);
54
- res = codeGen.genDynamicElement(element.tag, expression, databag, children);
48
+ const { name } = element;
49
+ const dynamic = element.directives.find(ast_1.isDynamicDirective);
50
+ if (dynamic) {
51
+ const expression = codeGen.bindExpression(dynamic.value);
52
+ res = codeGen.genDynamicElement(name, expression, databag, children);
55
53
  }
56
- else if ((0, ir_1.isCustomElement)(element)) {
57
- // Make sure to register the component
58
- const componentClassName = element.component;
59
- res = codeGen.genCustomElement(element.tag, (0, helpers_1.identifierFromComponentName)(componentClassName), databag, children);
54
+ else if ((0, ast_1.isComponent)(element)) {
55
+ res = codeGen.genCustomElement(name, (0, helpers_1.identifierFromComponentName)(name), databag, children);
60
56
  }
61
- else if ((0, ir_1.isSlot)(element)) {
57
+ else if ((0, ast_1.isSlot)(element)) {
62
58
  const defaultSlot = children;
63
59
  res = codeGen.getSlot(element.slotName, databag, defaultSlot);
64
60
  }
65
61
  else {
66
- res = codeGen.genElement(element.tag, databag, children);
62
+ res = codeGen.genElement(name, databag, children);
67
63
  }
68
- res = applyInlineIf(element, res);
69
- res = applyInlineFor(element, res);
70
64
  return res;
71
65
  }
72
- function transformTemplate(element) {
73
- const children = transformChildren(element);
74
- let res = applyTemplateIf(element, children);
75
- if (element.forEach) {
76
- res = applyTemplateFor(element, res);
77
- }
78
- else if (element.forOf) {
79
- res = applyTemplateForOf(element, res);
80
- }
81
- if (t.isArrayExpression(res) && element.if) {
82
- // The `if` transformation does not use the SpreadElement, neither null, therefore we can safely
83
- // typecast it to t.Expression[]
84
- return res.elements;
85
- }
86
- else {
87
- return res;
88
- }
89
- }
90
66
  function transformText(consecutiveText) {
91
- return codeGen.genText(consecutiveText.map((text) => {
92
- const { value } = text;
93
- return typeof value === 'string' ? value : (0, scope_1.bindExpression)(value, text, parentStack);
67
+ return codeGen.genText(consecutiveText.map(({ value }) => {
68
+ return (0, ast_1.isStringLiteral)(value) ? value.value : codeGen.bindExpression(value);
94
69
  }));
95
70
  }
96
71
  function transformComment(comment) {
@@ -101,40 +76,37 @@ function transform(codeGen) {
101
76
  const children = parent.children;
102
77
  const childrenIterator = children[Symbol.iterator]();
103
78
  let current;
104
- parentStack.push(parent);
105
79
  while ((current = childrenIterator.next()) && !current.done) {
106
80
  let child = current.value;
107
- if ((0, ir_1.isTextNode)(child)) {
81
+ if ((0, ast_1.isText)(child)) {
108
82
  const continuousText = [];
109
83
  // Consume all the contiguous text nodes.
110
84
  do {
111
85
  continuousText.push(child);
112
86
  current = childrenIterator.next();
113
87
  child = current.value;
114
- } while (!current.done && (0, ir_1.isTextNode)(child));
88
+ } while (!current.done && (0, ast_1.isText)(child));
115
89
  res.push(transformText(continuousText));
116
90
  // Early exit if a text node is the last child node.
117
91
  if (current.done) {
118
92
  break;
119
93
  }
120
94
  }
121
- if ((0, ir_1.isElement)(child)) {
122
- if ((0, ir_1.isTemplate)(child)) {
123
- const templateChildren = transformTemplate(child);
124
- Array.isArray(templateChildren)
125
- ? res.push(...templateChildren)
126
- : res.push(templateChildren);
127
- }
128
- else {
129
- res.push(transformElement(child));
130
- }
95
+ if ((0, ast_1.isForBlock)(child)) {
96
+ res.push(transformForBlock(child));
97
+ }
98
+ else if ((0, ast_1.isIf)(child)) {
99
+ const children = transformIf(child);
100
+ Array.isArray(children) ? res.push(...children) : res.push(children);
131
101
  }
132
- if ((0, ir_1.isCommentNode)(child) && codeGen.preserveComments) {
102
+ else if ((0, ast_1.isBaseElement)(child)) {
103
+ res.push(transformElement(child));
104
+ }
105
+ else if ((0, ast_1.isComment)(child) && codeGen.preserveComments) {
133
106
  res.push(transformComment(child));
134
107
  }
135
108
  }
136
- parentStack.pop();
137
- if ((0, helpers_1.shouldFlatten)(children, codeGen)) {
109
+ if ((0, helpers_1.shouldFlatten)(codeGen, children)) {
138
110
  if (children.length === 1 && !(0, helpers_1.containsDynamicChildren)(children)) {
139
111
  return res[0];
140
112
  }
@@ -146,15 +118,33 @@ function transform(codeGen) {
146
118
  return t.arrayExpression(res);
147
119
  }
148
120
  }
149
- function applyInlineIf(element, node, testExpression, falseValue) {
150
- if (!element.if) {
151
- return node;
121
+ function transformIf(ifNode) {
122
+ const expression = transformChildren(ifNode);
123
+ let res;
124
+ if (t.isArrayExpression(expression)) {
125
+ // Bind the expression once for all the template children
126
+ const testExpression = codeGen.bindExpression(ifNode.condition);
127
+ res = t.arrayExpression(expression.elements.map((element) => element !== null
128
+ ? applyInlineIf(ifNode, element, testExpression)
129
+ : null));
130
+ }
131
+ else {
132
+ // If the template has a single children, make sure the ternary expression returns an array
133
+ res = applyInlineIf(ifNode, expression, undefined, t.arrayExpression([]));
152
134
  }
135
+ if (t.isArrayExpression(res)) {
136
+ // The `if` transformation does not use the SpreadElement, neither null, therefore we can safely
137
+ // typecast it to t.Expression[]
138
+ res = res.elements;
139
+ }
140
+ return res;
141
+ }
142
+ function applyInlineIf(ifNode, node, testExpression, falseValue) {
153
143
  if (!testExpression) {
154
- testExpression = (0, scope_1.bindExpression)(element.if, element, parentStack);
144
+ testExpression = codeGen.bindExpression(ifNode.condition);
155
145
  }
156
146
  let leftExpression;
157
- const modifier = element.ifModifier;
147
+ const modifier = ifNode.modifier;
158
148
  if (modifier === 'true') {
159
149
  leftExpression = testExpression;
160
150
  }
@@ -172,24 +162,48 @@ function transform(codeGen) {
172
162
  }
173
163
  return t.conditionalExpression(leftExpression, node, falseValue !== null && falseValue !== void 0 ? falseValue : t.literal(null));
174
164
  }
175
- function applyInlineFor(element, node) {
176
- if (!element.forEach) {
177
- return node;
165
+ function transformForBlock(forBlock) {
166
+ let expression = transformForChildren(forBlock);
167
+ if (t.isArrayExpression(expression) && expression.elements.length === 1) {
168
+ expression = expression.elements[0];
178
169
  }
179
- const { expression, item, index } = element.forEach;
170
+ let res;
171
+ if ((0, ast_1.isForEach)(forBlock)) {
172
+ res = applyInlineFor(forBlock, expression);
173
+ }
174
+ else {
175
+ res = applyInlineForOf(forBlock, expression);
176
+ }
177
+ return res;
178
+ }
179
+ function transformForChildren(forBlock) {
180
+ codeGen.beginScope();
181
+ if ((0, ast_1.isForEach)(forBlock)) {
182
+ const { item, index } = forBlock;
183
+ if (index) {
184
+ codeGen.declareIdentifier(index);
185
+ }
186
+ codeGen.declareIdentifier(item);
187
+ }
188
+ else {
189
+ codeGen.declareIdentifier(forBlock.iterator);
190
+ }
191
+ const children = transformChildren(forBlock);
192
+ codeGen.endScope();
193
+ return children;
194
+ }
195
+ function applyInlineFor(forEach, node) {
196
+ const { expression, item, index } = forEach;
180
197
  const params = [item];
181
198
  if (index) {
182
199
  params.push(index);
183
200
  }
184
- const iterable = (0, scope_1.bindExpression)(expression, element, parentStack);
201
+ const iterable = codeGen.bindExpression(expression);
185
202
  const iterationFunction = t.functionExpression(null, params, t.blockStatement([t.returnStatement(node)]));
186
203
  return codeGen.genIterator(iterable, iterationFunction);
187
204
  }
188
- function applyInlineForOf(element, node) {
189
- if (!element.forOf) {
190
- return node;
191
- }
192
- const { expression, iterator } = element.forOf;
205
+ function applyInlineForOf(forOf, node) {
206
+ const { expression, iterator } = forOf;
193
207
  const { name: iteratorName } = iterator;
194
208
  const argsMapping = {
195
209
  value: `${iteratorName}Value`,
@@ -198,136 +212,111 @@ function transform(codeGen) {
198
212
  last: `${iteratorName}Last`,
199
213
  };
200
214
  const iteratorArgs = Object.values(argsMapping).map((arg) => t.identifier(arg));
201
- const iteratorObjet = t.objectExpression(Object.entries(argsMapping).map(([prop, arg]) => t.property(t.identifier(prop), t.identifier(arg))));
202
- const iterable = (0, scope_1.bindExpression)(expression, element, parentStack);
215
+ const iteratorObject = t.objectExpression(Object.entries(argsMapping).map(([prop, arg]) => t.property(t.identifier(prop), t.identifier(arg))));
216
+ const iterable = codeGen.bindExpression(expression);
203
217
  const iterationFunction = t.functionExpression(null, iteratorArgs, t.blockStatement([
204
218
  t.variableDeclaration('const', [
205
- t.variableDeclarator(t.identifier(iteratorName), iteratorObjet),
219
+ t.variableDeclarator(t.identifier(iteratorName), iteratorObject),
206
220
  ]),
207
221
  t.returnStatement(node),
208
222
  ]));
209
223
  return codeGen.genIterator(iterable, iterationFunction);
210
224
  }
211
- function applyTemplateForOf(element, fragmentNodes) {
212
- let expression = fragmentNodes;
213
- if (t.isArrayExpression(expression) && expression.elements.length === 1) {
214
- expression = expression.elements[0];
215
- }
216
- return applyInlineForOf(element, expression);
217
- }
218
- function applyTemplateFor(element, fragmentNodes) {
219
- let expression = fragmentNodes;
220
- if (t.isArrayExpression(expression) && expression.elements.length === 1) {
221
- expression = expression.elements[0];
222
- }
223
- return applyInlineFor(element, expression);
224
- }
225
- function applyTemplateIf(element, fragmentNodes) {
226
- if (!element.if) {
227
- return fragmentNodes;
228
- }
229
- if (t.isArrayExpression(fragmentNodes)) {
230
- // Bind the expression once for all the template children
231
- const testExpression = (0, scope_1.bindExpression)(element.if, element, parentStack);
232
- return t.arrayExpression(fragmentNodes.elements.map((child) => child !== null
233
- ? applyInlineIf(element, child, testExpression)
234
- : null));
235
- }
236
- else {
237
- // If the template has a single children, make sure the ternary expression returns an array
238
- return applyInlineIf(element, fragmentNodes, undefined, t.arrayExpression([]));
239
- }
240
- }
241
225
  function computeAttrValue(attr, element) {
242
- const { tag, namespace } = element;
243
- const isUsedAsAttribute = (0, attribute_1.isAttribute)(element, attr.name);
244
- switch (attr.type) {
245
- case types_1.IRAttributeType.Expression: {
246
- const expression = (0, scope_1.bindExpression)(attr.value, element, parentStack);
247
- // TODO [#2012]: Normalize global boolean attrs values passed to custom elements as props
248
- if (isUsedAsAttribute && (0, shared_1.isBooleanAttribute)(attr.name, tag)) {
249
- // We need to do some manipulation to allow the diffing algorithm add/remove the attribute
250
- // without handling special cases at runtime.
251
- return codeGen.genBooleanAttributeExpr(expression);
252
- }
253
- if (attr.name === 'tabindex') {
254
- return codeGen.genTabIndex([expression]);
255
- }
256
- if (attr.name === 'id' || (0, attribute_1.isIdReferencingAttribute)(attr.name)) {
257
- return codeGen.genScopedId(expression);
258
- }
259
- if (codeGen.scopeFragmentId &&
260
- (0, attribute_1.isAllowedFragOnlyUrlsXHTML)(tag, attr.name, namespace)) {
261
- return codeGen.genScopedFragId(expression);
262
- }
263
- if ((0, attribute_1.isSvgUseHref)(tag, attr.name, namespace)) {
264
- codeGen.usedLwcApis.add('sanitizeAttribute');
265
- return t.callExpression(t.identifier('sanitizeAttribute'), [
266
- t.literal(tag),
267
- t.literal(namespace),
268
- t.literal(attr.name),
269
- codeGen.genScopedFragId(expression),
270
- ]);
271
- }
272
- return expression;
226
+ const { name: elmName, namespace = '' } = element;
227
+ const { value: attrValue } = attr;
228
+ // Evaluate properties based on their attribute name
229
+ const attrName = (0, ast_1.isProperty)(attr) ? attr.attributeName : attr.name;
230
+ const isUsedAsAttribute = (0, attribute_1.isAttribute)(element, attrName);
231
+ if ((0, ast_1.isExpression)(attrValue)) {
232
+ const expression = codeGen.bindExpression(attrValue);
233
+ // TODO [#2012]: Normalize global boolean attrs values passed to custom elements as props
234
+ if (isUsedAsAttribute && (0, shared_1.isBooleanAttribute)(attrName, elmName)) {
235
+ // We need to do some manipulation to allow the diffing algorithm add/remove the attribute
236
+ // without handling special cases at runtime.
237
+ return codeGen.genBooleanAttributeExpr(expression);
273
238
  }
274
- case types_1.IRAttributeType.String: {
275
- if (attr.name === 'id') {
276
- return codeGen.genScopedId(attr.value);
277
- }
278
- if (attr.name === 'spellcheck') {
279
- return t.literal(attr.value.toLowerCase() !== 'false');
280
- }
281
- if (!isUsedAsAttribute && (0, shared_1.isBooleanAttribute)(attr.name, tag)) {
282
- // We are in presence of a string value, for a recognized boolean attribute, which is used as
283
- // property. for these cases, always set the property to true.
284
- return t.literal(true);
285
- }
286
- if ((0, attribute_1.isIdReferencingAttribute)(attr.name)) {
287
- return codeGen.genScopedId(attr.value);
288
- }
289
- if (codeGen.scopeFragmentId &&
290
- (0, attribute_1.isAllowedFragOnlyUrlsXHTML)(tag, attr.name, namespace) &&
291
- (0, attribute_1.isFragmentOnlyUrl)(attr.value)) {
292
- return codeGen.genScopedFragId(attr.value);
293
- }
294
- if ((0, attribute_1.isSvgUseHref)(tag, attr.name, namespace)) {
295
- codeGen.usedLwcApis.add('sanitizeAttribute');
296
- return t.callExpression(t.identifier('sanitizeAttribute'), [
297
- t.literal(tag),
298
- t.literal(namespace),
299
- t.literal(attr.name),
300
- (0, attribute_1.isFragmentOnlyUrl)(attr.value)
301
- ? codeGen.genScopedFragId(attr.value)
302
- : t.literal(attr.value),
303
- ]);
304
- }
305
- return t.literal(attr.value);
239
+ if (attrName === 'tabindex') {
240
+ return codeGen.genTabIndex([expression]);
241
+ }
242
+ if (attrName === 'id' || (0, attribute_1.isIdReferencingAttribute)(attrName)) {
243
+ return codeGen.genScopedId(expression);
306
244
  }
307
- case types_1.IRAttributeType.Boolean: {
308
- // A boolean value used in an attribute should always generate .setAttribute(attr.name, ''),
309
- // regardless if is a boolean attribute or not.
310
- return isUsedAsAttribute ? t.literal('') : t.literal(attr.value);
245
+ if (codeGen.scopeFragmentId &&
246
+ (0, attribute_1.isAllowedFragOnlyUrlsXHTML)(elmName, attrName, namespace)) {
247
+ return codeGen.genScopedFragId(expression);
311
248
  }
249
+ if ((0, attribute_1.isSvgUseHref)(elmName, attrName, namespace)) {
250
+ codeGen.usedLwcApis.add('sanitizeAttribute');
251
+ return t.callExpression(t.identifier('sanitizeAttribute'), [
252
+ t.literal(elmName),
253
+ t.literal(namespace),
254
+ t.literal(attrName),
255
+ codeGen.genScopedFragId(expression),
256
+ ]);
257
+ }
258
+ return expression;
259
+ }
260
+ else if ((0, ast_1.isStringLiteral)(attrValue)) {
261
+ if (attrName === 'id') {
262
+ return codeGen.genScopedId(attrValue.value);
263
+ }
264
+ if (attrName === 'spellcheck') {
265
+ return t.literal(attrValue.value.toLowerCase() !== 'false');
266
+ }
267
+ if (!isUsedAsAttribute && (0, shared_1.isBooleanAttribute)(attrName, elmName)) {
268
+ // We are in presence of a string value, for a recognized boolean attribute, which is used as
269
+ // property. for these cases, always set the property to true.
270
+ return t.literal(true);
271
+ }
272
+ if ((0, attribute_1.isIdReferencingAttribute)(attrName)) {
273
+ return codeGen.genScopedId(attrValue.value);
274
+ }
275
+ if (codeGen.scopeFragmentId &&
276
+ (0, attribute_1.isAllowedFragOnlyUrlsXHTML)(elmName, attrName, namespace) &&
277
+ (0, attribute_1.isFragmentOnlyUrl)(attrValue.value)) {
278
+ return codeGen.genScopedFragId(attrValue.value);
279
+ }
280
+ if ((0, attribute_1.isSvgUseHref)(elmName, attrName, namespace)) {
281
+ codeGen.usedLwcApis.add('sanitizeAttribute');
282
+ return t.callExpression(t.identifier('sanitizeAttribute'), [
283
+ t.literal(elmName),
284
+ t.literal(namespace),
285
+ t.literal(attrName),
286
+ (0, attribute_1.isFragmentOnlyUrl)(attrValue.value)
287
+ ? codeGen.genScopedFragId(attrValue.value)
288
+ : t.literal(attrValue.value),
289
+ ]);
290
+ }
291
+ return t.literal(attrValue.value);
292
+ }
293
+ else {
294
+ // A boolean value used in an attribute should always generate .setAttribute(attr.name, ''),
295
+ // regardless if is a boolean attribute or not.
296
+ return isUsedAsAttribute ? t.literal('') : t.literal(attrValue.value);
312
297
  }
313
298
  }
314
299
  function elementDataBag(element) {
315
300
  const data = [];
316
- const { attrs, props, on, forKey, lwc } = element;
301
+ const { attributes, properties, listeners } = element;
302
+ const innerHTML = element.directives.find(ast_1.isInnerHTMLDirective);
303
+ const forKey = element.directives.find(ast_1.isKeyDirective);
304
+ const dom = element.directives.find(ast_1.isDomDirective);
317
305
  // Attributes
318
- if (attrs) {
306
+ if (attributes.length) {
319
307
  const rest = {};
320
- for (const [name, value] of Object.entries(attrs)) {
308
+ for (const attr of attributes) {
309
+ const { name, value } = attr;
321
310
  if (name === 'class') {
322
311
  // Handle class attribute:
323
312
  // - expression values are turned into a `className` property.
324
313
  // - string values are parsed and turned into a `classMap` object associating
325
314
  // each individual class name with a `true` boolean.
326
- if (value.type === types_1.IRAttributeType.Expression) {
327
- const classExpression = (0, scope_1.bindExpression)(value.value, element, parentStack);
315
+ if ((0, ast_1.isExpression)(value)) {
316
+ const classExpression = codeGen.bindExpression(value);
328
317
  data.push(t.property(t.identifier('className'), classExpression));
329
318
  }
330
- else if (value.type === types_1.IRAttributeType.String) {
319
+ else if ((0, ast_1.isStringLiteral)(value)) {
331
320
  const classNames = (0, helpers_1.parseClassNames)(value.value);
332
321
  const classMap = t.objectExpression(classNames.map((name) => t.property(t.literal(name), t.literal(true))));
333
322
  data.push(t.property(t.identifier('classMap'), classMap));
@@ -338,18 +327,18 @@ function transform(codeGen) {
338
327
  // - expression values are turned into a `style` property.
339
328
  // - string values are parsed and turned into a `styles` array
340
329
  // containing triples of [name, value, important (optional)]
341
- if (value.type === types_1.IRAttributeType.Expression) {
342
- const styleExpression = (0, scope_1.bindExpression)(value.value, element, parentStack);
330
+ if ((0, ast_1.isExpression)(value)) {
331
+ const styleExpression = codeGen.bindExpression(value);
343
332
  data.push(t.property(t.identifier('style'), styleExpression));
344
333
  }
345
- else if (value.type === types_1.IRAttributeType.String) {
334
+ else if ((0, ast_1.isStringLiteral)(value)) {
346
335
  const styleMap = (0, helpers_1.parseStyleText)(value.value);
347
336
  const styleAST = (0, helpers_1.styleMapToStyleDeclsAST)(styleMap);
348
337
  data.push(t.property(t.identifier('styleDecls'), styleAST));
349
338
  }
350
339
  }
351
340
  else {
352
- rest[name] = computeAttrValue(attrs[name], element);
341
+ rest[name] = computeAttrValue(attr, element);
353
342
  }
354
343
  }
355
344
  // Add all the remaining attributes to an `attrs` object where the key is the attribute
@@ -361,24 +350,24 @@ function transform(codeGen) {
361
350
  }
362
351
  // Properties
363
352
  const propsObj = t.objectExpression([]);
364
- // Properties: standard props
365
- if (props) {
366
- for (const [key, value] of Object.entries(props)) {
367
- propsObj.properties.push(t.property(t.literal(key), computeAttrValue(value, element)));
353
+ // Properties
354
+ if (properties.length) {
355
+ for (const prop of properties) {
356
+ propsObj.properties.push(t.property(t.literal(prop.name), computeAttrValue(prop, element)));
368
357
  }
369
358
  }
370
359
  // Properties: lwc:inner-html directive
371
- if (element.lwc && element.lwc.innerHTML) {
372
- const expr = typeof element.lwc.innerHTML === 'string'
373
- ? t.literal(element.lwc.innerHTML)
374
- : (0, scope_1.bindExpression)(element.lwc.innerHTML, element, parentStack);
360
+ if (innerHTML) {
361
+ const expr = (0, ast_1.isStringLiteral)(innerHTML.value)
362
+ ? t.literal(innerHTML.value.value)
363
+ : codeGen.bindExpression(innerHTML.value);
375
364
  propsObj.properties.push(t.property(t.identifier('innerHTML'), codeGen.genSanitizedHtmlExpr(expr)));
376
365
  }
377
366
  if (propsObj.properties.length) {
378
367
  data.push(t.property(t.identifier('props'), propsObj));
379
368
  }
380
369
  // Context
381
- if ((lwc === null || lwc === void 0 ? void 0 : lwc.dom) || (lwc === null || lwc === void 0 ? void 0 : lwc.innerHTML)) {
370
+ if (dom || innerHTML) {
382
371
  const contextObj = t.objectExpression([
383
372
  t.property(t.identifier('lwc'), t.objectExpression([t.property(t.identifier('dom'), t.literal('manual'))])),
384
373
  ]);
@@ -387,7 +376,7 @@ function transform(codeGen) {
387
376
  // Key property on VNode
388
377
  if (forKey) {
389
378
  // If element has user-supplied `key` or is in iterator, call `api.k`
390
- const forKeyExpression = (0, scope_1.bindExpression)(forKey, element, parentStack);
379
+ const forKeyExpression = codeGen.bindExpression(forKey.value);
391
380
  const generatedKey = codeGen.genKey(t.literal(codeGen.generateKey()), forKeyExpression);
392
381
  data.push(t.property(t.identifier('key'), generatedKey));
393
382
  }
@@ -397,16 +386,17 @@ function transform(codeGen) {
397
386
  data.push(t.property(t.identifier('key'), t.literal(codeGen.generateKey())));
398
387
  }
399
388
  // Event handler
400
- if (on) {
401
- const onObj = (0, helpers_1.objectToAST)(on, (key) => {
402
- const componentHandler = (0, scope_1.bindExpression)(on[key], element, parentStack);
389
+ if (listeners.length) {
390
+ const listenerObj = Object.fromEntries(listeners.map((listener) => [listener.name, listener]));
391
+ const listenerObjAST = (0, helpers_1.objectToAST)(listenerObj, (key) => {
392
+ const componentHandler = codeGen.bindExpression(listenerObj[key].handler);
403
393
  const handler = codeGen.genBind(componentHandler);
404
- return (0, helpers_1.memorizeHandler)(codeGen, element, parentStack, componentHandler, handler);
394
+ return (0, helpers_1.memorizeHandler)(codeGen, componentHandler, handler);
405
395
  });
406
- data.push(t.property(t.identifier('on'), onObj));
396
+ data.push(t.property(t.identifier('on'), listenerObjAST));
407
397
  }
408
398
  // SVG handling
409
- if (element.namespace === constants_2.SVG_NAMESPACE_URI) {
399
+ if (element.namespace === shared_1.SVG_NAMESPACE) {
410
400
  data.push(t.property(t.identifier('svg'), t.literal(true)));
411
401
  }
412
402
  return t.objectExpression(data);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/codegen/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/codegen/index.ts"],"names":[],"mappings":"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"}