@arcmantle/lit-jsx 1.0.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 (119) hide show
  1. package/README.md +768 -0
  2. package/dist/compiler/attribute-processor.d.ts +128 -0
  3. package/dist/compiler/attribute-processor.d.ts.map +1 -0
  4. package/dist/compiler/attribute-processor.js +380 -0
  5. package/dist/compiler/attribute-processor.js.map +1 -0
  6. package/dist/compiler/babel-preset.d.ts +6 -0
  7. package/dist/compiler/babel-preset.d.ts.map +1 -0
  8. package/dist/compiler/babel-preset.js +27 -0
  9. package/dist/compiler/babel-preset.js.map +1 -0
  10. package/dist/compiler/builder.d.ts +22 -0
  11. package/dist/compiler/builder.d.ts.map +1 -0
  12. package/dist/compiler/builder.js +62 -0
  13. package/dist/compiler/builder.js.map +1 -0
  14. package/dist/compiler/compiler-utils.d.ts +81 -0
  15. package/dist/compiler/compiler-utils.d.ts.map +1 -0
  16. package/dist/compiler/compiler-utils.js +410 -0
  17. package/dist/compiler/compiler-utils.js.map +1 -0
  18. package/dist/compiler/config.d.ts +77 -0
  19. package/dist/compiler/config.d.ts.map +1 -0
  20. package/dist/compiler/config.js +78 -0
  21. package/dist/compiler/config.js.map +1 -0
  22. package/dist/compiler/postprocess.d.ts +5 -0
  23. package/dist/compiler/postprocess.d.ts.map +1 -0
  24. package/dist/compiler/postprocess.js +3 -0
  25. package/dist/compiler/postprocess.js.map +1 -0
  26. package/dist/compiler/preprocess.d.ts +5 -0
  27. package/dist/compiler/preprocess.d.ts.map +1 -0
  28. package/dist/compiler/preprocess.js +28 -0
  29. package/dist/compiler/preprocess.js.map +1 -0
  30. package/dist/compiler/transform-jsx.d.ts +5 -0
  31. package/dist/compiler/transform-jsx.d.ts.map +1 -0
  32. package/dist/compiler/transform-jsx.js +25 -0
  33. package/dist/compiler/transform-jsx.js.map +1 -0
  34. package/dist/compiler/transpiler.d.ts +48 -0
  35. package/dist/compiler/transpiler.d.ts.map +1 -0
  36. package/dist/compiler/transpiler.js +463 -0
  37. package/dist/compiler/transpiler.js.map +1 -0
  38. package/dist/compiler/vite-plugin.d.ts +38 -0
  39. package/dist/compiler/vite-plugin.d.ts.map +1 -0
  40. package/dist/compiler/vite-plugin.js +96 -0
  41. package/dist/compiler/vite-plugin.js.map +1 -0
  42. package/dist/runtime/choose-component.d.ts +39 -0
  43. package/dist/runtime/choose-component.d.ts.map +1 -0
  44. package/dist/runtime/choose-component.js +40 -0
  45. package/dist/runtime/choose-component.js.map +1 -0
  46. package/dist/runtime/compiler-ctors.d.ts +21 -0
  47. package/dist/runtime/compiler-ctors.d.ts.map +1 -0
  48. package/dist/runtime/compiler-ctors.js +21 -0
  49. package/dist/runtime/compiler-ctors.js.map +1 -0
  50. package/dist/runtime/for-component.d.ts +25 -0
  51. package/dist/runtime/for-component.d.ts.map +1 -0
  52. package/dist/runtime/for-component.js +35 -0
  53. package/dist/runtime/for-component.js.map +1 -0
  54. package/dist/runtime/literal-map.d.ts +22 -0
  55. package/dist/runtime/literal-map.d.ts.map +1 -0
  56. package/dist/runtime/literal-map.js +29 -0
  57. package/dist/runtime/literal-map.js.map +1 -0
  58. package/dist/runtime/rest-directive.d.ts +28 -0
  59. package/dist/runtime/rest-directive.d.ts.map +1 -0
  60. package/dist/runtime/rest-directive.js +49 -0
  61. package/dist/runtime/rest-directive.js.map +1 -0
  62. package/dist/runtime/show-component.d.ts +33 -0
  63. package/dist/runtime/show-component.d.ts.map +1 -0
  64. package/dist/runtime/show-component.js +30 -0
  65. package/dist/runtime/show-component.js.map +1 -0
  66. package/dist/runtime/tagged-template.d.ts +12 -0
  67. package/dist/runtime/tagged-template.d.ts.map +1 -0
  68. package/dist/runtime/tagged-template.js +12 -0
  69. package/dist/runtime/tagged-template.js.map +1 -0
  70. package/dist/runtime/type-helpers.d.ts +80 -0
  71. package/dist/runtime/type-helpers.d.ts.map +1 -0
  72. package/dist/runtime/type-helpers.js +85 -0
  73. package/dist/runtime/type-helpers.js.map +1 -0
  74. package/dist/shared/jsx-types.d.ts +2139 -0
  75. package/dist/shared/jsx-types.d.ts.map +1 -0
  76. package/dist/shared/jsx-types.js +2 -0
  77. package/dist/shared/jsx-types.js.map +1 -0
  78. package/dist/shared/jsx-utils.d.ts +30 -0
  79. package/dist/shared/jsx-utils.d.ts.map +1 -0
  80. package/dist/shared/jsx-utils.js +58 -0
  81. package/dist/shared/jsx-utils.js.map +1 -0
  82. package/dist/shared/mathml-tags.d.ts +12 -0
  83. package/dist/shared/mathml-tags.d.ts.map +1 -0
  84. package/dist/shared/mathml-tags.js +215 -0
  85. package/dist/shared/mathml-tags.js.map +1 -0
  86. package/dist/shared/svg-tags.d.ts +13 -0
  87. package/dist/shared/svg-tags.d.ts.map +1 -0
  88. package/dist/shared/svg-tags.js +95 -0
  89. package/dist/shared/svg-tags.js.map +1 -0
  90. package/dist/utils.d.ts +30 -0
  91. package/dist/utils.d.ts.map +1 -0
  92. package/dist/utils.js +30 -0
  93. package/dist/utils.js.map +1 -0
  94. package/package.json +52 -0
  95. package/src/compiler/attribute-processor.ts +579 -0
  96. package/src/compiler/babel-preset.ts +34 -0
  97. package/src/compiler/builder.ts +86 -0
  98. package/src/compiler/compiler-utils.ts +789 -0
  99. package/src/compiler/config.ts +77 -0
  100. package/src/compiler/postprocess.ts +7 -0
  101. package/src/compiler/preprocess.ts +40 -0
  102. package/src/compiler/transform-jsx.ts +36 -0
  103. package/src/compiler/transpiler.ts +644 -0
  104. package/src/compiler/vite-plugin.ts +114 -0
  105. package/src/external.d.ts +9 -0
  106. package/src/runtime/choose-component.ts +53 -0
  107. package/src/runtime/compiler-ctors.ts +28 -0
  108. package/src/runtime/for-component.ts +54 -0
  109. package/src/runtime/literal-map.ts +37 -0
  110. package/src/runtime/rest-directive.ts +66 -0
  111. package/src/runtime/show-component.ts +48 -0
  112. package/src/runtime/tagged-template.ts +11 -0
  113. package/src/runtime/type-helpers.ts +91 -0
  114. package/src/shared/jsx-types.ts +2556 -0
  115. package/src/shared/jsx-utils.ts +85 -0
  116. package/src/shared/mathml-tags.ts +235 -0
  117. package/src/shared/svg-tags.ts +103 -0
  118. package/src/tsconfig.json +4 -0
  119. package/src/utils.ts +30 -0
@@ -0,0 +1,463 @@
1
+ import * as t from '@babel/types';
2
+ import { CompiledAttributeProcessor, CreateCompiledPart, TemplateAttributeProcessor, } from './attribute-processor.js';
3
+ import { CompiledBuilder, TemplateBuilder } from './builder.js';
4
+ import { ensureImports, getProgramFromPath, getTemplateType, isJSXElementPath, isJSXElementStatic, isJSXFragmentPath, isValidOpeningElement, } from './compiler-utils.js';
5
+ import { Ensure, getJSXElementName, isJSXCustomElementComponent, isJSXFunctionElementComponent, isValidJSXElement, } from './compiler-utils.js';
6
+ import { COMPONENT_LITERAL_PREFIX, ERROR_MESSAGES, VARIABLES, WHITESPACE_TAGS, } from './config.js';
7
+ class JSXTranspiler {
8
+ start(path) {
9
+ const context = this.createContext(path);
10
+ this.process(context);
11
+ const expression = this.createExpression(context);
12
+ ensureImports(context);
13
+ return expression;
14
+ }
15
+ }
16
+ export class TemplateTranspiler extends JSXTranspiler {
17
+ createContext(path) {
18
+ const context = {
19
+ program: getProgramFromPath(path),
20
+ path,
21
+ literalName: '',
22
+ tagName: '',
23
+ isInitialElement: true,
24
+ builder: new TemplateBuilder(),
25
+ importsUsed: new Set(),
26
+ };
27
+ return context;
28
+ }
29
+ process(context) {
30
+ if (t.isJSXFragment(context.path.node)) {
31
+ context.builder.addText('');
32
+ this.children(context);
33
+ return;
34
+ }
35
+ context.tagName = getJSXElementName(context.path.node);
36
+ if (isJSXCustomElementComponent(context.tagName)) {
37
+ this.openingTag(context);
38
+ this.attributes(context);
39
+ this.children(context);
40
+ this.closingTag(context);
41
+ return;
42
+ }
43
+ if (isJSXFunctionElementComponent(context.tagName)) {
44
+ // Process attributes and children into a props object
45
+ if (!context.isInitialElement)
46
+ this.functionalComponent(context);
47
+ // If this is the initial element, this should not happen.
48
+ // and it should instead have been processed as a single expression.
49
+ return;
50
+ }
51
+ this.openingTag(context);
52
+ this.attributes(context);
53
+ this.children(context);
54
+ this.closingTag(context);
55
+ }
56
+ openingTag(context) {
57
+ if (isJSXCustomElementComponent(context.tagName)) {
58
+ const literalIdentifier = Ensure.componentLiteral(context.tagName, COMPONENT_LITERAL_PREFIX + context.tagName, context.path, context.program);
59
+ context.literalName = literalIdentifier.name;
60
+ context.builder.addText('<');
61
+ context.builder.addExpression(literalIdentifier);
62
+ }
63
+ else {
64
+ // If the tag is not a component, we will treat it as a regular HTML element.
65
+ context.builder.addText('<' + context.tagName);
66
+ }
67
+ }
68
+ attributes(context) {
69
+ if (!isValidJSXElement(context.path))
70
+ throw new Error(ERROR_MESSAGES.INVALID_OPENING_TAG);
71
+ const { attributes } = context.path.node.openingElement;
72
+ const processor = new TemplateAttributeProcessor();
73
+ for (const attr of attributes.values())
74
+ processor.processAttribute(attr, context);
75
+ // Close the opening tag
76
+ context.builder.addText('>');
77
+ }
78
+ children(context) {
79
+ for (const [index, child] of context.path.node.children.entries()) {
80
+ if (t.isJSXText(child)) {
81
+ if (WHITESPACE_TAGS.includes(context.tagName))
82
+ context.builder.addText(child.value);
83
+ else
84
+ context.builder.addText(child.value.trim());
85
+ }
86
+ else if (t.isJSXExpressionContainer(child)) {
87
+ if (t.isJSXEmptyExpression(child.expression))
88
+ continue;
89
+ context.builder.addExpression(child.expression);
90
+ }
91
+ else if (t.isJSXElement(child)) {
92
+ const currentPath = context.path.get(`children.${index}`);
93
+ // Recursively process child elements
94
+ if (isJSXElementPath(currentPath) || isJSXFragmentPath(currentPath)) {
95
+ this.process({
96
+ ...context,
97
+ path: currentPath,
98
+ isInitialElement: false,
99
+ });
100
+ }
101
+ }
102
+ }
103
+ }
104
+ closingTag(context) {
105
+ // If it's a component tag, we need to close it with the static literal.
106
+ if (context.literalName) {
107
+ context.builder.addText('</');
108
+ context.builder.addExpression(t.identifier(context.literalName));
109
+ context.builder.addText('>');
110
+ }
111
+ else {
112
+ context.builder.addText('</' + context.tagName + '>');
113
+ }
114
+ }
115
+ createExpression(context) {
116
+ const isStatic = isJSXElementStatic(context.path);
117
+ const templateType = getTemplateType(context.path);
118
+ let identifier = '';
119
+ if (isStatic) {
120
+ if (templateType === VARIABLES.HTML) {
121
+ identifier = VARIABLES.HTML_STATIC;
122
+ context.importsUsed.add('htmlStatic');
123
+ }
124
+ // This will not happen, as svg and mathml dynamic tags are not supported yet.
125
+ else if (templateType === VARIABLES.SVG) {
126
+ identifier = VARIABLES.SVG_STATIC;
127
+ context.importsUsed.add('svgStatic');
128
+ }
129
+ // This will not happen, as svg and mathml dynamic tags are not supported yet.
130
+ else if (templateType === VARIABLES.MATHML) {
131
+ identifier = VARIABLES.MATHML_STATIC;
132
+ context.importsUsed.add('mathmlStatic');
133
+ }
134
+ else {
135
+ throw new Error(ERROR_MESSAGES.UNKNOWN_TEMPLATE_TYPE(templateType));
136
+ }
137
+ }
138
+ else {
139
+ if (templateType === VARIABLES.HTML) {
140
+ identifier = VARIABLES.HTML;
141
+ context.importsUsed.add('html');
142
+ }
143
+ else if (templateType === VARIABLES.SVG) {
144
+ identifier = VARIABLES.SVG;
145
+ context.importsUsed.add('svg');
146
+ }
147
+ else if (templateType === VARIABLES.MATHML) {
148
+ identifier = VARIABLES.MATHML;
149
+ context.importsUsed.add('mathml');
150
+ }
151
+ else {
152
+ throw new Error(ERROR_MESSAGES.UNKNOWN_TEMPLATE_TYPE(templateType));
153
+ }
154
+ }
155
+ return context.builder.createTaggedTemplate(identifier);
156
+ }
157
+ createFunctionalComponent(path) {
158
+ const context = this.createContext(path);
159
+ if (!isValidJSXElement(context.path))
160
+ throw new Error(ERROR_MESSAGES.INVALID_OPENING_TAG);
161
+ const properties = [];
162
+ const attributes = context.path.node.openingElement.attributes;
163
+ const tagName = getJSXElementName(context.path.node);
164
+ for (const attr of attributes) {
165
+ // Handle spread attributes by spreading the object
166
+ if (t.isJSXSpreadAttribute(attr)) {
167
+ properties.push(t.spreadElement(attr.argument));
168
+ continue;
169
+ }
170
+ const name = attr.name.name.toString();
171
+ const camelCaseName = name
172
+ .replace(/-([a-zA-Z])/g, (_, letter) => letter.toUpperCase());
173
+ let value;
174
+ if (attr.value) {
175
+ if (t.isJSXExpressionContainer(attr.value)) {
176
+ // If the expression is empty, skip it
177
+ if (t.isJSXEmptyExpression(attr.value.expression))
178
+ continue;
179
+ value = attr.value.expression;
180
+ }
181
+ else if (t.isStringLiteral(attr.value)) {
182
+ value = attr.value;
183
+ }
184
+ // Other literal types
185
+ else {
186
+ value = attr.value;
187
+ }
188
+ }
189
+ else {
190
+ // Boolean attribute (no value means true)
191
+ value = t.booleanLiteral(true);
192
+ }
193
+ properties.push(t.objectProperty(t.identifier(camelCaseName), value));
194
+ }
195
+ // Process children
196
+ if (context.path.node.children.length > 0) {
197
+ const childrenArray = [];
198
+ const childrenPaths = context.path.get(`children`);
199
+ for (const childPath of childrenPaths) {
200
+ const child = childPath.node;
201
+ if (t.isJSXText(child)) {
202
+ const trimmedValue = child.value.trim();
203
+ if (trimmedValue)
204
+ childrenArray.push(t.stringLiteral(trimmedValue));
205
+ }
206
+ else if (t.isJSXExpressionContainer(child)) {
207
+ if (t.isJSXEmptyExpression(child.expression))
208
+ continue;
209
+ childrenArray.push(child.expression);
210
+ }
211
+ else if (t.isJSXElement(child)) {
212
+ if (!isValidOpeningElement(childPath))
213
+ throw new Error(ERROR_MESSAGES.INVALID_OPENING_TAG);
214
+ const isStatic = isJSXElementStatic(childPath);
215
+ const templateType = getTemplateType(childPath);
216
+ if (isStatic || templateType !== 'html') {
217
+ // Create a new builder for this child element
218
+ const childContext = {
219
+ ...context,
220
+ path: childPath,
221
+ builder: new TemplateBuilder(),
222
+ isInitialElement: false,
223
+ };
224
+ this.process(childContext);
225
+ childrenArray.push(this.createExpression(childContext));
226
+ }
227
+ else {
228
+ // For compiled version, we need to process child elements differently
229
+ // Create a new compiled builder for this child element
230
+ const childContext = {
231
+ ...context,
232
+ path: childPath,
233
+ builder: new CompiledBuilder(),
234
+ currentIndex: 0,
235
+ isInitialElement: false,
236
+ };
237
+ const transpiler = new CompiledTranspiler();
238
+ transpiler.process(childContext);
239
+ // Add the child expression to the array
240
+ childrenArray.push(transpiler.createExpression(childContext));
241
+ }
242
+ }
243
+ }
244
+ // Add children property if there are any children
245
+ if (childrenArray.length > 0) {
246
+ // If there's only one child, we can use it directly.
247
+ // If there are multiple children, we wrap them in an array.
248
+ // This is because JSX Component Functions expects
249
+ // either a single child or an array of children.
250
+ const childrenValue = childrenArray.length === 1
251
+ ? childrenArray[0]
252
+ : t.arrayExpression(childrenArray);
253
+ properties.push(t.objectProperty(t.identifier('children'), childrenValue));
254
+ }
255
+ }
256
+ const expression = t.callExpression(t.identifier(tagName), [t.objectExpression(properties)]);
257
+ return expression;
258
+ }
259
+ functionalComponent(context) {
260
+ const expression = this.createFunctionalComponent(context.path);
261
+ context.builder.addText('');
262
+ context.builder.addExpression(expression);
263
+ context.builder.addText('');
264
+ }
265
+ }
266
+ export class CompiledTranspiler extends JSXTranspiler {
267
+ createContext(path) {
268
+ const context = {
269
+ program: getProgramFromPath(path),
270
+ path,
271
+ currentIndex: 0,
272
+ tagName: '',
273
+ isInitialElement: true,
274
+ builder: new CompiledBuilder(),
275
+ importsUsed: new Set(['taggedTemplateUtil']),
276
+ };
277
+ return context;
278
+ }
279
+ process(context) {
280
+ if (t.isJSXFragment(context.path.node)) {
281
+ context.builder.addText('');
282
+ this.children(context);
283
+ return;
284
+ }
285
+ context.tagName = getJSXElementName(context.path.node);
286
+ if (isJSXFunctionElementComponent(context.tagName)) {
287
+ // Process attributes and children into a props object
288
+ if (!context.isInitialElement)
289
+ this.functionalComponent(context);
290
+ // If this is the initial element, this should not happen.
291
+ // and it should instead have been processed as a single expression.
292
+ return;
293
+ }
294
+ this.openingTag(context);
295
+ this.attributes(context);
296
+ this.children(context);
297
+ this.closingTag(context);
298
+ }
299
+ openingTag(context) {
300
+ context.builder.addText('<' + context.tagName);
301
+ }
302
+ attributes(context) {
303
+ if (!isValidJSXElement(context.path))
304
+ throw new Error(ERROR_MESSAGES.INVALID_OPENING_TAG);
305
+ const { attributes } = context.path.node.openingElement;
306
+ const processor = new CompiledAttributeProcessor();
307
+ // Process the attributes
308
+ for (const attr of attributes.values())
309
+ processor.processAttribute(attr, context);
310
+ // Close the opening tag
311
+ context.builder.addText('>');
312
+ }
313
+ children(context) {
314
+ for (const childPath of context.path.get('children').values()) {
315
+ const child = childPath.node;
316
+ // Index is incremented to ensure correct part indices.
317
+ const partIndex = context.currentIndex + 1;
318
+ if (t.isJSXText(child)) {
319
+ if (WHITESPACE_TAGS.includes(context.tagName))
320
+ context.builder.addText(child.value);
321
+ else
322
+ context.builder.addText(child.value.trim());
323
+ }
324
+ else if (t.isJSXExpressionContainer(child)) {
325
+ if (t.isJSXEmptyExpression(child.expression))
326
+ throw new Error(ERROR_MESSAGES.EMPTY_EXPRESSION);
327
+ context.builder.addText('<?>');
328
+ context.builder.addValue(child.expression);
329
+ context.builder.addPart(CreateCompiledPart.child(partIndex));
330
+ }
331
+ else if (t.isJSXElement(child)) {
332
+ if (!isValidJSXElement(childPath))
333
+ throw new Error(ERROR_MESSAGES.INVALID_OPENING_TAG);
334
+ // Recursively process child elements
335
+ this.process({
336
+ ...context,
337
+ path: childPath,
338
+ currentIndex: partIndex,
339
+ isInitialElement: false,
340
+ });
341
+ }
342
+ }
343
+ }
344
+ closingTag(context) {
345
+ context.builder.addText('</' + context.tagName + '>');
346
+ }
347
+ createExpression(context) {
348
+ const variableName = context.path.scope.generateUid();
349
+ const compiledTemplate = context.builder.createCompiledTemplate();
350
+ const compiledExpression = context.builder.createExpression(variableName);
351
+ Ensure.hoistAsTopLevelVariable(context.path, variableName, compiledTemplate);
352
+ return compiledExpression;
353
+ }
354
+ createFunctionalComponent(path) {
355
+ const context = this.createContext(path);
356
+ if (!isValidJSXElement(context.path))
357
+ throw new Error(ERROR_MESSAGES.INVALID_OPENING_TAG);
358
+ const properties = [];
359
+ const attributes = context.path.node.openingElement.attributes;
360
+ const tagName = getJSXElementName(context.path.node);
361
+ for (const attr of attributes) {
362
+ // Handle spread attributes by spreading the object
363
+ if (t.isJSXSpreadAttribute(attr)) {
364
+ properties.push(t.spreadElement(attr.argument));
365
+ continue;
366
+ }
367
+ const name = attr.name.name.toString();
368
+ const camelCaseName = name
369
+ .replace(/-([a-zA-Z])/g, (_, letter) => letter.toUpperCase());
370
+ let value;
371
+ if (attr.value) {
372
+ if (t.isJSXExpressionContainer(attr.value)) {
373
+ // If the expression is empty, skip it
374
+ if (t.isJSXEmptyExpression(attr.value.expression))
375
+ continue;
376
+ value = attr.value.expression;
377
+ }
378
+ else if (t.isStringLiteral(attr.value)) {
379
+ value = attr.value;
380
+ }
381
+ // Other literal types
382
+ else {
383
+ value = attr.value;
384
+ }
385
+ }
386
+ else {
387
+ // Boolean attribute (no value means true)
388
+ value = t.booleanLiteral(true);
389
+ }
390
+ properties.push(t.objectProperty(t.identifier(camelCaseName), value));
391
+ }
392
+ // Process children
393
+ if (context.path.node.children.length > 0) {
394
+ const childrenArray = [];
395
+ for (const childPath of context.path.get('children')) {
396
+ const child = childPath.node;
397
+ if (t.isJSXText(child)) {
398
+ const trimmedValue = child.value.trim();
399
+ if (trimmedValue)
400
+ childrenArray.push(t.stringLiteral(trimmedValue));
401
+ }
402
+ else if (t.isJSXExpressionContainer(child)) {
403
+ if (t.isJSXEmptyExpression(child.expression))
404
+ continue;
405
+ childrenArray.push(child.expression);
406
+ }
407
+ else if (t.isJSXElement(child)) {
408
+ if (!isValidJSXElement(childPath))
409
+ throw new Error(ERROR_MESSAGES.INVALID_OPENING_TAG);
410
+ const isStatic = isJSXElementStatic(childPath);
411
+ const templateType = getTemplateType(childPath);
412
+ if (isStatic || templateType !== 'html') {
413
+ // Create a new builder for this child element
414
+ const childContext = {
415
+ ...context,
416
+ literalName: '',
417
+ path: childPath,
418
+ builder: new TemplateBuilder(),
419
+ isInitialElement: false,
420
+ };
421
+ const transpiler = new TemplateTranspiler();
422
+ transpiler.process(childContext);
423
+ childrenArray.push(transpiler.createExpression(childContext));
424
+ }
425
+ else {
426
+ // For compiled version, we need to process child elements differently
427
+ // Create a new compiled builder for this child element
428
+ const childContext = {
429
+ ...context,
430
+ path: childPath,
431
+ builder: new CompiledBuilder(),
432
+ currentIndex: context.currentIndex + 1,
433
+ isInitialElement: false,
434
+ };
435
+ this.process(childContext);
436
+ // Add the child expression to the array
437
+ childrenArray.push(this.createExpression(childContext));
438
+ }
439
+ }
440
+ }
441
+ // Add children property if there are any children
442
+ if (childrenArray.length > 0) {
443
+ // If there's only one child, we can use it directly.
444
+ // If there are multiple children, we wrap them in an array.
445
+ // This is because JSX Component Functions expects
446
+ // either a single child or an array of children.
447
+ const childrenValue = childrenArray.length === 1
448
+ ? childrenArray[0]
449
+ : t.arrayExpression(childrenArray);
450
+ properties.push(t.objectProperty(t.identifier('children'), childrenValue));
451
+ }
452
+ }
453
+ const expression = t.callExpression(t.identifier(tagName), [t.objectExpression(properties)]);
454
+ return expression;
455
+ }
456
+ functionalComponent(context) {
457
+ const expression = this.createFunctionalComponent(context.path);
458
+ context.builder.addText('<?>');
459
+ context.builder.addValue(expression);
460
+ context.builder.addPart(CreateCompiledPart.child(context.currentIndex + 1));
461
+ }
462
+ }
463
+ //# sourceMappingURL=transpiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transpiler.js","sourceRoot":"","sources":["../../src/compiler/transpiler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * @fileoverview Vite plugin for lit-jsx preserve-JSX compilation mode.
3
+ *
4
+ * This plugin provides compile-time JSX transformation using Babel to convert
5
+ * JSX syntax directly into optimized Lit templates. Unlike the React compatibility
6
+ * mode, this preserves JSX through the entire build pipeline for maximum performance.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * // vite.config.ts
11
+ * import { litJsx } from "@arcmantle/lit-jsx/vite-jsx-preserve";
12
+ *
13
+ * export default {
14
+ * plugins: [litJsx({
15
+ * babel: {
16
+ * // Custom Babel options
17
+ * }
18
+ * })]
19
+ * };
20
+ * ```
21
+ */
22
+ import * as babel from '@babel/core';
23
+ import type { PluginOption } from 'vite';
24
+ /**
25
+ * Vite plugin for jsx-lit with preserve-JSX compilation.
26
+ *
27
+ * This plugin uses Babel to transform JSX directly into Lit templates at build time,
28
+ * providing optimal performance by eliminating runtime JSX processing entirely.
29
+ *
30
+ * @param options - Configuration options for the plugin
31
+ * @param options.babel - Babel transform options or function returning options
32
+ * @returns Vite plugin configuration
33
+ */
34
+ export declare const litJsx: (options?: {
35
+ /** Options for the Babel transform */
36
+ babel?: babel.TransformOptions | ((code: string, id: string) => babel.TransformOptions | Promise<babel.TransformOptions>);
37
+ }) => PluginOption;
38
+ //# sourceMappingURL=vite-plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite-plugin.d.ts","sourceRoot":"","sources":["../../src/compiler/vite-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,KAAK,MAAM,aAAa,CAAC;AAErC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAQzC;;;;;;;;;GASG;AACH,eAAO,MAAM,MAAM,GAAI,UAAS;IAC/B,sCAAsC;IACtC,KAAK,CAAC,EACH,KAAK,CAAC,gBAAgB,GACtB,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,KAAK,CAAC,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;CACvF,KAAG,YAkER,CAAC"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * @fileoverview Vite plugin for lit-jsx preserve-JSX compilation mode.
3
+ *
4
+ * This plugin provides compile-time JSX transformation using Babel to convert
5
+ * JSX syntax directly into optimized Lit templates. Unlike the React compatibility
6
+ * mode, this preserves JSX through the entire build pipeline for maximum performance.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * // vite.config.ts
11
+ * import { litJsx } from "@arcmantle/lit-jsx/vite-jsx-preserve";
12
+ *
13
+ * export default {
14
+ * plugins: [litJsx({
15
+ * babel: {
16
+ * // Custom Babel options
17
+ * }
18
+ * })]
19
+ * };
20
+ * ```
21
+ */
22
+ import * as babel from '@babel/core';
23
+ import { mergeAndConcat } from 'merge-anything';
24
+ import { litJsxBabelPreset } from './babel-preset.js';
25
+ /**
26
+ * Vite plugin for jsx-lit with preserve-JSX compilation.
27
+ *
28
+ * This plugin uses Babel to transform JSX directly into Lit templates at build time,
29
+ * providing optimal performance by eliminating runtime JSX processing entirely.
30
+ *
31
+ * @param options - Configuration options for the plugin
32
+ * @param options.babel - Babel transform options or function returning options
33
+ * @returns Vite plugin configuration
34
+ */
35
+ export const litJsx = (options = {}) => {
36
+ let projectRoot;
37
+ return {
38
+ name: 'lit-jsx-preserve',
39
+ config: {
40
+ order: 'pre',
41
+ handler(userConfig, env) {
42
+ projectRoot = userConfig.root ?? process.cwd();
43
+ },
44
+ },
45
+ transform: {
46
+ filter: {
47
+ id: ['**/*.jsx', '**/*.tsx'],
48
+ code: ['/>', '</'],
49
+ },
50
+ order: 'pre',
51
+ async handler(source, id) {
52
+ const plugins = ['jsx', 'decorators', 'decoratorAutoAccessors'];
53
+ if (id.endsWith('.tsx'))
54
+ plugins.push('typescript');
55
+ // Default value for babel user options
56
+ let babelUserOptions = {};
57
+ if (options.babel) {
58
+ if (typeof options.babel === 'function') {
59
+ const babelOptions = options.babel(source, id);
60
+ babelUserOptions = babelOptions instanceof Promise
61
+ ? await babelOptions
62
+ : babelOptions;
63
+ }
64
+ else {
65
+ babelUserOptions = options.babel;
66
+ }
67
+ }
68
+ const babelOptions = {
69
+ root: projectRoot,
70
+ filename: id,
71
+ sourceFileName: id,
72
+ presets: [
73
+ [
74
+ litJsxBabelPreset,
75
+ /* merged into the metadata obj through state.opts */
76
+ {},
77
+ ],
78
+ ],
79
+ plugins: [],
80
+ ast: false,
81
+ sourceMaps: true,
82
+ configFile: false,
83
+ babelrc: false,
84
+ parserOpts: {
85
+ plugins,
86
+ },
87
+ };
88
+ const opts = mergeAndConcat(babelUserOptions, babelOptions);
89
+ const result = await babel.transformAsync(source, opts);
90
+ if (result?.code)
91
+ return { code: result.code, map: result.map };
92
+ },
93
+ },
94
+ };
95
+ };
96
+ //# sourceMappingURL=vite-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite-plugin.js","sourceRoot":"","sources":["../../src/compiler/vite-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,KAAK,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAMtD;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,UAKnB,EAAE,EAAgB,EAAE;IACvB,IAAI,WAAmB,CAAC;IAExB,OAAO;QACN,IAAI,EAAI,kBAAkB;QAC1B,MAAM,EAAE;YACP,KAAK,EAAE,KAAK;YACZ,OAAO,CAAC,UAAU,EAAE,GAAG;gBACtB,WAAW,GAAG,UAAU,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAChD,CAAC;SACD;QACD,SAAS,EAAE;YACV,MAAM,EAAE;gBACP,EAAE,EAAI,CAAE,UAAU,EAAE,UAAU,CAAE;gBAChC,IAAI,EAAE,CAAE,IAAI,EAAE,IAAI,CAAE;aACpB;YACD,KAAK,EAAE,KAAK;YACZ,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;gBACvB,MAAM,OAAO,GAAiB,CAAE,KAAK,EAAE,YAAY,EAAE,wBAAwB,CAAE,CAAC;gBAChF,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;oBACtB,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAE5B,uCAAuC;gBACvC,IAAI,gBAAgB,GAA2B,EAAE,CAAC;gBAElD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;oBACnB,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;wBACzC,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;wBAC/C,gBAAgB,GAAG,YAAY,YAAY,OAAO;4BACjD,CAAC,CAAC,MAAM,YAAY;4BACpB,CAAC,CAAC,YAAY,CAAC;oBACjB,CAAC;yBACI,CAAC;wBACL,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC;oBAClC,CAAC;gBACF,CAAC;gBAED,MAAM,YAAY,GAA2B;oBAC5C,IAAI,EAAY,WAAW;oBAC3B,QAAQ,EAAQ,EAAE;oBAClB,cAAc,EAAE,EAAE;oBAClB,OAAO,EAAS;wBACf;4BACC,iBAAiB;4BACjB,qDAAqD;4BACrD,EAAE;yBACF;qBACD;oBACD,OAAO,EAAK,EAAE;oBACd,GAAG,EAAS,KAAK;oBACjB,UAAU,EAAE,IAAI;oBAChB,UAAU,EAAE,KAAK;oBACjB,OAAO,EAAK,KAAK;oBACjB,UAAU,EAAE;wBACX,OAAO;qBACP;iBACD,CAAC;gBAEF,MAAM,IAAI,GAAG,cAAc,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;gBAC5D,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBAExD,IAAI,MAAM,EAAE,IAAI;oBACf,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;YAChD,CAAC;SACD;KACD,CAAC;AACH,CAAC,CAAC"}