@madenowhere/phaze-compile 0.0.4 → 0.0.6
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.
- package/dist/babel-plugin.d.ts +5 -1
- package/dist/babel-plugin.d.ts.map +1 -1
- package/dist/babel-plugin.js +429 -1
- package/dist/babel-plugin.js.map +1 -1
- package/package.json +1 -1
package/dist/babel-plugin.d.ts
CHANGED
|
@@ -3,6 +3,10 @@ import type * as t from '@babel/types';
|
|
|
3
3
|
interface Babel {
|
|
4
4
|
types: typeof t;
|
|
5
5
|
}
|
|
6
|
-
|
|
6
|
+
interface DslState extends PluginPass {
|
|
7
|
+
dslLocals?: Map<string, 'c' | 'watch' | 'phaze' | 's'>;
|
|
8
|
+
needsRuntimeImport?: Set<'effect' | 'listen'>;
|
|
9
|
+
}
|
|
10
|
+
declare const phazeCompile: (babel: Babel) => PluginObj<DslState>;
|
|
7
11
|
export default phazeCompile;
|
|
8
12
|
//# sourceMappingURL=babel-plugin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"babel-plugin.d.ts","sourceRoot":"","sources":["../src/babel-plugin.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"babel-plugin.d.ts","sourceRoot":"","sources":["../src/babel-plugin.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAY,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAClE,OAAO,KAAK,KAAK,CAAC,MAAM,cAAc,CAAA;AAItC,UAAU,KAAK;IACb,KAAK,EAAE,OAAO,CAAC,CAAA;CAChB;AAUD,UAAU,QAAS,SAAQ,UAAU;IACnC,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,GAAG,OAAO,GAAG,GAAG,CAAC,CAAA;IACtD,kBAAkB,CAAC,EAAE,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAA;CAC9C;AAID,QAAA,MAAM,YAAY,GAAI,OAAO,KAAK,KAAG,SAAS,CAAC,QAAQ,CAgKtD,CAAA;AAofD,eAAe,YAAY,CAAA"}
|
package/dist/babel-plugin.js
CHANGED
|
@@ -33,14 +33,122 @@
|
|
|
33
33
|
// converts to function calls.
|
|
34
34
|
// @ts-expect-error - no published types for the plugin module
|
|
35
35
|
import jsxSyntax from '@babel/plugin-syntax-jsx';
|
|
36
|
+
const DSL_SOURCE = '@madenowhere/phaze/dsl';
|
|
36
37
|
const phazeCompile = (babel) => {
|
|
37
38
|
const { types } = babel;
|
|
38
39
|
return {
|
|
39
40
|
name: '@madenowhere/phaze-compile',
|
|
40
41
|
inherits: jsxSyntax.default ?? jsxSyntax,
|
|
41
42
|
visitor: {
|
|
42
|
-
|
|
43
|
+
Program: {
|
|
44
|
+
enter(_path, state) {
|
|
45
|
+
// Reset per-file. Babel reuses the plugin object across files
|
|
46
|
+
// when invoked in batch; without this reset, DSL bindings from
|
|
47
|
+
// one file would bleed into the next.
|
|
48
|
+
state.dslLocals = new Map();
|
|
49
|
+
state.needsRuntimeImport = new Set();
|
|
50
|
+
},
|
|
51
|
+
exit(path, state) {
|
|
52
|
+
// Auto-inject `effect` / `listen` imports from the main phaze
|
|
53
|
+
// entry when class: / bind: namespaces in this file referenced
|
|
54
|
+
// them. The compiler treats these like compile-emitted builtins
|
|
55
|
+
// (same as React's JSX automatic transform auto-imports jsx() /
|
|
56
|
+
// Fragment) — users shouldn't have to remember to import a
|
|
57
|
+
// runtime helper they didn't name in their source.
|
|
58
|
+
//
|
|
59
|
+
// Merge with an existing `from '@madenowhere/phaze'` import if
|
|
60
|
+
// one exists; otherwise prepend a fresh one. Skip names already
|
|
61
|
+
// imported.
|
|
62
|
+
const need = state.needsRuntimeImport;
|
|
63
|
+
if (!need || need.size === 0)
|
|
64
|
+
return;
|
|
65
|
+
const PHAZE = '@madenowhere/phaze';
|
|
66
|
+
let existing = null;
|
|
67
|
+
for (const stmt of path.node.body) {
|
|
68
|
+
if (stmt.type === 'ImportDeclaration' && stmt.source.value === PHAZE) {
|
|
69
|
+
existing = stmt;
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const already = new Set();
|
|
74
|
+
if (existing) {
|
|
75
|
+
for (const spec of existing.specifiers) {
|
|
76
|
+
if (spec.type === 'ImportSpecifier' && spec.imported.type === 'Identifier') {
|
|
77
|
+
already.add(spec.imported.name);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
const toAdd = [];
|
|
82
|
+
for (const name of need) {
|
|
83
|
+
if (!already.has(name))
|
|
84
|
+
toAdd.push(name);
|
|
85
|
+
}
|
|
86
|
+
if (toAdd.length === 0)
|
|
87
|
+
return;
|
|
88
|
+
const newSpecs = toAdd.map((name) => types.importSpecifier(types.identifier(name), types.identifier(name)));
|
|
89
|
+
if (existing) {
|
|
90
|
+
existing.specifiers.push(...newSpecs);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
path.node.body.unshift(types.importDeclaration(newSpecs, types.stringLiteral(PHAZE)));
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
ImportDeclaration(path, state) {
|
|
98
|
+
if (path.node.source.value !== DSL_SOURCE)
|
|
99
|
+
return;
|
|
100
|
+
for (const spec of path.node.specifiers) {
|
|
101
|
+
if (spec.type !== 'ImportSpecifier')
|
|
102
|
+
continue;
|
|
103
|
+
const imported = spec.imported.type === 'Identifier'
|
|
104
|
+
? spec.imported.name
|
|
105
|
+
: spec.imported.value;
|
|
106
|
+
if (imported === 'c' || imported === 'watch' || imported === 'phaze' || imported === 's') {
|
|
107
|
+
state.dslLocals.set(spec.local.name, imported);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
CallExpression(path, state) {
|
|
112
|
+
const callee = path.node.callee;
|
|
113
|
+
if (callee.type !== 'Identifier')
|
|
114
|
+
return;
|
|
115
|
+
const dslKind = state.dslLocals?.get(callee.name);
|
|
116
|
+
if (!dslKind)
|
|
117
|
+
return;
|
|
118
|
+
// `s` is a plain alias for signal — no auto-thunk. Bail.
|
|
119
|
+
if (dslKind === 's')
|
|
120
|
+
return;
|
|
121
|
+
const arg = path.node.arguments[0];
|
|
122
|
+
if (!arg)
|
|
123
|
+
return;
|
|
124
|
+
// Skip if already a function or spread element. Skipping arrow
|
|
125
|
+
// and FunctionExpression makes the transform idempotent: running
|
|
126
|
+
// the plugin twice on the same source produces the same output.
|
|
127
|
+
if (arg.type === 'ArrowFunctionExpression' ||
|
|
128
|
+
arg.type === 'FunctionExpression' ||
|
|
129
|
+
arg.type === 'SpreadElement') {
|
|
130
|
+
if (dslKind === 'phaze' && arg.type === 'ArrowFunctionExpression') {
|
|
131
|
+
// `phaze(() => expr)` → `() => expr`. Drops the wrapper —
|
|
132
|
+
// it's a pure compile-time marker once the arrow exists.
|
|
133
|
+
path.replaceWith(arg);
|
|
134
|
+
}
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
// Wrap the argument in `() => arg`.
|
|
138
|
+
const arrow = types.arrowFunctionExpression([], arg);
|
|
139
|
+
if (dslKind === 'phaze') {
|
|
140
|
+
// `phaze(expr)` → `() => expr` (replace the whole call).
|
|
141
|
+
path.replaceWith(arrow);
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
// `c(expr)` → `c(() => expr)`; same for `watch`.
|
|
145
|
+
path.node.arguments[0] = arrow;
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
JSXElement(path, state) {
|
|
43
149
|
const opening = path.node.openingElement;
|
|
150
|
+
rewriteJSXNamespaces(opening, types);
|
|
151
|
+
const ops = extractPostCreationOps(path, types, state);
|
|
44
152
|
if (isComponentJSX(opening.name)) {
|
|
45
153
|
// Component children — wrap unconditionally so the parent
|
|
46
154
|
// controls construction timing (error scopes, etc.).
|
|
@@ -54,6 +162,33 @@ const phazeCompile = (babel) => {
|
|
|
54
162
|
// without the user writing an explicit thunk.
|
|
55
163
|
wrapHostExpressionChildren(path.node, types);
|
|
56
164
|
}
|
|
165
|
+
if (ops.length > 0) {
|
|
166
|
+
// Wrap the JSX in an IIFE that runs each use: / class: / bind:
|
|
167
|
+
// post-creation operation. Replacing the JSXElement here is
|
|
168
|
+
// safe — Babel re-enters the new tree, and the inner JSX no
|
|
169
|
+
// longer carries the stripped attrs so this branch won't fire
|
|
170
|
+
// twice.
|
|
171
|
+
//
|
|
172
|
+
// Position-aware substitution: a bare CallExpression is valid
|
|
173
|
+
// wherever an Expression is, EXCEPT as a JSX child. JSX child
|
|
174
|
+
// positions only accept JSXElement / JSXFragment / JSXText /
|
|
175
|
+
// JSXSpreadChild / JSXExpressionContainer. Emitting
|
|
176
|
+
// `<outer>(__el => …)(<inner/>)</outer>` directly produces
|
|
177
|
+
// invalid JSX that downstream esbuild rejects with "The
|
|
178
|
+
// character '>' is not valid inside a JSX element". When the
|
|
179
|
+
// parent node is a JSXElement or JSXFragment, wrap the IIFE
|
|
180
|
+
// in `{ … }`. Top-level / attribute / non-JSX positions take
|
|
181
|
+
// the bare expression — `path.replaceWith(callExpr)` works as
|
|
182
|
+
// before.
|
|
183
|
+
const iife = buildPostCreationIIFE(path.node, ops, types);
|
|
184
|
+
const parentType = path.parent.type;
|
|
185
|
+
if (parentType === 'JSXElement' || parentType === 'JSXFragment') {
|
|
186
|
+
path.replaceWith(types.jsxExpressionContainer(iife));
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
path.replaceWith(iife);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
57
192
|
},
|
|
58
193
|
JSXFragment(path) {
|
|
59
194
|
// Same expression-children rule for fragments.
|
|
@@ -62,6 +197,271 @@ const phazeCompile = (babel) => {
|
|
|
62
197
|
},
|
|
63
198
|
};
|
|
64
199
|
};
|
|
200
|
+
// Rewrite the in-place Phaze JSX namespaces (`phaze:`, `on:`) on a
|
|
201
|
+
// single opening element. Pure attribute renames + value rewraps —
|
|
202
|
+
// these don't need post-creation code, so they don't participate in
|
|
203
|
+
// the IIFE wrapping pass.
|
|
204
|
+
//
|
|
205
|
+
// `use:`, `class:`, `bind:` are handled by `extractPostCreationOps`
|
|
206
|
+
// because they each need code that runs *after* the element exists.
|
|
207
|
+
const rewriteJSXNamespaces = (opening, types) => {
|
|
208
|
+
for (const attr of opening.attributes) {
|
|
209
|
+
if (attr.type !== 'JSXAttribute')
|
|
210
|
+
continue;
|
|
211
|
+
const name = attr.name;
|
|
212
|
+
if (name.type !== 'JSXNamespacedName')
|
|
213
|
+
continue;
|
|
214
|
+
const ns = name.namespace.name;
|
|
215
|
+
const local = name.name.name;
|
|
216
|
+
if (ns === 'phaze') {
|
|
217
|
+
// phaze:attr={expr} → attr={() => expr}.
|
|
218
|
+
// The runtime detects a function-typed attribute value and sets
|
|
219
|
+
// up a reactive binding. If `expr` is already a function, leave
|
|
220
|
+
// it alone — caller wrote the explicit form.
|
|
221
|
+
attr.name = types.jsxIdentifier(local);
|
|
222
|
+
const val = attr.value;
|
|
223
|
+
if (val && val.type === 'JSXExpressionContainer') {
|
|
224
|
+
const expr = val.expression;
|
|
225
|
+
if (expr.type !== 'JSXEmptyExpression' &&
|
|
226
|
+
expr.type !== 'ArrowFunctionExpression' &&
|
|
227
|
+
expr.type !== 'FunctionExpression') {
|
|
228
|
+
val.expression = types.arrowFunctionExpression([], expr);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
else if (ns === 'on') {
|
|
233
|
+
// on:event={fn} → onEvent={fn} (camelCase). Phaze's JSX runtime
|
|
234
|
+
// already handles the camelCase form via setProp's "on*" branch.
|
|
235
|
+
// Note: kebab-case event names lose hyphens here — see
|
|
236
|
+
// docs/decisions/dsl_directive.md Part 3 for the full caveat.
|
|
237
|
+
// Custom kebab events should go through `use:` directives.
|
|
238
|
+
const camel = 'on' + local.charAt(0).toUpperCase() + local.slice(1);
|
|
239
|
+
attr.name = types.jsxIdentifier(camel);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
};
|
|
243
|
+
// Walk a JSX opening element's attributes once, in source order, and:
|
|
244
|
+
// - `use:NAME={value}` → push a `use` op; strip the attribute.
|
|
245
|
+
// - `class:NAME={expr}` → push a `class` op; strip the attribute.
|
|
246
|
+
// - `bind:value={sig}` → push a `bind` op + emit a signal
|
|
247
|
+
// pass-through `value={sig}` attribute.
|
|
248
|
+
// - `bind:checked={sig}` → same, with `checked={sig}`.
|
|
249
|
+
// - everything else → keep verbatim.
|
|
250
|
+
//
|
|
251
|
+
// Source-order in `ops` matches the user's attribute order so the IIFE
|
|
252
|
+
// emits the post-creation calls in the order the source declares them.
|
|
253
|
+
const extractPostCreationOps = (path, types, state) => {
|
|
254
|
+
const opening = path.node.openingElement;
|
|
255
|
+
const ops = [];
|
|
256
|
+
const kept = [];
|
|
257
|
+
// Pre-scan for the element's tag and static `type` attribute. Used
|
|
258
|
+
// for `bind:`-target validation. A non-string-literal `type` value
|
|
259
|
+
// marks the type as dynamic — in that case we emit the basic
|
|
260
|
+
// transform and skip validation (the user knows what they're doing).
|
|
261
|
+
const tagName = opening.name.type === 'JSXIdentifier' ? opening.name.name : null;
|
|
262
|
+
let staticType = null;
|
|
263
|
+
let typeIsDynamic = false;
|
|
264
|
+
for (const attr of opening.attributes) {
|
|
265
|
+
if (attr.type !== 'JSXAttribute')
|
|
266
|
+
continue;
|
|
267
|
+
if (attr.name.type !== 'JSXIdentifier' || attr.name.name !== 'type')
|
|
268
|
+
continue;
|
|
269
|
+
const v = attr.value;
|
|
270
|
+
if (v && v.type === 'StringLiteral')
|
|
271
|
+
staticType = v.value;
|
|
272
|
+
else if (v && v.type === 'JSXExpressionContainer' && v.expression.type === 'StringLiteral') {
|
|
273
|
+
staticType = v.expression.value;
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
typeIsDynamic = true;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
for (const attr of opening.attributes) {
|
|
280
|
+
if (attr.type !== 'JSXAttribute') {
|
|
281
|
+
kept.push(attr);
|
|
282
|
+
continue;
|
|
283
|
+
}
|
|
284
|
+
const name = attr.name;
|
|
285
|
+
if (name.type !== 'JSXNamespacedName') {
|
|
286
|
+
kept.push(attr);
|
|
287
|
+
continue;
|
|
288
|
+
}
|
|
289
|
+
const ns = name.namespace.name;
|
|
290
|
+
const local = name.name.name;
|
|
291
|
+
if (ns === 'use') {
|
|
292
|
+
const val = attr.value;
|
|
293
|
+
let valueThunk;
|
|
294
|
+
if (val && val.type === 'JSXExpressionContainer') {
|
|
295
|
+
const expr = val.expression;
|
|
296
|
+
if (expr.type === 'JSXEmptyExpression') {
|
|
297
|
+
valueThunk = types.arrowFunctionExpression([], types.booleanLiteral(true));
|
|
298
|
+
}
|
|
299
|
+
else if (expr.type === 'ArrowFunctionExpression' ||
|
|
300
|
+
expr.type === 'FunctionExpression') {
|
|
301
|
+
valueThunk = expr;
|
|
302
|
+
}
|
|
303
|
+
else {
|
|
304
|
+
valueThunk = types.arrowFunctionExpression([], expr);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
else {
|
|
308
|
+
valueThunk = types.arrowFunctionExpression([], types.booleanLiteral(true));
|
|
309
|
+
}
|
|
310
|
+
ops.push({ kind: 'use', name: local, valueThunk });
|
|
311
|
+
continue;
|
|
312
|
+
}
|
|
313
|
+
if (ns === 'class') {
|
|
314
|
+
// class:NAME={expr} → toggle class NAME based on truthiness of expr.
|
|
315
|
+
// Bare `class:NAME` and `class:NAME="…"` (string-literal value)
|
|
316
|
+
// both mean "always on" — JSX semantics for valueless attrs +
|
|
317
|
+
// the spec's explicit treatment of string-literal values.
|
|
318
|
+
const val = attr.value;
|
|
319
|
+
let valueExpr;
|
|
320
|
+
if (!val) {
|
|
321
|
+
valueExpr = types.booleanLiteral(true);
|
|
322
|
+
}
|
|
323
|
+
else if (val.type === 'StringLiteral') {
|
|
324
|
+
valueExpr = types.booleanLiteral(true);
|
|
325
|
+
}
|
|
326
|
+
else if (val.type === 'JSXExpressionContainer') {
|
|
327
|
+
const expr = val.expression;
|
|
328
|
+
valueExpr = expr.type === 'JSXEmptyExpression'
|
|
329
|
+
? types.booleanLiteral(true)
|
|
330
|
+
: expr;
|
|
331
|
+
}
|
|
332
|
+
else {
|
|
333
|
+
valueExpr = types.booleanLiteral(true);
|
|
334
|
+
}
|
|
335
|
+
ops.push({ kind: 'class', className: local, valueExpr });
|
|
336
|
+
state.needsRuntimeImport.add('effect');
|
|
337
|
+
continue;
|
|
338
|
+
}
|
|
339
|
+
if (ns === 'bind') {
|
|
340
|
+
// Minimal-scope two-way binding: bind:value (text-like inputs,
|
|
341
|
+
// textarea) and bind:checked (checkboxes). Anything else is a
|
|
342
|
+
// compile error pointing at the manual form.
|
|
343
|
+
if (local !== 'value' && local !== 'checked') {
|
|
344
|
+
throw path.buildCodeFrameError(`bind:${local} is not supported. Phaze's bind: namespace handles ` +
|
|
345
|
+
`bind:value (text inputs, textarea) and bind:checked (checkboxes) ` +
|
|
346
|
+
`only. Use the manual form for other cases: ` +
|
|
347
|
+
`value={signal} on:input={(e) => signal.set(e.currentTarget.value)} ` +
|
|
348
|
+
`or similar.`);
|
|
349
|
+
}
|
|
350
|
+
const val = attr.value;
|
|
351
|
+
if (!val ||
|
|
352
|
+
val.type !== 'JSXExpressionContainer' ||
|
|
353
|
+
val.expression.type === 'JSXEmptyExpression') {
|
|
354
|
+
throw path.buildCodeFrameError(`bind:${local} requires a signal as its value (e.g. bind:${local}={mySignal}).`);
|
|
355
|
+
}
|
|
356
|
+
const signalExpr = val.expression;
|
|
357
|
+
if (local === 'value') {
|
|
358
|
+
// Element must be <input> with a text-like / unspecified /
|
|
359
|
+
// dynamic type, or <textarea>.
|
|
360
|
+
if (tagName === 'select') {
|
|
361
|
+
throw path.buildCodeFrameError(`bind:value on <select> is not supported. Use the manual form:\n` +
|
|
362
|
+
` <select value={signal} on:change={(e) => signal.set(e.currentTarget.value)}>`);
|
|
363
|
+
}
|
|
364
|
+
if (tagName !== 'input' && tagName !== 'textarea') {
|
|
365
|
+
throw path.buildCodeFrameError(`bind:value is only supported on <input> (text-like types) and ` +
|
|
366
|
+
`<textarea>. For <${tagName ?? 'unknown'}>, use the manual form: ` +
|
|
367
|
+
`value={signal} on:input={(e) => signal.set(e.currentTarget.value)}.`);
|
|
368
|
+
}
|
|
369
|
+
if (tagName === 'input' && !typeIsDynamic) {
|
|
370
|
+
const TEXT_LIKE = new Set([
|
|
371
|
+
null, '', 'text', 'email', 'password', 'search', 'url', 'tel',
|
|
372
|
+
]);
|
|
373
|
+
if (!TEXT_LIKE.has(staticType)) {
|
|
374
|
+
const hint = staticType === 'number'
|
|
375
|
+
? '+e.currentTarget.value'
|
|
376
|
+
: staticType === 'date'
|
|
377
|
+
? 'new Date(e.currentTarget.value)'
|
|
378
|
+
: 'e.currentTarget.value';
|
|
379
|
+
throw path.buildCodeFrameError(`bind:value on <input type="${staticType}"> is not supported. ` +
|
|
380
|
+
`Use the manual form with explicit coercion:\n` +
|
|
381
|
+
` <input type="${staticType}" value={signal} ` +
|
|
382
|
+
`on:input={(e) => signal.set(${hint})} />`);
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
else {
|
|
387
|
+
// bind:checked: <input type="checkbox"> only (static type).
|
|
388
|
+
// Dynamic type → emit the basic transform; trust the user.
|
|
389
|
+
if (tagName !== 'input') {
|
|
390
|
+
throw path.buildCodeFrameError(`bind:checked is only supported on <input type="checkbox">. ` +
|
|
391
|
+
`For <${tagName ?? 'unknown'}>, use the manual form: ` +
|
|
392
|
+
`checked={signal} on:change={(e) => signal.set(e.currentTarget.checked)}.`);
|
|
393
|
+
}
|
|
394
|
+
if (!typeIsDynamic && staticType !== 'checkbox') {
|
|
395
|
+
throw path.buildCodeFrameError(`bind:checked is only supported on <input type="checkbox"> ` +
|
|
396
|
+
`(got type="${staticType ?? '(none)'}"). Use the manual form: ` +
|
|
397
|
+
`checked={signal} on:change={(e) => signal.set(e.currentTarget.checked)}.`);
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
// Emit signal pass-through as a regular attribute. Phaze's JSX
|
|
401
|
+
// runtime detects callable attr values (signals are callable) and
|
|
402
|
+
// sets up a reactive binding — same fast path as `value={signal}`
|
|
403
|
+
// written by hand. Placed back in kept[] in source-order position.
|
|
404
|
+
kept.push(types.jsxAttribute(types.jsxIdentifier(local), types.jsxExpressionContainer(signalExpr)));
|
|
405
|
+
const event = local === 'checked' ? 'change' : 'input';
|
|
406
|
+
ops.push({ kind: 'bind', event, dotProp: local, signalExpr });
|
|
407
|
+
state.needsRuntimeImport.add('listen');
|
|
408
|
+
continue;
|
|
409
|
+
}
|
|
410
|
+
// Unrecognized namespace (e.g. SVG xlink:href) — leave alone.
|
|
411
|
+
kept.push(attr);
|
|
412
|
+
}
|
|
413
|
+
opening.attributes = kept;
|
|
414
|
+
return ops;
|
|
415
|
+
};
|
|
416
|
+
// Build the IIFE that wraps a JSX element + applies its post-creation
|
|
417
|
+
// operations after the element exists. Each op emits one expression in
|
|
418
|
+
// a comma-sequence; the final expression is `__el` so the IIFE returns
|
|
419
|
+
// the element unchanged.
|
|
420
|
+
//
|
|
421
|
+
// Output shape (single use: directive):
|
|
422
|
+
// ((__el) => (autofocus(__el, () => true), __el))(<input />)
|
|
423
|
+
//
|
|
424
|
+
// Output shape (mixed use: + class: + bind:):
|
|
425
|
+
// ((__el) => (
|
|
426
|
+
// autofocus(__el, () => true),
|
|
427
|
+
// effect(() => __el.classList.toggle('invalid', !valid())),
|
|
428
|
+
// listen(__el, 'input', (e) => text.set(e.currentTarget.value)),
|
|
429
|
+
// __el
|
|
430
|
+
// ))(<input value={text} />)
|
|
431
|
+
const buildPostCreationIIFE = (jsx, ops, types) => {
|
|
432
|
+
const elId = types.identifier('__el');
|
|
433
|
+
const exprs = ops.map((op) => {
|
|
434
|
+
if (op.kind === 'use') {
|
|
435
|
+
return types.callExpression(types.identifier(op.name), [elId, op.valueThunk]);
|
|
436
|
+
}
|
|
437
|
+
if (op.kind === 'class') {
|
|
438
|
+
// effect(() => __el.classList.toggle('NAME', !!valueExpr))
|
|
439
|
+
// Skip the `!!` coercion when valueExpr is already a BooleanLiteral
|
|
440
|
+
// — `!!true` and `!!false` are pointless in emitted code.
|
|
441
|
+
const coerced = op.valueExpr.type === 'BooleanLiteral'
|
|
442
|
+
? op.valueExpr
|
|
443
|
+
: types.unaryExpression('!', types.unaryExpression('!', op.valueExpr));
|
|
444
|
+
const toggle = types.callExpression(types.memberExpression(types.memberExpression(elId, types.identifier('classList')), types.identifier('toggle')), [types.stringLiteral(op.className), coerced]);
|
|
445
|
+
const arrow = types.arrowFunctionExpression([], toggle);
|
|
446
|
+
return types.callExpression(types.identifier('effect'), [arrow]);
|
|
447
|
+
}
|
|
448
|
+
// op.kind === 'bind'
|
|
449
|
+
// listen(__el, 'EVENT', (e) => signal.set(e.currentTarget.PROP))
|
|
450
|
+
const eParam = types.identifier('e');
|
|
451
|
+
const access = types.memberExpression(types.memberExpression(eParam, types.identifier('currentTarget')), types.identifier(op.dotProp));
|
|
452
|
+
const setCall = types.callExpression(types.memberExpression(op.signalExpr, types.identifier('set')), [access]);
|
|
453
|
+
const handler = types.arrowFunctionExpression([eParam], setCall);
|
|
454
|
+
return types.callExpression(types.identifier('listen'), [
|
|
455
|
+
elId,
|
|
456
|
+
types.stringLiteral(op.event),
|
|
457
|
+
handler,
|
|
458
|
+
]);
|
|
459
|
+
});
|
|
460
|
+
exprs.push(elId);
|
|
461
|
+
const body = exprs.length === 1 ? exprs[0] : types.sequenceExpression(exprs);
|
|
462
|
+
const arrow = types.arrowFunctionExpression([elId], body);
|
|
463
|
+
return types.callExpression(arrow, [jsx]);
|
|
464
|
+
};
|
|
65
465
|
const isComponentJSX = (name) => {
|
|
66
466
|
if (name.type === 'JSXIdentifier') {
|
|
67
467
|
// Capitalized identifier = component. (Lowercase = HTML host element.)
|
|
@@ -174,8 +574,36 @@ const shouldWrapExpression = (expr) => {
|
|
|
174
574
|
return true;
|
|
175
575
|
if (expr.type === 'JSXElement' || expr.type === 'JSXFragment')
|
|
176
576
|
return true;
|
|
577
|
+
// Our own use:/class:/bind: post-creation IIFE — `(__el => (…))(jsx)`
|
|
578
|
+
// — is a CallExpression containing JSX as its call argument. The IIFE
|
|
579
|
+
// returns a Node eagerly when invoked, so the value flowing into the
|
|
580
|
+
// outer JSX child position is already a constructed Node. Wrapping it
|
|
581
|
+
// in `() =>` would route it through appendDynamicChild's untrack-
|
|
582
|
+
// then-effect path, which calls the thunk twice. Both calls would
|
|
583
|
+
// re-evaluate the inner JSX AND re-run the directives (parallax,
|
|
584
|
+
// warp, etc.), orphaning one mount with active bindings and leaving
|
|
585
|
+
// the visible element competing with the orphan's scroll/spring
|
|
586
|
+
// subscriptions — observable as inverted parallax direction, double
|
|
587
|
+
// listeners, and elements appearing where they shouldn't.
|
|
588
|
+
//
|
|
589
|
+
// The check is signature-specific: callee is an ArrowFunctionExpression
|
|
590
|
+
// taking exactly `__el` as its parameter. That matches every IIFE
|
|
591
|
+
// emitted by buildPostCreationIIFE and nothing user-written.
|
|
592
|
+
if (isUseDirectiveIIFE(expr))
|
|
593
|
+
return false;
|
|
177
594
|
return containsJSX(expr);
|
|
178
595
|
};
|
|
596
|
+
const isUseDirectiveIIFE = (expr) => {
|
|
597
|
+
if (expr.type !== 'CallExpression')
|
|
598
|
+
return false;
|
|
599
|
+
const callee = expr.callee;
|
|
600
|
+
if (callee.type !== 'ArrowFunctionExpression')
|
|
601
|
+
return false;
|
|
602
|
+
if (callee.params.length !== 1)
|
|
603
|
+
return false;
|
|
604
|
+
const p = callee.params[0];
|
|
605
|
+
return p?.type === 'Identifier' && p.name === '__el';
|
|
606
|
+
};
|
|
179
607
|
const containsJSX = (node) => {
|
|
180
608
|
if (!node || typeof node !== 'object')
|
|
181
609
|
return false;
|
package/dist/babel-plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"babel-plugin.js","sourceRoot":"","sources":["../src/babel-plugin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"babel-plugin.js","sourceRoot":"","sources":["../src/babel-plugin.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,uEAAuE;AACvE,kEAAkE;AAClE,qEAAqE;AACrE,wEAAwE;AACxE,mEAAmE;AACnE,4BAA4B;AAC5B,EAAE;AACF,2DAA2D;AAC3D,EAAE;AACF,kCAAkC;AAClC,EAAE;AACF,qEAAqE;AACrE,kDAAkD;AAClD,EAAE;AACF,0BAA0B;AAC1B,MAAM;AACN,kCAAkC;AAClC,EAAE;AACF,sEAAsE;AACtE,EAAE;AACF,6CAA6C;AAC7C,uDAAuD;AACvD,uEAAuE;AACvE,2BAA2B;AAC3B,EAAE;AACF,wEAAwE;AACxE,mEAAmE;AACnE,EAAE;AACF,qEAAqE;AACrE,yEAAyE;AACzE,8BAA8B;AAI9B,8DAA8D;AAC9D,OAAO,SAAS,MAAM,0BAA0B,CAAA;AAmBhD,MAAM,UAAU,GAAG,wBAAwB,CAAA;AAE3C,MAAM,YAAY,GAAG,CAAC,KAAY,EAAuB,EAAE;IACzD,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;IAEvB,OAAO;QACL,IAAI,EAAE,4BAA4B;QAClC,QAAQ,EAAE,SAAS,CAAC,OAAO,IAAI,SAAS;QACxC,OAAO,EAAE;YACP,OAAO,EAAE;gBACP,KAAK,CAAC,KAAK,EAAE,KAAK;oBAChB,8DAA8D;oBAC9D,+DAA+D;oBAC/D,sCAAsC;oBACtC,KAAK,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE,CAAA;oBAC3B,KAAK,CAAC,kBAAkB,GAAG,IAAI,GAAG,EAAE,CAAA;gBACtC,CAAC;gBACD,IAAI,CAAC,IAAI,EAAE,KAAK;oBACd,8DAA8D;oBAC9D,+DAA+D;oBAC/D,gEAAgE;oBAChE,gEAAgE;oBAChE,2DAA2D;oBAC3D,mDAAmD;oBACnD,EAAE;oBACF,+DAA+D;oBAC/D,gEAAgE;oBAChE,YAAY;oBACZ,MAAM,IAAI,GAAG,KAAK,CAAC,kBAAkB,CAAA;oBACrC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;wBAAE,OAAM;oBACpC,MAAM,KAAK,GAAG,oBAAoB,CAAA;oBAClC,IAAI,QAAQ,GAA+B,IAAI,CAAA;oBAC/C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;wBAClC,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;4BACrE,QAAQ,GAAG,IAAI,CAAA;4BACf,MAAK;wBACP,CAAC;oBACH,CAAC;oBACD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAA;oBACjC,IAAI,QAAQ,EAAE,CAAC;wBACb,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;4BACvC,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gCAC3E,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;4BACjC,CAAC;wBACH,CAAC;oBACH,CAAC;oBACD,MAAM,KAAK,GAAa,EAAE,CAAA;oBAC1B,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;wBACxB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;4BAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBAC1C,CAAC;oBACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;wBAAE,OAAM;oBAC9B,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAClC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CACtE,CAAA;oBACD,IAAI,QAAQ,EAAE,CAAC;wBACb,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAA;oBACvC,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CACpB,KAAK,CAAC,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAC9D,CAAA;oBACH,CAAC;gBACH,CAAC;aACF;YACD,iBAAiB,CAAC,IAAI,EAAE,KAAK;gBAC3B,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,UAAU;oBAAE,OAAM;gBACjD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;oBACxC,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB;wBAAE,SAAQ;oBAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY;wBAClD,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI;wBACpB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAA;oBACvB,IAAI,QAAQ,KAAK,GAAG,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;wBACzF,KAAK,CAAC,SAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;oBACjD,CAAC;gBACH,CAAC;YACH,CAAC;YACD,cAAc,CAAC,IAAI,EAAE,KAAK;gBACxB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAA;gBAC/B,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY;oBAAE,OAAM;gBACxC,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;gBACjD,IAAI,CAAC,OAAO;oBAAE,OAAM;gBAEpB,yDAAyD;gBACzD,IAAI,OAAO,KAAK,GAAG;oBAAE,OAAM;gBAE3B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;gBAClC,IAAI,CAAC,GAAG;oBAAE,OAAM;gBAEhB,+DAA+D;gBAC/D,iEAAiE;gBACjE,gEAAgE;gBAChE,IACE,GAAG,CAAC,IAAI,KAAK,yBAAyB;oBACtC,GAAG,CAAC,IAAI,KAAK,oBAAoB;oBACjC,GAAG,CAAC,IAAI,KAAK,eAAe,EAC5B,CAAC;oBACD,IAAI,OAAO,KAAK,OAAO,IAAI,GAAG,CAAC,IAAI,KAAK,yBAAyB,EAAE,CAAC;wBAClE,0DAA0D;wBAC1D,yDAAyD;wBACzD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;oBACvB,CAAC;oBACD,OAAM;gBACR,CAAC;gBAED,oCAAoC;gBACpC,MAAM,KAAK,GAAG,KAAK,CAAC,uBAAuB,CAAC,EAAE,EAAE,GAAmB,CAAC,CAAA;gBACpE,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;oBACxB,yDAAyD;oBACzD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;gBACzB,CAAC;qBAAM,CAAC;oBACN,iDAAiD;oBACjD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;gBAChC,CAAC;YACH,CAAC;YACD,UAAU,CAAC,IAAI,EAAE,KAAK;gBACpB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAA;gBACxC,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;gBACpC,MAAM,GAAG,GAAG,sBAAsB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;gBACtD,IAAI,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;oBACjC,0DAA0D;oBAC1D,qDAAqD;oBACrD,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;oBACjC,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;gBACpC,CAAC;qBAAM,CAAC;oBACN,sDAAsD;oBACtD,0DAA0D;oBAC1D,2DAA2D;oBAC3D,8CAA8C;oBAC9C,0BAA0B,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;gBAC9C,CAAC;gBACD,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACnB,+DAA+D;oBAC/D,4DAA4D;oBAC5D,4DAA4D;oBAC5D,8DAA8D;oBAC9D,SAAS;oBACT,EAAE;oBACF,8DAA8D;oBAC9D,8DAA8D;oBAC9D,6DAA6D;oBAC7D,oDAAoD;oBACpD,2DAA2D;oBAC3D,wDAAwD;oBACxD,6DAA6D;oBAC7D,4DAA4D;oBAC5D,6DAA6D;oBAC7D,8DAA8D;oBAC9D,UAAU;oBACV,MAAM,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;oBACzD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA;oBACnC,IAAI,UAAU,KAAK,YAAY,IAAI,UAAU,KAAK,aAAa,EAAE,CAAC;wBAChE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAA;oBACtD,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;oBACxB,CAAC;gBACH,CAAC;YACH,CAAC;YACD,WAAW,CAAC,IAAI;gBACd,+CAA+C;gBAC/C,0BAA0B,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YAC9C,CAAC;SACF;KACF,CAAA;AACH,CAAC,CAAA;AAED,mEAAmE;AACnE,mEAAmE;AACnE,oEAAoE;AACpE,0BAA0B;AAC1B,EAAE;AACF,oEAAoE;AACpE,oEAAoE;AACpE,MAAM,oBAAoB,GAAG,CAC3B,OAA4B,EAC5B,KAAe,EACT,EAAE;IACR,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc;YAAE,SAAQ;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACtB,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB;YAAE,SAAQ;QAE/C,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAA;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;QAE5B,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;YACnB,yCAAyC;YACzC,gEAAgE;YAChE,gEAAgE;YAChE,6CAA6C;YAC7C,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;YACtC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAA;YACtB,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;gBACjD,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAA;gBAC3B,IACE,IAAI,CAAC,IAAI,KAAK,oBAAoB;oBAClC,IAAI,CAAC,IAAI,KAAK,yBAAyB;oBACvC,IAAI,CAAC,IAAI,KAAK,oBAAoB,EAClC,CAAC;oBACD,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,uBAAuB,CAAC,EAAE,EAAE,IAAoB,CAAC,CAAA;gBAC1E,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YACvB,gEAAgE;YAChE,iEAAiE;YACjE,uDAAuD;YACvD,8DAA8D;YAC9D,2DAA2D;YAC3D,MAAM,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YACnE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QACxC,CAAC;IACH,CAAC;AACH,CAAC,CAAA;AAWD,sEAAsE;AACtE,mEAAmE;AACnE,qEAAqE;AACrE,8DAA8D;AAC9D,mEAAmE;AACnE,yDAAyD;AACzD,4CAA4C;AAC5C,EAAE;AACF,uEAAuE;AACvE,uEAAuE;AACvE,MAAM,sBAAsB,GAAG,CAC7B,IAA4B,EAC5B,KAAe,EACf,KAAe,EACL,EAAE;IACZ,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAA;IACxC,MAAM,GAAG,GAAa,EAAE,CAAA;IACxB,MAAM,IAAI,GAAsC,EAAE,CAAA;IAElD,mEAAmE;IACnE,mEAAmE;IACnE,6DAA6D;IAC7D,qEAAqE;IACrE,MAAM,OAAO,GACX,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;IAClE,IAAI,UAAU,GAAkB,IAAI,CAAA;IACpC,IAAI,aAAa,GAAG,KAAK,CAAA;IACzB,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc;YAAE,SAAQ;QAC1C,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,eAAe,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM;YAAE,SAAQ;QAC7E,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAA;QACpB,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,eAAe;YAAE,UAAU,GAAG,CAAC,CAAC,KAAK,CAAA;aACpD,IACH,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,wBAAwB,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,eAAe,EACjF,CAAC;YACD,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,CAAA;QACjC,CAAC;aAAM,CAAC;YACN,aAAa,GAAG,IAAI,CAAA;QACtB,CAAC;IACH,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACf,SAAQ;QACV,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACtB,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACf,SAAQ;QACV,CAAC;QACD,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAA;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;QAE5B,IAAI,EAAE,KAAK,KAAK,EAAE,CAAC;YACjB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAA;YACtB,IAAI,UAAwB,CAAA;YAC5B,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;gBACjD,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAA;gBAC3B,IAAI,IAAI,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;oBACvC,UAAU,GAAG,KAAK,CAAC,uBAAuB,CAAC,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAA;gBAC5E,CAAC;qBAAM,IACL,IAAI,CAAC,IAAI,KAAK,yBAAyB;oBACvC,IAAI,CAAC,IAAI,KAAK,oBAAoB,EAClC,CAAC;oBACD,UAAU,GAAG,IAAoB,CAAA;gBACnC,CAAC;qBAAM,CAAC;oBACN,UAAU,GAAG,KAAK,CAAC,uBAAuB,CAAC,EAAE,EAAE,IAAoB,CAAC,CAAA;gBACtE,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,UAAU,GAAG,KAAK,CAAC,uBAAuB,CAAC,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAA;YAC5E,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAA;YAClD,SAAQ;QACV,CAAC;QAED,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;YACnB,qEAAqE;YACrE,gEAAgE;YAChE,8DAA8D;YAC9D,0DAA0D;YAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAA;YACtB,IAAI,SAAuB,CAAA;YAC3B,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,SAAS,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;YACxC,CAAC;iBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBACxC,SAAS,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;YACxC,CAAC;iBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;gBACjD,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAA;gBAC3B,SAAS,GAAG,IAAI,CAAC,IAAI,KAAK,oBAAoB;oBAC5C,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC;oBAC5B,CAAC,CAAE,IAAqB,CAAA;YAC5B,CAAC;iBAAM,CAAC;gBACN,SAAS,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;YACxC,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;YACxD,KAAK,CAAC,kBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YACvC,SAAQ;QACV,CAAC;QAED,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;YAClB,+DAA+D;YAC/D,8DAA8D;YAC9D,6CAA6C;YAC7C,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC7C,MAAM,IAAI,CAAC,mBAAmB,CAC5B,QAAQ,KAAK,qDAAqD;oBAClE,mEAAmE;oBACnE,6CAA6C;oBAC7C,qEAAqE;oBACrE,aAAa,CACd,CAAA;YACH,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAA;YACtB,IACE,CAAC,GAAG;gBACJ,GAAG,CAAC,IAAI,KAAK,wBAAwB;gBACrC,GAAG,CAAC,UAAU,CAAC,IAAI,KAAK,oBAAoB,EAC5C,CAAC;gBACD,MAAM,IAAI,CAAC,mBAAmB,CAC5B,QAAQ,KAAK,8CAA8C,KAAK,eAAe,CAChF,CAAA;YACH,CAAC;YACD,MAAM,UAAU,GAAG,GAAG,CAAC,UAA0B,CAAA;YAEjD,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;gBACtB,2DAA2D;gBAC3D,+BAA+B;gBAC/B,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;oBACzB,MAAM,IAAI,CAAC,mBAAmB,CAC5B,iEAAiE;wBACjE,gFAAgF,CACjF,CAAA;gBACH,CAAC;gBACD,IAAI,OAAO,KAAK,OAAO,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;oBAClD,MAAM,IAAI,CAAC,mBAAmB,CAC5B,gEAAgE;wBAChE,oBAAoB,OAAO,IAAI,SAAS,0BAA0B;wBAClE,qEAAqE,CACtE,CAAA;gBACH,CAAC;gBACD,IAAI,OAAO,KAAK,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;oBAC1C,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;wBACxB,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK;qBAC9D,CAAC,CAAA;oBACF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;wBAC/B,MAAM,IAAI,GAAG,UAAU,KAAK,QAAQ;4BAClC,CAAC,CAAC,wBAAwB;4BAC1B,CAAC,CAAC,UAAU,KAAK,MAAM;gCACrB,CAAC,CAAC,iCAAiC;gCACnC,CAAC,CAAC,uBAAuB,CAAA;wBAC7B,MAAM,IAAI,CAAC,mBAAmB,CAC5B,8BAA8B,UAAU,uBAAuB;4BAC/D,+CAA+C;4BAC/C,kBAAkB,UAAU,mBAAmB;4BAC/C,+BAA+B,IAAI,OAAO,CAC3C,CAAA;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,4DAA4D;gBAC5D,2DAA2D;gBAC3D,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;oBACxB,MAAM,IAAI,CAAC,mBAAmB,CAC5B,6DAA6D;wBAC7D,QAAQ,OAAO,IAAI,SAAS,0BAA0B;wBACtD,0EAA0E,CAC3E,CAAA;gBACH,CAAC;gBACD,IAAI,CAAC,aAAa,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;oBAChD,MAAM,IAAI,CAAC,mBAAmB,CAC5B,4DAA4D;wBAC5D,cAAc,UAAU,IAAI,QAAQ,2BAA2B;wBAC/D,0EAA0E,CAC3E,CAAA;gBACH,CAAC;YACH,CAAC;YAED,+DAA+D;YAC/D,kEAAkE;YAClE,kEAAkE;YAClE,mEAAmE;YACnE,IAAI,CAAC,IAAI,CACP,KAAK,CAAC,YAAY,CAChB,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,EAC1B,KAAK,CAAC,sBAAsB,CAAC,UAAU,CAAC,CACzC,CACF,CAAA;YACD,MAAM,KAAK,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAA;YACtD,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAA;YAC7D,KAAK,CAAC,kBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YACvC,SAAQ;QACV,CAAC;QAED,8DAA8D;QAC9D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACjB,CAAC;IAED,OAAO,CAAC,UAAU,GAAG,IAAI,CAAA;IACzB,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAED,sEAAsE;AACtE,uEAAuE;AACvE,uEAAuE;AACvE,yBAAyB;AACzB,EAAE;AACF,wCAAwC;AACxC,+DAA+D;AAC/D,EAAE;AACF,8CAA8C;AAC9C,iBAAiB;AACjB,mCAAmC;AACnC,gEAAgE;AAChE,qEAAqE;AACrE,WAAW;AACX,+BAA+B;AAC/B,MAAM,qBAAqB,GAAG,CAC5B,GAAiB,EACjB,GAAa,EACb,KAAe,EACG,EAAE;IACpB,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IACrC,MAAM,KAAK,GAAmB,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;QAC3C,IAAI,EAAE,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;QAC/E,CAAC;QACD,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACxB,2DAA2D;YAC3D,oEAAoE;YACpE,0DAA0D;YAC1D,MAAM,OAAO,GACX,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,gBAAgB;gBACpC,CAAC,CAAC,EAAE,CAAC,SAAS;gBACd,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;YAC1E,MAAM,MAAM,GAAG,KAAK,CAAC,cAAc,CACjC,KAAK,CAAC,gBAAgB,CACpB,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAC3D,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAC3B,EACD,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAC7C,CAAA;YACD,MAAM,KAAK,GAAG,KAAK,CAAC,uBAAuB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;YACvD,OAAO,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;QAClE,CAAC;QACD,qBAAqB;QACrB,iEAAiE;QACjE,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;QACpC,MAAM,MAAM,GAAG,KAAK,CAAC,gBAAgB,CACnC,KAAK,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,EACjE,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,CAC7B,CAAA;QACD,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,CAClC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAC9D,CAAC,MAAM,CAAC,CACT,CAAA;QACD,MAAM,OAAO,GAAG,KAAK,CAAC,uBAAuB,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAA;QAChE,OAAO,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;YACtD,IAAI;YACJ,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC;YAC7B,OAAO;SACR,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IACF,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAChB,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAA;IAC7E,MAAM,KAAK,GAAG,KAAK,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAA;IACzD,OAAO,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;AAC3C,CAAC,CAAA;AAED,MAAM,cAAc,GAAG,CACrB,IAAmE,EAC1D,EAAE;IACX,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QAClC,uEAAuE;QACvE,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACjC,CAAC;IACD,gEAAgE;IAChE,OAAO,IAAI,CAAC,IAAI,KAAK,qBAAqB,CAAA;AAC5C,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,CACtB,EAAgB,EAChB,KAAe,EACT,EAAE;IACR,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAA;IAC5B,+DAA+D;IAC/D,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE;QAC/C,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,OAAO,KAAK,CAAA;QAC/D,OAAO,IAAI,CAAA;IACb,CAAC,CAAC,CAAA;IACF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAEnC,iEAAiE;IACjE,uDAAuD;IACvD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAE,CAAA;QAC3B,IAAI,IAAI,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;YAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAA;YAC5B,IACE,IAAI,CAAC,IAAI,KAAK,yBAAyB;gBACvC,IAAI,CAAC,IAAI,KAAK,oBAAoB,EAClC,CAAC;gBACD,OAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,4CAA4C;IAC5C,4DAA4D;IAC5D,mDAAmD;IACnD,IAAI,IAAkB,CAAA;IACtB,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAE,CAAA;QAC3B,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YAC9D,IAAI,GAAG,IAAI,CAAA;QACb,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;YAClD,oDAAoD;YACpD,IAAI,GAAG,IAAI,CAAC,UAA0B,CAAA;QACxC,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACnC,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACxC,CAAC;aAAM,CAAC;YACN,4CAA4C;YAC5C,IAAI,GAAG,KAAK,CAAC,WAAW,CACtB,KAAK,CAAC,kBAAkB,EAAE,EAC1B,KAAK,CAAC,kBAAkB,EAAE,EAC1B,QAAQ,CACT,CAAA;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,KAAK,CAAC,WAAW,CACtB,KAAK,CAAC,kBAAkB,EAAE,EAC1B,KAAK,CAAC,kBAAkB,EAAE,EAC1B,QAAQ,CACT,CAAA;IACH,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,uBAAuB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;IACrD,EAAE,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAA;AACrD,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAG,CACzB,OAA4B,EAC5B,KAAe,EACT,EAAE;IACR,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc;YAAE,SAAQ;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAA;QACtB,IAAI,CAAC,GAAG;YAAE,SAAQ;QAElB,IAAI,GAAG,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAA;YAC3B,mEAAmE;YACnE,oBAAoB;YACpB,IAAI,IAAI,CAAC,IAAI,KAAK,oBAAoB;gBAAE,SAAQ;YAChD,qCAAqC;YACrC,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;gBAC9D,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,uBAAuB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;YAC1D,CAAC;QACH,CAAC;QACD,oEAAoE;IACtE,CAAC;AACH,CAAC,CAAA;AAED,sEAAsE;AACtE,oCAAoC;AACpC,mDAAmD;AACnD,8CAA8C;AAC9C,yCAAyC;AACzC,iDAAiD;AACjD,EAAE;AACF,+DAA+D;AAC/D,gEAAgE;AAChE,uEAAuE;AACvE,MAAM,0BAA0B,GAAG,CACjC,EAAgC,EAChC,KAAe,EACT,EAAE;IACR,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC;QAChC,IAAI,KAAK,CAAC,IAAI,KAAK,wBAAwB;YAAE,SAAQ;QACrD,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAA;QAC7B,IAAI,IAAI,CAAC,IAAI,KAAK,oBAAoB;YAAE,SAAQ;QAChD,oDAAoD;QACpD,IACE,IAAI,CAAC,IAAI,KAAK,yBAAyB;YACvC,IAAI,CAAC,IAAI,KAAK,oBAAoB,EAClC,CAAC;YACD,SAAQ;QACV,CAAC;QACD,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,uBAAuB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QAC5D,CAAC;IACH,CAAC;AACH,CAAC,CAAA;AAED,MAAM,oBAAoB,GAAG,CAAC,IAAkB,EAAW,EAAE;IAC3D,IAAI,IAAI,CAAC,IAAI,KAAK,uBAAuB;QAAE,OAAO,IAAI,CAAA;IACtD,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB;QAAE,OAAO,IAAI,CAAA;IAClD,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa;QAAE,OAAO,IAAI,CAAA;IAC1E,sEAAsE;IACtE,sEAAsE;IACtE,qEAAqE;IACrE,sEAAsE;IACtE,kEAAkE;IAClE,kEAAkE;IAClE,iEAAiE;IACjE,oEAAoE;IACpE,gEAAgE;IAChE,oEAAoE;IACpE,0DAA0D;IAC1D,EAAE;IACF,wEAAwE;IACxE,kEAAkE;IAClE,6DAA6D;IAC7D,IAAI,kBAAkB,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAA;IAC1C,OAAO,WAAW,CAAC,IAAI,CAAC,CAAA;AAC1B,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAG,CAAC,IAAkB,EAAW,EAAE;IACzD,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB;QAAE,OAAO,KAAK,CAAA;IAChD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IAC1B,IAAI,MAAM,CAAC,IAAI,KAAK,yBAAyB;QAAE,OAAO,KAAK,CAAA;IAC3D,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAC5C,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAC1B,OAAO,CAAC,EAAE,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAA;AACtD,CAAC,CAAA;AAED,MAAM,WAAW,GAAG,CAAC,IAAa,EAAW,EAAE;IAC7C,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IACnD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,KAAK,MAAM,CAAC,IAAI,IAAI;YAAE,IAAI,WAAW,CAAC,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAA;QACrD,OAAO,KAAK,CAAA;IACd,CAAC;IACD,MAAM,CAAC,GAAG,IAA+C,CAAA;IACzD,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa;QAAE,OAAO,IAAI,CAAA;IACpE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAQ;QACtF,IAAI,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAAE,OAAO,IAAI,CAAA;IACtC,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,eAAe,YAAY,CAAA"}
|
package/package.json
CHANGED