@fluixi/compiler 1.0.0-alpha.75 → 1.0.0-alpha.77

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 (73) hide show
  1. package/README.md +38 -2
  2. package/dist/analyze/intrinsics.cjs +1 -0
  3. package/dist/analyze/intrinsics.d.ts +67 -0
  4. package/dist/analyze/intrinsics.d.ts.map +1 -0
  5. package/dist/analyze/intrinsics.js +91 -0
  6. package/dist/analyze/intrinsics.mjs +1 -0
  7. package/dist/analyze/props-destructure.cjs +1 -0
  8. package/dist/analyze/props-destructure.d.ts +84 -0
  9. package/dist/analyze/props-destructure.d.ts.map +1 -0
  10. package/dist/analyze/props-destructure.js +272 -0
  11. package/dist/analyze/props-destructure.mjs +1 -0
  12. package/dist/analyze/reactive-bindings.cjs +1 -0
  13. package/dist/analyze/reactive-bindings.d.ts +43 -0
  14. package/dist/analyze/reactive-bindings.d.ts.map +1 -0
  15. package/dist/analyze/reactive-bindings.js +191 -0
  16. package/dist/analyze/reactive-bindings.mjs +1 -0
  17. package/dist/{babel-GXO3KAVI.mjs → babel-YQ42WUS3.mjs} +1 -1
  18. package/dist/chunk-545LMC5W.mjs +1 -0
  19. package/dist/{chunk-TIE4XNAM.mjs → chunk-L2QPV25P.mjs} +1 -1
  20. package/dist/frontend/babel/build-ir-lit.cjs +1 -1
  21. package/dist/frontend/babel/build-ir-lit.mjs +1 -1
  22. package/dist/frontend/babel/build-ir.cjs +1 -1
  23. package/dist/frontend/babel/build-ir.mjs +1 -1
  24. package/dist/frontend/babel/index.cjs +1 -1
  25. package/dist/frontend/babel/index.mjs +1 -1
  26. package/dist/frontend/babel/lower-template.cjs +1 -1
  27. package/dist/frontend/babel/lower-template.mjs +1 -1
  28. package/dist/frontend/babel/plugin.cjs +1 -1
  29. package/dist/frontend/babel/plugin.mjs +1 -1
  30. package/dist/index.cjs +8 -8
  31. package/dist/index.mjs +9 -9
  32. package/dist/integrations.cjs +19 -14
  33. package/dist/integrations.d.ts +13 -0
  34. package/dist/integrations.d.ts.map +1 -1
  35. package/dist/integrations.js +52 -2
  36. package/dist/integrations.mjs +11 -11
  37. package/dist/lower/compile-template.cjs +1 -1
  38. package/dist/lower/compile-template.mjs +1 -1
  39. package/dist/lower/template.cjs +1 -1
  40. package/dist/lower/template.d.ts.map +1 -1
  41. package/dist/lower/template.js +7 -5
  42. package/dist/lower/template.mjs +1 -1
  43. package/dist/resolve/component-globals.cjs +9 -9
  44. package/dist/resolve/component-globals.d.ts +8 -0
  45. package/dist/resolve/component-globals.d.ts.map +1 -1
  46. package/dist/resolve/component-globals.js +17 -3
  47. package/dist/resolve/component-globals.mjs +9 -9
  48. package/dist/resolve/write-globals.cjs +9 -9
  49. package/dist/resolve/write-globals.mjs +9 -9
  50. package/dist/transform/index.cjs +6 -1
  51. package/dist/transform/index.d.ts +4 -0
  52. package/dist/transform/index.d.ts.map +1 -1
  53. package/dist/transform/index.js +2 -0
  54. package/dist/transform/index.mjs +15 -10
  55. package/dist/transform/intrinsics.cjs +3 -0
  56. package/dist/transform/intrinsics.d.ts +22 -0
  57. package/dist/transform/intrinsics.d.ts.map +1 -0
  58. package/dist/transform/intrinsics.js +78 -0
  59. package/dist/transform/intrinsics.mjs +3 -0
  60. package/dist/transform/props.cjs +3 -0
  61. package/dist/transform/props.d.ts +46 -0
  62. package/dist/transform/props.d.ts.map +1 -0
  63. package/dist/transform/props.js +221 -0
  64. package/dist/transform/props.mjs +12 -0
  65. package/dist/transform/templates.cjs +5 -1
  66. package/dist/transform/templates.d.ts +36 -0
  67. package/dist/transform/templates.d.ts.map +1 -1
  68. package/dist/transform/templates.js +175 -7
  69. package/dist/transform/templates.mjs +14 -10
  70. package/dist/transform-ZGXUDFEZ.mjs +8 -0
  71. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  72. package/package.json +3 -3
  73. package/dist/transform-PJX2GNSV.mjs +0 -3
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Which names in a module hold reactive values, and what kind.
3
+ *
4
+ * Resolved from where a name came from, never from how it reads. This has to hold:
5
+ *
6
+ * import { createSignal as useState } from '@fluixi/reactive/signal';
7
+ * const count = useState(0); // a signal
8
+ *
9
+ * function createSignal() { return 42; }
10
+ * const value = createSignal(); // not a signal
11
+ *
12
+ * A name tells you nothing; the binding it resolves to tells you everything. So this
13
+ * walks the imports first, then the declarations that call them, and a local
14
+ * declaration always wins over anything the compiler would otherwise assume.
15
+ *
16
+ * Babel-free by the rule in no-babel-in-core: nodes are read structurally.
17
+ */
18
+ import { type Intrinsic, type ReactiveKind } from './intrinsics.js';
19
+ export interface ReactiveBindings {
20
+ /** Local name → what it holds. */
21
+ kinds: Map<string, ReactiveKind>;
22
+ /** Local name → the primitive it calls, for names imported from the runtime. */
23
+ primitives: Map<string, Intrinsic['returns']>;
24
+ /** `$name`s the module shadows with its own binding, so the intrinsic must not fire. */
25
+ shadowed: Set<string>;
26
+ }
27
+ /**
28
+ * Every name the module binds, in any scope.
29
+ *
30
+ * Deliberately scope-blind: it answers "does this file declare this name anywhere", which
31
+ * is the question a diagnostic needs. A component declared inside a function
32
+ * (`const Row = () => …`) is bound just as much as an import, and warning about it would
33
+ * be noise. Over-permissive on purpose — missing a warning beats inventing one.
34
+ */
35
+ export declare function declaredNames(program: unknown): Set<string>;
36
+ /**
37
+ * Read a module's reactive bindings.
38
+ *
39
+ * Two passes, because a call can only be classified once its callee is known: imports
40
+ * and local declarations first, then the declarations that call them.
41
+ */
42
+ export declare function resolveReactiveBindings(program: unknown): ReactiveBindings;
43
+ //# sourceMappingURL=reactive-bindings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactive-bindings.d.ts","sourceRoot":"","sources":["../../src/analyze/reactive-bindings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AAOzB,MAAM,WAAW,gBAAgB;IAC/B,kCAAkC;IAClC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACjC,gFAAgF;IAChF,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9C,wFAAwF;IACxF,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACvB;AAsED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CA8B3D;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,gBAAgB,CA6C1E"}
@@ -0,0 +1,191 @@
1
+ /**
2
+ * Which names in a module hold reactive values, and what kind.
3
+ *
4
+ * Resolved from where a name came from, never from how it reads. This has to hold:
5
+ *
6
+ * import { createSignal as useState } from '@fluixi/reactive/signal';
7
+ * const count = useState(0); // a signal
8
+ *
9
+ * function createSignal() { return 42; }
10
+ * const value = createSignal(); // not a signal
11
+ *
12
+ * A name tells you nothing; the binding it resolves to tells you everything. So this
13
+ * walks the imports first, then the declarations that call them, and a local
14
+ * declaration always wins over anything the compiler would otherwise assume.
15
+ *
16
+ * Babel-free by the rule in no-babel-in-core: nodes are read structurally.
17
+ */
18
+ import { INTRINSICS, RUNTIME_PRIMITIVES, isPrimitiveModule, } from './intrinsics.js';
19
+ /** Every name a binding pattern introduces. */
20
+ function patternNames(node, out) {
21
+ if (!node)
22
+ return;
23
+ switch (node.type) {
24
+ case 'Identifier':
25
+ out.add(node.name);
26
+ return;
27
+ case 'ObjectPattern':
28
+ for (const p of node.properties ?? []) {
29
+ if (p.type === 'RestElement')
30
+ patternNames(p.argument, out);
31
+ else
32
+ patternNames(p.value, out);
33
+ }
34
+ return;
35
+ case 'ArrayPattern':
36
+ for (const e of node.elements ?? [])
37
+ patternNames(e, out);
38
+ return;
39
+ case 'AssignmentPattern':
40
+ patternNames(node.left, out);
41
+ return;
42
+ case 'RestElement':
43
+ patternNames(node.argument, out);
44
+ return;
45
+ }
46
+ }
47
+ /** Walk everything under a node. */
48
+ function walk(root, visit) {
49
+ if (!root || typeof root !== 'object' || typeof root.type !== 'string')
50
+ return;
51
+ visit(root);
52
+ for (const key of Object.keys(root)) {
53
+ if (key === 'loc' || key === 'leadingComments' || key === 'trailingComments')
54
+ continue;
55
+ const value = root[key];
56
+ if (Array.isArray(value))
57
+ for (const item of value)
58
+ walk(item, visit);
59
+ else if (value && typeof value === 'object')
60
+ walk(value, visit);
61
+ }
62
+ }
63
+ /** The primitive a call expression resolves to, if it resolves to one at all. */
64
+ function calledPrimitive(node, bindings) {
65
+ if (node.type !== 'CallExpression')
66
+ return undefined;
67
+ const callee = node.callee;
68
+ if (callee?.type !== 'Identifier')
69
+ return undefined;
70
+ const name = callee.name;
71
+ const imported = bindings.primitives.get(name);
72
+ if (imported)
73
+ return imported;
74
+ // `$signal(…)`, unless the module bound that name itself.
75
+ const intrinsic = INTRINSICS[name];
76
+ if (intrinsic && !bindings.shadowed.has(name))
77
+ return intrinsic.returns;
78
+ return undefined;
79
+ }
80
+ /** Record what a declaration's pattern holds, given what the call returns. */
81
+ function classify(id, returns, kinds) {
82
+ if (Array.isArray(returns)) {
83
+ // `const [count, setCount] = $signal(0)` — position decides which is which.
84
+ if (id.type === 'ArrayPattern') {
85
+ id.elements.forEach((element, index) => {
86
+ const kind = returns[index];
87
+ if (element?.type === 'Identifier' && kind)
88
+ kinds.set(element.name, kind);
89
+ });
90
+ }
91
+ return;
92
+ }
93
+ if (id.type === 'Identifier')
94
+ kinds.set(id.name, returns);
95
+ }
96
+ /**
97
+ * Every name the module binds, in any scope.
98
+ *
99
+ * Deliberately scope-blind: it answers "does this file declare this name anywhere", which
100
+ * is the question a diagnostic needs. A component declared inside a function
101
+ * (`const Row = () => …`) is bound just as much as an import, and warning about it would
102
+ * be noise. Over-permissive on purpose — missing a warning beats inventing one.
103
+ */
104
+ export function declaredNames(program) {
105
+ const names = new Set();
106
+ walk(program, (node) => {
107
+ switch (node.type) {
108
+ case 'VariableDeclarator':
109
+ patternNames(node.id, names);
110
+ return;
111
+ case 'FunctionDeclaration':
112
+ case 'FunctionExpression':
113
+ case 'ArrowFunctionExpression':
114
+ patternNames(node.id, names);
115
+ for (const p of node.params ?? [])
116
+ patternNames(p, names);
117
+ return;
118
+ case 'ClassDeclaration':
119
+ case 'ClassExpression':
120
+ patternNames(node.id, names);
121
+ return;
122
+ case 'ImportSpecifier':
123
+ case 'ImportDefaultSpecifier':
124
+ case 'ImportNamespaceSpecifier':
125
+ patternNames(node.local, names);
126
+ return;
127
+ case 'CatchClause':
128
+ patternNames(node.param, names);
129
+ return;
130
+ }
131
+ });
132
+ return names;
133
+ }
134
+ /**
135
+ * Read a module's reactive bindings.
136
+ *
137
+ * Two passes, because a call can only be classified once its callee is known: imports
138
+ * and local declarations first, then the declarations that call them.
139
+ */
140
+ export function resolveReactiveBindings(program) {
141
+ const bindings = { kinds: new Map(), primitives: new Map(), shadowed: new Set() };
142
+ const root = program;
143
+ // Anything the module declares under a `$` name shadows the intrinsic. Checked across
144
+ // the whole module, not just the top level: a nested `const $signal = …` still means
145
+ // the call at that point isn't ours, and refusing the rewrite there is the safe answer.
146
+ walk(root, (node) => {
147
+ const names = new Set();
148
+ if (node.type === 'VariableDeclarator')
149
+ patternNames(node.id, names);
150
+ else if (node.type === 'FunctionDeclaration' || node.type === 'ClassDeclaration')
151
+ patternNames(node.id, names);
152
+ else if (node.type === 'ImportDefaultSpecifier' || node.type === 'ImportNamespaceSpecifier')
153
+ patternNames(node.local, names);
154
+ else if (node.type === 'ImportSpecifier')
155
+ patternNames(node.local, names);
156
+ else if (node.type === 'FunctionExpression' ||
157
+ node.type === 'ArrowFunctionExpression' ||
158
+ node.type === 'FunctionDeclaration') {
159
+ for (const p of node.params ?? [])
160
+ patternNames(p, names);
161
+ }
162
+ for (const name of names)
163
+ if (INTRINSICS[name])
164
+ bindings.shadowed.add(name);
165
+ });
166
+ // Imported primitives, under whatever local name they were given.
167
+ for (const statement of root.body ?? []) {
168
+ if (statement.type !== 'ImportDeclaration')
169
+ continue;
170
+ if (!isPrimitiveModule(statement.source?.value))
171
+ continue;
172
+ for (const specifier of statement.specifiers ?? []) {
173
+ if (specifier.type !== 'ImportSpecifier')
174
+ continue;
175
+ const importedNode = specifier.imported;
176
+ const imported = (importedNode.type === 'Identifier' ? importedNode.name : importedNode.value);
177
+ const returns = RUNTIME_PRIMITIVES[imported];
178
+ if (returns)
179
+ bindings.primitives.set(specifier.local.name, returns);
180
+ }
181
+ }
182
+ // What the declarations that call them hold.
183
+ walk(root, (node) => {
184
+ if (node.type !== 'VariableDeclarator' || !node.init)
185
+ return;
186
+ const returns = calledPrimitive(node.init, bindings);
187
+ if (returns)
188
+ classify(node.id, returns, bindings.kinds);
189
+ });
190
+ return bindings;
191
+ }
@@ -0,0 +1 @@
1
+ var o="@fluixi/reactive/signal",l={$signal:{export:"signal",module:o,returns:"signal-handle"},$memo:{export:"memo",module:o,returns:"memo-handle"},$effect:{export:"effect",module:o,returns:"effect"},$store:{export:"store",module:"@fluixi/reactive/store",returns:"store-handle"},$resource:{export:"resource",module:o,returns:"resource-handle"},$selector:{export:"createSelector",module:o,returns:"memo-accessor"},$deferred:{export:"createDeferred",module:o,returns:"memo-accessor"},$untrack:{export:"untrack",module:o,returns:"plain"},$untrackStore:{export:"untrackStore",module:"@fluixi/reactive/store",returns:"plain"}},u={signal:"signal-handle",memo:"memo-handle",effect:"effect",store:"store-handle",createSignal:["signal-accessor","signal-setter"],createMemo:"memo-accessor",createEffect:"effect",createRenderEffect:"effect",createStore:"reactive-object",resource:"resource-handle",createResource:"reactive-object",createSelector:"memo-accessor",createDeferred:"memo-accessor"},m=["@fluixi/reactive","@fluixi/reactive/signal","@fluixi/reactive/signal-next","@fluixi/reactive/store","@fluixi/core","@fluixi/core/rx"],N=new RegExp(`\\$(?:${Object.keys(l).map(r=>r.slice(1)).join("|")})\\s*\\(`);function p(r){return m.includes(r)}function s(r,t){if(r)switch(r.type){case"Identifier":t.add(r.name);return;case"ObjectPattern":for(let i of r.properties??[])i.type==="RestElement"?s(i.argument,t):s(i.value,t);return;case"ArrayPattern":for(let i of r.elements??[])s(i,t);return;case"AssignmentPattern":s(r.left,t);return;case"RestElement":s(r.argument,t);return}}function c(r,t){if(!(!r||typeof r!="object"||typeof r.type!="string")){t(r);for(let i of Object.keys(r)){if(i==="loc"||i==="leadingComments"||i==="trailingComments")continue;let e=r[i];if(Array.isArray(e))for(let n of e)c(n,t);else e&&typeof e=="object"&&c(e,t)}}}function g(r,t){if(r.type!=="CallExpression")return;let i=r.callee;if(i?.type!=="Identifier")return;let e=i.name,n=t.primitives.get(e);if(n)return n;let a=l[e];if(a&&!t.shadowed.has(e))return a.returns}function y(r,t,i){if(Array.isArray(t)){r.type==="ArrayPattern"&&r.elements.forEach((e,n)=>{let a=t[n];e?.type==="Identifier"&&a&&i.set(e.name,a)});return}r.type==="Identifier"&&i.set(r.name,t)}function v(r){let t=new Set;return c(r,i=>{switch(i.type){case"VariableDeclarator":s(i.id,t);return;case"FunctionDeclaration":case"FunctionExpression":case"ArrowFunctionExpression":s(i.id,t);for(let e of i.params??[])s(e,t);return;case"ClassDeclaration":case"ClassExpression":s(i.id,t);return;case"ImportSpecifier":case"ImportDefaultSpecifier":case"ImportNamespaceSpecifier":s(i.local,t);return;case"CatchClause":s(i.param,t);return}}),t}function R(r){let t={kinds:new Map,primitives:new Map,shadowed:new Set},i=r;c(i,e=>{let n=new Set;if(e.type==="VariableDeclarator")s(e.id,n);else if(e.type==="FunctionDeclaration"||e.type==="ClassDeclaration")s(e.id,n);else if(e.type==="ImportDefaultSpecifier"||e.type==="ImportNamespaceSpecifier")s(e.local,n);else if(e.type==="ImportSpecifier")s(e.local,n);else if(e.type==="FunctionExpression"||e.type==="ArrowFunctionExpression"||e.type==="FunctionDeclaration")for(let a of e.params??[])s(a,n);for(let a of n)l[a]&&t.shadowed.add(a)});for(let e of i.body??[])if(e.type==="ImportDeclaration"&&p(e.source?.value))for(let n of e.specifiers??[]){if(n.type!=="ImportSpecifier")continue;let a=n.imported,d=a.type==="Identifier"?a.name:a.value,f=u[d];f&&t.primitives.set(n.local.name,f)}return c(i,e=>{if(e.type!=="VariableDeclarator"||!e.init)return;let n=g(e.init,t);n&&y(e.id,n,t.kinds)}),t}export{v as declaredNames,R as resolveReactiveBindings};
@@ -1 +1 @@
1
- import{a as B,b as L,c as F,d as j,e as C,f as $,g as V,h as W,i as G,j as U}from"./chunk-TIE4XNAM.mjs";import{a as _,c as A,d as z}from"./chunk-E2PW2OZU.mjs";import"./chunk-3SAEGOMQ.mjs";import{declare as ge}from"@babel/helper-plugin-utils";import{types as t,template as oe}from"@babel/core";import{types as w,traverse as me,template as de}from"@babel/core";import K from"@babel/generator";import{types as D}from"@babel/core";import Y from"@babel/generator";var ae=Y.default??Y;function le(e){return ae(e,{concise:!0}).code}function pe(e,o,r){let i={code:k(e,o,r),reactive:J(e)};if(D.isArrowFunctionExpression(e)&&!D.isBlockStatement(e.body)){let n=e.body;i.arrow={params:e.params.map(c=>le(c)),body:k(n,o,r),bodyReactive:J(n)}}return D.isObjectExpression(e)&&(i.object=!0),i}function q(e,o,r={}){let i=e.quasi,n=i.expressions.map(c=>pe(c,o,r.onNested));return $(ce(i),n,o,r)}function ce(e){let o=[];return e.quasis.forEach((r,i)=>{let n=r.value.cooked??r.value.raw;if(o.push({kind:"static",text:n,start:r.start??0}),i<e.expressions.length){let c=e.expressions[i];o.push({kind:"hole",index:i,start:c.start??0,end:c.end??0})}}),o}function O(e,o=new Set,r={}){let i=q(e,o,r);return V(i),i}var fe=K.default??K;function Z(e){return fe(e,{concise:!0}).code}function ue(e,o,r){let i=w.cloneNode(e,!0),n=w.file(w.program([w.expressionStatement(i)])),c=!1,p=(a,m,g)=>{for(let h of g)o.add(h);a.replaceWith(de.expression(m,{placeholderPattern:!1,plugins:["typescript"]})()),a.skip(),c=!0};return me(n,{"JSXElement|JSXFragment"(a){let m=a.node,g=X(m,o,r);r?.(g);let{code:h,imports:R,templates:E}=C.emit(g,{});p(a,j(h,E),R)},TaggedTemplateExpression(a){let m=a.node.tag;if(!w.isIdentifier(m)||m.name!=="html"&&m.name!=="svg")return;let g=O(a.node,o,{svg:m.name==="svg",onNested:r});r?.(g);let{code:h,imports:R,templates:E}=C.emit(g,{});p(a,j(h,E),R)}}),c?n.program.body[0].expression:e}function k(e,o,r){return Z(ue(e,o,r))}function J(e){return W(G(e))}function X(e,o=new Set,r){return U(e,{code:n=>n.type==="JSXMemberExpression"?Z(n):k(n,o,r),used:o})}var Q=new Set(A),ee=new Set(z),I=ge((e,o={})=>{e.assertVersion(7);let{delegateEvents:r=!0,signalModule:i="@fluixi/dom",controlFlowModule:n="@fluixi/dom",routerModule:c="@fluixi/core/router-next",reactiveModule:p="@fluixi/reactive/signal",templateClone:a=!0,partialTemplates:m=!0,format:g="both",litTag:h="html",resolve:R=[]}=o,E=_(R),ie=g==="lit"||g==="both",se={irImports:new Set,libModule:"@fluixi/core",controlFlowModule:n,routerModule:c,templateClone:a,partialTemplates:m,hasJSX:!1,hasLitHTML:!1,needsControlFlowImport:!1,needsCreateMemo:!1,controlFlowComponents:new Set,resolvedComponents:new Map,deferredComponents:new Map,componentResolver:E,delegatedEvents:new Set,staticTemplates:new Map,staticCounter:0};return{name:"@fluixi/babel-plugin-jsx",manipulateOptions(l,s){s.plugins.push("jsx","typescript")},pre(l){Object.assign(l,se)},visitor:{ImportDeclaration(l,s){l.node.source.value==="@fluixi/core/rx"&&(l.node.source=t.stringLiteral("@fluixi/reactive"))},Program:{enter(l,s){Object.assign(s,{hasJSX:!1,hasLitHTML:!1,hasLitIR:!1,needsControlFlowImport:!1,needsCreateMemo:!1,controlFlowComponents:new Set,resolvedComponents:new Map,deferredComponents:new Map,componentResolver:E,delegatedEvents:new Set,staticTemplates:new Map,staticCounter:0,libModule:"@fluixi/core",controlFlowModule:n,routerModule:c,templateClone:a,partialTemplates:m,irImports:new Set,needsCreateNativeElement:!1,needsInsert:!1,needsSpread:!1,needsCreateComponent:!1,needsMergeProps:!1})},exit(l,s){let y=[];if(s.hasJSX||s.hasLitIR){if(s.irImports.size>0){let f=new Set(["Show","For","Index","Switch","Match","Dynamic","ErrorBoundary","Portal","Suspense"]),d=new Set(["createMemo","createEffect","createRenderEffect","createRoot","createSignal","onCleanup","batch","untrack"]),v=Array.from(s.irImports),S=u=>t.importSpecifier(t.identifier(u),t.identifier(u)),b=u=>!l.scope.hasBinding(u),M=v.filter(u=>d.has(u)&&b(u)),x=v.filter(u=>!f.has(u)&&!d.has(u)&&b(u)),T=v.filter(u=>f.has(u)&&b(u));M.length>0&&y.push(t.importDeclaration(M.map(S),t.stringLiteral(p))),x.length>0&&y.push(t.importDeclaration(x.map(S),t.stringLiteral(i))),T.length>0&&y.push(t.importDeclaration(T.map(S),t.stringLiteral(n)))}if(s.needsCreateMemo&&!l.scope.hasBinding("createMemo")&&y.push(t.importDeclaration([t.importSpecifier(t.identifier("createMemo"),t.identifier("createMemo"))],t.stringLiteral(p))),s.needsControlFlowImport&&s.controlFlowComponents.size>0){let f=Array.from(s.controlFlowComponents).filter(x=>!l.scope.hasBinding(x)),d=s.libModule??"@fluixi/core",v=f.filter(x=>ee.has(x)),S=f.filter(x=>Q.has(x)),b=f.filter(x=>!Q.has(x)&&!ee.has(x)),M=(x,T)=>t.importDeclaration(x.map(u=>t.importSpecifier(t.identifier(u),t.identifier(u))),t.stringLiteral(T));b.length>0&&y.push(M(b,n)),S.length>0&&y.push(M(S,d)),v.length>0&&y.push(M(v,c))}let N=[];if(s.deferredComponents.size>0){for(let[f,d]of s.deferredComponents)l.scope.hasBinding(f)||N.push(t.variableDeclaration("const",[t.variableDeclarator(t.identifier(f),t.callExpression(t.identifier("deferred"),[t.arrowFunctionExpression([],t.callExpression(t.import(),[t.stringLiteral(d.module)])),t.objectExpression([t.objectProperty(t.identifier("strategy"),ve(d.strategy)),t.objectProperty(t.identifier("export"),t.stringLiteral(d.export))])]))]));N.length>0&&!l.scope.hasBinding("deferred")&&y.push(t.importDeclaration([t.importSpecifier(t.identifier("deferred"),t.identifier("deferred"))],t.stringLiteral(s.libModule??"@fluixi/core")))}if(s.resolvedComponents.size>0){let f=new Map;for(let[d,v]of s.resolvedComponents){if(l.scope.hasBinding(d))continue;let S=f.get(v.module)??[];S.push({local:d,exported:v.export}),f.set(v.module,S)}for(let[d,v]of f)y.push(t.importDeclaration(v.map(({local:S,exported:b})=>b==="default"?t.importDefaultSpecifier(t.identifier(S)):t.importSpecifier(t.identifier(S),t.identifier(b))),t.stringLiteral(d)))}if(r&&s.delegatedEvents.size>0){y.push(t.importDeclaration([t.importSpecifier(t.identifier("delegateEvents"),t.identifier("delegateEvents"))],t.stringLiteral(i)));let f=t.arrayExpression(Array.from(s.delegatedEvents).map(v=>t.stringLiteral(v))),d=t.expressionStatement(t.callExpression(t.identifier("delegateEvents"),[f]));l.node.body.unshift(d)}if(N.length>0&&l.node.body.unshift(...N),s.staticTemplates.size>0){let f=[];for(let[d,v]of s.staticTemplates){let b=d.startsWith("svg:")?d.slice(4):d;f.push(t.variableDeclaration("const",[t.variableDeclarator(t.identifier(v),t.stringLiteral(b))]))}l.node.body.unshift(...f)}}y.length>0&&l.node.body.unshift(...ye(y))}},JSXElement(l,s){s.hasJSX=!0,l.replaceWith(te(l.node,s))},JSXFragment(l,s){s.hasJSX=!0,l.replaceWith(te(l.node,s))},TaggedTemplateExpression(l,s){ie&&t.isIdentifier(l.node.tag)&&(l.node.tag.name===h||l.node.tag.name==="svg")&&l.replaceWith(Se(l.node,s))}}}});function re(e){return o=>{L(o,{resolver:e.componentResolver,modules:{controlFlowModule:e.controlFlowModule,coreModule:e.libModule,routerModule:e.routerModule},strategyFor:r=>r.load}),F(o),P(o,e)}}function ve(e){let o=[t.objectProperty(t.identifier("kind"),t.stringLiteral(e.kind))];return e.kind==="visible"&&e.rootMargin&&o.push(t.objectProperty(t.identifier("rootMargin"),t.stringLiteral(e.rootMargin))),e.kind==="interaction"&&o.push(t.objectProperty(t.identifier("events"),t.arrayExpression(e.events.map(r=>t.stringLiteral(r))))),e.kind==="media"&&o.push(t.objectProperty(t.identifier("query"),t.stringLiteral(e.query))),t.objectExpression(o)}function ne(e,o,r){if(!o||o.length===0)return e;let i=new Map;for(let n of o){let c=`${n.svg?"svg:":""}${n.html}`,p=r.staticTemplates.get(c);p||(p=`_tmpl$${r.staticTemplates.size}`,r.staticTemplates.set(c,p)),i.set(n.id,p)}return e.replace(/_tmpl\$\d+/g,n=>i.get(n)??n)}function te(e,o){let r=new Set,i=X(e,r,re(o));L(i,{resolver:o.componentResolver,modules:{controlFlowModule:o.controlFlowModule,coreModule:o.libModule,routerModule:o.routerModule},strategyFor:m=>m.load}),F(i);let{code:n,imports:c,templates:p}=C.emit(i,{templateClone:o.templateClone,partialTemplates:o.partialTemplates});for(let m of c)r.add(m);for(let m of r)o.irImports.add(m);P(i,o);let a=ne(n,p,o);return oe.expression(a,{placeholderPattern:!1,plugins:["typescript"]})()}function ye(e){let o=new Map,r=[];for(let i of e){let n=i.source.value;if(!i.specifiers.every(a=>t.isImportSpecifier(a))){r.push(i);continue}let p=o.get(n);if(!p){let a=new Set(i.specifiers.map(m=>m.local.name));o.set(n,{decl:i,names:a}),r.push(i);continue}for(let a of i.specifiers)p.names.has(a.local.name)||(p.names.add(a.local.name),p.decl.specifiers.push(a))}return r}function Se(e,o){let r=new Set,i=t.isIdentifier(e.tag)&&e.tag.name==="svg",n=O(e,r,{svg:i,onNested:re(o)});L(n,{resolver:o.componentResolver,modules:{controlFlowModule:o.controlFlowModule,coreModule:o.libModule,routerModule:o.routerModule},strategyFor:g=>g.load}),F(n);let{code:c,imports:p,templates:a}=C.emit(n,{templateClone:o.templateClone,partialTemplates:o.partialTemplates});for(let g of p)r.add(g);for(let g of r)o.irImports.add(g);P(n,o),o.hasLitIR=!0;let m=oe.expression(ne(c,a,o),{placeholderPattern:!1,plugins:["typescript"]})();return xe(m,e),m}function xe(e,o){if(!o.loc)return;let r=new Set,i=n=>{if(!r.has(n)){r.add(n),n.loc||(n.loc=o.loc,n.start=o.start,n.end=o.end);for(let c of t.VISITOR_KEYS[n.type]??[]){let p=n[c];if(Array.isArray(p))for(let a of p)a&&typeof a=="object"&&"type"in a&&i(a);else p&&typeof p=="object"&&"type"in p&&i(p)}}};i(e)}function P(e,o){if(e.kind==="component"&&e.source&&(e.source.origin==="builtin"?(o.controlFlowComponents.add(e.name),o.needsControlFlowImport=!0):B(e.source.loading)&&!o.resolvedComponents.has(e.name)?o.deferredComponents.set(e.name,{module:e.source.module,export:e.source.export,strategy:e.source.loading}):(o.deferredComponents.delete(e.name),o.resolvedComponents.set(e.name,{module:e.source.module,export:e.source.export}))),(e.kind==="element"||e.kind==="component"||e.kind==="control")&&"props"in e)for(let r of e.props)r.kind==="event"&&r.event?.delegated&&o.delegatedEvents.add(r.event.name);if("children"in e&&e.children)for(let r of e.children)P(r,o)}var Ue=I;function Ye(e){return[I,e]}function H(e={}){return{plugins:[[I,{runtime:"automatic",importSource:"@fluixi/jsx",development:!1,detectReactivity:!0,useLitHTML:!0,hoistStatics:!0,delegateEvents:!0,optimizeControlFlow:!0,sourceMaps:!0,...e}]]}}var qe={production:H({development:!1,hoistStatics:!0,delegateEvents:!0,optimizeControlFlow:!0}),development:H({development:!0,hoistStatics:!1,sourceMaps:!0}),minimal:H({detectReactivity:!1,useLitHTML:!1,hoistStatics:!1,delegateEvents:!1,optimizeControlFlow:!1})};export{Ue as babelPluginReactiveJSX,Ye as createPlugin,H as createPreset,I as default,qe as presets};
1
+ import{a as B,b as L,c as F,d as j,e as C,f as $,g as V,h as W,i as G,j as U}from"./chunk-L2QPV25P.mjs";import{a as _,c as A,d as z}from"./chunk-E2PW2OZU.mjs";import"./chunk-3SAEGOMQ.mjs";import{declare as ge}from"@babel/helper-plugin-utils";import{types as t,template as oe}from"@babel/core";import{types as w,traverse as me,template as de}from"@babel/core";import K from"@babel/generator";import{types as D}from"@babel/core";import Y from"@babel/generator";var ae=Y.default??Y;function le(e){return ae(e,{concise:!0}).code}function pe(e,o,r){let i={code:k(e,o,r),reactive:J(e)};if(D.isArrowFunctionExpression(e)&&!D.isBlockStatement(e.body)){let n=e.body;i.arrow={params:e.params.map(c=>le(c)),body:k(n,o,r),bodyReactive:J(n)}}return D.isObjectExpression(e)&&(i.object=!0),i}function q(e,o,r={}){let i=e.quasi,n=i.expressions.map(c=>pe(c,o,r.onNested));return $(ce(i),n,o,r)}function ce(e){let o=[];return e.quasis.forEach((r,i)=>{let n=r.value.cooked??r.value.raw;if(o.push({kind:"static",text:n,start:r.start??0}),i<e.expressions.length){let c=e.expressions[i];o.push({kind:"hole",index:i,start:c.start??0,end:c.end??0})}}),o}function O(e,o=new Set,r={}){let i=q(e,o,r);return V(i),i}var fe=K.default??K;function Z(e){return fe(e,{concise:!0}).code}function ue(e,o,r){let i=w.cloneNode(e,!0),n=w.file(w.program([w.expressionStatement(i)])),c=!1,p=(a,m,g)=>{for(let h of g)o.add(h);a.replaceWith(de.expression(m,{placeholderPattern:!1,plugins:["typescript"]})()),a.skip(),c=!0};return me(n,{"JSXElement|JSXFragment"(a){let m=a.node,g=X(m,o,r);r?.(g);let{code:h,imports:R,templates:E}=C.emit(g,{});p(a,j(h,E),R)},TaggedTemplateExpression(a){let m=a.node.tag;if(!w.isIdentifier(m)||m.name!=="html"&&m.name!=="svg")return;let g=O(a.node,o,{svg:m.name==="svg",onNested:r});r?.(g);let{code:h,imports:R,templates:E}=C.emit(g,{});p(a,j(h,E),R)}}),c?n.program.body[0].expression:e}function k(e,o,r){return Z(ue(e,o,r))}function J(e){return W(G(e))}function X(e,o=new Set,r){return U(e,{code:n=>n.type==="JSXMemberExpression"?Z(n):k(n,o,r),used:o})}var Q=new Set(A),ee=new Set(z),I=ge((e,o={})=>{e.assertVersion(7);let{delegateEvents:r=!0,signalModule:i="@fluixi/dom",controlFlowModule:n="@fluixi/dom",routerModule:c="@fluixi/core/router-next",reactiveModule:p="@fluixi/reactive/signal",templateClone:a=!0,partialTemplates:m=!0,format:g="both",litTag:h="html",resolve:R=[]}=o,E=_(R),ie=g==="lit"||g==="both",se={irImports:new Set,libModule:"@fluixi/core",controlFlowModule:n,routerModule:c,templateClone:a,partialTemplates:m,hasJSX:!1,hasLitHTML:!1,needsControlFlowImport:!1,needsCreateMemo:!1,controlFlowComponents:new Set,resolvedComponents:new Map,deferredComponents:new Map,componentResolver:E,delegatedEvents:new Set,staticTemplates:new Map,staticCounter:0};return{name:"@fluixi/babel-plugin-jsx",manipulateOptions(l,s){s.plugins.push("jsx","typescript")},pre(l){Object.assign(l,se)},visitor:{ImportDeclaration(l,s){l.node.source.value==="@fluixi/core/rx"&&(l.node.source=t.stringLiteral("@fluixi/reactive"))},Program:{enter(l,s){Object.assign(s,{hasJSX:!1,hasLitHTML:!1,hasLitIR:!1,needsControlFlowImport:!1,needsCreateMemo:!1,controlFlowComponents:new Set,resolvedComponents:new Map,deferredComponents:new Map,componentResolver:E,delegatedEvents:new Set,staticTemplates:new Map,staticCounter:0,libModule:"@fluixi/core",controlFlowModule:n,routerModule:c,templateClone:a,partialTemplates:m,irImports:new Set,needsCreateNativeElement:!1,needsInsert:!1,needsSpread:!1,needsCreateComponent:!1,needsMergeProps:!1})},exit(l,s){let y=[];if(s.hasJSX||s.hasLitIR){if(s.irImports.size>0){let f=new Set(["Show","For","Index","Switch","Match","Dynamic","ErrorBoundary","Portal","Suspense"]),d=new Set(["createMemo","createEffect","createRenderEffect","createRoot","createSignal","onCleanup","batch","untrack"]),v=Array.from(s.irImports),S=u=>t.importSpecifier(t.identifier(u),t.identifier(u)),b=u=>!l.scope.hasBinding(u),M=v.filter(u=>d.has(u)&&b(u)),x=v.filter(u=>!f.has(u)&&!d.has(u)&&b(u)),T=v.filter(u=>f.has(u)&&b(u));M.length>0&&y.push(t.importDeclaration(M.map(S),t.stringLiteral(p))),x.length>0&&y.push(t.importDeclaration(x.map(S),t.stringLiteral(i))),T.length>0&&y.push(t.importDeclaration(T.map(S),t.stringLiteral(n)))}if(s.needsCreateMemo&&!l.scope.hasBinding("createMemo")&&y.push(t.importDeclaration([t.importSpecifier(t.identifier("createMemo"),t.identifier("createMemo"))],t.stringLiteral(p))),s.needsControlFlowImport&&s.controlFlowComponents.size>0){let f=Array.from(s.controlFlowComponents).filter(x=>!l.scope.hasBinding(x)),d=s.libModule??"@fluixi/core",v=f.filter(x=>ee.has(x)),S=f.filter(x=>Q.has(x)),b=f.filter(x=>!Q.has(x)&&!ee.has(x)),M=(x,T)=>t.importDeclaration(x.map(u=>t.importSpecifier(t.identifier(u),t.identifier(u))),t.stringLiteral(T));b.length>0&&y.push(M(b,n)),S.length>0&&y.push(M(S,d)),v.length>0&&y.push(M(v,c))}let N=[];if(s.deferredComponents.size>0){for(let[f,d]of s.deferredComponents)l.scope.hasBinding(f)||N.push(t.variableDeclaration("const",[t.variableDeclarator(t.identifier(f),t.callExpression(t.identifier("deferred"),[t.arrowFunctionExpression([],t.callExpression(t.import(),[t.stringLiteral(d.module)])),t.objectExpression([t.objectProperty(t.identifier("strategy"),ve(d.strategy)),t.objectProperty(t.identifier("export"),t.stringLiteral(d.export))])]))]));N.length>0&&!l.scope.hasBinding("deferred")&&y.push(t.importDeclaration([t.importSpecifier(t.identifier("deferred"),t.identifier("deferred"))],t.stringLiteral(s.libModule??"@fluixi/core")))}if(s.resolvedComponents.size>0){let f=new Map;for(let[d,v]of s.resolvedComponents){if(l.scope.hasBinding(d))continue;let S=f.get(v.module)??[];S.push({local:d,exported:v.export}),f.set(v.module,S)}for(let[d,v]of f)y.push(t.importDeclaration(v.map(({local:S,exported:b})=>b==="default"?t.importDefaultSpecifier(t.identifier(S)):t.importSpecifier(t.identifier(S),t.identifier(b))),t.stringLiteral(d)))}if(r&&s.delegatedEvents.size>0){y.push(t.importDeclaration([t.importSpecifier(t.identifier("delegateEvents"),t.identifier("delegateEvents"))],t.stringLiteral(i)));let f=t.arrayExpression(Array.from(s.delegatedEvents).map(v=>t.stringLiteral(v))),d=t.expressionStatement(t.callExpression(t.identifier("delegateEvents"),[f]));l.node.body.unshift(d)}if(N.length>0&&l.node.body.unshift(...N),s.staticTemplates.size>0){let f=[];for(let[d,v]of s.staticTemplates){let b=d.startsWith("svg:")?d.slice(4):d;f.push(t.variableDeclaration("const",[t.variableDeclarator(t.identifier(v),t.stringLiteral(b))]))}l.node.body.unshift(...f)}}y.length>0&&l.node.body.unshift(...ye(y))}},JSXElement(l,s){s.hasJSX=!0,l.replaceWith(te(l.node,s))},JSXFragment(l,s){s.hasJSX=!0,l.replaceWith(te(l.node,s))},TaggedTemplateExpression(l,s){ie&&t.isIdentifier(l.node.tag)&&(l.node.tag.name===h||l.node.tag.name==="svg")&&l.replaceWith(Se(l.node,s))}}}});function re(e){return o=>{L(o,{resolver:e.componentResolver,modules:{controlFlowModule:e.controlFlowModule,coreModule:e.libModule,routerModule:e.routerModule},strategyFor:r=>r.load}),F(o),P(o,e)}}function ve(e){let o=[t.objectProperty(t.identifier("kind"),t.stringLiteral(e.kind))];return e.kind==="visible"&&e.rootMargin&&o.push(t.objectProperty(t.identifier("rootMargin"),t.stringLiteral(e.rootMargin))),e.kind==="interaction"&&o.push(t.objectProperty(t.identifier("events"),t.arrayExpression(e.events.map(r=>t.stringLiteral(r))))),e.kind==="media"&&o.push(t.objectProperty(t.identifier("query"),t.stringLiteral(e.query))),t.objectExpression(o)}function ne(e,o,r){if(!o||o.length===0)return e;let i=new Map;for(let n of o){let c=`${n.svg?"svg:":""}${n.html}`,p=r.staticTemplates.get(c);p||(p=`_tmpl$${r.staticTemplates.size}`,r.staticTemplates.set(c,p)),i.set(n.id,p)}return e.replace(/_tmpl\$\d+/g,n=>i.get(n)??n)}function te(e,o){let r=new Set,i=X(e,r,re(o));L(i,{resolver:o.componentResolver,modules:{controlFlowModule:o.controlFlowModule,coreModule:o.libModule,routerModule:o.routerModule},strategyFor:m=>m.load}),F(i);let{code:n,imports:c,templates:p}=C.emit(i,{templateClone:o.templateClone,partialTemplates:o.partialTemplates});for(let m of c)r.add(m);for(let m of r)o.irImports.add(m);P(i,o);let a=ne(n,p,o);return oe.expression(a,{placeholderPattern:!1,plugins:["typescript"]})()}function ye(e){let o=new Map,r=[];for(let i of e){let n=i.source.value;if(!i.specifiers.every(a=>t.isImportSpecifier(a))){r.push(i);continue}let p=o.get(n);if(!p){let a=new Set(i.specifiers.map(m=>m.local.name));o.set(n,{decl:i,names:a}),r.push(i);continue}for(let a of i.specifiers)p.names.has(a.local.name)||(p.names.add(a.local.name),p.decl.specifiers.push(a))}return r}function Se(e,o){let r=new Set,i=t.isIdentifier(e.tag)&&e.tag.name==="svg",n=O(e,r,{svg:i,onNested:re(o)});L(n,{resolver:o.componentResolver,modules:{controlFlowModule:o.controlFlowModule,coreModule:o.libModule,routerModule:o.routerModule},strategyFor:g=>g.load}),F(n);let{code:c,imports:p,templates:a}=C.emit(n,{templateClone:o.templateClone,partialTemplates:o.partialTemplates});for(let g of p)r.add(g);for(let g of r)o.irImports.add(g);P(n,o),o.hasLitIR=!0;let m=oe.expression(ne(c,a,o),{placeholderPattern:!1,plugins:["typescript"]})();return xe(m,e),m}function xe(e,o){if(!o.loc)return;let r=new Set,i=n=>{if(!r.has(n)){r.add(n),n.loc||(n.loc=o.loc,n.start=o.start,n.end=o.end);for(let c of t.VISITOR_KEYS[n.type]??[]){let p=n[c];if(Array.isArray(p))for(let a of p)a&&typeof a=="object"&&"type"in a&&i(a);else p&&typeof p=="object"&&"type"in p&&i(p)}}};i(e)}function P(e,o){if(e.kind==="component"&&e.source&&(e.source.origin==="builtin"?(o.controlFlowComponents.add(e.name),o.needsControlFlowImport=!0):B(e.source.loading)&&!o.resolvedComponents.has(e.name)?o.deferredComponents.set(e.name,{module:e.source.module,export:e.source.export,strategy:e.source.loading}):(o.deferredComponents.delete(e.name),o.resolvedComponents.set(e.name,{module:e.source.module,export:e.source.export}))),(e.kind==="element"||e.kind==="component"||e.kind==="control")&&"props"in e)for(let r of e.props)r.kind==="event"&&r.event?.delegated&&o.delegatedEvents.add(r.event.name);if("children"in e&&e.children)for(let r of e.children)P(r,o)}var Ue=I;function Ye(e){return[I,e]}function H(e={}){return{plugins:[[I,{runtime:"automatic",importSource:"@fluixi/jsx",development:!1,detectReactivity:!0,useLitHTML:!0,hoistStatics:!0,delegateEvents:!0,optimizeControlFlow:!0,sourceMaps:!0,...e}]]}}var qe={production:H({development:!1,hoistStatics:!0,delegateEvents:!0,optimizeControlFlow:!0}),development:H({development:!0,hoistStatics:!1,sourceMaps:!0}),minimal:H({detectReactivity:!1,useLitHTML:!1,hoistStatics:!1,delegateEvents:!1,optimizeControlFlow:!1})};export{Ue as babelPluginReactiveJSX,Ye as createPlugin,H as createPreset,I as default,qe as presets};
@@ -0,0 +1 @@
1
+ var r="@fluixi/reactive/signal",t={$signal:{export:"signal",module:r,returns:"signal-handle"},$memo:{export:"memo",module:r,returns:"memo-handle"},$effect:{export:"effect",module:r,returns:"effect"},$store:{export:"store",module:"@fluixi/reactive/store",returns:"store-handle"},$resource:{export:"resource",module:r,returns:"resource-handle"},$selector:{export:"createSelector",module:r,returns:"memo-accessor"},$deferred:{export:"createDeferred",module:r,returns:"memo-accessor"},$untrack:{export:"untrack",module:r,returns:"plain"},$untrackStore:{export:"untrackStore",module:"@fluixi/reactive/store",returns:"plain"}},c={signal:"signal-handle",memo:"memo-handle",effect:"effect",store:"store-handle",createSignal:["signal-accessor","signal-setter"],createMemo:"memo-accessor",createEffect:"effect",createRenderEffect:"effect",createStore:"reactive-object",resource:"resource-handle",createResource:"reactive-object",createSelector:"memo-accessor",createDeferred:"memo-accessor"},o=["@fluixi/reactive","@fluixi/reactive/signal","@fluixi/reactive/signal-next","@fluixi/reactive/store","@fluixi/core","@fluixi/core/rx"],n=new RegExp(`\\$(?:${Object.keys(t).map(e=>e.slice(1)).join("|")})\\s*\\(`);function s(e){return n.test(e)}function i(e){return Object.prototype.hasOwnProperty.call(t,e)}function a(e){return o.includes(e)}export{t as a,c as b,s as c,i as d,a as e};
@@ -1 +1 @@
1
- import{d as M,e as $,f as _}from"./chunk-E2PW2OZU.mjs";var le=new Set(["CallExpression","OptionalCallExpression"]),ce=new Set(["MemberExpression","OptionalMemberExpression"]);function w(e){if(!e)return{kind:"opaque"};if(le.has(e.type))return{kind:"call"};if(ce.has(e.type)){let t=e.property;return{kind:"member",property:!(e.computed===!0)&&t?.type==="Identifier"?t.name:null}}return e.type==="ConditionalExpression"?{kind:"compound",parts:[e.test,e.consequent,e.alternate].map(h)}:e.type==="LogicalExpression"||e.type==="BinaryExpression"?{kind:"compound",parts:[e.left,e.right].map(h)}:e.type==="TemplateLiteral"?{kind:"compound",parts:e.expressions.map(h)}:e.type==="ObjectExpression"?{kind:"compound",parts:e.properties.filter(n=>(n.type==="ObjectProperty"||n.type==="Property")&&n.computed!==!0).map(n=>h(n.value))}:e.type==="ArrayExpression"?{kind:"compound",parts:e.elements.filter(n=>n!=null&&n.type!=="SpreadElement").map(h)}:{kind:"opaque"}}var h=e=>w(e);var y={kind:"eager"},pe=["pointerdown","focusin","keydown"],B=new Set(["eager","idle","visible","interaction","media","never"]),m=class extends Error{};function C(e){return e.startsWith("load:")}function E(e,t){let n=e.slice(5);if(!B.has(n))throw new m(`Unknown load strategy 'load:${n}'. Expected one of ${[...B].join(", ")}.`);switch(n){case"eager":return y;case"idle":return{kind:"idle"};case"never":return{kind:"never"};case"visible":return t?{kind:"visible",rootMargin:t}:{kind:"visible"};case"interaction":return{kind:"interaction",events:t?de(t):[...pe]};case"media":if(!t)throw new m(`'load:media' needs a query, e.g. load:media="(min-width: 1024px)".`);return{kind:"media",query:t};default:throw new m(`Unhandled load strategy '${n}'.`)}}function de(e){let t=e.split(/[\s,]+/).map(n=>n.trim()).filter(Boolean);if(t.length===0)throw new m("'load:interaction' was given no event names.");return t}function X(e){return e.kind!=="eager"&&e.kind!=="never"}function Ve(e,t={}){let{resolver:n,isBound:r,modules:i,strategyFor:o}=t,s=_(i),a=new Map,l=new Set,c=p=>{let{name:u}=p;if(!u||u.includes(".")||r?.(u))return;let f=d(u);if(!f){l.add(u);return}let N=f.origin==="builtin"&&$.has(u)?y:o?.(p)??y;p.source={...f,loading:N},a.set(u,p.source)},d=p=>{if($.has(p))return{module:s[p],export:p,origin:"builtin"};let u=n?.resolve(p);if(u)return{module:u.module,export:u.export,origin:"rule"};if(M.includes(p))return{module:s[p],export:p,origin:"builtin"}};return I(e,p=>{p.kind==="component"&&c(p)}),{resolved:a,unresolved:[...l]}}function I(e,t){let n=Array.isArray(e)?e:[e];for(let r of n){t(r);let i=r.children;i&&I(i,t)}}function Ge(e){let t=[];I(e,o=>{o.kind==="component"&&o.source&&t.push(o)});let n=new Set,r=new Set;for(let o of t){let{module:s,loading:a}=o.source;a.kind==="eager"&&n.add(s),a.kind==="never"&&r.add(s)}let i=new Map;for(let o of t){let s=o.source;X(s.loading)&&n.has(s.module)&&(s.loading={kind:"eager"},i.set(s.module,(i.get(s.module)??0)+1))}return{collapsed:i,conflicted:[...r].filter(o=>n.has(o))}}var ue=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),H={className:"class",htmlFor:"for"},fe=new Set(["innerHTML","outerHTML","innerText","textContent","value","checked","selected","muted","defaultValue","defaultChecked","children","ref"]),me=new Set(["script","style","textarea","title"]);function T(e){return me.has(e)}function z(e){return H[e]??e}function g(e){return e.kind!=="attr"||e.expr!==void 0||e.name.includes(":")?!1:!fe.has(e.name)}function P(e){if(!e.static||T(e.tag))return!1;for(let t of e.props)if(!g(t))return!1;for(let t of e.children)if(t.kind!=="text"&&!(t.kind==="element"&&P(t)))return!1;return!0}function v(e){let t=e.props.map(ge).filter(Boolean).join(""),n=`<${e.tag}${t}>`;return ue.has(e.tag)?n:`${n}${e.children.map(he).join("")}</${e.tag}>`}function he(e){if(e.kind==="text")return ke(e.value);if(e.kind!=="element")throw new Error(`serializeStatic: unexpected ${e.kind}`);return v(e)}function ge(e){let t=H[e.name]??e.name,n=e.literal;return n===!0||n===void 0?` ${t}`:n===!1||n===null?"":` ${t}="${ve(String(n))}"`}function ve(e){return e.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function ke(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}var Re="<!--fx-->",xe="<!--fx/-->";function S(e){return e.kind==="expr"||e.kind==="component"||e.kind==="control"}function Ne(e){return e.kind==="text"||e.kind==="element"&&F(e)}function F(e){return e.svg||T(e.tag)||!e.props.every(t=>g(t))?!1:e.children.every(t=>Ne(t)||S(t))}function b(e){if(S(e))return!0;let t=e.children;return t?t.some(b):!1}function V(e){for(let t=0;t<e.children.length;t++){let n=e.children[t];if(n.kind==="text"&&(n.value===""||e.children[t+1]?.kind==="text"))return!1}return e.children.every(t=>t.kind!=="element"||V(t))}function q(e){if(!F(e)||!V(e)||!e.children.some(b))return null;let t=[],n=[],r=0,i=s=>{let a=`_n$${r++}`;return t.push({ref:a,expr:s}),a};return o(e,"_el$"),{html:ye(e),tag:e.tag,steps:t,holes:n};function o(s,a){let l=-1;s.children.forEach((d,p)=>{b(d)&&(l=p)});let c=null;for(let d=0;d<=l;d++){let p=s.children[d],u=c?`${c}.nextSibling`:`${a}.firstChild`;if(S(p)){let N=i(u),j=i(`holeEnd(${N})`);n.push({parentRef:a,startRef:N,endRef:j,node:p}),c=j;continue}let f=i(u);p.kind==="element"&&b(p)&&o(p,f),c=f}}}function ye(e){return v(U(e)).split(W).join(Re+xe)}function U(e){return{...e,children:e.children.map(t=>S(t)?{kind:"text",value:W}:t.kind==="element"?U(t):t)}}var W="\0fx-hole\0";var A={version:1,module:"@fluixi/dom",symbols:["createNativeElement","insert","spread","setAttribute","delegateEvents","createComponent","createMemo","untrack","Show","For","Index","Switch","Match","Dynamic","ErrorBoundary"]},et={version:2,module:"@fluixi/dom",symbols:[...A.symbols,"template","cloneTemplate","walk"]};var Ee={show:"Show",for:"For",index:"Index",switch:"Switch",match:"Match",dynamic:"Dynamic",errorBoundary:"ErrorBoundary",suspense:"Suspense"};function Ie(e){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e)}function K(e){return Ie(e)?e:JSON.stringify(e)}function be(e){return e.expr!==void 0?e.reactive?`() => (${e.expr})`:`(${e.expr})`:JSON.stringify(e.literal??!0)}function Se(e){return e.expr!==void 0?`(${e.expr})`:JSON.stringify(e.literal??!0)}function $e(e,t,n){let r=e.filter(a=>a.kind==="spread"),o=e.filter(a=>a.kind!=="spread").map(a=>`${K(a.name)}: ${be(a)}`);t!=null&&o.push(`children: ${t}`);let s=`{ ${o.join(", ")} }`;return r.length>0?(n.add("mergeProps"),`mergeProps(${r.map(a=>a.expr).join(", ")}, ${s})`):s}function Z(e,t,n){return e.length===1?k(e[0],t,n):`[${e.map(r=>k(r,t,n)).join(", ")}]`}function G(e,t,n,r,i){r.add("createMemo"),r.add("createComponent");let o=t.filter(c=>c.kind==="spread"),a=t.filter(c=>c.kind!=="spread").map(c=>`get ${K(c.name)}() { return ${Se(c)}; }`);n.length>0&&a.push(`get children() { return ${Z(n,r,i)}; }`);let l=`{ ${a.join(", ")} }`;return o.length>0&&(r.add("mergeProps"),l=`mergeProps(${o.map(c=>c.expr).join(", ")}, ${l})`),`createMemo(() => createComponent(${e}, ${l}))`}function we(e,t){let n=z(t.name),r=t.literal;return r===!0||r===void 0?`${e}.setAttribute(${JSON.stringify(n)}, "");`:r===!1||r===null?"":`${e}.setAttribute(${JSON.stringify(n)}, ${JSON.stringify(String(r))});`}var Y=!1;function k(e,t,n){switch(e.kind){case"text":return JSON.stringify(e.value);case"expr":return e.reactive?`() => (${e.code})`:`(${e.code})`;case"fragment":return e.children.length===0?"null":Z(e.children,t,n);case"component":return G(e.name,e.props,e.children,t,n);case"control":{let r=Ee[e.control]??e.control;return t.add(r),G(r,e.props,e.children,t,n)}case"element":{if(n&&e.static&&!e.svg&&P(e)){t.add("templateNode");let a=`_tmpl$${n.length}`;return n.push({id:a,html:v(e),tag:e.tag,svg:!1}),`templateNode(${a}, ${JSON.stringify(e.tag)})`}if(n&&Y){let a=q(e);if(a){t.add("templateNode"),t.add("insert"),t.add("holeEnd"),t.add("holeContent"),t.add("holeScope");let l=`_tmpl$${n.length}`;n.push({id:l,html:a.html,tag:a.tag,svg:!1});let c=[`const _el$ = templateNode(${l}, ${JSON.stringify(a.tag)}, true);`];for(let d of a.steps)c.push(`const ${d.ref} = ${d.expr};`);for(let d of a.holes)c.push(`insert(${d.parentRef}, holeScope(${d.startRef}, () => (${k(d.node,t,n)})), ${d.endRef}, holeContent(${d.startRef}, ${d.endRef}));`);return c.push("return _el$;"),`(() => { ${c.join(" ")} })()`}}t.add("createNativeElement");let r=JSON.stringify(e.tag),i="_el$",o=[],s=e.svg?`${r}, true`:r;if(o.push(`const ${i} = createNativeElement(${s});`),e.props.length>0)if(!e.svg&&e.props.every(g))for(let a of e.props)o.push(we(i,a));else{t.add("spread");let a=e.svg?", isSVG: true":"";o.push(`spread({ element: ${i}, props: ${$e(e.props,null,t)}${a} });`)}for(let a of e.children){t.add("insert");let l=k(a,t,n),c=a.kind==="expr"&&a.reactive||a.kind==="component"||a.kind==="control";o.push(c?`insert(${i}, ${l}, null);`:`insert(${i}, ${l});`)}return o.push(`return ${i};`),`(() => { ${o.join(" ")} })()`}}}function Q(e,t){if(!t||t.length===0)return e;let n=new Map(t.map(r=>[r.id,JSON.stringify(r.html)]));return e.replace(/_tmpl\$\d+/g,r=>n.get(r)??r)}var ee={name:"imperative",contract:A,emit(e,t){let n=new Set,r=t?.templateClone!==!1?[]:void 0;return Y=t?.partialTemplates===!0,{code:k(e,n,r),imports:Array.from(n),templates:r}}};function Ce(e){switch(e.kind){case"event":return"event";case"ref":return"ref";case"spread":return"spread";case"class":case"style":return"class-or-style-directive";case"attr":case"prop":return e.reactive?"reactive-prop":e.expr!==void 0?"expression-prop":void 0;default:return"expression-prop"}}function te(e){let t=[],n=new Map,r=i=>{switch(i.kind){case"text":return!0;case"expr":return!1;case"component":case"control":for(let o of i.children)r(o);return!1;case"fragment":for(let o of i.children)r(o);return!1;case"element":{let o=!0;for(let a of i.children)r(a)||(o=!1);let s;for(let a of i.props)if(s=Ce(a),s)break;return!s&&!o&&(s=Te(i)),i.static=!s,s?n.set(i,s):t.push(i),i.static}default:return!1}};for(let i of Array.isArray(e)?e:[e])r(i);return{staticElements:t,reasons:n}}function Te(e){for(let t of e.children){if(t.kind==="expr")return"expression-child";if(t.kind==="component")return"component-child";if(t.kind==="control")return"control-child";if(t.kind==="element"&&!t.static||t.kind==="fragment")return"expression-child"}return"expression-child"}var Pe="children";function L(e){switch(e.kind){case"call":return!0;case"member":return e.property!==Pe;case"compound":return e.parts.some(L);case"opaque":return!1}}function R(e){let t=e.split(/\r\n|\n|\r/),n=0;for(let i=0;i<t.length;i++)/[^ \t]/.test(t[i])&&(n=i);let r="";for(let i=0;i<t.length;i++){let o=t[i].replace(/\t/g," ");i!==0&&(o=o.replace(/^ +/,"")),i!==t.length-1&&(o=o.replace(/ +$/,"")),o&&(i!==n&&(o+=" "),r+=o)}return r}var Ae=new Set(["svg","path","circle","rect","line","polygon","polyline","ellipse","g","defs","clipPath","text"]),Le=/^on[A-Z]/,Oe=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]),ie=e=>L(w(e));function x(e){if(e.type==="StringLiteral"||e.type==="NumericLiteral"||e.type==="BooleanLiteral"||e.type==="Literal"&&(typeof e.value=="string"||typeof e.value=="number"||typeof e.value=="boolean"))return e.value}var O=e=>!!e&&typeof x(e)=="string";function Je(e,t){return e.type==="JSXIdentifier"?{tag:e.name,component:e.name[0]!==e.name[0].toLowerCase()}:e.type==="JSXMemberExpression"?{tag:t.code(e),component:!0}:e.type==="JSXNamespacedName"?{tag:`${e.namespace.name}:${e.name.name}`,component:!1}:{tag:"div",component:!1}}function J(e){return e.type==="JSXIdentifier"?e.name==="class"?"className":e.name:e.type==="JSXNamespacedName"?`${e.namespace.name}:${e.name.name}`:"unknown"}function De(e,t){let n=J(e.name),r=Le.test(n),i=r||n.startsWith("on:")||n==="ref",s={name:n,kind:r?"event":"attr"};if(r){let l=n.slice(2).toLowerCase();s.event={name:l,delegated:Oe.has(l)}}let a=e.value;if(a==null)return s.literal=!0,s;if(O(a))return s.literal=x(a),s;if(a.type==="JSXExpressionContainer"&&a.expression?.type!=="JSXEmptyExpression"){let l=a.expression,c=x(l);return c!==void 0?(s.literal=c,s):(s.expr=t.code(l),s.reactive=i?!1:ie(l),(l.type==="JSXElement"||l.type==="JSXFragment")&&(s.jsxElement=!0),s)}return s.literal=!0,s}function ne(e,t){let n=e.value;return n==null?null:O(n)?JSON.stringify(x(n)):n.type==="JSXExpressionContainer"&&n.expression?.type!=="JSXEmptyExpression"?t.code(n.expression):null}function je(e,t){let n=[],r=[];for(let i of e){if(i.type==="JSXSpreadAttribute"){n.push({name:"",kind:"spread",expr:t.code(i.argument)});continue}if(i.type!=="JSXAttribute"||C(J(i.name)))continue;let o=i.name.type==="JSXNamespacedName"?i.name.namespace.name:null;if(o==="use"){let s=i.name.name.name;t.used.add(s);let a=ne(i,t);r.push(a!=null?`[${s}, () => (${a})]`:`[${s}]`);continue}if(o==="oncapture"){let s=i.name.name.name.toLowerCase(),a=ne(i,t)??"undefined";n.push({name:"on:"+s,kind:"attr",expr:`[${a}, { capture: true }]`});continue}n.push(De(i,t))}return r.length>0&&n.push({name:"use",kind:"attr",expr:`[${r.join(", ")}]`}),n}function re(e,t){let n=[];for(let r of e)if(r.type==="JSXText"){let i=R(r.value);i&&n.push({kind:"text",value:i})}else if(r.type==="JSXExpressionContainer"){if(r.expression?.type!=="JSXEmptyExpression"){let i=r.expression;n.push({kind:"expr",code:t.code(i),reactive:ie(i)})}}else r.type==="JSXElement"||r.type==="JSXFragment"?n.push(oe(r,t)):r.type==="JSXSpreadChild"&&n.push({kind:"expr",code:t.code(r.expression),reactive:!1});return n}function Me(e){for(let t of e){if(t.type!=="JSXAttribute")continue;let n=J(t.name);if(C(n)){if(t.value&&!O(t.value))throw new m(`'${n}' needs a literal value, not an expression — the strategy is compile-time.`);return E(n,t.value?x(t.value):null)}}}function oe(e,t){if(e.type==="JSXFragment")return{kind:"fragment",children:re(e.children,t)};let{tag:n,component:r}=Je(e.openingElement.name,t),i=je(e.openingElement.attributes,t),o=re(e.children,t);if(r){let s=Me(e.openingElement.attributes);return{kind:"component",name:n,props:i,children:o,...s?{load:s}:{}}}return{kind:"element",tag:n,svg:Ae.has(n),props:i,children:o,static:!1}}function mt(e,t){let n=oe(e,t);return te(n),n}import{parseTemplate as _e}from"@fluixi/template-parser";var se=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function Be(e){return e.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${")}function ae(e){return e.charAt(0).toUpperCase()+e.slice(1)}var D=class{constructor(t,n){this.holes=t;this.used=n}hole(t){return this.holes[t]??{code:"undefined",reactive:!1}}emit(t){let{code:n,imports:r,templates:i}=ee.emit(t,{});for(let o of r)this.used.add(o);return Q(n,i)}lowerRoot(t){let n=this.lowerChildren(t);return n.length===1?n[0]:{kind:"fragment",children:n}}lowerChildren(t){let n=[];for(let r=0;r<t.length;r++){let i=t[r];if(i.kind==="Element"||i.kind==="Component"){let s=i.attributes.find(a=>a.kind==="IfDirective");if(s&&s.kind==="IfDirective"){let a=r+1;a<t.length&&this.isBlankText(t[a])&&a++;let l=t[a],c=l&&(l.kind==="Element"||l.kind==="Component")&&l.attributes.some(d=>d.kind==="ElseDirective");n.push(this.lowerIf(i,s.hole,c?l:null)),c&&(r=a);continue}if(i.attributes.some(a=>a.kind==="EachDirective")){n.push(this.lowerEach(i));continue}}let o=this.lowerNode(i);o&&n.push(o)}return n}isBlankText(t){return t.kind==="Text"&&!t.raw&&R(t.value)===""}lowerNode(t){switch(t.kind){case"Text":{if(t.raw)return{kind:"text",value:t.value};let n=R(t.value);return n?{kind:"text",value:n}:null}case"Comment":return null;case"Expression":{let n=this.hole(t.hole);return{kind:"expr",code:n.code,reactive:n.reactive}}case"Fragment":return{kind:"fragment",children:this.lowerChildren(t.children)};case"Element":return this.lowerElement(t);case"Component":return this.lowerComponent(t);default:return null}}lowerElement(t){let n=t.attributes.find(r=>r.kind==="Attribute"&&r.name==="is");if(t.tag==="component"&&n&&n.value&&n.value.kind==="hole"){let r=t.attributes.filter(o=>o!==n),i=this.lowerComponent({...t,kind:"Component",tag:"Dynamic",tagHole:null,attributes:r});return i.props.unshift({name:"component",kind:"attr",expr:`() => (${this.hole(n.value.hole).code})`}),i}return{kind:"element",tag:t.tag,svg:t.namespace==="svg",props:this.lowerAttributes(t.attributes),children:this.lowerChildren(t.children),static:!1}}lowerComponent(t){let n=t.tagHole!=null?this.hole(t.tagHole).code:t.tag,r=this.lowerAttributes(t.attributes),{slots:i,rest:o}=this.partitionSlots(t.children);for(let[l,c]of i){let d=c.length===1?c[0]:{kind:"fragment",children:c},p={name:l,kind:"attr",expr:this.emit(d),jsxElement:!0},u=r.findIndex(f=>f.name===l);u>=0?r[u]=p:r.push(p)}let s=t.attributes.find(l=>l.kind==="LoadDirective"),a=s?E(`load:${s.strategy}`,s.modifier):void 0;return{kind:"component",name:n,props:r,children:this.lowerChildren(o),...a?{load:a}:{}}}partitionSlots(t){let n=new Map,r=[];for(let i of t){if(i.kind==="Element"||i.kind==="Component"){let o=i.attributes.find(s=>s.kind==="Attribute"&&s.name==="slot");if(o&&o.value&&o.value.kind==="static"){let s={...i,attributes:i.attributes.filter(c=>c!==o)},a=s.kind==="Element"?this.lowerElement(s):this.lowerComponent(s),l=n.get(o.value.value)??[];l.push(a),n.set(o.value.value,l);continue}}r.push(i)}return{slots:n,rest:r}}lowerIf(t,n,r){let i=this.hole(n),o=[{name:"when",kind:"attr",expr:i.code,reactive:i.reactive}];if(r){let a=this.stripAndLower(r,l=>l.kind==="ElseDirective");o.push({name:"fallback",kind:"attr",expr:this.emit(a),jsxElement:!0})}let s=this.stripAndLower(t,a=>a.kind==="IfDirective");return{kind:"component",name:"Show",props:o,children:[s]}}lowerEach(t){let n=t.attributes.find(l=>l.kind==="EachDirective");if(!n||n.kind!=="EachDirective")return this.lowerNode(t);let r=this.hole(n.hole),i=[{name:"each",kind:"attr",expr:r.code,reactive:r.reactive}];if(n.key){let l="static"in n.key?`(item) => item[${JSON.stringify(n.key.static)}]`:this.hole(n.key.hole).code;i.push({name:"by",kind:"attr",expr:l})}let o=this.itemArrow(t),s;if(o){let l={kind:"expr",code:o.body,reactive:o.bodyReactive},c=this.rebuildWithChildren(t,[l]);s=`(${o.params.join(", ")}) => (${this.emit(c)})`}else{let l=this.stripAndLower(t,c=>c.kind==="EachDirective");s=`() => (${this.emit(l)})`}return{kind:"component",name:"For",props:i,children:[{kind:"expr",code:s,reactive:!1}]}}itemArrow(t){let n=t.children.filter(r=>!this.isBlankText(r));return n.length!==1||n[0].kind!=="Expression"?null:this.hole(n[0].hole).arrow??null}stripAndLower(t,n){let r={...t,attributes:t.attributes.filter(i=>!n(i))};return r.kind==="Element"?this.lowerElement(r):this.lowerComponent(r)}rebuildWithChildren(t,n){let r=this.lowerAttributes(t.attributes.filter(i=>i.kind!=="EachDirective"));return t.kind==="Element"?{kind:"element",tag:t.tag,svg:t.namespace==="svg",props:r,children:n,static:!1}:{kind:"component",name:t.tag,props:r,children:n}}lowerAttributes(t){let n=[],r=[],i=!1,o=[],s=!1,a=[];for(let l of t)switch(l.kind){case"IfDirective":case"EachDirective":case"ElseDirective":break;case"Attribute":n.push(this.plainAttr(l));break;case"PropertyBinding":n.push({name:l.name,kind:"prop",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"EventBinding":n.push(this.eventProp(l));break;case"RefBinding":n.push({name:"ref",kind:"ref",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"Spread":n.push({name:"",kind:"spread",expr:this.hole(l.hole).code});break;case"ClassDirective":{let c=this.hole(l.hole);r.push(`${JSON.stringify(l.name)}: ${c.code}`),i=i||c.reactive;break}case"StyleDirective":{let c=this.hole(l.hole);o.push(`${JSON.stringify(l.name)}: ${c.code}`),s=s||c.reactive;break}case"BindDirective":n.push(...this.bindProps(l.name,this.hole(l.hole).code));break;case"UseDirective":{let c=l.name??(l.hole!=null?this.hole(l.hole).code:null);if(!c)break;a.push(l.name!=null&&l.hole!=null?`[${c}, () => (${this.hole(l.hole).code})]`:`[${c}]`);break}}return r.length>0&&n.push({name:"classList",kind:"attr",expr:`{ ${r.join(", ")} }`,reactive:i}),o.length>0&&n.push({name:"style",kind:"attr",expr:`{ ${o.join(", ")} }`,reactive:s}),a.length>0&&n.push({name:"use",kind:"attr",expr:`[${a.join(", ")}]`}),n}eventProp(t){let n=t.name.toLowerCase(),r=this.hole(t.hole).code;if(!(t.syntax==="colon"||t.modifiers.length>0))return{name:"on"+ae(t.name),kind:"event",event:{name:n,delegated:se.has(n)},expr:r};let o=this.wrapHandler(r,t.modifiers),s=this.eventOptions(t.modifiers),a=s?`[${o}, ${s}]`:o;return{name:"on:"+n,kind:"attr",expr:a}}wrapHandler(t,n){let r=n.includes("self")?"if (e.target !== e.currentTarget) return; ":"",i=[];return n.includes("prevent")&&i.push("e.preventDefault();"),n.includes("stop")&&i.push("e.stopPropagation();"),!r&&i.length===0?t:`(e) => { ${r}${i.join(" ")} return (${t})(e); }`}eventOptions(t){let n=[];return t.includes("capture")&&n.push("capture: true"),t.includes("once")&&n.push("once: true"),t.includes("passive")&&n.push("passive: true"),n.length?`{ ${n.join(", ")} }`:null}bindProps(t,n){let r=t==="checked",i=r?"change":"input",o=r?"checked":"value",s=`(${n})`;return[{name:t,kind:"attr",expr:`${s}[0]()`,reactive:!0},{name:"on"+ae(i),kind:"event",event:{name:i,delegated:se.has(i)},expr:`(e) => ${s}[1](e.target.${o})`}]}plainAttr(t){let n=t.value,r=t.name;t.name==="class"?r=n&&n.kind==="hole"&&this.hole(n.hole).object?"classList":"className":t.name==="html"&&(r="innerHTML");let o={name:r,kind:"attr"};if(n==null)return o.literal=!0,o;if(n.kind==="static")return o.literal=n.value,o;if(n.kind==="hole"){let l=this.hole(n.hole);return o.expr=l.code,o.reactive=l.reactive,o}let s=!1,a=n.parts.map(l=>{if("text"in l)return Be(l.text);let c=this.hole(l.hole);return s=s||c.reactive,"${"+c.code+"}"}).join("");return o.expr="`"+a+"`",o.reactive=s,o}};function xt(e,t,n,r={}){let{root:i}=_e(e,{svg:r.svg});return new D(t,n).lowerRoot(i.children)}export{X as a,Ve as b,Ge as c,Q as d,ee as e,xt as f,te as g,L as h,w as i,mt as j};
1
+ import{d as M,e as $,f as _}from"./chunk-E2PW2OZU.mjs";var le=new Set(["CallExpression","OptionalCallExpression"]),ce=new Set(["MemberExpression","OptionalMemberExpression"]);function w(e){if(!e)return{kind:"opaque"};if(le.has(e.type))return{kind:"call"};if(ce.has(e.type)){let t=e.property;return{kind:"member",property:!(e.computed===!0)&&t?.type==="Identifier"?t.name:null}}return e.type==="ConditionalExpression"?{kind:"compound",parts:[e.test,e.consequent,e.alternate].map(h)}:e.type==="LogicalExpression"||e.type==="BinaryExpression"?{kind:"compound",parts:[e.left,e.right].map(h)}:e.type==="TemplateLiteral"?{kind:"compound",parts:e.expressions.map(h)}:e.type==="ObjectExpression"?{kind:"compound",parts:e.properties.filter(n=>(n.type==="ObjectProperty"||n.type==="Property")&&n.computed!==!0).map(n=>h(n.value))}:e.type==="ArrayExpression"?{kind:"compound",parts:e.elements.filter(n=>n!=null&&n.type!=="SpreadElement").map(h)}:{kind:"opaque"}}var h=e=>w(e);var y={kind:"eager"},pe=["pointerdown","focusin","keydown"],B=new Set(["eager","idle","visible","interaction","media","never"]),m=class extends Error{};function C(e){return e.startsWith("load:")}function E(e,t){let n=e.slice(5);if(!B.has(n))throw new m(`Unknown load strategy 'load:${n}'. Expected one of ${[...B].join(", ")}.`);switch(n){case"eager":return y;case"idle":return{kind:"idle"};case"never":return{kind:"never"};case"visible":return t?{kind:"visible",rootMargin:t}:{kind:"visible"};case"interaction":return{kind:"interaction",events:t?de(t):[...pe]};case"media":if(!t)throw new m(`'load:media' needs a query, e.g. load:media="(min-width: 1024px)".`);return{kind:"media",query:t};default:throw new m(`Unhandled load strategy '${n}'.`)}}function de(e){let t=e.split(/[\s,]+/).map(n=>n.trim()).filter(Boolean);if(t.length===0)throw new m("'load:interaction' was given no event names.");return t}function X(e){return e.kind!=="eager"&&e.kind!=="never"}function Ve(e,t={}){let{resolver:n,isBound:r,modules:i,strategyFor:o}=t,s=_(i),a=new Map,l=new Set,c=p=>{let{name:u}=p;if(!u||u.includes(".")||r?.(u))return;let f=d(u);if(!f){l.add(u);return}let N=f.origin==="builtin"&&$.has(u)?y:o?.(p)??y;p.source={...f,loading:N},a.set(u,p.source)},d=p=>{if($.has(p))return{module:s[p],export:p,origin:"builtin"};let u=n?.resolve(p);if(u)return{module:u.module,export:u.export,origin:"rule"};if(M.includes(p))return{module:s[p],export:p,origin:"builtin"}};return I(e,p=>{p.kind==="component"&&c(p)}),{resolved:a,unresolved:[...l]}}function I(e,t){let n=Array.isArray(e)?e:[e];for(let r of n){t(r);let i=r.children;i&&I(i,t)}}function Ge(e){let t=[];I(e,o=>{o.kind==="component"&&o.source&&t.push(o)});let n=new Set,r=new Set;for(let o of t){let{module:s,loading:a}=o.source;a.kind==="eager"&&n.add(s),a.kind==="never"&&r.add(s)}let i=new Map;for(let o of t){let s=o.source;X(s.loading)&&n.has(s.module)&&(s.loading={kind:"eager"},i.set(s.module,(i.get(s.module)??0)+1))}return{collapsed:i,conflicted:[...r].filter(o=>n.has(o))}}var ue=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),H={className:"class",htmlFor:"for"},fe=new Set(["innerHTML","outerHTML","innerText","textContent","value","checked","selected","muted","defaultValue","defaultChecked","children","ref"]),me=new Set(["script","style","textarea","title"]);function T(e){return me.has(e)}function z(e){return H[e]??e}function g(e){return e.kind!=="attr"||e.expr!==void 0||e.name.includes(":")?!1:!fe.has(e.name)}function P(e){if(!e.static||T(e.tag))return!1;for(let t of e.props)if(!g(t))return!1;for(let t of e.children)if(t.kind!=="text"&&!(t.kind==="element"&&P(t)))return!1;return!0}function v(e){let t=e.props.map(ge).filter(Boolean).join(""),n=`<${e.tag}${t}>`;return ue.has(e.tag)?n:`${n}${e.children.map(he).join("")}</${e.tag}>`}function he(e){if(e.kind==="text")return ke(e.value);if(e.kind!=="element")throw new Error(`serializeStatic: unexpected ${e.kind}`);return v(e)}function ge(e){let t=H[e.name]??e.name,n=e.literal;return n===!0||n===void 0?` ${t}`:n===!1||n===null?"":` ${t}="${ve(String(n))}"`}function ve(e){return e.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function ke(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}var Re="<!--fx-->",xe="<!--fx/-->";function S(e){return e.kind==="expr"||e.kind==="component"||e.kind==="control"}function Ne(e){return e.kind==="text"||e.kind==="element"&&F(e)}function F(e){return e.svg||T(e.tag)||!e.props.every(t=>g(t))?!1:e.children.every(t=>Ne(t)||S(t))}function b(e){if(S(e))return!0;let t=e.children;return t?t.some(b):!1}function V(e){for(let t=0;t<e.children.length;t++){let n=e.children[t];if(n.kind==="text"&&(n.value===""||e.children[t+1]?.kind==="text"))return!1}return e.children.every(t=>t.kind!=="element"||V(t))}function q(e){if(!F(e)||!V(e)||!e.children.some(b))return null;let t=[],n=[],r=0,i=s=>{let a=`_n$${r++}`;return t.push({ref:a,expr:s}),a};return o(e,"_el$"),{html:ye(e),tag:e.tag,steps:t,holes:n};function o(s,a){let l=-1;s.children.forEach((d,p)=>{b(d)&&(l=p)});let c=null;for(let d=0;d<=l;d++){let p=s.children[d],u=c?`${c}.nextSibling`:`${a}.firstChild`;if(S(p)){let N=i(u),j=i(`holeEnd(${N})`);n.push({parentRef:a,startRef:N,endRef:j,node:p}),c=j;continue}let f=i(u);p.kind==="element"&&b(p)&&o(p,f),c=f}}}function ye(e){return v(U(e)).split(W).join(Re+xe)}function U(e){return{...e,children:e.children.map(t=>S(t)?{kind:"text",value:W}:t.kind==="element"?U(t):t)}}var W="\0fx-hole\0";var A={version:1,module:"@fluixi/dom",symbols:["createNativeElement","insert","spread","setAttribute","delegateEvents","createComponent","createMemo","untrack","Show","For","Index","Switch","Match","Dynamic","ErrorBoundary"]},et={version:2,module:"@fluixi/dom",symbols:[...A.symbols,"template","cloneTemplate","walk"]};var Ee={show:"Show",for:"For",index:"Index",switch:"Switch",match:"Match",dynamic:"Dynamic",errorBoundary:"ErrorBoundary",suspense:"Suspense"};function Ie(e){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e)}function K(e){return Ie(e)?e:JSON.stringify(e)}function be(e){return e.expr!==void 0?e.reactive?`() => (${e.expr})`:`(${e.expr})`:JSON.stringify(e.literal??!0)}function Se(e){return e.expr!==void 0?`(${e.expr})`:JSON.stringify(e.literal??!0)}function $e(e,t,n){let r=e.filter(a=>a.kind==="spread"),o=e.filter(a=>a.kind!=="spread").map(a=>`${K(a.name)}: ${be(a)}`);t!=null&&o.push(`children: ${t}`);let s=`{ ${o.join(", ")} }`;return r.length>0?(n.add("mergeProps"),`mergeProps(${r.map(a=>a.expr).join(", ")}, ${s})`):s}function Z(e,t,n){return e.length===1?k(e[0],t,n):`[${e.map(r=>k(r,t,n)).join(", ")}]`}function G(e,t,n,r,i){r.add("createMemo"),r.add("createComponent");let o=t.filter(c=>c.kind==="spread"),a=t.filter(c=>c.kind!=="spread").map(c=>`get ${K(c.name)}() { return ${Se(c)}; }`);n.length>0&&a.push(`get children() { return ${Z(n,r,i)}; }`);let l=`{ ${a.join(", ")} }`;return o.length>0&&(r.add("mergeProps"),l=`mergeProps(${o.map(c=>c.expr).join(", ")}, ${l})`),`createMemo(() => createComponent(${e}, ${l}))`}function we(e,t){let n=z(t.name),r=t.literal;return r===!0||r===void 0?`${e}.setAttribute(${JSON.stringify(n)}, "");`:r===!1||r===null?"":`${e}.setAttribute(${JSON.stringify(n)}, ${JSON.stringify(String(r))});`}var Y=!1;function k(e,t,n){switch(e.kind){case"text":return JSON.stringify(e.value);case"expr":return e.reactive?`() => (${e.code})`:`(${e.code})`;case"fragment":return e.children.length===0?"null":Z(e.children,t,n);case"component":return G(e.name,e.props,e.children,t,n);case"control":{let r=Ee[e.control]??e.control;return t.add(r),G(r,e.props,e.children,t,n)}case"element":{if(n&&e.static&&!e.svg&&P(e)){t.add("templateNode");let a=`_tmpl$${n.length}`;return n.push({id:a,html:v(e),tag:e.tag,svg:!1}),`templateNode(${a}, ${JSON.stringify(e.tag)})`}if(n&&Y){let a=q(e);if(a){t.add("templateNode"),t.add("insert"),t.add("holeEnd"),t.add("holeContent"),t.add("holeScope");let l=`_tmpl$${n.length}`;n.push({id:l,html:a.html,tag:a.tag,svg:!1});let c=[`const _el$ = templateNode(${l}, ${JSON.stringify(a.tag)}, true);`];for(let d of a.steps)c.push(`const ${d.ref} = ${d.expr};`);for(let d of a.holes)c.push(`insert(${d.parentRef}, holeScope(${d.startRef}, () => (${k(d.node,t,n)})), ${d.endRef}, holeContent(${d.startRef}, ${d.endRef}));`);return c.push("return _el$;"),`(() => { ${c.join(" ")} })()`}}t.add("createNativeElement");let r=JSON.stringify(e.tag),i="_el$",o=[],s=e.svg?`${r}, true`:r;if(o.push(`const ${i} = createNativeElement(${s});`),e.props.length>0)if(!e.svg&&e.props.every(g))for(let a of e.props)o.push(we(i,a));else{t.add("spread");let a=e.svg?", isSVG: true":"";o.push(`spread({ element: ${i}, props: ${$e(e.props,null,t)}${a} });`)}for(let a of e.children){t.add("insert");let l=k(a,t,n),c=a.kind==="expr"&&a.reactive||a.kind==="component"||a.kind==="control";o.push(c?`insert(${i}, ${l}, null);`:`insert(${i}, ${l});`)}return o.push(`return ${i};`),`(() => { ${o.join(" ")} })()`}}}function Q(e,t){if(!t||t.length===0)return e;let n=new Map(t.map(r=>[r.id,JSON.stringify(r.html)]));return e.replace(/_tmpl\$\d+/g,r=>n.get(r)??r)}var ee={name:"imperative",contract:A,emit(e,t){let n=new Set,r=t?.templateClone!==!1?[]:void 0;return Y=t?.partialTemplates===!0,{code:k(e,n,r),imports:Array.from(n),templates:r}}};function Ce(e){switch(e.kind){case"event":return"event";case"ref":return"ref";case"spread":return"spread";case"class":case"style":return"class-or-style-directive";case"attr":case"prop":return e.reactive?"reactive-prop":e.expr!==void 0?"expression-prop":void 0;default:return"expression-prop"}}function te(e){let t=[],n=new Map,r=i=>{switch(i.kind){case"text":return!0;case"expr":return!1;case"component":case"control":for(let o of i.children)r(o);return!1;case"fragment":for(let o of i.children)r(o);return!1;case"element":{let o=!0;for(let a of i.children)r(a)||(o=!1);let s;for(let a of i.props)if(s=Ce(a),s)break;return!s&&!o&&(s=Te(i)),i.static=!s,s?n.set(i,s):t.push(i),i.static}default:return!1}};for(let i of Array.isArray(e)?e:[e])r(i);return{staticElements:t,reasons:n}}function Te(e){for(let t of e.children){if(t.kind==="expr")return"expression-child";if(t.kind==="component")return"component-child";if(t.kind==="control")return"control-child";if(t.kind==="element"&&!t.static||t.kind==="fragment")return"expression-child"}return"expression-child"}var Pe="children";function L(e){switch(e.kind){case"call":return!0;case"member":return e.property!==Pe;case"compound":return e.parts.some(L);case"opaque":return!1}}function R(e){let t=e.split(/\r\n|\n|\r/),n=0;for(let i=0;i<t.length;i++)/[^ \t]/.test(t[i])&&(n=i);let r="";for(let i=0;i<t.length;i++){let o=t[i].replace(/\t/g," ");i!==0&&(o=o.replace(/^ +/,"")),i!==t.length-1&&(o=o.replace(/ +$/,"")),o&&(i!==n&&(o+=" "),r+=o)}return r}var Ae=new Set(["svg","path","circle","rect","line","polygon","polyline","ellipse","g","defs","clipPath","text"]),Le=/^on[A-Z]/,Oe=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]),ie=e=>L(w(e));function x(e){if(e.type==="StringLiteral"||e.type==="NumericLiteral"||e.type==="BooleanLiteral"||e.type==="Literal"&&(typeof e.value=="string"||typeof e.value=="number"||typeof e.value=="boolean"))return e.value}var O=e=>!!e&&typeof x(e)=="string";function Je(e,t){return e.type==="JSXIdentifier"?{tag:e.name,component:e.name[0]!==e.name[0].toLowerCase()}:e.type==="JSXMemberExpression"?{tag:t.code(e),component:!0}:e.type==="JSXNamespacedName"?{tag:`${e.namespace.name}:${e.name.name}`,component:!1}:{tag:"div",component:!1}}function J(e){return e.type==="JSXIdentifier"?e.name==="class"?"className":e.name:e.type==="JSXNamespacedName"?`${e.namespace.name}:${e.name.name}`:"unknown"}function De(e,t){let n=J(e.name),r=Le.test(n),i=r||n.startsWith("on:")||n==="ref",s={name:n,kind:r?"event":"attr"};if(r){let l=n.slice(2).toLowerCase();s.event={name:l,delegated:Oe.has(l)}}let a=e.value;if(a==null)return s.literal=!0,s;if(O(a))return s.literal=x(a),s;if(a.type==="JSXExpressionContainer"&&a.expression?.type!=="JSXEmptyExpression"){let l=a.expression,c=x(l);return c!==void 0?(s.literal=c,s):(s.expr=t.code(l),s.reactive=i?!1:ie(l),(l.type==="JSXElement"||l.type==="JSXFragment")&&(s.jsxElement=!0),s)}return s.literal=!0,s}function ne(e,t){let n=e.value;return n==null?null:O(n)?JSON.stringify(x(n)):n.type==="JSXExpressionContainer"&&n.expression?.type!=="JSXEmptyExpression"?t.code(n.expression):null}function je(e,t){let n=[],r=[];for(let i of e){if(i.type==="JSXSpreadAttribute"){n.push({name:"",kind:"spread",expr:t.code(i.argument)});continue}if(i.type!=="JSXAttribute"||C(J(i.name)))continue;let o=i.name.type==="JSXNamespacedName"?i.name.namespace.name:null;if(o==="use"){let s=i.name.name.name;t.used.add(s);let a=ne(i,t);r.push(a!=null?`[${s}, () => (${a})]`:`[${s}]`);continue}if(o==="oncapture"){let s=i.name.name.name.toLowerCase(),a=ne(i,t)??"undefined";n.push({name:"on:"+s,kind:"attr",expr:`[${a}, { capture: true }]`});continue}n.push(De(i,t))}return r.length>0&&n.push({name:"use",kind:"attr",expr:`[${r.join(", ")}]`}),n}function re(e,t){let n=[];for(let r of e)if(r.type==="JSXText"){let i=R(r.value);i&&n.push({kind:"text",value:i})}else if(r.type==="JSXExpressionContainer"){if(r.expression?.type!=="JSXEmptyExpression"){let i=r.expression;n.push({kind:"expr",code:t.code(i),reactive:ie(i)})}}else r.type==="JSXElement"||r.type==="JSXFragment"?n.push(oe(r,t)):r.type==="JSXSpreadChild"&&n.push({kind:"expr",code:t.code(r.expression),reactive:!1});return n}function Me(e){for(let t of e){if(t.type!=="JSXAttribute")continue;let n=J(t.name);if(C(n)){if(t.value&&!O(t.value))throw new m(`'${n}' needs a literal value, not an expression — the strategy is compile-time.`);return E(n,t.value?x(t.value):null)}}}function oe(e,t){if(e.type==="JSXFragment")return{kind:"fragment",children:re(e.children,t)};let{tag:n,component:r}=Je(e.openingElement.name,t),i=je(e.openingElement.attributes,t),o=re(e.children,t);if(r){let s=Me(e.openingElement.attributes);return{kind:"component",name:n,props:i,children:o,...s?{load:s}:{}}}return{kind:"element",tag:n,svg:Ae.has(n),props:i,children:o,static:!1}}function mt(e,t){let n=oe(e,t);return te(n),n}import{parseTemplate as _e}from"@fluixi/template-parser";var se=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function Be(e){return e.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${")}function ae(e){return e.charAt(0).toUpperCase()+e.slice(1)}var D=class{constructor(t,n){this.holes=t;this.used=n}hole(t){return this.holes[t]??{code:"undefined",reactive:!1}}emit(t){let{code:n,imports:r,templates:i}=ee.emit(t,{});for(let o of r)this.used.add(o);return Q(n,i)}lowerRoot(t){let n=this.lowerChildren(t);return n.length===1?n[0]:{kind:"fragment",children:n}}lowerChildren(t){let n=[];for(let r=0;r<t.length;r++){let i=t[r];if(i.kind==="Element"||i.kind==="Component"){let s=i.attributes.find(a=>a.kind==="IfDirective");if(s&&s.kind==="IfDirective"){let a=r+1;a<t.length&&this.isBlankText(t[a])&&a++;let l=t[a],c=l&&(l.kind==="Element"||l.kind==="Component")&&l.attributes.some(d=>d.kind==="ElseDirective");n.push(this.lowerIf(i,s.hole,c?l:null)),c&&(r=a);continue}if(i.attributes.some(a=>a.kind==="EachDirective")){n.push(this.lowerEach(i));continue}}let o=this.lowerNode(i);o&&n.push(o)}return n}isBlankText(t){return t.kind==="Text"&&!t.raw&&R(t.value)===""}lowerNode(t){switch(t.kind){case"Text":{if(t.raw)return{kind:"text",value:t.value};let n=R(t.value);return n?{kind:"text",value:n}:null}case"Comment":return null;case"Expression":{let n=this.hole(t.hole);return{kind:"expr",code:n.code,reactive:n.reactive}}case"Fragment":return{kind:"fragment",children:this.lowerChildren(t.children)};case"Element":return this.lowerElement(t);case"Component":return this.lowerComponent(t);default:return null}}lowerElement(t){let n=t.attributes.find(r=>r.kind==="Attribute"&&r.name==="is");if(t.tag==="component"&&n&&n.value&&n.value.kind==="hole"){let r=t.attributes.filter(o=>o!==n),i=this.lowerComponent({...t,kind:"Component",tag:"Dynamic",tagHole:null,attributes:r});return i.props.unshift({name:"component",kind:"attr",expr:`() => (${this.hole(n.value.hole).code})`}),i}return{kind:"element",tag:t.tag,svg:t.namespace==="svg",props:this.lowerAttributes(t.attributes),children:this.lowerChildren(t.children),static:!1}}lowerComponent(t){let n=t.tagHole!=null?this.hole(t.tagHole).code:t.tag,r=this.lowerAttributes(t.attributes),{slots:i,rest:o}=this.partitionSlots(t.children);for(let[l,c]of i){let d=c.length===1?c[0]:{kind:"fragment",children:c},p={name:l,kind:"attr",expr:this.emit(d),jsxElement:!0},u=r.findIndex(f=>f.name===l);u>=0?r[u]=p:r.push(p)}let s=t.attributes.find(l=>l.kind==="LoadDirective"),a=s?E(`load:${s.strategy}`,s.modifier):void 0;return{kind:"component",name:n,props:r,children:this.lowerChildren(o),...a?{load:a}:{}}}partitionSlots(t){let n=new Map,r=[];for(let i of t){if(i.kind==="Element"||i.kind==="Component"){let o=i.attributes.find(s=>s.kind==="Attribute"&&s.name==="slot");if(o&&o.value&&o.value.kind==="static"){let s={...i,attributes:i.attributes.filter(c=>c!==o)},a=s.kind==="Element"?this.lowerElement(s):this.lowerComponent(s),l=n.get(o.value.value)??[];l.push(a),n.set(o.value.value,l);continue}}r.push(i)}return{slots:n,rest:r}}lowerIf(t,n,r){let i=this.hole(n),o=[{name:"when",kind:"attr",expr:i.code,reactive:i.reactive}];if(r){let a=this.stripAndLower(r,l=>l.kind==="ElseDirective");o.push({name:"fallback",kind:"attr",expr:this.emit(a),jsxElement:!0})}let s=this.stripAndLower(t,a=>a.kind==="IfDirective");return{kind:"component",name:"Show",props:o,children:[s]}}lowerEach(t){let n=t.attributes.find(l=>l.kind==="EachDirective");if(!n||n.kind!=="EachDirective")return this.lowerNode(t);let r=this.hole(n.hole),i=[{name:"each",kind:"attr",expr:r.code,reactive:r.reactive}];if(n.key){let l="static"in n.key?`(item) => item[${JSON.stringify(n.key.static)}]`:this.hole(n.key.hole).code;i.push({name:"by",kind:"attr",expr:l})}let o=this.itemArrow(t),s;if(o){let l={kind:"expr",code:o.body,reactive:o.bodyReactive},c=this.rebuildWithChildren(t,[l]);s=`(${o.params.join(", ")}) => (${this.emit(c)})`}else{let l=this.stripAndLower(t,c=>c.kind==="EachDirective");s=`() => (${this.emit(l)})`}return{kind:"component",name:"For",props:i,children:[{kind:"expr",code:s,reactive:!1}]}}itemArrow(t){let n=t.children.filter(r=>!this.isBlankText(r));return n.length!==1||n[0].kind!=="Expression"?null:this.hole(n[0].hole).arrow??null}stripAndLower(t,n){let r={...t,attributes:t.attributes.filter(i=>!n(i))};return r.kind==="Element"?this.lowerElement(r):this.lowerComponent(r)}rebuildWithChildren(t,n){let r=this.lowerAttributes(t.attributes.filter(i=>i.kind!=="EachDirective"));return t.kind==="Element"?{kind:"element",tag:t.tag,svg:t.namespace==="svg",props:r,children:n,static:!1}:{kind:"component",name:t.tag,props:r,children:n}}lowerAttributes(t){let n=[],r=[],i=!1,o=[],s=!1,a=[];for(let l of t)switch(l.kind){case"IfDirective":case"EachDirective":case"ElseDirective":break;case"Attribute":n.push(this.plainAttr(l));break;case"PropertyBinding":n.push({name:l.name,kind:"prop",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"EventBinding":n.push(this.eventProp(l));break;case"RefBinding":n.push({name:"ref",kind:"ref",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"Spread":n.push({name:"",kind:"spread",expr:this.hole(l.hole).code});break;case"ClassDirective":{let c=this.hole(l.hole);r.push(`${JSON.stringify(l.name)}: ${c.code}`),i=i||c.reactive;break}case"StyleDirective":{let c=this.hole(l.hole);o.push(`${JSON.stringify(l.name)}: ${c.code}`),s=s||c.reactive;break}case"BindDirective":n.push(...this.bindProps(l.name,this.hole(l.hole).code));break;case"UseDirective":{let c=l.name??(l.hole!=null?this.hole(l.hole).code:null);if(!c)break;a.push(l.name!=null&&l.hole!=null?`[${c}, () => (${this.hole(l.hole).code})]`:`[${c}]`);break}}return r.length>0&&n.push({name:"classList",kind:"attr",expr:`{ ${r.join(", ")} }`,reactive:i}),o.length>0&&n.push({name:"style",kind:"attr",expr:`{ ${o.join(", ")} }`,reactive:s}),a.length>0&&n.push({name:"use",kind:"attr",expr:`[${a.join(", ")}]`}),n}eventProp(t){let n=t.name.toLowerCase(),r=this.hole(t.hole).code;if(!(t.syntax==="colon"||t.modifiers.length>0))return{name:"on"+ae(t.name),kind:"event",event:{name:n,delegated:se.has(n)},expr:r};let o=this.wrapHandler(r,t.modifiers),s=this.eventOptions(t.modifiers),a=s?`[${o}, ${s}]`:o;return{name:"on:"+n,kind:"attr",expr:a}}wrapHandler(t,n){let r=n.includes("self")?"if (e.target !== e.currentTarget) return; ":"",i=[];return n.includes("prevent")&&i.push("e.preventDefault();"),n.includes("stop")&&i.push("e.stopPropagation();"),!r&&i.length===0?t:`(e) => { ${r}${i.join(" ")} return (${t})(e); }`}eventOptions(t){let n=[];return t.includes("capture")&&n.push("capture: true"),t.includes("once")&&n.push("once: true"),t.includes("passive")&&n.push("passive: true"),n.length?`{ ${n.join(", ")} }`:null}bindProps(t,n){let r=t==="checked",i=r?"change":"input",o=r?"checked":"value";this.used.add("bindPair");let s=`bindPair(${n})`;return[{name:t,kind:"attr",expr:`${s}[0]()`,reactive:!0},{name:"on"+ae(i),kind:"event",event:{name:i,delegated:se.has(i)},expr:`(e) => ${s}[1](e.target.${o})`}]}plainAttr(t){let n=t.value,r=t.name;t.name==="class"?r=n&&n.kind==="hole"&&this.hole(n.hole).object?"classList":"className":t.name==="html"&&(r="innerHTML");let o={name:r,kind:"attr"};if(n==null)return o.literal=!0,o;if(n.kind==="static")return o.literal=n.value,o;if(n.kind==="hole"){let l=this.hole(n.hole);return o.expr=l.code,o.reactive=l.reactive,o}let s=!1,a=n.parts.map(l=>{if("text"in l)return Be(l.text);let c=this.hole(l.hole);return s=s||c.reactive,"${"+c.code+"}"}).join("");return o.expr="`"+a+"`",o.reactive=s,o}};function xt(e,t,n,r={}){let{root:i}=_e(e,{svg:r.svg});return new D(t,n).lowerRoot(i.children)}export{X as a,Ve as b,Ge as c,Q as d,ee as e,xt as f,te as g,L as h,w as i,mt as j};
@@ -1 +1 @@
1
- "use strict";var ve=Object.create;var I=Object.defineProperty;var ke=Object.getOwnPropertyDescriptor;var xe=Object.getOwnPropertyNames;var ye=Object.getPrototypeOf,Ne=Object.prototype.hasOwnProperty;var Ee=(e,t)=>{for(var n in t)I(e,n,{get:t[n],enumerable:!0})},G=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of xe(t))!Ne.call(e,i)&&i!==n&&I(e,i,{get:()=>t[i],enumerable:!(r=ke(t,i))||r.enumerable});return e};var W=(e,t,n)=>(n=e!=null?ve(ye(e)):{},G(t||!e||!e.__esModule?I(n,"default",{value:e,enumerable:!0}):n,e)),Re=e=>G(I({},"__esModule",{value:!0}),e);var pt={};Ee(pt,{buildIRFromLit:()=>B});module.exports=Re(pt);var A=require("@babel/core"),F=W(require("@babel/generator"),1);var le=require("@fluixi/template-parser");var be={kind:"eager"},Se=["pointerdown","focusin","keydown"],q=new Set(["eager","idle","visible","interaction","media","never"]),f=class extends Error{};function J(e){return e.startsWith("load:")}function $(e,t){let n=e.slice(5);if(!q.has(n))throw new f(`Unknown load strategy 'load:${n}'. Expected one of ${[...q].join(", ")}.`);switch(n){case"eager":return be;case"idle":return{kind:"idle"};case"never":return{kind:"never"};case"visible":return t?{kind:"visible",rootMargin:t}:{kind:"visible"};case"interaction":return{kind:"interaction",events:t?Ie(t):[...Se]};case"media":if(!t)throw new f(`'load:media' needs a query, e.g. load:media="(min-width: 1024px)".`);return{kind:"media",query:t};default:throw new f(`Unhandled load strategy '${n}'.`)}}function Ie(e){let t=e.split(/[\s,]+/).map(n=>n.trim()).filter(Boolean);if(t.length===0)throw new f("'load:interaction' was given no event names.");return t}var $e=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),U={className:"class",htmlFor:"for"},we=new Set(["innerHTML","outerHTML","innerText","textContent","value","checked","selected","muted","defaultValue","defaultChecked","children","ref"]),Te=new Set(["script","style","textarea","title"]);function L(e){return Te.has(e)}function K(e){return U[e]??e}function h(e){return e.kind!=="attr"||e.expr!==void 0||e.name.includes(":")?!1:!we.has(e.name)}function D(e){if(!e.static||L(e.tag))return!1;for(let t of e.props)if(!h(t))return!1;for(let t of e.children)if(t.kind!=="text"&&!(t.kind==="element"&&D(t)))return!1;return!0}function g(e){let t=e.props.map(Pe).filter(Boolean).join(""),n=`<${e.tag}${t}>`;return $e.has(e.tag)?n:`${n}${e.children.map(Ce).join("")}</${e.tag}>`}function Ce(e){if(e.kind==="text")return Je(e.value);if(e.kind!=="element")throw new Error(`serializeStatic: unexpected ${e.kind}`);return g(e)}function Pe(e){let t=U[e.name]??e.name,n=e.literal;return n===!0||n===void 0?` ${t}`:n===!1||n===null?"":` ${t}="${Ae(String(n))}"`}function Ae(e){return e.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function Je(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}var Le="<!--fx-->",De="<!--fx/-->";function T(e){return e.kind==="expr"||e.kind==="component"||e.kind==="control"}function je(e){return e.kind==="text"||e.kind==="element"&&Z(e)}function Z(e){return e.svg||L(e.tag)||!e.props.every(t=>h(t))?!1:e.children.every(t=>je(t)||T(t))}function w(e){if(T(e))return!0;let t=e.children;return t?t.some(w):!1}function Y(e){for(let t=0;t<e.children.length;t++){let n=e.children[t];if(n.kind==="text"&&(n.value===""||e.children[t+1]?.kind==="text"))return!1}return e.children.every(t=>t.kind!=="element"||Y(t))}function Q(e){if(!Z(e)||!Y(e)||!e.children.some(w))return null;let t=[],n=[],r=0,i=l=>{let s=`_n$${r++}`;return t.push({ref:s,expr:l}),s};return o(e,"_el$"),{html:Oe(e),tag:e.tag,steps:t,holes:n};function o(l,s){let a=-1;l.children.forEach((p,d)=>{w(p)&&(a=d)});let c=null;for(let p=0;p<=a;p++){let d=l.children[p],m=c?`${c}.nextSibling`:`${s}.firstChild`;if(T(d)){let z=i(m),V=i(`holeEnd(${z})`);n.push({parentRef:s,startRef:z,endRef:V,node:d}),c=V;continue}let S=i(m);d.kind==="element"&&w(d)&&o(d,S),c=S}}}function Oe(e){return g(ee(e)).split(te).join(Le+De)}function ee(e){return{...e,children:e.children.map(t=>T(t)?{kind:"text",value:te}:t.kind==="element"?ee(t):t)}}var te="\0fx-hole\0";var j={version:1,module:"@fluixi/dom",symbols:["createNativeElement","insert","spread","setAttribute","delegateEvents","createComponent","createMemo","untrack","Show","For","Index","Switch","Match","Dynamic","ErrorBoundary"]},gt={version:2,module:"@fluixi/dom",symbols:[...j.symbols,"template","cloneTemplate","walk"]};var Xe={show:"Show",for:"For",index:"Index",switch:"Switch",match:"Match",dynamic:"Dynamic",errorBoundary:"ErrorBoundary",suspense:"Suspense"};function Me(e){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e)}function re(e){return Me(e)?e:JSON.stringify(e)}function He(e){return e.expr!==void 0?e.reactive?`() => (${e.expr})`:`(${e.expr})`:JSON.stringify(e.literal??!0)}function _e(e){return e.expr!==void 0?`(${e.expr})`:JSON.stringify(e.literal??!0)}function Be(e,t,n){let r=e.filter(s=>s.kind==="spread"),o=e.filter(s=>s.kind!=="spread").map(s=>`${re(s.name)}: ${He(s)}`);t!=null&&o.push(`children: ${t}`);let l=`{ ${o.join(", ")} }`;return r.length>0?(n.add("mergeProps"),`mergeProps(${r.map(s=>s.expr).join(", ")}, ${l})`):l}function ie(e,t,n){return e.length===1?v(e[0],t,n):`[${e.map(r=>v(r,t,n)).join(", ")}]`}function ne(e,t,n,r,i){r.add("createMemo"),r.add("createComponent");let o=t.filter(c=>c.kind==="spread"),s=t.filter(c=>c.kind!=="spread").map(c=>`get ${re(c.name)}() { return ${_e(c)}; }`);n.length>0&&s.push(`get children() { return ${ie(n,r,i)}; }`);let a=`{ ${s.join(", ")} }`;return o.length>0&&(r.add("mergeProps"),a=`mergeProps(${o.map(c=>c.expr).join(", ")}, ${a})`),`createMemo(() => createComponent(${e}, ${a}))`}function Fe(e,t){let n=K(t.name),r=t.literal;return r===!0||r===void 0?`${e}.setAttribute(${JSON.stringify(n)}, "");`:r===!1||r===null?"":`${e}.setAttribute(${JSON.stringify(n)}, ${JSON.stringify(String(r))});`}var oe=!1;function v(e,t,n){switch(e.kind){case"text":return JSON.stringify(e.value);case"expr":return e.reactive?`() => (${e.code})`:`(${e.code})`;case"fragment":return e.children.length===0?"null":ie(e.children,t,n);case"component":return ne(e.name,e.props,e.children,t,n);case"control":{let r=Xe[e.control]??e.control;return t.add(r),ne(r,e.props,e.children,t,n)}case"element":{if(n&&e.static&&!e.svg&&D(e)){t.add("templateNode");let s=`_tmpl$${n.length}`;return n.push({id:s,html:g(e),tag:e.tag,svg:!1}),`templateNode(${s}, ${JSON.stringify(e.tag)})`}if(n&&oe){let s=Q(e);if(s){t.add("templateNode"),t.add("insert"),t.add("holeEnd"),t.add("holeContent"),t.add("holeScope");let a=`_tmpl$${n.length}`;n.push({id:a,html:s.html,tag:s.tag,svg:!1});let c=[`const _el$ = templateNode(${a}, ${JSON.stringify(s.tag)}, true);`];for(let p of s.steps)c.push(`const ${p.ref} = ${p.expr};`);for(let p of s.holes)c.push(`insert(${p.parentRef}, holeScope(${p.startRef}, () => (${v(p.node,t,n)})), ${p.endRef}, holeContent(${p.startRef}, ${p.endRef}));`);return c.push("return _el$;"),`(() => { ${c.join(" ")} })()`}}t.add("createNativeElement");let r=JSON.stringify(e.tag),i="_el$",o=[],l=e.svg?`${r}, true`:r;if(o.push(`const ${i} = createNativeElement(${l});`),e.props.length>0)if(!e.svg&&e.props.every(h))for(let s of e.props)o.push(Fe(i,s));else{t.add("spread");let s=e.svg?", isSVG: true":"";o.push(`spread({ element: ${i}, props: ${Be(e.props,null,t)}${s} });`)}for(let s of e.children){t.add("insert");let a=v(s,t,n),c=s.kind==="expr"&&s.reactive||s.kind==="component"||s.kind==="control";o.push(c?`insert(${i}, ${a}, null);`:`insert(${i}, ${a});`)}return o.push(`return ${i};`),`(() => { ${o.join(" ")} })()`}}}function k(e,t){if(!t||t.length===0)return e;let n=new Map(t.map(r=>[r.id,JSON.stringify(r.html)]));return e.replace(/_tmpl\$\d+/g,r=>n.get(r)??r)}var x={name:"imperative",contract:j,emit(e,t){let n=new Set,r=t?.templateClone!==!1?[]:void 0;return oe=t?.partialTemplates===!0,{code:v(e,n,r),imports:Array.from(n),templates:r}}};function y(e){let t=e.split(/\r\n|\n|\r/),n=0;for(let i=0;i<t.length;i++)/[^ \t]/.test(t[i])&&(n=i);let r="";for(let i=0;i<t.length;i++){let o=t[i].replace(/\t/g," ");i!==0&&(o=o.replace(/^ +/,"")),i!==t.length-1&&(o=o.replace(/ +$/,"")),o&&(i!==n&&(o+=" "),r+=o)}return r}var se=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function ze(e){return e.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${")}function ae(e){return e.charAt(0).toUpperCase()+e.slice(1)}var O=class{constructor(t,n){this.holes=t;this.used=n}hole(t){return this.holes[t]??{code:"undefined",reactive:!1}}emit(t){let{code:n,imports:r,templates:i}=x.emit(t,{});for(let o of r)this.used.add(o);return k(n,i)}lowerRoot(t){let n=this.lowerChildren(t);return n.length===1?n[0]:{kind:"fragment",children:n}}lowerChildren(t){let n=[];for(let r=0;r<t.length;r++){let i=t[r];if(i.kind==="Element"||i.kind==="Component"){let l=i.attributes.find(s=>s.kind==="IfDirective");if(l&&l.kind==="IfDirective"){let s=r+1;s<t.length&&this.isBlankText(t[s])&&s++;let a=t[s],c=a&&(a.kind==="Element"||a.kind==="Component")&&a.attributes.some(p=>p.kind==="ElseDirective");n.push(this.lowerIf(i,l.hole,c?a:null)),c&&(r=s);continue}if(i.attributes.some(s=>s.kind==="EachDirective")){n.push(this.lowerEach(i));continue}}let o=this.lowerNode(i);o&&n.push(o)}return n}isBlankText(t){return t.kind==="Text"&&!t.raw&&y(t.value)===""}lowerNode(t){switch(t.kind){case"Text":{if(t.raw)return{kind:"text",value:t.value};let n=y(t.value);return n?{kind:"text",value:n}:null}case"Comment":return null;case"Expression":{let n=this.hole(t.hole);return{kind:"expr",code:n.code,reactive:n.reactive}}case"Fragment":return{kind:"fragment",children:this.lowerChildren(t.children)};case"Element":return this.lowerElement(t);case"Component":return this.lowerComponent(t);default:return null}}lowerElement(t){let n=t.attributes.find(r=>r.kind==="Attribute"&&r.name==="is");if(t.tag==="component"&&n&&n.value&&n.value.kind==="hole"){let r=t.attributes.filter(o=>o!==n),i=this.lowerComponent({...t,kind:"Component",tag:"Dynamic",tagHole:null,attributes:r});return i.props.unshift({name:"component",kind:"attr",expr:`() => (${this.hole(n.value.hole).code})`}),i}return{kind:"element",tag:t.tag,svg:t.namespace==="svg",props:this.lowerAttributes(t.attributes),children:this.lowerChildren(t.children),static:!1}}lowerComponent(t){let n=t.tagHole!=null?this.hole(t.tagHole).code:t.tag,r=this.lowerAttributes(t.attributes),{slots:i,rest:o}=this.partitionSlots(t.children);for(let[a,c]of i){let p=c.length===1?c[0]:{kind:"fragment",children:c},d={name:a,kind:"attr",expr:this.emit(p),jsxElement:!0},m=r.findIndex(S=>S.name===a);m>=0?r[m]=d:r.push(d)}let l=t.attributes.find(a=>a.kind==="LoadDirective"),s=l?$(`load:${l.strategy}`,l.modifier):void 0;return{kind:"component",name:n,props:r,children:this.lowerChildren(o),...s?{load:s}:{}}}partitionSlots(t){let n=new Map,r=[];for(let i of t){if(i.kind==="Element"||i.kind==="Component"){let o=i.attributes.find(l=>l.kind==="Attribute"&&l.name==="slot");if(o&&o.value&&o.value.kind==="static"){let l={...i,attributes:i.attributes.filter(c=>c!==o)},s=l.kind==="Element"?this.lowerElement(l):this.lowerComponent(l),a=n.get(o.value.value)??[];a.push(s),n.set(o.value.value,a);continue}}r.push(i)}return{slots:n,rest:r}}lowerIf(t,n,r){let i=this.hole(n),o=[{name:"when",kind:"attr",expr:i.code,reactive:i.reactive}];if(r){let s=this.stripAndLower(r,a=>a.kind==="ElseDirective");o.push({name:"fallback",kind:"attr",expr:this.emit(s),jsxElement:!0})}let l=this.stripAndLower(t,s=>s.kind==="IfDirective");return{kind:"component",name:"Show",props:o,children:[l]}}lowerEach(t){let n=t.attributes.find(a=>a.kind==="EachDirective");if(!n||n.kind!=="EachDirective")return this.lowerNode(t);let r=this.hole(n.hole),i=[{name:"each",kind:"attr",expr:r.code,reactive:r.reactive}];if(n.key){let a="static"in n.key?`(item) => item[${JSON.stringify(n.key.static)}]`:this.hole(n.key.hole).code;i.push({name:"by",kind:"attr",expr:a})}let o=this.itemArrow(t),l;if(o){let a={kind:"expr",code:o.body,reactive:o.bodyReactive},c=this.rebuildWithChildren(t,[a]);l=`(${o.params.join(", ")}) => (${this.emit(c)})`}else{let a=this.stripAndLower(t,c=>c.kind==="EachDirective");l=`() => (${this.emit(a)})`}return{kind:"component",name:"For",props:i,children:[{kind:"expr",code:l,reactive:!1}]}}itemArrow(t){let n=t.children.filter(r=>!this.isBlankText(r));return n.length!==1||n[0].kind!=="Expression"?null:this.hole(n[0].hole).arrow??null}stripAndLower(t,n){let r={...t,attributes:t.attributes.filter(i=>!n(i))};return r.kind==="Element"?this.lowerElement(r):this.lowerComponent(r)}rebuildWithChildren(t,n){let r=this.lowerAttributes(t.attributes.filter(i=>i.kind!=="EachDirective"));return t.kind==="Element"?{kind:"element",tag:t.tag,svg:t.namespace==="svg",props:r,children:n,static:!1}:{kind:"component",name:t.tag,props:r,children:n}}lowerAttributes(t){let n=[],r=[],i=!1,o=[],l=!1,s=[];for(let a of t)switch(a.kind){case"IfDirective":case"EachDirective":case"ElseDirective":break;case"Attribute":n.push(this.plainAttr(a));break;case"PropertyBinding":n.push({name:a.name,kind:"prop",expr:this.hole(a.hole).code,reactive:this.hole(a.hole).reactive});break;case"EventBinding":n.push(this.eventProp(a));break;case"RefBinding":n.push({name:"ref",kind:"ref",expr:this.hole(a.hole).code,reactive:this.hole(a.hole).reactive});break;case"Spread":n.push({name:"",kind:"spread",expr:this.hole(a.hole).code});break;case"ClassDirective":{let c=this.hole(a.hole);r.push(`${JSON.stringify(a.name)}: ${c.code}`),i=i||c.reactive;break}case"StyleDirective":{let c=this.hole(a.hole);o.push(`${JSON.stringify(a.name)}: ${c.code}`),l=l||c.reactive;break}case"BindDirective":n.push(...this.bindProps(a.name,this.hole(a.hole).code));break;case"UseDirective":{let c=a.name??(a.hole!=null?this.hole(a.hole).code:null);if(!c)break;s.push(a.name!=null&&a.hole!=null?`[${c}, () => (${this.hole(a.hole).code})]`:`[${c}]`);break}}return r.length>0&&n.push({name:"classList",kind:"attr",expr:`{ ${r.join(", ")} }`,reactive:i}),o.length>0&&n.push({name:"style",kind:"attr",expr:`{ ${o.join(", ")} }`,reactive:l}),s.length>0&&n.push({name:"use",kind:"attr",expr:`[${s.join(", ")}]`}),n}eventProp(t){let n=t.name.toLowerCase(),r=this.hole(t.hole).code;if(!(t.syntax==="colon"||t.modifiers.length>0))return{name:"on"+ae(t.name),kind:"event",event:{name:n,delegated:se.has(n)},expr:r};let o=this.wrapHandler(r,t.modifiers),l=this.eventOptions(t.modifiers),s=l?`[${o}, ${l}]`:o;return{name:"on:"+n,kind:"attr",expr:s}}wrapHandler(t,n){let r=n.includes("self")?"if (e.target !== e.currentTarget) return; ":"",i=[];return n.includes("prevent")&&i.push("e.preventDefault();"),n.includes("stop")&&i.push("e.stopPropagation();"),!r&&i.length===0?t:`(e) => { ${r}${i.join(" ")} return (${t})(e); }`}eventOptions(t){let n=[];return t.includes("capture")&&n.push("capture: true"),t.includes("once")&&n.push("once: true"),t.includes("passive")&&n.push("passive: true"),n.length?`{ ${n.join(", ")} }`:null}bindProps(t,n){let r=t==="checked",i=r?"change":"input",o=r?"checked":"value",l=`(${n})`;return[{name:t,kind:"attr",expr:`${l}[0]()`,reactive:!0},{name:"on"+ae(i),kind:"event",event:{name:i,delegated:se.has(i)},expr:`(e) => ${l}[1](e.target.${o})`}]}plainAttr(t){let n=t.value,r=t.name;t.name==="class"?r=n&&n.kind==="hole"&&this.hole(n.hole).object?"classList":"className":t.name==="html"&&(r="innerHTML");let o={name:r,kind:"attr"};if(n==null)return o.literal=!0,o;if(n.kind==="static")return o.literal=n.value,o;if(n.kind==="hole"){let a=this.hole(n.hole);return o.expr=a.code,o.reactive=a.reactive,o}let l=!1,s=n.parts.map(a=>{if("text"in a)return ze(a.text);let c=this.hole(a.hole);return l=l||c.reactive,"${"+c.code+"}"}).join("");return o.expr="`"+s+"`",o.reactive=l,o}};function ce(e,t,n,r={}){let{root:i}=(0,le.parseTemplate)(e,{svg:r.svg});return new O(t,n).lowerRoot(i.children)}var u=require("@babel/core"),H=W(require("@babel/generator"),1);var Ve="children";function N(e){switch(e.kind){case"call":return!0;case"member":return e.property!==Ve;case"compound":return e.parts.some(N);case"opaque":return!1}}var Ge=new Set(["CallExpression","OptionalCallExpression"]),We=new Set(["MemberExpression","OptionalMemberExpression"]);function R(e){if(!e)return{kind:"opaque"};if(Ge.has(e.type))return{kind:"call"};if(We.has(e.type)){let t=e.property;return{kind:"member",property:!(e.computed===!0)&&t?.type==="Identifier"?t.name:null}}return e.type==="ConditionalExpression"?{kind:"compound",parts:[e.test,e.consequent,e.alternate].map(E)}:e.type==="LogicalExpression"||e.type==="BinaryExpression"?{kind:"compound",parts:[e.left,e.right].map(E)}:e.type==="TemplateLiteral"?{kind:"compound",parts:e.expressions.map(E)}:e.type==="ObjectExpression"?{kind:"compound",parts:e.properties.filter(n=>(n.type==="ObjectProperty"||n.type==="Property")&&n.computed!==!0).map(n=>E(n.value))}:e.type==="ArrayExpression"?{kind:"compound",parts:e.elements.filter(n=>n!=null&&n.type!=="SpreadElement").map(E)}:{kind:"opaque"}}var E=e=>R(e);function qe(e){switch(e.kind){case"event":return"event";case"ref":return"ref";case"spread":return"spread";case"class":case"style":return"class-or-style-directive";case"attr":case"prop":return e.reactive?"reactive-prop":e.expr!==void 0?"expression-prop":void 0;default:return"expression-prop"}}function C(e){let t=[],n=new Map,r=i=>{switch(i.kind){case"text":return!0;case"expr":return!1;case"component":case"control":for(let o of i.children)r(o);return!1;case"fragment":for(let o of i.children)r(o);return!1;case"element":{let o=!0;for(let s of i.children)r(s)||(o=!1);let l;for(let s of i.props)if(l=qe(s),l)break;return!l&&!o&&(l=Ue(i)),i.static=!l,l?n.set(i,l):t.push(i),i.static}default:return!1}};for(let i of Array.isArray(e)?e:[e])r(i);return{staticElements:t,reasons:n}}function Ue(e){for(let t of e.children){if(t.kind==="expr")return"expression-child";if(t.kind==="component")return"component-child";if(t.kind==="control")return"control-child";if(t.kind==="element"&&!t.static||t.kind==="fragment")return"expression-child"}return"expression-child"}var Ke=new Set(["svg","path","circle","rect","line","polygon","polyline","ellipse","g","defs","clipPath","text"]),Ze=/^on[A-Z]/,Ye=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]),ue=e=>N(R(e));function b(e){if(e.type==="StringLiteral"||e.type==="NumericLiteral"||e.type==="BooleanLiteral"||e.type==="Literal"&&(typeof e.value=="string"||typeof e.value=="number"||typeof e.value=="boolean"))return e.value}var X=e=>!!e&&typeof b(e)=="string";function Qe(e,t){return e.type==="JSXIdentifier"?{tag:e.name,component:e.name[0]!==e.name[0].toLowerCase()}:e.type==="JSXMemberExpression"?{tag:t.code(e),component:!0}:e.type==="JSXNamespacedName"?{tag:`${e.namespace.name}:${e.name.name}`,component:!1}:{tag:"div",component:!1}}function M(e){return e.type==="JSXIdentifier"?e.name==="class"?"className":e.name:e.type==="JSXNamespacedName"?`${e.namespace.name}:${e.name.name}`:"unknown"}function et(e,t){let n=M(e.name),r=Ze.test(n),i=r||n.startsWith("on:")||n==="ref",l={name:n,kind:r?"event":"attr"};if(r){let a=n.slice(2).toLowerCase();l.event={name:a,delegated:Ye.has(a)}}let s=e.value;if(s==null)return l.literal=!0,l;if(X(s))return l.literal=b(s),l;if(s.type==="JSXExpressionContainer"&&s.expression?.type!=="JSXEmptyExpression"){let a=s.expression,c=b(a);return c!==void 0?(l.literal=c,l):(l.expr=t.code(a),l.reactive=i?!1:ue(a),(a.type==="JSXElement"||a.type==="JSXFragment")&&(l.jsxElement=!0),l)}return l.literal=!0,l}function pe(e,t){let n=e.value;return n==null?null:X(n)?JSON.stringify(b(n)):n.type==="JSXExpressionContainer"&&n.expression?.type!=="JSXEmptyExpression"?t.code(n.expression):null}function tt(e,t){let n=[],r=[];for(let i of e){if(i.type==="JSXSpreadAttribute"){n.push({name:"",kind:"spread",expr:t.code(i.argument)});continue}if(i.type!=="JSXAttribute"||J(M(i.name)))continue;let o=i.name.type==="JSXNamespacedName"?i.name.namespace.name:null;if(o==="use"){let l=i.name.name.name;t.used.add(l);let s=pe(i,t);r.push(s!=null?`[${l}, () => (${s})]`:`[${l}]`);continue}if(o==="oncapture"){let l=i.name.name.name.toLowerCase(),s=pe(i,t)??"undefined";n.push({name:"on:"+l,kind:"attr",expr:`[${s}, { capture: true }]`});continue}n.push(et(i,t))}return r.length>0&&n.push({name:"use",kind:"attr",expr:`[${r.join(", ")}]`}),n}function de(e,t){let n=[];for(let r of e)if(r.type==="JSXText"){let i=y(r.value);i&&n.push({kind:"text",value:i})}else if(r.type==="JSXExpressionContainer"){if(r.expression?.type!=="JSXEmptyExpression"){let i=r.expression;n.push({kind:"expr",code:t.code(i),reactive:ue(i)})}}else r.type==="JSXElement"||r.type==="JSXFragment"?n.push(me(r,t)):r.type==="JSXSpreadChild"&&n.push({kind:"expr",code:t.code(r.expression),reactive:!1});return n}function nt(e){for(let t of e){if(t.type!=="JSXAttribute")continue;let n=M(t.name);if(J(n)){if(t.value&&!X(t.value))throw new f(`'${n}' needs a literal value, not an expression — the strategy is compile-time.`);return $(n,t.value?b(t.value):null)}}}function me(e,t){if(e.type==="JSXFragment")return{kind:"fragment",children:de(e.children,t)};let{tag:n,component:r}=Qe(e.openingElement.name,t),i=tt(e.openingElement.attributes,t),o=de(e.children,t);if(r){let l=nt(e.openingElement.attributes);return{kind:"component",name:n,props:i,children:o,...l?{load:l}:{}}}return{kind:"element",tag:n,svg:Ke.has(n),props:i,children:o,static:!1}}function fe(e,t){let n=me(e,t);return C(n),n}var rt=H.default.default??H.default;function he(e){return rt(e,{concise:!0}).code}function it(e,t,n){let r=u.types.cloneNode(e,!0),i=u.types.file(u.types.program([u.types.expressionStatement(r)])),o=!1,l=(s,a,c)=>{for(let p of c)t.add(p);s.replaceWith(u.template.expression(a,{placeholderPattern:!1,plugins:["typescript"]})()),s.skip(),o=!0};return(0,u.traverse)(i,{"JSXElement|JSXFragment"(s){let a=s.node,c=ot(a,t,n);n?.(c);let{code:p,imports:d,templates:m}=x.emit(c,{});l(s,k(p,m),d)},TaggedTemplateExpression(s){let a=s.node.tag;if(!u.types.isIdentifier(a)||a.name!=="html"&&a.name!=="svg")return;let c=B(s.node,t,{svg:a.name==="svg",onNested:n});n?.(c);let{code:p,imports:d,templates:m}=x.emit(c,{});l(s,k(p,m),d)}}),o?i.program.body[0].expression:e}function P(e,t,n){return he(it(e,t,n))}function _(e){return N(R(e))}function ot(e,t=new Set,n){return fe(e,{code:i=>i.type==="JSXMemberExpression"?he(i):P(i,t,n),used:t})}var st=F.default.default??F.default;function at(e){return st(e,{concise:!0}).code}function lt(e,t,n){let r={code:P(e,t,n),reactive:_(e)};if(A.types.isArrowFunctionExpression(e)&&!A.types.isBlockStatement(e.body)){let i=e.body;r.arrow={params:e.params.map(o=>at(o)),body:P(i,t,n),bodyReactive:_(i)}}return A.types.isObjectExpression(e)&&(r.object=!0),r}function ge(e,t,n={}){let r=e.quasi,i=r.expressions.map(o=>lt(o,t,n.onNested));return ce(ct(r),i,t,n)}function ct(e){let t=[];return e.quasis.forEach((n,r)=>{let i=n.value.cooked??n.value.raw;if(t.push({kind:"static",text:i,start:n.start??0}),r<e.expressions.length){let o=e.expressions[r];t.push({kind:"hole",index:r,start:o.start??0,end:o.end??0})}}),t}function B(e,t=new Set,n={}){let r=ge(e,t,n);return C(r),r}
1
+ "use strict";var ve=Object.create;var I=Object.defineProperty;var ke=Object.getOwnPropertyDescriptor;var xe=Object.getOwnPropertyNames;var ye=Object.getPrototypeOf,Ne=Object.prototype.hasOwnProperty;var Ee=(e,t)=>{for(var n in t)I(e,n,{get:t[n],enumerable:!0})},G=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of xe(t))!Ne.call(e,i)&&i!==n&&I(e,i,{get:()=>t[i],enumerable:!(r=ke(t,i))||r.enumerable});return e};var W=(e,t,n)=>(n=e!=null?ve(ye(e)):{},G(t||!e||!e.__esModule?I(n,"default",{value:e,enumerable:!0}):n,e)),Re=e=>G(I({},"__esModule",{value:!0}),e);var pt={};Ee(pt,{buildIRFromLit:()=>B});module.exports=Re(pt);var A=require("@babel/core"),F=W(require("@babel/generator"),1);var le=require("@fluixi/template-parser");var be={kind:"eager"},Se=["pointerdown","focusin","keydown"],q=new Set(["eager","idle","visible","interaction","media","never"]),f=class extends Error{};function J(e){return e.startsWith("load:")}function $(e,t){let n=e.slice(5);if(!q.has(n))throw new f(`Unknown load strategy 'load:${n}'. Expected one of ${[...q].join(", ")}.`);switch(n){case"eager":return be;case"idle":return{kind:"idle"};case"never":return{kind:"never"};case"visible":return t?{kind:"visible",rootMargin:t}:{kind:"visible"};case"interaction":return{kind:"interaction",events:t?Ie(t):[...Se]};case"media":if(!t)throw new f(`'load:media' needs a query, e.g. load:media="(min-width: 1024px)".`);return{kind:"media",query:t};default:throw new f(`Unhandled load strategy '${n}'.`)}}function Ie(e){let t=e.split(/[\s,]+/).map(n=>n.trim()).filter(Boolean);if(t.length===0)throw new f("'load:interaction' was given no event names.");return t}var $e=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),U={className:"class",htmlFor:"for"},we=new Set(["innerHTML","outerHTML","innerText","textContent","value","checked","selected","muted","defaultValue","defaultChecked","children","ref"]),Te=new Set(["script","style","textarea","title"]);function L(e){return Te.has(e)}function K(e){return U[e]??e}function h(e){return e.kind!=="attr"||e.expr!==void 0||e.name.includes(":")?!1:!we.has(e.name)}function D(e){if(!e.static||L(e.tag))return!1;for(let t of e.props)if(!h(t))return!1;for(let t of e.children)if(t.kind!=="text"&&!(t.kind==="element"&&D(t)))return!1;return!0}function g(e){let t=e.props.map(Pe).filter(Boolean).join(""),n=`<${e.tag}${t}>`;return $e.has(e.tag)?n:`${n}${e.children.map(Ce).join("")}</${e.tag}>`}function Ce(e){if(e.kind==="text")return Je(e.value);if(e.kind!=="element")throw new Error(`serializeStatic: unexpected ${e.kind}`);return g(e)}function Pe(e){let t=U[e.name]??e.name,n=e.literal;return n===!0||n===void 0?` ${t}`:n===!1||n===null?"":` ${t}="${Ae(String(n))}"`}function Ae(e){return e.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function Je(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}var Le="<!--fx-->",De="<!--fx/-->";function T(e){return e.kind==="expr"||e.kind==="component"||e.kind==="control"}function je(e){return e.kind==="text"||e.kind==="element"&&Z(e)}function Z(e){return e.svg||L(e.tag)||!e.props.every(t=>h(t))?!1:e.children.every(t=>je(t)||T(t))}function w(e){if(T(e))return!0;let t=e.children;return t?t.some(w):!1}function Y(e){for(let t=0;t<e.children.length;t++){let n=e.children[t];if(n.kind==="text"&&(n.value===""||e.children[t+1]?.kind==="text"))return!1}return e.children.every(t=>t.kind!=="element"||Y(t))}function Q(e){if(!Z(e)||!Y(e)||!e.children.some(w))return null;let t=[],n=[],r=0,i=l=>{let s=`_n$${r++}`;return t.push({ref:s,expr:l}),s};return o(e,"_el$"),{html:Oe(e),tag:e.tag,steps:t,holes:n};function o(l,s){let a=-1;l.children.forEach((p,d)=>{w(p)&&(a=d)});let c=null;for(let p=0;p<=a;p++){let d=l.children[p],m=c?`${c}.nextSibling`:`${s}.firstChild`;if(T(d)){let z=i(m),V=i(`holeEnd(${z})`);n.push({parentRef:s,startRef:z,endRef:V,node:d}),c=V;continue}let S=i(m);d.kind==="element"&&w(d)&&o(d,S),c=S}}}function Oe(e){return g(ee(e)).split(te).join(Le+De)}function ee(e){return{...e,children:e.children.map(t=>T(t)?{kind:"text",value:te}:t.kind==="element"?ee(t):t)}}var te="\0fx-hole\0";var j={version:1,module:"@fluixi/dom",symbols:["createNativeElement","insert","spread","setAttribute","delegateEvents","createComponent","createMemo","untrack","Show","For","Index","Switch","Match","Dynamic","ErrorBoundary"]},gt={version:2,module:"@fluixi/dom",symbols:[...j.symbols,"template","cloneTemplate","walk"]};var Xe={show:"Show",for:"For",index:"Index",switch:"Switch",match:"Match",dynamic:"Dynamic",errorBoundary:"ErrorBoundary",suspense:"Suspense"};function Me(e){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e)}function re(e){return Me(e)?e:JSON.stringify(e)}function He(e){return e.expr!==void 0?e.reactive?`() => (${e.expr})`:`(${e.expr})`:JSON.stringify(e.literal??!0)}function _e(e){return e.expr!==void 0?`(${e.expr})`:JSON.stringify(e.literal??!0)}function Be(e,t,n){let r=e.filter(s=>s.kind==="spread"),o=e.filter(s=>s.kind!=="spread").map(s=>`${re(s.name)}: ${He(s)}`);t!=null&&o.push(`children: ${t}`);let l=`{ ${o.join(", ")} }`;return r.length>0?(n.add("mergeProps"),`mergeProps(${r.map(s=>s.expr).join(", ")}, ${l})`):l}function ie(e,t,n){return e.length===1?v(e[0],t,n):`[${e.map(r=>v(r,t,n)).join(", ")}]`}function ne(e,t,n,r,i){r.add("createMemo"),r.add("createComponent");let o=t.filter(c=>c.kind==="spread"),s=t.filter(c=>c.kind!=="spread").map(c=>`get ${re(c.name)}() { return ${_e(c)}; }`);n.length>0&&s.push(`get children() { return ${ie(n,r,i)}; }`);let a=`{ ${s.join(", ")} }`;return o.length>0&&(r.add("mergeProps"),a=`mergeProps(${o.map(c=>c.expr).join(", ")}, ${a})`),`createMemo(() => createComponent(${e}, ${a}))`}function Fe(e,t){let n=K(t.name),r=t.literal;return r===!0||r===void 0?`${e}.setAttribute(${JSON.stringify(n)}, "");`:r===!1||r===null?"":`${e}.setAttribute(${JSON.stringify(n)}, ${JSON.stringify(String(r))});`}var oe=!1;function v(e,t,n){switch(e.kind){case"text":return JSON.stringify(e.value);case"expr":return e.reactive?`() => (${e.code})`:`(${e.code})`;case"fragment":return e.children.length===0?"null":ie(e.children,t,n);case"component":return ne(e.name,e.props,e.children,t,n);case"control":{let r=Xe[e.control]??e.control;return t.add(r),ne(r,e.props,e.children,t,n)}case"element":{if(n&&e.static&&!e.svg&&D(e)){t.add("templateNode");let s=`_tmpl$${n.length}`;return n.push({id:s,html:g(e),tag:e.tag,svg:!1}),`templateNode(${s}, ${JSON.stringify(e.tag)})`}if(n&&oe){let s=Q(e);if(s){t.add("templateNode"),t.add("insert"),t.add("holeEnd"),t.add("holeContent"),t.add("holeScope");let a=`_tmpl$${n.length}`;n.push({id:a,html:s.html,tag:s.tag,svg:!1});let c=[`const _el$ = templateNode(${a}, ${JSON.stringify(s.tag)}, true);`];for(let p of s.steps)c.push(`const ${p.ref} = ${p.expr};`);for(let p of s.holes)c.push(`insert(${p.parentRef}, holeScope(${p.startRef}, () => (${v(p.node,t,n)})), ${p.endRef}, holeContent(${p.startRef}, ${p.endRef}));`);return c.push("return _el$;"),`(() => { ${c.join(" ")} })()`}}t.add("createNativeElement");let r=JSON.stringify(e.tag),i="_el$",o=[],l=e.svg?`${r}, true`:r;if(o.push(`const ${i} = createNativeElement(${l});`),e.props.length>0)if(!e.svg&&e.props.every(h))for(let s of e.props)o.push(Fe(i,s));else{t.add("spread");let s=e.svg?", isSVG: true":"";o.push(`spread({ element: ${i}, props: ${Be(e.props,null,t)}${s} });`)}for(let s of e.children){t.add("insert");let a=v(s,t,n),c=s.kind==="expr"&&s.reactive||s.kind==="component"||s.kind==="control";o.push(c?`insert(${i}, ${a}, null);`:`insert(${i}, ${a});`)}return o.push(`return ${i};`),`(() => { ${o.join(" ")} })()`}}}function k(e,t){if(!t||t.length===0)return e;let n=new Map(t.map(r=>[r.id,JSON.stringify(r.html)]));return e.replace(/_tmpl\$\d+/g,r=>n.get(r)??r)}var x={name:"imperative",contract:j,emit(e,t){let n=new Set,r=t?.templateClone!==!1?[]:void 0;return oe=t?.partialTemplates===!0,{code:v(e,n,r),imports:Array.from(n),templates:r}}};function y(e){let t=e.split(/\r\n|\n|\r/),n=0;for(let i=0;i<t.length;i++)/[^ \t]/.test(t[i])&&(n=i);let r="";for(let i=0;i<t.length;i++){let o=t[i].replace(/\t/g," ");i!==0&&(o=o.replace(/^ +/,"")),i!==t.length-1&&(o=o.replace(/ +$/,"")),o&&(i!==n&&(o+=" "),r+=o)}return r}var se=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function ze(e){return e.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${")}function ae(e){return e.charAt(0).toUpperCase()+e.slice(1)}var O=class{constructor(t,n){this.holes=t;this.used=n}hole(t){return this.holes[t]??{code:"undefined",reactive:!1}}emit(t){let{code:n,imports:r,templates:i}=x.emit(t,{});for(let o of r)this.used.add(o);return k(n,i)}lowerRoot(t){let n=this.lowerChildren(t);return n.length===1?n[0]:{kind:"fragment",children:n}}lowerChildren(t){let n=[];for(let r=0;r<t.length;r++){let i=t[r];if(i.kind==="Element"||i.kind==="Component"){let l=i.attributes.find(s=>s.kind==="IfDirective");if(l&&l.kind==="IfDirective"){let s=r+1;s<t.length&&this.isBlankText(t[s])&&s++;let a=t[s],c=a&&(a.kind==="Element"||a.kind==="Component")&&a.attributes.some(p=>p.kind==="ElseDirective");n.push(this.lowerIf(i,l.hole,c?a:null)),c&&(r=s);continue}if(i.attributes.some(s=>s.kind==="EachDirective")){n.push(this.lowerEach(i));continue}}let o=this.lowerNode(i);o&&n.push(o)}return n}isBlankText(t){return t.kind==="Text"&&!t.raw&&y(t.value)===""}lowerNode(t){switch(t.kind){case"Text":{if(t.raw)return{kind:"text",value:t.value};let n=y(t.value);return n?{kind:"text",value:n}:null}case"Comment":return null;case"Expression":{let n=this.hole(t.hole);return{kind:"expr",code:n.code,reactive:n.reactive}}case"Fragment":return{kind:"fragment",children:this.lowerChildren(t.children)};case"Element":return this.lowerElement(t);case"Component":return this.lowerComponent(t);default:return null}}lowerElement(t){let n=t.attributes.find(r=>r.kind==="Attribute"&&r.name==="is");if(t.tag==="component"&&n&&n.value&&n.value.kind==="hole"){let r=t.attributes.filter(o=>o!==n),i=this.lowerComponent({...t,kind:"Component",tag:"Dynamic",tagHole:null,attributes:r});return i.props.unshift({name:"component",kind:"attr",expr:`() => (${this.hole(n.value.hole).code})`}),i}return{kind:"element",tag:t.tag,svg:t.namespace==="svg",props:this.lowerAttributes(t.attributes),children:this.lowerChildren(t.children),static:!1}}lowerComponent(t){let n=t.tagHole!=null?this.hole(t.tagHole).code:t.tag,r=this.lowerAttributes(t.attributes),{slots:i,rest:o}=this.partitionSlots(t.children);for(let[a,c]of i){let p=c.length===1?c[0]:{kind:"fragment",children:c},d={name:a,kind:"attr",expr:this.emit(p),jsxElement:!0},m=r.findIndex(S=>S.name===a);m>=0?r[m]=d:r.push(d)}let l=t.attributes.find(a=>a.kind==="LoadDirective"),s=l?$(`load:${l.strategy}`,l.modifier):void 0;return{kind:"component",name:n,props:r,children:this.lowerChildren(o),...s?{load:s}:{}}}partitionSlots(t){let n=new Map,r=[];for(let i of t){if(i.kind==="Element"||i.kind==="Component"){let o=i.attributes.find(l=>l.kind==="Attribute"&&l.name==="slot");if(o&&o.value&&o.value.kind==="static"){let l={...i,attributes:i.attributes.filter(c=>c!==o)},s=l.kind==="Element"?this.lowerElement(l):this.lowerComponent(l),a=n.get(o.value.value)??[];a.push(s),n.set(o.value.value,a);continue}}r.push(i)}return{slots:n,rest:r}}lowerIf(t,n,r){let i=this.hole(n),o=[{name:"when",kind:"attr",expr:i.code,reactive:i.reactive}];if(r){let s=this.stripAndLower(r,a=>a.kind==="ElseDirective");o.push({name:"fallback",kind:"attr",expr:this.emit(s),jsxElement:!0})}let l=this.stripAndLower(t,s=>s.kind==="IfDirective");return{kind:"component",name:"Show",props:o,children:[l]}}lowerEach(t){let n=t.attributes.find(a=>a.kind==="EachDirective");if(!n||n.kind!=="EachDirective")return this.lowerNode(t);let r=this.hole(n.hole),i=[{name:"each",kind:"attr",expr:r.code,reactive:r.reactive}];if(n.key){let a="static"in n.key?`(item) => item[${JSON.stringify(n.key.static)}]`:this.hole(n.key.hole).code;i.push({name:"by",kind:"attr",expr:a})}let o=this.itemArrow(t),l;if(o){let a={kind:"expr",code:o.body,reactive:o.bodyReactive},c=this.rebuildWithChildren(t,[a]);l=`(${o.params.join(", ")}) => (${this.emit(c)})`}else{let a=this.stripAndLower(t,c=>c.kind==="EachDirective");l=`() => (${this.emit(a)})`}return{kind:"component",name:"For",props:i,children:[{kind:"expr",code:l,reactive:!1}]}}itemArrow(t){let n=t.children.filter(r=>!this.isBlankText(r));return n.length!==1||n[0].kind!=="Expression"?null:this.hole(n[0].hole).arrow??null}stripAndLower(t,n){let r={...t,attributes:t.attributes.filter(i=>!n(i))};return r.kind==="Element"?this.lowerElement(r):this.lowerComponent(r)}rebuildWithChildren(t,n){let r=this.lowerAttributes(t.attributes.filter(i=>i.kind!=="EachDirective"));return t.kind==="Element"?{kind:"element",tag:t.tag,svg:t.namespace==="svg",props:r,children:n,static:!1}:{kind:"component",name:t.tag,props:r,children:n}}lowerAttributes(t){let n=[],r=[],i=!1,o=[],l=!1,s=[];for(let a of t)switch(a.kind){case"IfDirective":case"EachDirective":case"ElseDirective":break;case"Attribute":n.push(this.plainAttr(a));break;case"PropertyBinding":n.push({name:a.name,kind:"prop",expr:this.hole(a.hole).code,reactive:this.hole(a.hole).reactive});break;case"EventBinding":n.push(this.eventProp(a));break;case"RefBinding":n.push({name:"ref",kind:"ref",expr:this.hole(a.hole).code,reactive:this.hole(a.hole).reactive});break;case"Spread":n.push({name:"",kind:"spread",expr:this.hole(a.hole).code});break;case"ClassDirective":{let c=this.hole(a.hole);r.push(`${JSON.stringify(a.name)}: ${c.code}`),i=i||c.reactive;break}case"StyleDirective":{let c=this.hole(a.hole);o.push(`${JSON.stringify(a.name)}: ${c.code}`),l=l||c.reactive;break}case"BindDirective":n.push(...this.bindProps(a.name,this.hole(a.hole).code));break;case"UseDirective":{let c=a.name??(a.hole!=null?this.hole(a.hole).code:null);if(!c)break;s.push(a.name!=null&&a.hole!=null?`[${c}, () => (${this.hole(a.hole).code})]`:`[${c}]`);break}}return r.length>0&&n.push({name:"classList",kind:"attr",expr:`{ ${r.join(", ")} }`,reactive:i}),o.length>0&&n.push({name:"style",kind:"attr",expr:`{ ${o.join(", ")} }`,reactive:l}),s.length>0&&n.push({name:"use",kind:"attr",expr:`[${s.join(", ")}]`}),n}eventProp(t){let n=t.name.toLowerCase(),r=this.hole(t.hole).code;if(!(t.syntax==="colon"||t.modifiers.length>0))return{name:"on"+ae(t.name),kind:"event",event:{name:n,delegated:se.has(n)},expr:r};let o=this.wrapHandler(r,t.modifiers),l=this.eventOptions(t.modifiers),s=l?`[${o}, ${l}]`:o;return{name:"on:"+n,kind:"attr",expr:s}}wrapHandler(t,n){let r=n.includes("self")?"if (e.target !== e.currentTarget) return; ":"",i=[];return n.includes("prevent")&&i.push("e.preventDefault();"),n.includes("stop")&&i.push("e.stopPropagation();"),!r&&i.length===0?t:`(e) => { ${r}${i.join(" ")} return (${t})(e); }`}eventOptions(t){let n=[];return t.includes("capture")&&n.push("capture: true"),t.includes("once")&&n.push("once: true"),t.includes("passive")&&n.push("passive: true"),n.length?`{ ${n.join(", ")} }`:null}bindProps(t,n){let r=t==="checked",i=r?"change":"input",o=r?"checked":"value";this.used.add("bindPair");let l=`bindPair(${n})`;return[{name:t,kind:"attr",expr:`${l}[0]()`,reactive:!0},{name:"on"+ae(i),kind:"event",event:{name:i,delegated:se.has(i)},expr:`(e) => ${l}[1](e.target.${o})`}]}plainAttr(t){let n=t.value,r=t.name;t.name==="class"?r=n&&n.kind==="hole"&&this.hole(n.hole).object?"classList":"className":t.name==="html"&&(r="innerHTML");let o={name:r,kind:"attr"};if(n==null)return o.literal=!0,o;if(n.kind==="static")return o.literal=n.value,o;if(n.kind==="hole"){let a=this.hole(n.hole);return o.expr=a.code,o.reactive=a.reactive,o}let l=!1,s=n.parts.map(a=>{if("text"in a)return ze(a.text);let c=this.hole(a.hole);return l=l||c.reactive,"${"+c.code+"}"}).join("");return o.expr="`"+s+"`",o.reactive=l,o}};function ce(e,t,n,r={}){let{root:i}=(0,le.parseTemplate)(e,{svg:r.svg});return new O(t,n).lowerRoot(i.children)}var u=require("@babel/core"),H=W(require("@babel/generator"),1);var Ve="children";function N(e){switch(e.kind){case"call":return!0;case"member":return e.property!==Ve;case"compound":return e.parts.some(N);case"opaque":return!1}}var Ge=new Set(["CallExpression","OptionalCallExpression"]),We=new Set(["MemberExpression","OptionalMemberExpression"]);function R(e){if(!e)return{kind:"opaque"};if(Ge.has(e.type))return{kind:"call"};if(We.has(e.type)){let t=e.property;return{kind:"member",property:!(e.computed===!0)&&t?.type==="Identifier"?t.name:null}}return e.type==="ConditionalExpression"?{kind:"compound",parts:[e.test,e.consequent,e.alternate].map(E)}:e.type==="LogicalExpression"||e.type==="BinaryExpression"?{kind:"compound",parts:[e.left,e.right].map(E)}:e.type==="TemplateLiteral"?{kind:"compound",parts:e.expressions.map(E)}:e.type==="ObjectExpression"?{kind:"compound",parts:e.properties.filter(n=>(n.type==="ObjectProperty"||n.type==="Property")&&n.computed!==!0).map(n=>E(n.value))}:e.type==="ArrayExpression"?{kind:"compound",parts:e.elements.filter(n=>n!=null&&n.type!=="SpreadElement").map(E)}:{kind:"opaque"}}var E=e=>R(e);function qe(e){switch(e.kind){case"event":return"event";case"ref":return"ref";case"spread":return"spread";case"class":case"style":return"class-or-style-directive";case"attr":case"prop":return e.reactive?"reactive-prop":e.expr!==void 0?"expression-prop":void 0;default:return"expression-prop"}}function C(e){let t=[],n=new Map,r=i=>{switch(i.kind){case"text":return!0;case"expr":return!1;case"component":case"control":for(let o of i.children)r(o);return!1;case"fragment":for(let o of i.children)r(o);return!1;case"element":{let o=!0;for(let s of i.children)r(s)||(o=!1);let l;for(let s of i.props)if(l=qe(s),l)break;return!l&&!o&&(l=Ue(i)),i.static=!l,l?n.set(i,l):t.push(i),i.static}default:return!1}};for(let i of Array.isArray(e)?e:[e])r(i);return{staticElements:t,reasons:n}}function Ue(e){for(let t of e.children){if(t.kind==="expr")return"expression-child";if(t.kind==="component")return"component-child";if(t.kind==="control")return"control-child";if(t.kind==="element"&&!t.static||t.kind==="fragment")return"expression-child"}return"expression-child"}var Ke=new Set(["svg","path","circle","rect","line","polygon","polyline","ellipse","g","defs","clipPath","text"]),Ze=/^on[A-Z]/,Ye=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]),ue=e=>N(R(e));function b(e){if(e.type==="StringLiteral"||e.type==="NumericLiteral"||e.type==="BooleanLiteral"||e.type==="Literal"&&(typeof e.value=="string"||typeof e.value=="number"||typeof e.value=="boolean"))return e.value}var X=e=>!!e&&typeof b(e)=="string";function Qe(e,t){return e.type==="JSXIdentifier"?{tag:e.name,component:e.name[0]!==e.name[0].toLowerCase()}:e.type==="JSXMemberExpression"?{tag:t.code(e),component:!0}:e.type==="JSXNamespacedName"?{tag:`${e.namespace.name}:${e.name.name}`,component:!1}:{tag:"div",component:!1}}function M(e){return e.type==="JSXIdentifier"?e.name==="class"?"className":e.name:e.type==="JSXNamespacedName"?`${e.namespace.name}:${e.name.name}`:"unknown"}function et(e,t){let n=M(e.name),r=Ze.test(n),i=r||n.startsWith("on:")||n==="ref",l={name:n,kind:r?"event":"attr"};if(r){let a=n.slice(2).toLowerCase();l.event={name:a,delegated:Ye.has(a)}}let s=e.value;if(s==null)return l.literal=!0,l;if(X(s))return l.literal=b(s),l;if(s.type==="JSXExpressionContainer"&&s.expression?.type!=="JSXEmptyExpression"){let a=s.expression,c=b(a);return c!==void 0?(l.literal=c,l):(l.expr=t.code(a),l.reactive=i?!1:ue(a),(a.type==="JSXElement"||a.type==="JSXFragment")&&(l.jsxElement=!0),l)}return l.literal=!0,l}function pe(e,t){let n=e.value;return n==null?null:X(n)?JSON.stringify(b(n)):n.type==="JSXExpressionContainer"&&n.expression?.type!=="JSXEmptyExpression"?t.code(n.expression):null}function tt(e,t){let n=[],r=[];for(let i of e){if(i.type==="JSXSpreadAttribute"){n.push({name:"",kind:"spread",expr:t.code(i.argument)});continue}if(i.type!=="JSXAttribute"||J(M(i.name)))continue;let o=i.name.type==="JSXNamespacedName"?i.name.namespace.name:null;if(o==="use"){let l=i.name.name.name;t.used.add(l);let s=pe(i,t);r.push(s!=null?`[${l}, () => (${s})]`:`[${l}]`);continue}if(o==="oncapture"){let l=i.name.name.name.toLowerCase(),s=pe(i,t)??"undefined";n.push({name:"on:"+l,kind:"attr",expr:`[${s}, { capture: true }]`});continue}n.push(et(i,t))}return r.length>0&&n.push({name:"use",kind:"attr",expr:`[${r.join(", ")}]`}),n}function de(e,t){let n=[];for(let r of e)if(r.type==="JSXText"){let i=y(r.value);i&&n.push({kind:"text",value:i})}else if(r.type==="JSXExpressionContainer"){if(r.expression?.type!=="JSXEmptyExpression"){let i=r.expression;n.push({kind:"expr",code:t.code(i),reactive:ue(i)})}}else r.type==="JSXElement"||r.type==="JSXFragment"?n.push(me(r,t)):r.type==="JSXSpreadChild"&&n.push({kind:"expr",code:t.code(r.expression),reactive:!1});return n}function nt(e){for(let t of e){if(t.type!=="JSXAttribute")continue;let n=M(t.name);if(J(n)){if(t.value&&!X(t.value))throw new f(`'${n}' needs a literal value, not an expression — the strategy is compile-time.`);return $(n,t.value?b(t.value):null)}}}function me(e,t){if(e.type==="JSXFragment")return{kind:"fragment",children:de(e.children,t)};let{tag:n,component:r}=Qe(e.openingElement.name,t),i=tt(e.openingElement.attributes,t),o=de(e.children,t);if(r){let l=nt(e.openingElement.attributes);return{kind:"component",name:n,props:i,children:o,...l?{load:l}:{}}}return{kind:"element",tag:n,svg:Ke.has(n),props:i,children:o,static:!1}}function fe(e,t){let n=me(e,t);return C(n),n}var rt=H.default.default??H.default;function he(e){return rt(e,{concise:!0}).code}function it(e,t,n){let r=u.types.cloneNode(e,!0),i=u.types.file(u.types.program([u.types.expressionStatement(r)])),o=!1,l=(s,a,c)=>{for(let p of c)t.add(p);s.replaceWith(u.template.expression(a,{placeholderPattern:!1,plugins:["typescript"]})()),s.skip(),o=!0};return(0,u.traverse)(i,{"JSXElement|JSXFragment"(s){let a=s.node,c=ot(a,t,n);n?.(c);let{code:p,imports:d,templates:m}=x.emit(c,{});l(s,k(p,m),d)},TaggedTemplateExpression(s){let a=s.node.tag;if(!u.types.isIdentifier(a)||a.name!=="html"&&a.name!=="svg")return;let c=B(s.node,t,{svg:a.name==="svg",onNested:n});n?.(c);let{code:p,imports:d,templates:m}=x.emit(c,{});l(s,k(p,m),d)}}),o?i.program.body[0].expression:e}function P(e,t,n){return he(it(e,t,n))}function _(e){return N(R(e))}function ot(e,t=new Set,n){return fe(e,{code:i=>i.type==="JSXMemberExpression"?he(i):P(i,t,n),used:t})}var st=F.default.default??F.default;function at(e){return st(e,{concise:!0}).code}function lt(e,t,n){let r={code:P(e,t,n),reactive:_(e)};if(A.types.isArrowFunctionExpression(e)&&!A.types.isBlockStatement(e.body)){let i=e.body;r.arrow={params:e.params.map(o=>at(o)),body:P(i,t,n),bodyReactive:_(i)}}return A.types.isObjectExpression(e)&&(r.object=!0),r}function ge(e,t,n={}){let r=e.quasi,i=r.expressions.map(o=>lt(o,t,n.onNested));return ce(ct(r),i,t,n)}function ct(e){let t=[];return e.quasis.forEach((n,r)=>{let i=n.value.cooked??n.value.raw;if(t.push({kind:"static",text:i,start:n.start??0}),r<e.expressions.length){let o=e.expressions[r];t.push({kind:"hole",index:r,start:o.start??0,end:o.end??0})}}),t}function B(e,t=new Set,n={}){let r=ge(e,t,n);return C(r),r}