@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,128 @@
1
+ import type { NodePath } from '@babel/traverse';
2
+ import * as t from '@babel/types';
3
+ import { PartType } from 'lit-html/directive.js';
4
+ import type { EnsureImport, Values } from './compiler-utils.js';
5
+ import { ATTR_VALUES } from './config.js';
6
+ import type { CompiledContext, TemplateContext } from './transpiler.js';
7
+ interface CallBindingAttribute extends t.JSXAttribute {
8
+ value: t.JSXExpressionContainer & {
9
+ expression: t.CallExpression & {
10
+ callee: t.MemberExpression & {
11
+ object: t.Identifier;
12
+ property: t.Identifier;
13
+ };
14
+ arguments: [t.Expression];
15
+ };
16
+ };
17
+ }
18
+ interface ArrowFunctionAttribute extends t.JSXAttribute {
19
+ value: t.JSXExpressionContainer & {
20
+ expression: t.ArrowFunctionExpression & {
21
+ params: [t.Identifier & {
22
+ name: Values<typeof ATTR_VALUES>;
23
+ }];
24
+ body: t.Expression;
25
+ };
26
+ };
27
+ }
28
+ interface JSXAttributeWithExpression extends t.JSXAttribute {
29
+ value: t.JSXExpressionContainer & {
30
+ expression: t.Expression;
31
+ };
32
+ }
33
+ interface JSXAttributeWithoutExpression extends t.JSXAttribute {
34
+ value: Exclude<t.JSXAttribute['value'], t.JSXExpressionContainer>;
35
+ }
36
+ interface JSXAttributeBoolean extends t.JSXAttribute {
37
+ value: null | undefined;
38
+ }
39
+ interface ValueBinding {
40
+ type: 'prop' | 'bool';
41
+ name: string;
42
+ expression: t.Expression;
43
+ }
44
+ export declare class AttributeValidators {
45
+ static isCallBinding(attr: t.JSXAttribute): attr is CallBindingAttribute;
46
+ static isArrowBinding(attr: t.JSXAttribute): attr is ArrowFunctionAttribute;
47
+ static isDirective(attr: t.JSXAttribute): attr is JSXAttributeWithExpression;
48
+ static isRef(attr: t.JSXAttribute): attr is JSXAttributeWithExpression;
49
+ static isClassListBinding(attr: t.JSXAttribute): attr is JSXAttributeWithExpression;
50
+ static isStyleListBinding(attr: t.JSXAttribute): attr is JSXAttributeWithExpression;
51
+ static isEvent(attr: t.JSXAttribute): attr is JSXAttributeWithExpression;
52
+ static isExpression(attr: t.JSXAttribute): attr is JSXAttributeWithExpression;
53
+ static isNonExpression(attribute: t.JSXAttribute): attribute is JSXAttributeWithoutExpression;
54
+ static isSpread(attr: t.JSXAttribute | t.JSXSpreadAttribute): attr is t.JSXSpreadAttribute;
55
+ static isBoolean(attr: t.JSXAttribute): attr is JSXAttributeBoolean;
56
+ }
57
+ export interface ProcessorContext {
58
+ builder: unknown;
59
+ program: t.Program;
60
+ path: NodePath<t.JSXElement | t.JSXFragment>;
61
+ tagName: string;
62
+ isInitialElement: boolean;
63
+ importsUsed: Set<keyof Omit<typeof EnsureImport, 'prototype'>>;
64
+ }
65
+ declare abstract class AttributeProcessor<TContext extends ProcessorContext> {
66
+ abstract callBinding(attr: CallBindingAttribute, context: TContext): void;
67
+ abstract arrowBinding(attr: ArrowFunctionAttribute, context: TContext): void;
68
+ abstract directive(attr: JSXAttributeWithExpression, context: TContext): void;
69
+ abstract ref(attr: JSXAttributeWithExpression, context: TContext): void;
70
+ abstract classList(attr: JSXAttributeWithExpression, context: TContext): void;
71
+ abstract styleList(attr: JSXAttributeWithExpression, context: TContext): void;
72
+ abstract event(attr: JSXAttributeWithExpression, context: TContext): void;
73
+ abstract expression(attr: JSXAttributeWithExpression, context: TContext): void;
74
+ abstract nonExpression(attr: JSXAttributeWithoutExpression, context: TContext): void;
75
+ abstract spread(attr: t.JSXSpreadAttribute, context: TContext): void;
76
+ abstract boolean(attr: JSXAttributeBoolean, context: TContext): void;
77
+ processAttribute(attr: t.JSXAttribute | t.JSXSpreadAttribute, context: TContext): void;
78
+ protected createValueBinding(attr: CallBindingAttribute | ArrowFunctionAttribute, context: TContext): ValueBinding;
79
+ protected createDirective(attr: JSXAttributeWithExpression, context: TContext): t.Expression[];
80
+ protected createRef(attr: JSXAttributeWithExpression, context: TContext): t.CallExpression;
81
+ protected createClassList(attr: JSXAttributeWithExpression, context: TContext): t.CallExpression;
82
+ protected createStyleList(attr: JSXAttributeWithExpression, context: TContext): t.CallExpression;
83
+ protected createEvent(attr: JSXAttributeWithExpression, context: TContext): [string, t.Expression];
84
+ protected createExpression(attr: JSXAttributeWithExpression, context: TContext): [string, t.Expression];
85
+ protected createNonExpression(attr: JSXAttributeWithoutExpression, context: TContext): [string, string];
86
+ protected createSpread(attr: t.JSXSpreadAttribute, context: TContext): t.CallExpression;
87
+ protected createBoolean(attr: JSXAttributeBoolean, context: TContext): string;
88
+ }
89
+ export declare class TemplateAttributeProcessor extends AttributeProcessor<TemplateContext> {
90
+ callBinding(attr: CallBindingAttribute, context: TemplateContext): void;
91
+ arrowBinding(attr: ArrowFunctionAttribute, context: TemplateContext): void;
92
+ directive(attr: JSXAttributeWithExpression, context: TemplateContext): void;
93
+ ref(attr: JSXAttributeWithExpression, context: TemplateContext): void;
94
+ classList(attr: JSXAttributeWithExpression, context: TemplateContext): void;
95
+ styleList(attr: JSXAttributeWithExpression, context: TemplateContext): void;
96
+ event(attr: JSXAttributeWithExpression, context: TemplateContext): void;
97
+ expression(attr: JSXAttributeWithExpression, context: TemplateContext): void;
98
+ nonExpression(attr: JSXAttributeWithoutExpression, context: TemplateContext): void;
99
+ spread(attribute: t.JSXSpreadAttribute, context: TemplateContext): void;
100
+ boolean(attribute: JSXAttributeBoolean, context: TemplateContext): void;
101
+ protected valueBinding(attr: CallBindingAttribute | ArrowFunctionAttribute, context: TemplateContext): void;
102
+ }
103
+ export declare class CompiledAttributeProcessor extends AttributeProcessor<CompiledContext> {
104
+ callBinding(attr: CallBindingAttribute, context: CompiledContext): void;
105
+ arrowBinding(attr: ArrowFunctionAttribute, context: CompiledContext): void;
106
+ directive(attr: JSXAttributeWithExpression, context: CompiledContext): void;
107
+ ref(attr: JSXAttributeWithExpression, context: CompiledContext): void;
108
+ classList(attr: JSXAttributeWithExpression, context: CompiledContext): void;
109
+ styleList(attr: JSXAttributeWithExpression, context: CompiledContext): void;
110
+ event(attr: JSXAttributeWithExpression, context: CompiledContext): void;
111
+ expression(attr: JSXAttributeWithExpression, context: CompiledContext): void;
112
+ nonExpression(attr: JSXAttributeWithoutExpression, context: CompiledContext): void;
113
+ spread(attr: t.JSXSpreadAttribute, context: CompiledContext): void;
114
+ boolean(attr: JSXAttributeBoolean, context: CompiledContext): void;
115
+ protected valueBinding(attr: CallBindingAttribute | ArrowFunctionAttribute, context: CompiledContext): void;
116
+ }
117
+ export declare class CreateCompiledPart {
118
+ protected static createBasePart(type: PartType, index: number): t.ObjectProperty[];
119
+ protected static createAttributePart(index: number, name: string, ctor: string): t.ObjectExpression;
120
+ static child(index: number): t.ObjectExpression;
121
+ static element(index: number): t.ObjectExpression;
122
+ static attribute(index: number, name: string): t.ObjectExpression;
123
+ static property(index: number, name: string): t.ObjectExpression;
124
+ static boolean(index: number, name: string): t.ObjectExpression;
125
+ static event(index: number, name: string): t.ObjectExpression;
126
+ }
127
+ export {};
128
+ //# sourceMappingURL=attribute-processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attribute-processor.d.ts","sourceRoot":"","sources":["../../src/compiler/attribute-processor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,380 @@
1
+ import * as t from '@babel/types';
2
+ import { PartType } from 'lit-html/directive.js';
3
+ import { ATTR_BIND_OBJ_NAME, ATTR_NAMES, ATTR_VALUES, ERROR_MESSAGES, VARIABLES, } from './config.js';
4
+ export class AttributeValidators {
5
+ static isCallBinding(attr) {
6
+ if (!this.isExpression(attr))
7
+ return false;
8
+ const expression = attr.value.expression;
9
+ if (!t.isCallExpression(expression))
10
+ return false;
11
+ const callee = expression.callee;
12
+ if (!t.isMemberExpression(callee))
13
+ return false;
14
+ if (!t.isIdentifier(callee.object) || !t.isIdentifier(callee.property))
15
+ return false;
16
+ const objectNameMatches = callee.object.name === ATTR_BIND_OBJ_NAME;
17
+ if (!objectNameMatches)
18
+ return false;
19
+ return true;
20
+ }
21
+ static isArrowBinding(attr) {
22
+ if (!this.isExpression(attr))
23
+ return false;
24
+ const expression = attr.value.expression;
25
+ if (!t.isArrowFunctionExpression(expression))
26
+ return false;
27
+ // If the arrow function has no parameters, we can skip it.
28
+ if (expression.params.length === 0)
29
+ return false;
30
+ // If the arrow function has more than one parameter, we can skip it.
31
+ if (expression.params.length > 1)
32
+ return false;
33
+ // If the param is not an identifier, we can skip it.
34
+ const param = expression.params[0];
35
+ if (!t.isIdentifier(param))
36
+ return false;
37
+ // If the body of the arrow function is not an expression, we can skip it.
38
+ if (!t.isExpression(expression.body))
39
+ return false;
40
+ // We check if it is a valid bind parameter.
41
+ return param.name === ATTR_VALUES.PROP
42
+ || param.name === ATTR_VALUES.BOOL;
43
+ }
44
+ static isDirective(attr) {
45
+ return this.isExpression(attr) && attr.name.name.toString() === ATTR_NAMES.DIRECTIVE;
46
+ }
47
+ static isRef(attr) {
48
+ return this.isExpression(attr) && attr.name.name.toString() === ATTR_NAMES.REF;
49
+ }
50
+ static isClassListBinding(attr) {
51
+ return this.isExpression(attr) && attr.name.name.toString() === ATTR_NAMES.CLASS_LIST;
52
+ }
53
+ static isStyleListBinding(attr) {
54
+ return this.isExpression(attr) && attr.name.name.toString() === ATTR_NAMES.STYLE_LIST;
55
+ }
56
+ static isEvent(attr) {
57
+ return attr.name.name.toString().startsWith(ATTR_NAMES.EVENT_PREFIX);
58
+ }
59
+ static isExpression(attr) {
60
+ return t.isJSXExpressionContainer(attr.value)
61
+ && t.isExpression(attr.value.expression);
62
+ }
63
+ ;
64
+ static isNonExpression(attribute) {
65
+ return !!attribute.value && !t.isJSXExpressionContainer(attribute.value);
66
+ }
67
+ ;
68
+ static isSpread(attr) {
69
+ return t.isJSXSpreadAttribute(attr);
70
+ }
71
+ static isBoolean(attr) {
72
+ return !attr.value;
73
+ }
74
+ }
75
+ class AttributeProcessor {
76
+ processAttribute(attr, context) {
77
+ if (AttributeValidators.isSpread(attr))
78
+ this.spread(attr, context);
79
+ else if (AttributeValidators.isNonExpression(attr))
80
+ this.nonExpression(attr, context);
81
+ else if (AttributeValidators.isBoolean(attr))
82
+ this.boolean(attr, context);
83
+ // Expression attributes are checked based on their type.
84
+ // Order is based on a guess as to which expression is more common.
85
+ else if (AttributeValidators.isEvent(attr))
86
+ this.event(attr, context);
87
+ else if (AttributeValidators.isArrowBinding(attr))
88
+ this.arrowBinding(attr, context);
89
+ else if (AttributeValidators.isCallBinding(attr))
90
+ this.callBinding(attr, context);
91
+ else if (AttributeValidators.isClassListBinding(attr))
92
+ this.classList(attr, context);
93
+ else if (AttributeValidators.isStyleListBinding(attr))
94
+ this.styleList(attr, context);
95
+ else if (AttributeValidators.isRef(attr))
96
+ this.ref(attr, context);
97
+ else if (AttributeValidators.isDirective(attr))
98
+ this.directive(attr, context);
99
+ // Generic expression attributes are checked last
100
+ // because this condition will be true for all expression attributes.
101
+ // and we want the more specific cases to be checked first.
102
+ else if (AttributeValidators.isExpression(attr))
103
+ this.expression(attr, context);
104
+ else
105
+ throw new Error(ERROR_MESSAGES.UNKNOWN_JSX_ATTRIBUTE_TYPE);
106
+ }
107
+ createValueBinding(attr, context) {
108
+ const expression = attr.value.expression;
109
+ let isProp = false;
110
+ let isBool = false;
111
+ let expressionBody;
112
+ if (t.isCallExpression(expression)) {
113
+ isProp = expression.callee.property.name === ATTR_VALUES.PROP;
114
+ isBool = expression.callee.property.name === ATTR_VALUES.BOOL;
115
+ expressionBody = expression.arguments[0];
116
+ }
117
+ else if (t.isArrowFunctionExpression(expression)) {
118
+ const param = expression.params[0];
119
+ isProp = param.name === ATTR_VALUES.PROP;
120
+ isBool = param.name === ATTR_VALUES.BOOL;
121
+ expressionBody = expression.body;
122
+ }
123
+ else {
124
+ throw new Error(ERROR_MESSAGES.INVALID_DIRECTIVE_VALUE);
125
+ }
126
+ if (isProp) {
127
+ return {
128
+ type: 'prop',
129
+ name: attr.name.name.toString(),
130
+ expression: expressionBody,
131
+ };
132
+ }
133
+ else if (isBool) {
134
+ return {
135
+ type: 'bool',
136
+ name: attr.name.name.toString(),
137
+ expression: expressionBody,
138
+ };
139
+ }
140
+ else {
141
+ throw new Error(ERROR_MESSAGES.INVALID_DIRECTIVE_VALUE);
142
+ }
143
+ }
144
+ createDirective(attr, context) {
145
+ // Replace the spread attribute with its argument, minus the compiler func.
146
+ const expression = attr.value.expression;
147
+ // If the expression is a call, we can add it directly.
148
+ if (t.isCallExpression(expression))
149
+ return [expression];
150
+ // If the expression is an array, we can add each item.
151
+ else if (t.isArrayExpression(expression))
152
+ return expression.elements.filter(item => t.isExpression(item));
153
+ else
154
+ throw new Error(ERROR_MESSAGES.INVALID_DIRECTIVE_VALUE);
155
+ }
156
+ createRef(attr, context) {
157
+ context.importsUsed.add('createRef');
158
+ // add a ref call around the expression.
159
+ const expression = t.callExpression(t.identifier(VARIABLES.REF), [attr.value.expression]);
160
+ return expression;
161
+ }
162
+ createClassList(attr, context) {
163
+ context.importsUsed.add('classMap');
164
+ // add a classMap call around the expression.
165
+ const expression = t.callExpression(t.identifier(VARIABLES.CLASS_MAP), [attr.value.expression]);
166
+ return expression;
167
+ }
168
+ createStyleList(attr, context) {
169
+ context.importsUsed.add('styleMap');
170
+ // add a styleMap call around the expression.
171
+ const expression = t.callExpression(t.identifier(VARIABLES.STYLE_MAP), [attr.value.expression]);
172
+ return expression;
173
+ }
174
+ createEvent(attr, context) {
175
+ return [attr.name.name.toString().slice(3), attr.value.expression];
176
+ }
177
+ createExpression(attr, context) {
178
+ return [attr.name.name.toString(), attr.value.expression];
179
+ }
180
+ createNonExpression(attr, context) {
181
+ // If the value is a string, we can use it directly
182
+ // Here we always bind the value as a string.
183
+ // In the future, we might want to also support numbers.
184
+ if (!t.isStringLiteral(attr.value))
185
+ throw new Error(ERROR_MESSAGES.ONLY_STRING_LITERALS);
186
+ return [attr.name.name.toString(), attr.value.value];
187
+ }
188
+ createSpread(attr, context) {
189
+ context.importsUsed.add('rest');
190
+ // If it's a spread attribute, we wrap it in our custom `rest` directive.
191
+ // This will allow us to handle the spread attribute correctly.
192
+ // We also need to ensure that the `rest` directive is imported.
193
+ return t.callExpression(t.identifier(VARIABLES.REST), [attr.argument]);
194
+ }
195
+ createBoolean(attr, context) {
196
+ // If the value is null or undefined, we can bind the attribute name directly.
197
+ // This will result in a attribute without a value, e.g. `<div disabled>`.
198
+ return attr.name.name.toString();
199
+ }
200
+ }
201
+ export class TemplateAttributeProcessor extends AttributeProcessor {
202
+ callBinding(attr, context) {
203
+ this.valueBinding(attr, context);
204
+ }
205
+ arrowBinding(attr, context) {
206
+ this.valueBinding(attr, context);
207
+ }
208
+ directive(attr, context) {
209
+ for (const expression of this.createDirective(attr, context)) {
210
+ context.builder.addText(' ');
211
+ context.builder.addExpression(expression);
212
+ }
213
+ }
214
+ ref(attr, context) {
215
+ const expression = this.createRef(attr, context);
216
+ // add a space to keep correct spacing in the template.
217
+ context.builder.addText(' ');
218
+ context.builder.addExpression(expression);
219
+ }
220
+ classList(attr, context) {
221
+ const expression = this.createClassList(attr, context);
222
+ context.builder.addText(' class=');
223
+ context.builder.addExpression(expression);
224
+ }
225
+ styleList(attr, context) {
226
+ const expression = this.createStyleList(attr, context);
227
+ context.builder.addText(' ' + 'style=');
228
+ context.builder.addExpression(expression);
229
+ }
230
+ event(attr, context) {
231
+ const [name, expression] = this.createEvent(attr, context);
232
+ context.builder.addText(' @' + name + '=');
233
+ context.builder.addExpression(expression);
234
+ }
235
+ expression(attr, context) {
236
+ const [name, expression] = this.createExpression(attr, context);
237
+ context.builder.addText(' ' + name + '=');
238
+ context.builder.addExpression(expression);
239
+ }
240
+ nonExpression(attr, context) {
241
+ const [name, value] = this.createNonExpression(attr, context);
242
+ context.builder.addText(' ' + name + '="' + value + '"');
243
+ }
244
+ ;
245
+ spread(attribute, context) {
246
+ const expression = this.createSpread(attribute, context);
247
+ context.builder.addText(' ');
248
+ context.builder.addExpression(expression);
249
+ }
250
+ boolean(attribute, context) {
251
+ const name = this.createBoolean(attribute, context);
252
+ context.builder.addText(' ' + name);
253
+ }
254
+ ;
255
+ valueBinding(attr, context) {
256
+ const { type, name, expression } = this.createValueBinding(attr, context);
257
+ if (type === 'prop')
258
+ context.builder.addText(' .');
259
+ else if (type === 'bool')
260
+ context.builder.addText(' ?');
261
+ context.builder.addText(name + '=');
262
+ context.builder.addExpression(expression);
263
+ }
264
+ }
265
+ export class CompiledAttributeProcessor extends AttributeProcessor {
266
+ callBinding(attr, context) {
267
+ this.valueBinding(attr, context);
268
+ }
269
+ arrowBinding(attr, context) {
270
+ this.valueBinding(attr, context);
271
+ }
272
+ directive(attr, context) {
273
+ for (const expression of this.createDirective(attr, context)) {
274
+ context.builder.addPart(CreateCompiledPart.element(context.currentIndex));
275
+ context.builder.addValue(expression);
276
+ }
277
+ }
278
+ ref(attr, context) {
279
+ const expression = this.createRef(attr, context);
280
+ context.builder.addPart(CreateCompiledPart.element(context.currentIndex));
281
+ context.builder.addValue(expression);
282
+ context.importsUsed.add('createRef');
283
+ }
284
+ classList(attr, context) {
285
+ const expression = this.createClassList(attr, context);
286
+ context.builder.addPart(CreateCompiledPart.attribute(context.currentIndex, 'class'));
287
+ context.builder.addValue(expression);
288
+ context.importsUsed.add('attributePart');
289
+ }
290
+ styleList(attr, context) {
291
+ const expression = this.createStyleList(attr, context);
292
+ context.builder.addPart(CreateCompiledPart.attribute(context.currentIndex, 'style'));
293
+ context.builder.addValue(expression);
294
+ context.importsUsed.add('attributePart');
295
+ }
296
+ event(attr, context) {
297
+ const [name, expression] = this.createEvent(attr, context);
298
+ context.builder.addPart(CreateCompiledPart.event(context.currentIndex, name));
299
+ context.builder.addValue(expression);
300
+ context.importsUsed.add('eventPart');
301
+ }
302
+ expression(attr, context) {
303
+ const [name, expression] = this.createExpression(attr, context);
304
+ context.builder.addPart(CreateCompiledPart.attribute(context.currentIndex, name));
305
+ context.builder.addValue(expression);
306
+ context.importsUsed.add('attributePart');
307
+ }
308
+ nonExpression(attr, context) {
309
+ const [name, value] = this.createNonExpression(attr, context);
310
+ context.builder.addText(' ' + name + '="' + value + '"');
311
+ }
312
+ ;
313
+ spread(attr, context) {
314
+ const expression = this.createSpread(attr, context);
315
+ context.builder.addPart(CreateCompiledPart.element(context.currentIndex));
316
+ context.builder.addValue(expression);
317
+ }
318
+ boolean(attr, context) {
319
+ const name = this.createBoolean(attr, context);
320
+ context.builder.addText(' ' + name);
321
+ }
322
+ ;
323
+ valueBinding(attr, context) {
324
+ const { type, name, expression } = this.createValueBinding(attr, context);
325
+ if (type === 'prop') {
326
+ context.builder.addPart(CreateCompiledPart.property(context.currentIndex, name));
327
+ context.builder.addValue(expression);
328
+ context.importsUsed.add('propertyPart');
329
+ }
330
+ else if (type === 'bool') {
331
+ context.builder.addPart(CreateCompiledPart.boolean(context.currentIndex, name));
332
+ context.builder.addValue(expression);
333
+ context.importsUsed.add('booleanPart');
334
+ }
335
+ }
336
+ }
337
+ export class CreateCompiledPart {
338
+ static createBasePart(type, index) {
339
+ return [
340
+ t.objectProperty(t.stringLiteral('type'), t.numericLiteral(type)),
341
+ t.objectProperty(t.stringLiteral('index'), t.numericLiteral(index)),
342
+ ];
343
+ }
344
+ static createAttributePart(index, name, ctor) {
345
+ return t.objectExpression([
346
+ ...this.createBasePart(PartType.ATTRIBUTE, index),
347
+ t.objectProperty(t.stringLiteral('name'), t.stringLiteral(name)),
348
+ t.objectProperty(t.stringLiteral('strings'), t.arrayExpression([
349
+ t.stringLiteral(''),
350
+ t.stringLiteral(''),
351
+ ])),
352
+ t.objectProperty(t.stringLiteral('ctor'), t.identifier(ctor)),
353
+ ]);
354
+ }
355
+ static child(index) {
356
+ return t.objectExpression(this.createBasePart(PartType.CHILD, index));
357
+ }
358
+ ;
359
+ static element(index) {
360
+ return t.objectExpression(this.createBasePart(PartType.ELEMENT, index));
361
+ }
362
+ ;
363
+ static attribute(index, name) {
364
+ return this.createAttributePart(index, name, VARIABLES.ATTRIBUTE_PART);
365
+ }
366
+ ;
367
+ static property(index, name) {
368
+ return this.createAttributePart(index, name, VARIABLES.PROPERTY_PART);
369
+ }
370
+ ;
371
+ static boolean(index, name) {
372
+ return this.createAttributePart(index, name, VARIABLES.BOOLEAN_PART);
373
+ }
374
+ ;
375
+ static event(index, name) {
376
+ return this.createAttributePart(index, name, VARIABLES.EVENT_PART);
377
+ }
378
+ ;
379
+ }
380
+ //# sourceMappingURL=attribute-processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attribute-processor.js","sourceRoot":"","sources":["../../src/compiler/attribute-processor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { PluginObj, PluginOptions } from '@babel/core';
2
+ /** Compiles jsx to a combination of standard and compiled lit-html */
3
+ export declare const litJsxBabelPreset: (context: any, options?: {}) => {
4
+ plugins: [PluginObj, PluginOptions][];
5
+ };
6
+ //# sourceMappingURL=babel-preset.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"babel-preset.d.ts","sourceRoot":"","sources":["../../src/compiler/babel-preset.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAQ5D,sEAAsE;AACtE,eAAO,MAAM,iBAAiB,GAC7B,SAAS,GAAG,EACZ,YAAY,KACV;IAAE,OAAO,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,CAAC;CAqB1C,CAAC"}
@@ -0,0 +1,27 @@
1
+ import SyntaxJSX from '@babel/plugin-syntax-jsx';
2
+ import { postprocess } from './postprocess.js';
3
+ import { preprocess } from './preprocess.js';
4
+ import { transformJSXElement } from './transform-jsx.js';
5
+ /** Compiles jsx to a combination of standard and compiled lit-html */
6
+ export const litJsxBabelPreset = (context, options = {}) => {
7
+ return {
8
+ plugins: [
9
+ [
10
+ {
11
+ name: 'lit-jsx-transform',
12
+ inherits: SyntaxJSX.default,
13
+ visitor: {
14
+ JSXElement: transformJSXElement,
15
+ JSXFragment: transformJSXElement,
16
+ Program: {
17
+ enter: preprocess,
18
+ exit: postprocess,
19
+ },
20
+ },
21
+ },
22
+ Object.assign({}, options),
23
+ ],
24
+ ],
25
+ };
26
+ };
27
+ //# sourceMappingURL=babel-preset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"babel-preset.js","sourceRoot":"","sources":["../../src/compiler/babel-preset.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,0BAA0B,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAGzD,sEAAsE;AACtE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAChC,OAAY,EACZ,OAAO,GAAG,EAAE,EACiC,EAAE;IAC/C,OAAO;QACN,OAAO,EAAE;YACR;gBACC;oBACC,IAAI,EAAM,mBAAmB;oBAC7B,QAAQ,EAAE,SAAS,CAAC,OAAO;oBAC3B,OAAO,EAAG;wBACT,UAAU,EAAG,mBAAmB;wBAChC,WAAW,EAAE,mBAAmB;wBAChC,OAAO,EAAM;4BACZ,KAAK,EAAE,UAAU;4BACjB,IAAI,EAAG,WAAW;yBAClB;qBACD;iBACD;gBACD,MAAM,CAAC,MAAM,CAAC,EACb,EAAE,OAAO,CAAC;aACX;SACD;KACD,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ import * as t from '@babel/types';
2
+ export declare class TemplateBuilder {
3
+ protected currentQuasi: string[];
4
+ protected quasis: t.TemplateElement[];
5
+ protected expressions: (t.Expression | t.TSType)[];
6
+ protected commitQuasi(): void;
7
+ addText(text: string): void;
8
+ addExpression(expression: t.Expression): void;
9
+ createTaggedTemplate(identifier: string): t.TaggedTemplateExpression;
10
+ }
11
+ export declare class CompiledBuilder {
12
+ protected templateText: string;
13
+ protected parts: t.ObjectExpression[];
14
+ protected values: t.Expression[];
15
+ addText(text: string): void;
16
+ addPart(part: t.ObjectExpression): void;
17
+ addValue(value: t.Expression): void;
18
+ addChild(index: number, value: t.Expression): void;
19
+ createCompiledTemplate(): t.ObjectExpression;
20
+ createExpression(variableName: string): t.ObjectExpression;
21
+ }
22
+ //# sourceMappingURL=builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/compiler/builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAKlC,qBAAa,eAAe;IAE3B,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,CAAM;IACtC,SAAS,CAAC,MAAM,EAAQ,CAAC,CAAC,eAAe,EAAE,CAAM;IACjD,SAAS,CAAC,WAAW,EAAG,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAM;IAEzD,SAAS,CAAC,WAAW,IAAI,IAAI;IAK7B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI3B,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU,GAAG,IAAI;IAK7C,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,CAAC,CAAC,wBAAwB;CAepE;AAGD,qBAAa,eAAe;IAE3B,SAAS,CAAC,YAAY,EAAE,MAAM,CAAM;IACpC,SAAS,CAAC,KAAK,EAAS,CAAC,CAAC,gBAAgB,EAAE,CAAM;IAClD,SAAS,CAAC,MAAM,EAAQ,CAAC,CAAC,UAAU,EAAE,CAAM;IAE5C,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI3B,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,gBAAgB,GAAG,IAAI;IAIvC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,UAAU,GAAG,IAAI;IAInC,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,UAAU,GAAG,IAAI;IAKlD,sBAAsB,IAAI,CAAC,CAAC,gBAAgB;IAY5C,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,CAAC,CAAC,gBAAgB;CAO1D"}