@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
@@ -19,6 +19,10 @@ import { resolveComponentSources } from '../resolve/resolve-ir.js';
19
19
  import { createComponentResolver } from '../resolve/component-resolver.js';
20
20
  import { imperativeBackend } from '../codegen/backends/imperative.js';
21
21
  import { moduleBindings } from './bindings.js';
22
+ import { collectPropsEdits } from './props.js';
23
+ import { collectIntrinsicEdits, intrinsicImports } from './intrinsics.js';
24
+ import { mayHaveIntrinsic } from '../analyze/intrinsics.js';
25
+ import { declaredNames } from '../analyze/reactive-bindings.js';
22
26
  import { DOM_CONTROL_FLOW, CORE_CONTROL_FLOW, ROUTER_COMPONENTS } from '../resolve/builtins.js';
23
27
  // Which builtin comes from which module is published by resolve/builtins.ts —
24
28
  // the same lists the resolve pass and the TS plugin read. Restating them here is
@@ -134,6 +138,11 @@ function adoptTemplates(code, templates, hoisted) {
134
138
  return code.replace(/_tmpl\$\d+/g, (id) => rename.get(id) ?? id);
135
139
  }
136
140
  function collectNeeds(node, out) {
141
+ if (node.kind === 'component' && node.load && !node.source && isDeferred(node.load)) {
142
+ // One report per name, not one per usage.
143
+ if (!out.ignoredLoad.has(node.name))
144
+ out.ignoredLoad.set(node.name, node.load);
145
+ }
137
146
  if (node.kind === 'component' && node.source) {
138
147
  const src = node.source;
139
148
  if (src.origin === 'builtin')
@@ -155,6 +164,63 @@ function collectNeeds(node, out) {
155
164
  for (const c of node.children)
156
165
  collectNeeds(c, out);
157
166
  }
167
+ /**
168
+ * An import this file wrote that we can turn into a deferred binding instead.
169
+ *
170
+ * `load:` on a component the author imported did nothing, because deferring means
171
+ * *creating* the reference as a dynamic import and there was already a static one. Here we
172
+ * take the static one away: remove the specifier, emit the `deferred()` binding, and the
173
+ * chunk splits like any other.
174
+ *
175
+ * Only when the name is used **exclusively as a tag**. JSX element names are
176
+ * `JSXIdentifier`, so a component used only in markup has zero `Identifier` references —
177
+ * which makes the check exact rather than a guess. Anything else (passed to a function,
178
+ * re-exported, `Chart.displayName`) keeps its import and its warning: replacing the real
179
+ * binding with a lazy wrapper would change what those sites see.
180
+ */
181
+ function deferrableImport(program, name) {
182
+ for (const statement of program.body ?? []) {
183
+ if (statement.type !== 'ImportDeclaration')
184
+ continue;
185
+ for (const specifier of statement.specifiers ?? []) {
186
+ if (specifier.local?.name !== name)
187
+ continue;
188
+ // A namespace import is the whole module; there is no single export to defer.
189
+ if (specifier.type === 'ImportNamespaceSpecifier')
190
+ return undefined;
191
+ const exported = specifier.type === 'ImportDefaultSpecifier'
192
+ ? 'default'
193
+ : (specifier.imported?.name ?? specifier.imported?.value);
194
+ return { module: statement.source.value, export: exported, declaration: statement, specifier };
195
+ }
196
+ }
197
+ return undefined;
198
+ }
199
+ /** Whether `name` came in through `import * as name`, which has no single export. */
200
+ function hasNamespaceImport(program, name) {
201
+ for (const statement of program.body ?? []) {
202
+ if (statement.type !== 'ImportDeclaration')
203
+ continue;
204
+ for (const specifier of statement.specifiers ?? []) {
205
+ if (specifier.type === 'ImportNamespaceSpecifier' && specifier.local?.name === name)
206
+ return true;
207
+ }
208
+ }
209
+ return false;
210
+ }
211
+ /** Whether `name` is referenced as a value anywhere — a tag alone does not count. */
212
+ function usedAsValue(program, name, specifier) {
213
+ let seen = false;
214
+ walk(program, (node) => {
215
+ if (seen || node.type !== 'Identifier' || node.name !== name)
216
+ return;
217
+ // The import specifier's own local binding is the declaration, not a use.
218
+ if (node.start === specifier.local?.start && node.end === specifier.local?.end)
219
+ return;
220
+ seen = true;
221
+ });
222
+ return seen;
223
+ }
158
224
  /** The strategy object a `deferred()` binding is given. */
159
225
  function strategyLiteral(s) {
160
226
  const parts = [`kind: ${JSON.stringify(s.kind)}`];
@@ -188,7 +254,10 @@ export function transformTemplates(code, id, options = {}) {
188
254
  const wantsLit = format !== 'jsx';
189
255
  const wantsJsx = format !== 'lit';
190
256
  const mayHaveTemplate = wantsLit && (code.includes(`${litTag}\``) || code.includes('svg`'));
191
- if (!mayHaveTemplate && !(wantsJsx && code.includes('<')))
257
+ // A module can be nothing but `$signal` calls, so the skip check has to look for those
258
+ // too or the file is never parsed.
259
+ const wantsIntrinsics = options.intrinsics !== false && mayHaveIntrinsic(code);
260
+ if (!mayHaveTemplate && !(wantsJsx && code.includes('<')) && !wantsIntrinsics)
192
261
  return null;
193
262
  const ast = parse(code, {
194
263
  sourceType: 'module',
@@ -202,17 +271,38 @@ export function transformTemplates(code, id, options = {}) {
202
271
  else if (wantsJsx && isJsxRoot(n, parent, key))
203
272
  found.push(n);
204
273
  });
205
- if (found.length === 0)
274
+ // Props first: holes are sliced out of the function body, so the rewrite has to be
275
+ // in the edit list before any template is compiled.
276
+ const props = options.propsDestructure === false
277
+ ? { edits: [], diagnostics: [], used: new Set() }
278
+ : collectPropsEdits(ast.program, code, { runtimeModule: options.runtimeModule });
279
+ // `$signal(…)` → `createSignal(…)`. Same edit list, so the callee is already rewritten
280
+ // by the time a template slices a hole containing one.
281
+ const intrinsics = options.intrinsics === false
282
+ ? { edits: [], diagnostics: [], imports: new Map() }
283
+ : collectIntrinsicEdits(ast.program);
284
+ // Nothing to emit still returns a result when there's something to say — a shadowed
285
+ // intrinsic is a diagnostic even though the code comes back untouched.
286
+ const silent = found.length === 0 &&
287
+ props.edits.length === 0 &&
288
+ intrinsics.edits.length === 0 &&
289
+ intrinsics.diagnostics.length === 0 &&
290
+ props.diagnostics.length === 0;
291
+ if (silent)
206
292
  return null;
207
293
  // Innermost first, so a nested template is already compiled by the time the
208
294
  // hole containing it is sliced.
209
295
  found.sort((a, b) => b.start - a.start || a.end - b.end);
210
- const used = new Set();
296
+ // Seeded with whatever the props rewrite needs, so `splitProps` joins the prologue
297
+ // the templates build rather than getting an import of its own.
298
+ const used = new Set(props.used);
211
299
  const needs = {
212
300
  builtins: new Set(), resolved: new Map(), deferred: new Map(), delegatedEvents: new Set(),
301
+ ignoredLoad: new Map(), unresolved: new Set(),
302
+ declared: declaredNames(ast.program),
213
303
  };
214
304
  const hoisted = new Map();
215
- const edits = [];
305
+ const edits = [...props.edits, ...intrinsics.edits];
216
306
  for (const node of found) {
217
307
  // A root inside another root's hole is emitted without partial templates,
218
308
  // matching what the plugin does for nested emits. Marker layout has to agree
@@ -238,21 +328,94 @@ export function transformTemplates(code, id, options = {}) {
238
328
  }
239
329
  const out = new MagicString(code);
240
330
  // Same reason as in `slice`: a nested edit is already inside its parent's code.
241
- for (const e of outermost(edits))
242
- out.overwrite(e.start, e.end, e.code);
331
+ for (const e of outermost(edits)) {
332
+ // A zero-width edit is an insertion (the splitProps call), not a replacement.
333
+ if (e.start === e.end)
334
+ out.appendLeft(e.start, e.code);
335
+ else
336
+ out.overwrite(e.start, e.end, e.code);
337
+ }
243
338
  const bound = moduleBindings(ast.program);
339
+ // A `load:` on an import the author wrote: take the import away and let the prologue
340
+ // emit the deferred binding, so this spelling and a `resolve` rule produce the same
341
+ // output rather than merely equivalent output.
342
+ const why = new Map();
343
+ for (const [name] of needs.ignoredLoad) {
344
+ if (!bound.has(name))
345
+ why.set(name, 'unsupplied');
346
+ }
347
+ for (const [name, strategy] of [...needs.ignoredLoad]) {
348
+ if (!bound.has(name))
349
+ continue;
350
+ const found = deferrableImport(ast.program, name);
351
+ if (!found) {
352
+ // Bound, but not by an import we can turn into a dynamic one.
353
+ why.set(name, hasNamespaceImport(ast.program, name) ? 'namespace' : 'local');
354
+ continue;
355
+ }
356
+ if (usedAsValue(ast.program, name, found.specifier)) {
357
+ why.set(name, 'value');
358
+ continue;
359
+ }
360
+ const rest = found.declaration.specifiers.filter((sp) => sp !== found.specifier);
361
+ // Take the line's newline with it when the whole statement goes, or the output keeps
362
+ // a blank line exactly where the import used to be.
363
+ const end = rest.length === 0 && code[found.declaration.end] === '\n'
364
+ ? found.declaration.end + 1
365
+ : found.declaration.end;
366
+ out.overwrite(found.declaration.start, end, rest.length === 0
367
+ ? ''
368
+ : `import { ${rest.map((sp) => code.slice(sp.start, sp.end)).join(', ')} } from ` +
369
+ `${JSON.stringify(found.declaration.source.value)};`);
370
+ needs.deferred.set(name, { module: found.module, export: found.export, origin: 'rule', loading: strategy });
371
+ // The prologue skips names the file binds, and this one no longer does.
372
+ bound.delete(name);
373
+ needs.ignoredLoad.delete(name);
374
+ }
244
375
  const prologue = buildPrologue(used, needs, hoisted, bound, options);
245
376
  if (prologue)
246
377
  out.prepend(prologue);
378
+ const runtimeImports = intrinsicImports(intrinsics, bound);
379
+ if (runtimeImports)
380
+ out.prepend(runtimeImports);
247
381
  // `@fluixi/core/rx` is the client alias for the reactive primitives.
248
382
  for (const node of ast.program.body) {
249
383
  if (node.type === 'ImportDeclaration' && node.source?.value === '@fluixi/core/rx') {
250
384
  out.overwrite(node.source.start, node.source.end, JSON.stringify('@fluixi/reactive'));
251
385
  }
252
386
  }
387
+ // Each of these has a different fix, so the message has to name the actual reason.
388
+ // Saying "drop the import" to someone whose component is used as a value sends them
389
+ // somewhere that does not work.
390
+ const reasons = {
391
+ value: (name) => `${name} is used as a value here, not only as a tag, so its import has to stay — ` +
392
+ `deferring would hand those references a lazy wrapper instead of the component. ` +
393
+ `Defer it at the point it is rendered, or keep it eager.`,
394
+ namespace: (name) => `${name} came in through a namespace import, which has no single export to defer. ` +
395
+ `Import ${name} by name.`,
396
+ local: (name) => `${name} is declared in this file, so there is no module to load separately. ` +
397
+ `Move it to its own file and import it.`,
398
+ unsupplied: (name) => `nothing supplies ${name}, so there is no import to defer. Import it, or add a ` +
399
+ `\`resolve\` rule for it.`,
400
+ };
401
+ const loadDiagnostics = [...needs.ignoredLoad].map(([name, strategy]) => ({
402
+ name,
403
+ strategy,
404
+ message: `load:${strategy.kind} has no effect on <${name}>: ${reasons[why.get(name) ?? 'unsupplied'](name)}`,
405
+ }));
406
+ const unresolvedDiagnostics = [...needs.unresolved].map((name) => ({
407
+ name,
408
+ message: `<${name}> is not defined: nothing imports it and no \`resolve\` rule supplies it. ` +
409
+ `This compiles to a reference to a name that does not exist, so the component renders ` +
410
+ `nothing. Import ${name}, or add a \`resolve\` rule for it.`,
411
+ }));
253
412
  return {
254
413
  code: out.toString(),
255
414
  map: out.generateMap({ source: id, includeContent: true, hires: true }),
415
+ ...(loadDiagnostics.length ? { loadDiagnostics } : {}),
416
+ ...(unresolvedDiagnostics.length ? { unresolvedDiagnostics } : {}),
417
+ ...(props.diagnostics.length ? { propsDiagnostics: props.diagnostics } : {}),
418
+ ...(intrinsics.diagnostics.length ? { intrinsicDiagnostics: intrinsics.diagnostics } : {}),
256
419
  };
257
420
  }
258
421
  /**
@@ -266,8 +429,11 @@ function compileJsx(code, node, edits, nested, used, needs, hoisted, options) {
266
429
  used,
267
430
  });
268
431
  analyzeStatic(ir);
269
- resolveComponentSources(ir, {
432
+ const report = resolveComponentSources(ir, {
270
433
  resolver: createComponentResolver(options.resolve ?? []),
434
+ // Without this the pass calls every author-imported component unresolved, and the
435
+ // report is unusable for diagnostics.
436
+ isBound: (name) => needs.declared.has(name),
271
437
  modules: {
272
438
  controlFlowModule: options.controlFlowModule ?? options.runtimeModule ?? '@fluixi/dom',
273
439
  coreModule: options.coreModule ?? '@fluixi/core',
@@ -275,6 +441,8 @@ function compileJsx(code, node, edits, nested, used, needs, hoisted, options) {
275
441
  },
276
442
  strategyFor: (n) => n.load,
277
443
  });
444
+ for (const name of report.unresolved)
445
+ needs.unresolved.add(name);
278
446
  collapseStrategies(ir);
279
447
  const emitted = imperativeBackend.emit(ir, {
280
448
  templateClone: options.templateClone ?? true,
@@ -1,12 +1,16 @@
1
- import{parse as Dt}from"@babel/parser";var ze=44,We=59,fe="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ge=new Uint8Array(64),Ge=new Uint8Array(128);for(let n=0;n<fe.length;n++){let e=fe.charCodeAt(n);ge[n]=e,Ge[e]=n}function N(n,e,t){let r=e-t;r=r<0?-r<<1|1:r<<1;do{let i=r&31;r>>>=5,r>0&&(i|=32),n.write(ge[i])}while(r>0);return e}var he=1024*16,me=typeof TextDecoder<"u"?new TextDecoder:typeof Buffer<"u"?{decode(n){return Buffer.from(n.buffer,n.byteOffset,n.byteLength).toString()}}:{decode(n){let e="";for(let t=0;t<n.length;t++)e+=String.fromCharCode(n[t]);return e}},Ve=class{constructor(){this.pos=0,this.out="",this.buffer=new Uint8Array(he)}write(n){let{buffer:e}=this;e[this.pos++]=n,this.pos===he&&(this.out+=me.decode(e),this.pos=0)}flush(){let{buffer:n,out:e,pos:t}=this;return t>0?e+me.decode(n.subarray(0,t)):e}};function ve(n){let e=new Ve,t=0,r=0,i=0,o=0;for(let s=0;s<n.length;s++){let a=n[s];if(s>0&&e.write(We),a.length===0)continue;let l=0;for(let c=0;c<a.length;c++){let u=a[c];c>0&&e.write(ze),l=N(e,u[0],l),u.length!==1&&(t=N(e,u[1],t),r=N(e,u[2],r),i=N(e,u[3],i),u.length!==4&&(o=N(e,u[4],o)))}}return e.flush()}var D=class n{constructor(e){this.bits=e instanceof n?e.bits.slice():[]}add(e){this.bits[e>>5]|=1<<(e&31)}has(e){return!!(this.bits[e>>5]&1<<(e&31))}},J=class n{constructor(e,t,r){this.start=e,this.end=t,this.original=r,this.intro="",this.outro="",this.content=r,this.storeName=!1,this.edited=!1,this.previous=null,this.next=null}appendLeft(e){this.outro+=e}appendRight(e){this.intro=this.intro+e}clone(){let e=new n(this.start,this.end,this.original);return e.intro=this.intro,e.outro=this.outro,e.content=this.content,e.storeName=this.storeName,e.edited=this.edited,e}contains(e){return this.start<e&&e<this.end}eachNext(e){let t=this;for(;t;)e(t),t=t.next}eachPrevious(e){let t=this;for(;t;)e(t),t=t.previous}edit(e,t,r){return this.content=e,r||(this.intro="",this.outro=""),this.storeName=t,this.edited=!0,this}prependLeft(e){this.outro=e+this.outro}prependRight(e){this.intro=e+this.intro}reset(){this.intro="",this.outro="",this.edited&&(this.content=this.original,this.storeName=!1,this.edited=!1)}split(e){let t=e-this.start,r=this.original.slice(0,t),i=this.original.slice(t);this.original=r;let o=new n(e,this.end,i);return o.outro=this.outro,this.outro="",this.end=e,this.edited?(o.edit("",!1),this.content=""):this.content=r,o.next=this.next,o.next&&(o.next.previous=o),o.previous=this,this.next=o,o}toString(){return this.intro+this.content+this.outro}trimEnd(e){if(this.outro=this.outro.replace(e,""),this.outro.length)return!0;let t=this.content.replace(e,"");if(t.length)return t!==this.content&&(this.split(this.start+t.length).edit("",void 0,!0),this.edited&&this.edit(t,this.storeName,!0)),!0;if(this.edit("",void 0,!0),this.intro=this.intro.replace(e,""),this.intro.length)return!0}trimStart(e){if(this.intro=this.intro.replace(e,""),this.intro.length)return!0;let t=this.content.replace(e,"");if(t.length){if(t!==this.content){let r=this.split(this.end-t.length);this.edited&&r.edit(t,this.storeName,!0),this.edit("",void 0,!0)}return!0}else if(this.edit("",void 0,!0),this.outro=this.outro.replace(e,""),this.outro.length)return!0}};function Ke(){return typeof globalThis<"u"&&typeof globalThis.btoa=="function"?n=>globalThis.btoa(unescape(encodeURIComponent(n))):typeof Buffer=="function"?n=>Buffer.from(n,"utf-8").toString("base64"):()=>{throw new Error("Unsupported environment: `window.btoa` or `Buffer` should be supported.")}}var Ye=Ke(),Q=class{constructor(e){this.version=3,this.file=e.file,this.sources=e.sources,this.sourcesContent=e.sourcesContent,this.names=e.names,this.mappings=ve(e.mappings),typeof e.x_google_ignoreList<"u"&&(this.x_google_ignoreList=e.x_google_ignoreList),typeof e.debugId<"u"&&(this.debugId=e.debugId)}toString(){return JSON.stringify(this)}toUrl(){return"data:application/json;charset=utf-8;base64,"+Ye(this.toString())}};function Ze(n){let e=n.split(`
2
- `),t=e.filter(o=>/^\t+/.test(o)),r=e.filter(o=>/^ {2,}/.test(o));if(t.length===0&&r.length===0)return null;if(t.length>=r.length)return" ";let i=r.reduce((o,s)=>{let a=/^ +/.exec(s)[0].length;return Math.min(a,o)},1/0);return new Array(i+1).join(" ")}function Qe(n,e){let t=n.split(/[/\\]/),r=e.split(/[/\\]/);for(t.pop();t[0]===r[0];)t.shift(),r.shift();if(t.length){let i=t.length;for(;i--;)t[i]=".."}return t.concat(r).join("/")}var et=Object.prototype.toString;function tt(n){return et.call(n)==="[object Object]"}function ye(n){let e=n.split(`
3
- `),t=[];for(let r=0,i=0;r<e.length;r++)t.push(i),i+=e[r].length+1;return function(i){let o=0,s=t.length;for(;o<s;){let c=o+s>>1;i<t[c]?s=c:o=c+1}let a=o-1,l=i-t[a];return{line:a,column:l}}}var nt=/\w/,ee=class{constructor(e){this.hires=e,this.generatedCodeLine=0,this.generatedCodeColumn=0,this.raw=[],this.rawSegments=this.raw[this.generatedCodeLine]=[],this.pending=null}addEdit(e,t,r,i){if(t.length){let o=t.length-1,s=t.indexOf(`
4
- `,0),a=-1;for(;s>=0&&o>s;){let c=[this.generatedCodeColumn,e,r.line,r.column];i>=0&&c.push(i),this.rawSegments.push(c),this.generatedCodeLine+=1,this.raw[this.generatedCodeLine]=this.rawSegments=[],this.generatedCodeColumn=0,a=s,s=t.indexOf(`
5
- `,s+1)}let l=[this.generatedCodeColumn,e,r.line,r.column];i>=0&&l.push(i),this.rawSegments.push(l),this.advance(t.slice(a+1))}else this.pending&&(this.rawSegments.push(this.pending),this.advance(t));this.pending=null}addUneditedChunk(e,t,r,i,o){let s=t.start,a=!0,l=!1;for(;s<t.end;){if(r[s]===`
6
- `)i.line+=1,i.column=0,this.generatedCodeLine+=1,this.raw[this.generatedCodeLine]=this.rawSegments=[],this.generatedCodeColumn=0,a=!0,l=!1;else{if(this.hires||a||o.has(s)){let c=[this.generatedCodeColumn,e,i.line,i.column];this.hires==="boundary"?nt.test(r[s])?l||(this.rawSegments.push(c),l=!0):(this.rawSegments.push(c),l=!1):this.rawSegments.push(c)}i.column+=1,this.generatedCodeColumn+=1,a=!1}s+=1}this.pending=null}advance(e){if(!e)return;let t=e.split(`
7
- `);if(t.length>1){for(let r=0;r<t.length-1;r++)this.generatedCodeLine++,this.raw[this.generatedCodeLine]=this.rawSegments=[];this.generatedCodeColumn=0}this.generatedCodeColumn+=t[t.length-1].length}},E=`
8
- `,b={insertLeft:!1,insertRight:!1,storeName:!1},B=class n{constructor(e,t={}){let r=new J(0,e.length,e);Object.defineProperties(this,{original:{writable:!0,value:e},outro:{writable:!0,value:""},intro:{writable:!0,value:""},firstChunk:{writable:!0,value:r},lastChunk:{writable:!0,value:r},lastSearchedChunk:{writable:!0,value:r},byStart:{writable:!0,value:{}},byEnd:{writable:!0,value:{}},filename:{writable:!0,value:t.filename},indentExclusionRanges:{writable:!0,value:t.indentExclusionRanges},sourcemapLocations:{writable:!0,value:new D},storedNames:{writable:!0,value:{}},indentStr:{writable:!0,value:void 0},ignoreList:{writable:!0,value:t.ignoreList},offset:{writable:!0,value:t.offset||0}}),this.byStart[0]=r,this.byEnd[e.length]=r}addSourcemapLocation(e){this.sourcemapLocations.add(e)}append(e){if(typeof e!="string")throw new TypeError("outro content must be a string");return this.outro+=e,this}appendLeft(e,t){if(e=e+this.offset,typeof t!="string")throw new TypeError("inserted content must be a string");this._split(e);let r=this.byEnd[e];return r?r.appendLeft(t):this.intro+=t,this}appendRight(e,t){if(e=e+this.offset,typeof t!="string")throw new TypeError("inserted content must be a string");this._split(e);let r=this.byStart[e];return r?r.appendRight(t):this.outro+=t,this}clone(){let e=new n(this.original,{filename:this.filename,offset:this.offset}),t=this.firstChunk,r=e.firstChunk=e.lastSearchedChunk=t.clone();for(;t;){e.byStart[r.start]=r,e.byEnd[r.end]=r;let i=t.next,o=i&&i.clone();o&&(r.next=o,o.previous=r,r=o),t=i}return e.lastChunk=r,this.indentExclusionRanges&&(e.indentExclusionRanges=this.indentExclusionRanges.slice()),e.sourcemapLocations=new D(this.sourcemapLocations),e.intro=this.intro,e.outro=this.outro,e}generateDecodedMap(e){e=e||{};let t=0,r=Object.keys(this.storedNames),i=new ee(e.hires),o=ye(this.original);return this.intro&&i.advance(this.intro),this.firstChunk.eachNext(s=>{let a=o(s.start);s.intro.length&&i.advance(s.intro),s.edited?i.addEdit(t,s.content,a,s.storeName?r.indexOf(s.original):-1):i.addUneditedChunk(t,s,this.original,a,this.sourcemapLocations),s.outro.length&&i.advance(s.outro)}),this.outro&&i.advance(this.outro),{file:e.file?e.file.split(/[/\\]/).pop():void 0,sources:[e.source?Qe(e.file||"",e.source):e.file||""],sourcesContent:e.includeContent?[this.original]:void 0,names:r,mappings:i.raw,x_google_ignoreList:this.ignoreList?[t]:void 0}}generateMap(e){return new Q(this.generateDecodedMap(e))}_ensureindentStr(){this.indentStr===void 0&&(this.indentStr=Ze(this.original))}_getRawIndentString(){return this._ensureindentStr(),this.indentStr}getIndentString(){return this._ensureindentStr(),this.indentStr===null?" ":this.indentStr}indent(e,t){let r=/^[^\r\n]/gm;if(tt(e)&&(t=e,e=void 0),e===void 0&&(this._ensureindentStr(),e=this.indentStr||" "),e==="")return this;t=t||{};let i={};t.exclude&&(typeof t.exclude[0]=="number"?[t.exclude]:t.exclude).forEach(u=>{for(let p=u[0];p<u[1];p+=1)i[p]=!0});let o=t.indentStart!==!1,s=c=>o?`${e}${c}`:(o=!0,c);this.intro=this.intro.replace(r,s);let a=0,l=this.firstChunk;for(;l;){let c=l.end;if(l.edited)i[a]||(l.content=l.content.replace(r,s),l.content.length&&(o=l.content[l.content.length-1]===`
1
+ import{parse as Cn}from"@babel/parser";var St=44,kt=59,Le="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",De=new Uint8Array(64),Et=new Uint8Array(128);for(let n=0;n<Le.length;n++){let e=Le.charCodeAt(n);De[n]=e,Et[e]=n}function j(n,e,t){let r=e-t;r=r<0?-r<<1|1:r<<1;do{let i=r&31;r>>>=5,r>0&&(i|=32),n.write(De[i])}while(r>0);return e}var Pe=1024*16,Me=typeof TextDecoder<"u"?new TextDecoder:typeof Buffer<"u"?{decode(n){return Buffer.from(n.buffer,n.byteOffset,n.byteLength).toString()}}:{decode(n){let e="";for(let t=0;t<n.length;t++)e+=String.fromCharCode(n[t]);return e}},Ct=class{constructor(){this.pos=0,this.out="",this.buffer=new Uint8Array(Pe)}write(n){let{buffer:e}=this;e[this.pos++]=n,this.pos===Pe&&(this.out+=Me.decode(e),this.pos=0)}flush(){let{buffer:n,out:e,pos:t}=this;return t>0?e+Me.decode(n.subarray(0,t)):e}};function Ae(n){let e=new Ct,t=0,r=0,i=0,s=0;for(let o=0;o<n.length;o++){let a=n[o];if(o>0&&e.write(kt),a.length===0)continue;let l=0;for(let c=0;c<a.length;c++){let u=a[c];c>0&&e.write(St),l=j(e,u[0],l),u.length!==1&&(t=j(e,u[1],t),r=j(e,u[2],r),i=j(e,u[3],i),u.length!==4&&(s=j(e,u[4],s)))}}return e.flush()}var Z=class n{constructor(e){this.bits=e instanceof n?e.bits.slice():[]}add(e){this.bits[e>>5]|=1<<(e&31)}has(e){return!!(this.bits[e>>5]&1<<(e&31))}},Q=class n{constructor(e,t,r){this.start=e,this.end=t,this.original=r,this.intro="",this.outro="",this.content=r,this.storeName=!1,this.edited=!1,this.previous=null,this.next=null}appendLeft(e){this.outro+=e}appendRight(e){this.intro=this.intro+e}clone(){let e=new n(this.start,this.end,this.original);return e.intro=this.intro,e.outro=this.outro,e.content=this.content,e.storeName=this.storeName,e.edited=this.edited,e}contains(e){return this.start<e&&e<this.end}eachNext(e){let t=this;for(;t;)e(t),t=t.next}eachPrevious(e){let t=this;for(;t;)e(t),t=t.previous}edit(e,t,r){return this.content=e,r||(this.intro="",this.outro=""),this.storeName=t,this.edited=!0,this}prependLeft(e){this.outro=e+this.outro}prependRight(e){this.intro=e+this.intro}reset(){this.intro="",this.outro="",this.edited&&(this.content=this.original,this.storeName=!1,this.edited=!1)}split(e){let t=e-this.start,r=this.original.slice(0,t),i=this.original.slice(t);this.original=r;let s=new n(e,this.end,i);return s.outro=this.outro,this.outro="",this.end=e,this.edited?(s.edit("",!1),this.content=""):this.content=r,s.next=this.next,s.next&&(s.next.previous=s),s.previous=this,this.next=s,s}toString(){return this.intro+this.content+this.outro}trimEnd(e){if(this.outro=this.outro.replace(e,""),this.outro.length)return!0;let t=this.content.replace(e,"");if(t.length)return t!==this.content&&(this.split(this.start+t.length).edit("",void 0,!0),this.edited&&this.edit(t,this.storeName,!0)),!0;if(this.edit("",void 0,!0),this.intro=this.intro.replace(e,""),this.intro.length)return!0}trimStart(e){if(this.intro=this.intro.replace(e,""),this.intro.length)return!0;let t=this.content.replace(e,"");if(t.length){if(t!==this.content){let r=this.split(this.end-t.length);this.edited&&r.edit(t,this.storeName,!0),this.edit("",void 0,!0)}return!0}else if(this.edit("",void 0,!0),this.outro=this.outro.replace(e,""),this.outro.length)return!0}};function It(){return typeof globalThis<"u"&&typeof globalThis.btoa=="function"?n=>globalThis.btoa(unescape(encodeURIComponent(n))):typeof Buffer=="function"?n=>Buffer.from(n,"utf-8").toString("base64"):()=>{throw new Error("Unsupported environment: `window.btoa` or `Buffer` should be supported.")}}var $t=It(),fe=class{constructor(e){this.version=3,this.file=e.file,this.sources=e.sources,this.sourcesContent=e.sourcesContent,this.names=e.names,this.mappings=Ae(e.mappings),typeof e.x_google_ignoreList<"u"&&(this.x_google_ignoreList=e.x_google_ignoreList),typeof e.debugId<"u"&&(this.debugId=e.debugId)}toString(){return JSON.stringify(this)}toUrl(){return"data:application/json;charset=utf-8;base64,"+$t(this.toString())}};function Tt(n){let e=n.split(`
2
+ `),t=e.filter(s=>/^\t+/.test(s)),r=e.filter(s=>/^ {2,}/.test(s));if(t.length===0&&r.length===0)return null;if(t.length>=r.length)return" ";let i=r.reduce((s,o)=>{let a=/^ +/.exec(o)[0].length;return Math.min(a,s)},1/0);return new Array(i+1).join(" ")}function Ot(n,e){let t=n.split(/[/\\]/),r=e.split(/[/\\]/);for(t.pop();t[0]===r[0];)t.shift(),r.shift();if(t.length){let i=t.length;for(;i--;)t[i]=".."}return t.concat(r).join("/")}var Lt=Object.prototype.toString;function Pt(n){return Lt.call(n)==="[object Object]"}function je(n){let e=n.split(`
3
+ `),t=[];for(let r=0,i=0;r<e.length;r++)t.push(i),i+=e[r].length+1;return function(i){let s=0,o=t.length;for(;s<o;){let c=s+o>>1;i<t[c]?o=c:s=c+1}let a=s-1,l=i-t[a];return{line:a,column:l}}}var Mt=/\w/,he=class{constructor(e){this.hires=e,this.generatedCodeLine=0,this.generatedCodeColumn=0,this.raw=[],this.rawSegments=this.raw[this.generatedCodeLine]=[],this.pending=null}addEdit(e,t,r,i){if(t.length){let s=t.length-1,o=t.indexOf(`
4
+ `,0),a=-1;for(;o>=0&&s>o;){let c=[this.generatedCodeColumn,e,r.line,r.column];i>=0&&c.push(i),this.rawSegments.push(c),this.generatedCodeLine+=1,this.raw[this.generatedCodeLine]=this.rawSegments=[],this.generatedCodeColumn=0,a=o,o=t.indexOf(`
5
+ `,o+1)}let l=[this.generatedCodeColumn,e,r.line,r.column];i>=0&&l.push(i),this.rawSegments.push(l),this.advance(t.slice(a+1))}else this.pending&&(this.rawSegments.push(this.pending),this.advance(t));this.pending=null}addUneditedChunk(e,t,r,i,s){let o=t.start,a=!0,l=!1;for(;o<t.end;){if(r[o]===`
6
+ `)i.line+=1,i.column=0,this.generatedCodeLine+=1,this.raw[this.generatedCodeLine]=this.rawSegments=[],this.generatedCodeColumn=0,a=!0,l=!1;else{if(this.hires||a||s.has(o)){let c=[this.generatedCodeColumn,e,i.line,i.column];this.hires==="boundary"?Mt.test(r[o])?l||(this.rawSegments.push(c),l=!0):(this.rawSegments.push(c),l=!1):this.rawSegments.push(c)}i.column+=1,this.generatedCodeColumn+=1,a=!1}o+=1}this.pending=null}advance(e){if(!e)return;let t=e.split(`
7
+ `);if(t.length>1){for(let r=0;r<t.length-1;r++)this.generatedCodeLine++,this.raw[this.generatedCodeLine]=this.rawSegments=[];this.generatedCodeColumn=0}this.generatedCodeColumn+=t[t.length-1].length}},_=`
8
+ `,O={insertLeft:!1,insertRight:!1,storeName:!1},ee=class n{constructor(e,t={}){let r=new Q(0,e.length,e);Object.defineProperties(this,{original:{writable:!0,value:e},outro:{writable:!0,value:""},intro:{writable:!0,value:""},firstChunk:{writable:!0,value:r},lastChunk:{writable:!0,value:r},lastSearchedChunk:{writable:!0,value:r},byStart:{writable:!0,value:{}},byEnd:{writable:!0,value:{}},filename:{writable:!0,value:t.filename},indentExclusionRanges:{writable:!0,value:t.indentExclusionRanges},sourcemapLocations:{writable:!0,value:new Z},storedNames:{writable:!0,value:{}},indentStr:{writable:!0,value:void 0},ignoreList:{writable:!0,value:t.ignoreList},offset:{writable:!0,value:t.offset||0}}),this.byStart[0]=r,this.byEnd[e.length]=r}addSourcemapLocation(e){this.sourcemapLocations.add(e)}append(e){if(typeof e!="string")throw new TypeError("outro content must be a string");return this.outro+=e,this}appendLeft(e,t){if(e=e+this.offset,typeof t!="string")throw new TypeError("inserted content must be a string");this._split(e);let r=this.byEnd[e];return r?r.appendLeft(t):this.intro+=t,this}appendRight(e,t){if(e=e+this.offset,typeof t!="string")throw new TypeError("inserted content must be a string");this._split(e);let r=this.byStart[e];return r?r.appendRight(t):this.outro+=t,this}clone(){let e=new n(this.original,{filename:this.filename,offset:this.offset}),t=this.firstChunk,r=e.firstChunk=e.lastSearchedChunk=t.clone();for(;t;){e.byStart[r.start]=r,e.byEnd[r.end]=r;let i=t.next,s=i&&i.clone();s&&(r.next=s,s.previous=r,r=s),t=i}return e.lastChunk=r,this.indentExclusionRanges&&(e.indentExclusionRanges=this.indentExclusionRanges.slice()),e.sourcemapLocations=new Z(this.sourcemapLocations),e.intro=this.intro,e.outro=this.outro,e}generateDecodedMap(e){e=e||{};let t=0,r=Object.keys(this.storedNames),i=new he(e.hires),s=je(this.original);return this.intro&&i.advance(this.intro),this.firstChunk.eachNext(o=>{let a=s(o.start);o.intro.length&&i.advance(o.intro),o.edited?i.addEdit(t,o.content,a,o.storeName?r.indexOf(o.original):-1):i.addUneditedChunk(t,o,this.original,a,this.sourcemapLocations),o.outro.length&&i.advance(o.outro)}),this.outro&&i.advance(this.outro),{file:e.file?e.file.split(/[/\\]/).pop():void 0,sources:[e.source?Ot(e.file||"",e.source):e.file||""],sourcesContent:e.includeContent?[this.original]:void 0,names:r,mappings:i.raw,x_google_ignoreList:this.ignoreList?[t]:void 0}}generateMap(e){return new fe(this.generateDecodedMap(e))}_ensureindentStr(){this.indentStr===void 0&&(this.indentStr=Tt(this.original))}_getRawIndentString(){return this._ensureindentStr(),this.indentStr}getIndentString(){return this._ensureindentStr(),this.indentStr===null?" ":this.indentStr}indent(e,t){let r=/^[^\r\n]/gm;if(Pt(e)&&(t=e,e=void 0),e===void 0&&(this._ensureindentStr(),e=this.indentStr||" "),e==="")return this;t=t||{};let i={};t.exclude&&(typeof t.exclude[0]=="number"?[t.exclude]:t.exclude).forEach(u=>{for(let p=u[0];p<u[1];p+=1)i[p]=!0});let s=t.indentStart!==!1,o=c=>s?`${e}${c}`:(s=!0,c);this.intro=this.intro.replace(r,o);let a=0,l=this.firstChunk;for(;l;){let c=l.end;if(l.edited)i[a]||(l.content=l.content.replace(r,o),l.content.length&&(s=l.content[l.content.length-1]===`
9
9
  `));else for(a=l.start;a<c;){if(!i[a]){let u=this.original[a];u===`
10
- `?o=!0:u!=="\r"&&o&&(o=!1,a===l.start||(this._splitChunk(l,a),l=l.next),l.prependRight(e))}a+=1}a=l.end,l=l.next}return this.outro=this.outro.replace(r,s),this}insert(){throw new Error("magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)")}insertLeft(e,t){return b.insertLeft||(console.warn("magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead"),b.insertLeft=!0),this.appendLeft(e,t)}insertRight(e,t){return b.insertRight||(console.warn("magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead"),b.insertRight=!0),this.prependRight(e,t)}move(e,t,r){if(e=e+this.offset,t=t+this.offset,r=r+this.offset,r>=e&&r<=t)throw new Error("Cannot move a selection inside itself");this._split(e),this._split(t),this._split(r);let i=this.byStart[e],o=this.byEnd[t],s=i.previous,a=o.next,l=this.byStart[r];if(!l&&o===this.lastChunk)return this;let c=l?l.previous:this.lastChunk;return s&&(s.next=a),a&&(a.previous=s),c&&(c.next=i),l&&(l.previous=o),i.previous||(this.firstChunk=o.next),o.next||(this.lastChunk=i.previous,this.lastChunk.next=null),i.previous=c,o.next=l||null,c||(this.firstChunk=i),l||(this.lastChunk=o),this}overwrite(e,t,r,i){return i=i||{},this.update(e,t,r,{...i,overwrite:!i.contentOnly})}update(e,t,r,i){if(e=e+this.offset,t=t+this.offset,typeof r!="string")throw new TypeError("replacement content must be a string");if(this.original.length!==0){for(;e<0;)e+=this.original.length;for(;t<0;)t+=this.original.length}if(t>this.original.length)throw new Error("end is out of bounds");if(e===t)throw new Error("Cannot overwrite a zero-length range – use appendLeft or prependRight instead");this._split(e),this._split(t),i===!0&&(b.storeName||(console.warn("The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string"),b.storeName=!0),i={storeName:!0});let o=i!==void 0?i.storeName:!1,s=i!==void 0?i.overwrite:!1;if(o){let c=this.original.slice(e,t);Object.defineProperty(this.storedNames,c,{writable:!0,value:!0,enumerable:!0})}let a=this.byStart[e],l=this.byEnd[t];if(a){let c=a;for(;c!==l;){if(c.next!==this.byStart[c.end])throw new Error("Cannot overwrite across a split point");c=c.next,c.edit("",!1)}a.edit(r,o,!s)}else{let c=new J(e,t,"").edit(r,o);l.next=c,c.previous=l}return this}prepend(e){if(typeof e!="string")throw new TypeError("outro content must be a string");return this.intro=e+this.intro,this}prependLeft(e,t){if(e=e+this.offset,typeof t!="string")throw new TypeError("inserted content must be a string");this._split(e);let r=this.byEnd[e];return r?r.prependLeft(t):this.intro=t+this.intro,this}prependRight(e,t){if(e=e+this.offset,typeof t!="string")throw new TypeError("inserted content must be a string");this._split(e);let r=this.byStart[e];return r?r.prependRight(t):this.outro=t+this.outro,this}remove(e,t){if(e=e+this.offset,t=t+this.offset,this.original.length!==0){for(;e<0;)e+=this.original.length;for(;t<0;)t+=this.original.length}if(e===t)return this;if(e<0||t>this.original.length)throw new Error("Character is out of bounds");if(e>t)throw new Error("end must be greater than start");this._split(e),this._split(t);let r=this.byStart[e];for(;r;)r.intro="",r.outro="",r.edit(""),r=t>r.end?this.byStart[r.end]:null;return this}reset(e,t){if(e=e+this.offset,t=t+this.offset,this.original.length!==0){for(;e<0;)e+=this.original.length;for(;t<0;)t+=this.original.length}if(e===t)return this;if(e<0||t>this.original.length)throw new Error("Character is out of bounds");if(e>t)throw new Error("end must be greater than start");this._split(e),this._split(t);let r=this.byStart[e];for(;r;)r.reset(),r=t>r.end?this.byStart[r.end]:null;return this}lastChar(){if(this.outro.length)return this.outro[this.outro.length-1];let e=this.lastChunk;do{if(e.outro.length)return e.outro[e.outro.length-1];if(e.content.length)return e.content[e.content.length-1];if(e.intro.length)return e.intro[e.intro.length-1]}while(e=e.previous);return this.intro.length?this.intro[this.intro.length-1]:""}lastLine(){let e=this.outro.lastIndexOf(E);if(e!==-1)return this.outro.substr(e+1);let t=this.outro,r=this.lastChunk;do{if(r.outro.length>0){if(e=r.outro.lastIndexOf(E),e!==-1)return r.outro.substr(e+1)+t;t=r.outro+t}if(r.content.length>0){if(e=r.content.lastIndexOf(E),e!==-1)return r.content.substr(e+1)+t;t=r.content+t}if(r.intro.length>0){if(e=r.intro.lastIndexOf(E),e!==-1)return r.intro.substr(e+1)+t;t=r.intro+t}}while(r=r.previous);return e=this.intro.lastIndexOf(E),e!==-1?this.intro.substr(e+1)+t:this.intro+t}slice(e=0,t=this.original.length-this.offset){if(e=e+this.offset,t=t+this.offset,this.original.length!==0){for(;e<0;)e+=this.original.length;for(;t<0;)t+=this.original.length}let r="",i=this.firstChunk;for(;i&&(i.start>e||i.end<=e);){if(i.start<t&&i.end>=t)return r;i=i.next}if(i&&i.edited&&i.start!==e)throw new Error(`Cannot use replaced character ${e} as slice start anchor.`);let o=i;for(;i;){i.intro&&(o!==i||i.start===e)&&(r+=i.intro);let s=i.start<t&&i.end>=t;if(s&&i.edited&&i.end!==t)throw new Error(`Cannot use replaced character ${t} as slice end anchor.`);let a=o===i?e-i.start:0,l=s?i.content.length+t-i.end:i.content.length;if(r+=i.content.slice(a,l),i.outro&&(!s||i.end===t)&&(r+=i.outro),s)break;i=i.next}return r}snip(e,t){let r=this.clone();return r.remove(0,e),r.remove(t,r.original.length),r}_split(e){if(this.byStart[e]||this.byEnd[e])return;let t=this.lastSearchedChunk,r=t,i=e>t.end;for(;t;){if(t.contains(e))return this._splitChunk(t,e);if(t=i?this.byStart[t.end]:this.byEnd[t.start],t===r)return;r=t}}_splitChunk(e,t){if(e.edited&&e.content.length){let i=ye(this.original)(t);throw new Error(`Cannot split a chunk that has already been edited (${i.line}:${i.column} – "${e.original}")`)}let r=e.split(t);return this.byEnd[t]=e,this.byStart[t]=r,this.byEnd[r.end]=r,e===this.lastChunk&&(this.lastChunk=r),this.lastSearchedChunk=e,!0}toString(){let e=this.intro,t=this.firstChunk;for(;t;)e+=t.toString(),t=t.next;return e+this.outro}isEmpty(){let e=this.firstChunk;do if(e.intro.length&&e.intro.trim()||e.content.length&&e.content.trim()||e.outro.length&&e.outro.trim())return!1;while(e=e.next);return!0}length(){let e=this.firstChunk,t=0;do t+=e.intro.length+e.content.length+e.outro.length;while(e=e.next);return t}trimLines(){return this.trim("[\\r\\n]")}trim(e){return this.trimStart(e).trimEnd(e)}trimEndAborted(e){let t=new RegExp((e||"\\s")+"+$");if(this.outro=this.outro.replace(t,""),this.outro.length)return!0;let r=this.lastChunk;do{let i=r.end,o=r.trimEnd(t);if(r.end!==i&&(this.lastChunk===r&&(this.lastChunk=r.next),this.byEnd[r.end]=r,this.byStart[r.next.start]=r.next,this.byEnd[r.next.end]=r.next),o)return!0;r=r.previous}while(r);return!1}trimEnd(e){return this.trimEndAborted(e),this}trimStartAborted(e){let t=new RegExp("^"+(e||"\\s")+"+");if(this.intro=this.intro.replace(t,""),this.intro.length)return!0;let r=this.firstChunk;do{let i=r.end,o=r.trimStart(t);if(r.end!==i&&(r===this.lastChunk&&(this.lastChunk=r.next),this.byEnd[r.end]=r,this.byStart[r.next.start]=r.next,this.byEnd[r.next.end]=r.next),o)return!0;r=r.next}while(r);return!1}trimStart(e){return this.trimStartAborted(e),this}hasChanged(){return this.original!==this.toString()}_replaceRegexp(e,t){function r(o,s){return typeof t=="string"?t.replace(/\$(\$|&|\d+)/g,(a,l)=>l==="$"?"$":l==="&"?o[0]:+l<o.length?o[+l]:`$${l}`):t(...o,o.index,s,o.groups)}function i(o,s){let a,l=[];for(;a=o.exec(s);)l.push(a);return l}if(e.global)i(e,this.original).forEach(s=>{if(s.index!=null){let a=r(s,this.original);a!==s[0]&&this.overwrite(s.index,s.index+s[0].length,a)}});else{let o=this.original.match(e);if(o&&o.index!=null){let s=r(o,this.original);s!==o[0]&&this.overwrite(o.index,o.index+o[0].length,s)}}return this}_replaceString(e,t){let{original:r}=this,i=r.indexOf(e);return i!==-1&&(typeof t=="function"&&(t=t(e,i,r)),e!==t&&this.overwrite(i,i+e.length,t)),this}replace(e,t){return typeof e=="string"?this._replaceString(e,t):this._replaceRegexp(e,t)}_replaceAllString(e,t){let{original:r}=this,i=e.length;for(let o=r.indexOf(e);o!==-1;o=r.indexOf(e,o+i)){let s=r.slice(o,o+i),a=t;typeof t=="function"&&(a=t(s,o,r)),s!==a&&this.overwrite(o,o+i,a)}return this}replaceAll(e,t){if(typeof e=="string")return this._replaceAllString(e,t);if(!e.global)throw new TypeError("MagicString.prototype.replaceAll called with a non-global RegExp argument");return this._replaceRegexp(e,t)}};function rt(n){switch(n.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 n.reactive?"reactive-prop":n.expr!==void 0?"expression-prop":void 0;default:return"expression-prop"}}function R(n){let e=[],t=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=rt(a),s)break;return!s&&!o&&(s=it(i)),i.static=!s,s?t.set(i,s):e.push(i),i.static}default:return!1}};for(let i of Array.isArray(n)?n:[n])r(i);return{staticElements:e,reasons:t}}function it(n){for(let e of n.children){if(e.kind==="expr")return"expression-child";if(e.kind==="component")return"component-child";if(e.kind==="control")return"control-child";if(e.kind==="element"&&!e.static||e.kind==="fragment")return"expression-child"}return"expression-child"}var F={kind:"eager"},ot=["pointerdown","focusin","keydown"],xe=new Set(["eager","idle","visible","interaction","media","never"]),v=class extends Error{};function te(n){return n.startsWith("load:")}function H(n,e){let t=n.slice(5);if(!xe.has(t))throw new v(`Unknown load strategy 'load:${t}'. Expected one of ${[...xe].join(", ")}.`);switch(t){case"eager":return F;case"idle":return{kind:"idle"};case"never":return{kind:"never"};case"visible":return e?{kind:"visible",rootMargin:e}:{kind:"visible"};case"interaction":return{kind:"interaction",events:e?st(e):[...ot]};case"media":if(!e)throw new v(`'load:media' needs a query, e.g. load:media="(min-width: 1024px)".`);return{kind:"media",query:e};default:throw new v(`Unhandled load strategy '${t}'.`)}}function st(n){let e=n.split(/[\s,]+/).map(t=>t.trim()).filter(Boolean);if(e.length===0)throw new v("'load:interaction' was given no event names.");return e}function q(n){return n.kind!=="eager"&&n.kind!=="never"}var I=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],T=["Suspense","SuspenseList","Await"],w=["Router","Outlet","Redirect","Link"],nn=[...I,...T,...w],ne=new Set([...I,...T]);function be(n={}){let{controlFlowModule:e="@fluixi/dom",coreModule:t="@fluixi/core",routerModule:r="@fluixi/core/router-next"}=n,i={};for(let o of I)i[o]=e;for(let o of T)i[o]=t;for(let o of w)i[o]=r;return i}function U(n,e={}){let{resolver:t,isBound:r,modules:i,strategyFor:o}=e,s=be(i),a=new Map,l=new Set,c=p=>{let{name:d}=p;if(!d||d.includes(".")||r?.(d))return;let h=u(d);if(!h){l.add(d);return}let m=h.origin==="builtin"&&ne.has(d)?F:o?.(p)??F;p.source={...h,loading:m},a.set(d,p.source)},u=p=>{if(ne.has(p))return{module:s[p],export:p,origin:"builtin"};let d=t?.resolve(p);if(d)return{module:d.module,export:d.export,origin:"rule"};if(w.includes(p))return{module:s[p],export:p,origin:"builtin"}};return X(n,p=>{p.kind==="component"&&c(p)}),{resolved:a,unresolved:[...l]}}function X(n,e){let t=Array.isArray(n)?n:[n];for(let r of t){e(r);let i=r.children;i&&X(i,e)}}function z(n){let e=[];X(n,o=>{o.kind==="component"&&o.source&&e.push(o)});let t=new Set,r=new Set;for(let o of e){let{module:s,loading:a}=o.source;a.kind==="eager"&&t.add(s),a.kind==="never"&&r.add(s)}let i=new Map;for(let o of e){let s=o.source;q(s.loading)&&t.has(s.module)&&(s.loading={kind:"eager"},i.set(s.module,(i.get(s.module)??0)+1))}return{collapsed:i,conflicted:[...r].filter(o=>t.has(o))}}var at=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),Re={className:"class",htmlFor:"for"},lt=new Set(["innerHTML","outerHTML","innerText","textContent","value","checked","selected","muted","defaultValue","defaultChecked","children","ref"]),ct=new Set(["script","style","textarea","title"]);function re(n){return ct.has(n)}function we(n){return Re[n]??n}function $(n){return n.kind!=="attr"||n.expr!==void 0||n.name.includes(":")?!1:!lt.has(n.name)}function ie(n){if(!n.static||re(n.tag))return!1;for(let e of n.props)if(!$(e))return!1;for(let e of n.children)if(e.kind!=="text"&&!(e.kind==="element"&&ie(e)))return!1;return!0}function O(n){let e=n.props.map(dt).filter(Boolean).join(""),t=`<${n.tag}${e}>`;return at.has(n.tag)?t:`${t}${n.children.map(ut).join("")}</${n.tag}>`}function ut(n){if(n.kind==="text")return ft(n.value);if(n.kind!=="element")throw new Error(`serializeStatic: unexpected ${n.kind}`);return O(n)}function dt(n){let e=Re[n.name]??n.name,t=n.literal;return t===!0||t===void 0?` ${e}`:t===!1||t===null?"":` ${e}="${pt(String(t))}"`}function pt(n){return n.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function ft(n){return n.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}var ht="<!--fx-->",mt="<!--fx/-->";function G(n){return n.kind==="expr"||n.kind==="component"||n.kind==="control"}function gt(n){return n.kind==="text"||n.kind==="element"&&Se(n)}function Se(n){return n.svg||re(n.tag)||!n.props.every(e=>$(e))?!1:n.children.every(e=>gt(e)||G(e))}function W(n){if(G(n))return!0;let e=n.children;return e?e.some(W):!1}function Ce(n){for(let e=0;e<n.children.length;e++){let t=n.children[e];if(t.kind==="text"&&(t.value===""||n.children[e+1]?.kind==="text"))return!1}return n.children.every(e=>e.kind!=="element"||Ce(e))}function ke(n){if(!Se(n)||!Ce(n)||!n.children.some(W))return null;let e=[],t=[],r=0,i=s=>{let a=`_n$${r++}`;return e.push({ref:a,expr:s}),a};return o(n,"_el$"),{html:vt(n),tag:n.tag,steps:e,holes:t};function o(s,a){let l=-1;s.children.forEach((u,p)=>{W(u)&&(l=p)});let c=null;for(let u=0;u<=l;u++){let p=s.children[u],d=c?`${c}.nextSibling`:`${a}.firstChild`;if(G(p)){let m=i(d),_=i(`holeEnd(${m})`);t.push({parentRef:a,startRef:m,endRef:_,node:p}),c=_;continue}let h=i(d);p.kind==="element"&&W(p)&&o(p,h),c=h}}}function vt(n){return O(Ne(n)).split(Ee).join(ht+mt)}function Ne(n){return{...n,children:n.children.map(e=>G(e)?{kind:"text",value:Ee}:e.kind==="element"?Ne(e):e)}}var Ee="\0fx-hole\0";var oe={version:1,module:"@fluixi/dom",symbols:["createNativeElement","insert","spread","setAttribute","delegateEvents","createComponent","createMemo","untrack","Show","For","Index","Switch","Match","Dynamic","ErrorBoundary"]},hn={version:2,module:"@fluixi/dom",symbols:[...oe.symbols,"template","cloneTemplate","walk"]};var yt={show:"Show",for:"For",index:"Index",switch:"Switch",match:"Match",dynamic:"Dynamic",errorBoundary:"ErrorBoundary",suspense:"Suspense"};function xt(n){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(n)}function Te(n){return xt(n)?n:JSON.stringify(n)}function bt(n){return n.expr!==void 0?n.reactive?`() => (${n.expr})`:`(${n.expr})`:JSON.stringify(n.literal??!0)}function Rt(n){return n.expr!==void 0?`(${n.expr})`:JSON.stringify(n.literal??!0)}function wt(n,e,t){let r=n.filter(a=>a.kind==="spread"),o=n.filter(a=>a.kind!=="spread").map(a=>`${Te(a.name)}: ${bt(a)}`);e!=null&&o.push(`children: ${e}`);let s=`{ ${o.join(", ")} }`;return r.length>0?(t.add("mergeProps"),`mergeProps(${r.map(a=>a.expr).join(", ")}, ${s})`):s}function $e(n,e,t){return n.length===1?L(n[0],e,t):`[${n.map(r=>L(r,e,t)).join(", ")}]`}function Ie(n,e,t,r,i){r.add("createMemo"),r.add("createComponent");let o=e.filter(c=>c.kind==="spread"),a=e.filter(c=>c.kind!=="spread").map(c=>`get ${Te(c.name)}() { return ${Rt(c)}; }`);t.length>0&&a.push(`get children() { return ${$e(t,r,i)}; }`);let l=`{ ${a.join(", ")} }`;return o.length>0&&(r.add("mergeProps"),l=`mergeProps(${o.map(c=>c.expr).join(", ")}, ${l})`),`createMemo(() => createComponent(${n}, ${l}))`}function St(n,e){let t=we(e.name),r=e.literal;return r===!0||r===void 0?`${n}.setAttribute(${JSON.stringify(t)}, "");`:r===!1||r===null?"":`${n}.setAttribute(${JSON.stringify(t)}, ${JSON.stringify(String(r))});`}var Oe=!1;function L(n,e,t){switch(n.kind){case"text":return JSON.stringify(n.value);case"expr":return n.reactive?`() => (${n.code})`:`(${n.code})`;case"fragment":return n.children.length===0?"null":$e(n.children,e,t);case"component":return Ie(n.name,n.props,n.children,e,t);case"control":{let r=yt[n.control]??n.control;return e.add(r),Ie(r,n.props,n.children,e,t)}case"element":{if(t&&n.static&&!n.svg&&ie(n)){e.add("templateNode");let a=`_tmpl$${t.length}`;return t.push({id:a,html:O(n),tag:n.tag,svg:!1}),`templateNode(${a}, ${JSON.stringify(n.tag)})`}if(t&&Oe){let a=ke(n);if(a){e.add("templateNode"),e.add("insert"),e.add("holeEnd"),e.add("holeContent"),e.add("holeScope");let l=`_tmpl$${t.length}`;t.push({id:l,html:a.html,tag:a.tag,svg:!1});let c=[`const _el$ = templateNode(${l}, ${JSON.stringify(a.tag)}, true);`];for(let u of a.steps)c.push(`const ${u.ref} = ${u.expr};`);for(let u of a.holes)c.push(`insert(${u.parentRef}, holeScope(${u.startRef}, () => (${L(u.node,e,t)})), ${u.endRef}, holeContent(${u.startRef}, ${u.endRef}));`);return c.push("return _el$;"),`(() => { ${c.join(" ")} })()`}}e.add("createNativeElement");let r=JSON.stringify(n.tag),i="_el$",o=[],s=n.svg?`${r}, true`:r;if(o.push(`const ${i} = createNativeElement(${s});`),n.props.length>0)if(!n.svg&&n.props.every($))for(let a of n.props)o.push(St(i,a));else{e.add("spread");let a=n.svg?", isSVG: true":"";o.push(`spread({ element: ${i}, props: ${wt(n.props,null,e)}${a} });`)}for(let a of n.children){e.add("insert");let l=L(a,e,t),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 V(n,e){if(!e||e.length===0)return n;let t=new Map(e.map(r=>[r.id,JSON.stringify(r.html)]));return n.replace(/_tmpl\$\d+/g,r=>t.get(r)??r)}var S={name:"imperative",contract:oe,emit(n,e){let t=new Set,r=e?.templateClone!==!1?[]:void 0;return Oe=e?.partialTemplates===!0,{code:L(n,t,r),imports:Array.from(t),templates:r}}};var Ct=n=>"components"in n;function Le(n,e){return n.replace(/\$(\d+)/g,(t,r)=>e[Number(r)]??t)}function kt(n,e){return typeof e=="string"?{module:e,export:n}:e}function K(n=[]){let e=new Map,t=[],r=[];for(let s of n){if(!Ct(s)){r.push(s);continue}for(let[a,l]of Object.entries(s.components)){let c=kt(a,l),u=e.get(a);if(u&&u.module!==c.module){let p=t.find(d=>d.name===a);p?p.modules.push(c.module):t.push({name:a,modules:[u.module,c.module]});continue}e.set(a,c)}}let i=new Map;return{resolve:s=>{if(i.has(s))return i.get(s);let a=e.get(s);if(!a)for(let l of r){let c=s.match(new RegExp(l.match.source,l.match.flags.replace("g","")));if(c){a={module:Le(l.module,c),export:l.export?Le(l.export,c):s};break}}return i.set(s,a),a},names:()=>[...e.keys()],conflicts:()=>t}}import{parseTemplate as Nt}from"@fluixi/template-parser";function M(n){let e=n.split(/\r\n|\n|\r/),t=0;for(let i=0;i<e.length;i++)/[^ \t]/.test(e[i])&&(t=i);let r="";for(let i=0;i<e.length;i++){let o=e[i].replace(/\t/g," ");i!==0&&(o=o.replace(/^ +/,"")),i!==e.length-1&&(o=o.replace(/ +$/,"")),o&&(i!==t&&(o+=" "),r+=o)}return r}var Me=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function Et(n){return n.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${")}function Pe(n){return n.charAt(0).toUpperCase()+n.slice(1)}var se=class{constructor(e,t){this.holes=e;this.used=t}hole(e){return this.holes[e]??{code:"undefined",reactive:!1}}emit(e){let{code:t,imports:r,templates:i}=S.emit(e,{});for(let o of r)this.used.add(o);return V(t,i)}lowerRoot(e){let t=this.lowerChildren(e);return t.length===1?t[0]:{kind:"fragment",children:t}}lowerChildren(e){let t=[];for(let r=0;r<e.length;r++){let i=e[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<e.length&&this.isBlankText(e[a])&&a++;let l=e[a],c=l&&(l.kind==="Element"||l.kind==="Component")&&l.attributes.some(u=>u.kind==="ElseDirective");t.push(this.lowerIf(i,s.hole,c?l:null)),c&&(r=a);continue}if(i.attributes.some(a=>a.kind==="EachDirective")){t.push(this.lowerEach(i));continue}}let o=this.lowerNode(i);o&&t.push(o)}return t}isBlankText(e){return e.kind==="Text"&&!e.raw&&M(e.value)===""}lowerNode(e){switch(e.kind){case"Text":{if(e.raw)return{kind:"text",value:e.value};let t=M(e.value);return t?{kind:"text",value:t}:null}case"Comment":return null;case"Expression":{let t=this.hole(e.hole);return{kind:"expr",code:t.code,reactive:t.reactive}}case"Fragment":return{kind:"fragment",children:this.lowerChildren(e.children)};case"Element":return this.lowerElement(e);case"Component":return this.lowerComponent(e);default:return null}}lowerElement(e){let t=e.attributes.find(r=>r.kind==="Attribute"&&r.name==="is");if(e.tag==="component"&&t&&t.value&&t.value.kind==="hole"){let r=e.attributes.filter(o=>o!==t),i=this.lowerComponent({...e,kind:"Component",tag:"Dynamic",tagHole:null,attributes:r});return i.props.unshift({name:"component",kind:"attr",expr:`() => (${this.hole(t.value.hole).code})`}),i}return{kind:"element",tag:e.tag,svg:e.namespace==="svg",props:this.lowerAttributes(e.attributes),children:this.lowerChildren(e.children),static:!1}}lowerComponent(e){let t=e.tagHole!=null?this.hole(e.tagHole).code:e.tag,r=this.lowerAttributes(e.attributes),{slots:i,rest:o}=this.partitionSlots(e.children);for(let[l,c]of i){let u=c.length===1?c[0]:{kind:"fragment",children:c},p={name:l,kind:"attr",expr:this.emit(u),jsxElement:!0},d=r.findIndex(h=>h.name===l);d>=0?r[d]=p:r.push(p)}let s=e.attributes.find(l=>l.kind==="LoadDirective"),a=s?H(`load:${s.strategy}`,s.modifier):void 0;return{kind:"component",name:t,props:r,children:this.lowerChildren(o),...a?{load:a}:{}}}partitionSlots(e){let t=new Map,r=[];for(let i of e){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=t.get(o.value.value)??[];l.push(a),t.set(o.value.value,l);continue}}r.push(i)}return{slots:t,rest:r}}lowerIf(e,t,r){let i=this.hole(t),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(e,a=>a.kind==="IfDirective");return{kind:"component",name:"Show",props:o,children:[s]}}lowerEach(e){let t=e.attributes.find(l=>l.kind==="EachDirective");if(!t||t.kind!=="EachDirective")return this.lowerNode(e);let r=this.hole(t.hole),i=[{name:"each",kind:"attr",expr:r.code,reactive:r.reactive}];if(t.key){let l="static"in t.key?`(item) => item[${JSON.stringify(t.key.static)}]`:this.hole(t.key.hole).code;i.push({name:"by",kind:"attr",expr:l})}let o=this.itemArrow(e),s;if(o){let l={kind:"expr",code:o.body,reactive:o.bodyReactive},c=this.rebuildWithChildren(e,[l]);s=`(${o.params.join(", ")}) => (${this.emit(c)})`}else{let l=this.stripAndLower(e,c=>c.kind==="EachDirective");s=`() => (${this.emit(l)})`}return{kind:"component",name:"For",props:i,children:[{kind:"expr",code:s,reactive:!1}]}}itemArrow(e){let t=e.children.filter(r=>!this.isBlankText(r));return t.length!==1||t[0].kind!=="Expression"?null:this.hole(t[0].hole).arrow??null}stripAndLower(e,t){let r={...e,attributes:e.attributes.filter(i=>!t(i))};return r.kind==="Element"?this.lowerElement(r):this.lowerComponent(r)}rebuildWithChildren(e,t){let r=this.lowerAttributes(e.attributes.filter(i=>i.kind!=="EachDirective"));return e.kind==="Element"?{kind:"element",tag:e.tag,svg:e.namespace==="svg",props:r,children:t,static:!1}:{kind:"component",name:e.tag,props:r,children:t}}lowerAttributes(e){let t=[],r=[],i=!1,o=[],s=!1,a=[];for(let l of e)switch(l.kind){case"IfDirective":case"EachDirective":case"ElseDirective":break;case"Attribute":t.push(this.plainAttr(l));break;case"PropertyBinding":t.push({name:l.name,kind:"prop",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"EventBinding":t.push(this.eventProp(l));break;case"RefBinding":t.push({name:"ref",kind:"ref",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"Spread":t.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":t.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&&t.push({name:"classList",kind:"attr",expr:`{ ${r.join(", ")} }`,reactive:i}),o.length>0&&t.push({name:"style",kind:"attr",expr:`{ ${o.join(", ")} }`,reactive:s}),a.length>0&&t.push({name:"use",kind:"attr",expr:`[${a.join(", ")}]`}),t}eventProp(e){let t=e.name.toLowerCase(),r=this.hole(e.hole).code;if(!(e.syntax==="colon"||e.modifiers.length>0))return{name:"on"+Pe(e.name),kind:"event",event:{name:t,delegated:Me.has(t)},expr:r};let o=this.wrapHandler(r,e.modifiers),s=this.eventOptions(e.modifiers),a=s?`[${o}, ${s}]`:o;return{name:"on:"+t,kind:"attr",expr:a}}wrapHandler(e,t){let r=t.includes("self")?"if (e.target !== e.currentTarget) return; ":"",i=[];return t.includes("prevent")&&i.push("e.preventDefault();"),t.includes("stop")&&i.push("e.stopPropagation();"),!r&&i.length===0?e:`(e) => { ${r}${i.join(" ")} return (${e})(e); }`}eventOptions(e){let t=[];return e.includes("capture")&&t.push("capture: true"),e.includes("once")&&t.push("once: true"),e.includes("passive")&&t.push("passive: true"),t.length?`{ ${t.join(", ")} }`:null}bindProps(e,t){let r=e==="checked",i=r?"change":"input",o=r?"checked":"value",s=`(${t})`;return[{name:e,kind:"attr",expr:`${s}[0]()`,reactive:!0},{name:"on"+Pe(i),kind:"event",event:{name:i,delegated:Me.has(i)},expr:`(e) => ${s}[1](e.target.${o})`}]}plainAttr(e){let t=e.value,r=e.name;e.name==="class"?r=t&&t.kind==="hole"&&this.hole(t.hole).object?"classList":"className":e.name==="html"&&(r="innerHTML");let o={name:r,kind:"attr"};if(t==null)return o.literal=!0,o;if(t.kind==="static")return o.literal=t.value,o;if(t.kind==="hole"){let l=this.hole(t.hole);return o.expr=l.code,o.reactive=l.reactive,o}let s=!1,a=t.parts.map(l=>{if("text"in l)return Et(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 Ae(n,e,t,r={}){let{root:i}=Nt(n,{svg:r.svg});return new se(e,t).lowerRoot(i.children)}function _e(n,e,t={}){let r=new Set,i=Ae(n,[...e],r,{svg:t.svg});R(i),U(i,{resolver:K(t.resolve??[]),modules:{controlFlowModule:t.controlFlowModule??"@fluixi/dom",coreModule:t.coreModule??"@fluixi/core",routerModule:t.routerModule??"@fluixi/core/router-next"},strategyFor:l=>l.load}),z(i);let{code:o,imports:s,templates:a}=S.emit(i,{templateClone:t.templateClone,partialTemplates:t.partialTemplates});for(let l of s)r.add(l);return t.hoistTemplates?{code:o,imports:[...r],ir:i,templates:a}:{code:V(o,a),imports:[...r],ir:i}}var It="children";function C(n){switch(n.kind){case"call":return!0;case"member":return n.property!==It;case"compound":return n.parts.some(C);case"opaque":return!1}}var Tt=new Set(["CallExpression","OptionalCallExpression"]),$t=new Set(["MemberExpression","OptionalMemberExpression"]);function k(n){if(!n)return{kind:"opaque"};if(Tt.has(n.type))return{kind:"call"};if($t.has(n.type)){let e=n.property;return{kind:"member",property:!(n.computed===!0)&&e?.type==="Identifier"?e.name:null}}return n.type==="ConditionalExpression"?{kind:"compound",parts:[n.test,n.consequent,n.alternate].map(P)}:n.type==="LogicalExpression"||n.type==="BinaryExpression"?{kind:"compound",parts:[n.left,n.right].map(P)}:n.type==="TemplateLiteral"?{kind:"compound",parts:n.expressions.map(P)}:n.type==="ObjectExpression"?{kind:"compound",parts:n.properties.filter(t=>(t.type==="ObjectProperty"||t.type==="Property")&&t.computed!==!0).map(t=>P(t.value))}:n.type==="ArrayExpression"?{kind:"compound",parts:n.elements.filter(t=>t!=null&&t.type!=="SpreadElement").map(P)}:{kind:"opaque"}}var P=n=>k(n);var Ot=new Set(["svg","path","circle","rect","line","polygon","polyline","ellipse","g","defs","clipPath","text"]),Lt=/^on[A-Z]/,Mt=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]),Je=n=>C(k(n));function A(n){if(n.type==="StringLiteral"||n.type==="NumericLiteral"||n.type==="BooleanLiteral"||n.type==="Literal"&&(typeof n.value=="string"||typeof n.value=="number"||typeof n.value=="boolean"))return n.value}var ae=n=>!!n&&typeof A(n)=="string";function Pt(n,e){return n.type==="JSXIdentifier"?{tag:n.name,component:n.name[0]!==n.name[0].toLowerCase()}:n.type==="JSXMemberExpression"?{tag:e.code(n),component:!0}:n.type==="JSXNamespacedName"?{tag:`${n.namespace.name}:${n.name.name}`,component:!1}:{tag:"div",component:!1}}function le(n){return n.type==="JSXIdentifier"?n.name==="class"?"className":n.name:n.type==="JSXNamespacedName"?`${n.namespace.name}:${n.name.name}`:"unknown"}function At(n,e){let t=le(n.name),r=Lt.test(t),i=r||t.startsWith("on:")||t==="ref",s={name:t,kind:r?"event":"attr"};if(r){let l=t.slice(2).toLowerCase();s.event={name:l,delegated:Mt.has(l)}}let a=n.value;if(a==null)return s.literal=!0,s;if(ae(a))return s.literal=A(a),s;if(a.type==="JSXExpressionContainer"&&a.expression?.type!=="JSXEmptyExpression"){let l=a.expression,c=A(l);return c!==void 0?(s.literal=c,s):(s.expr=e.code(l),s.reactive=i?!1:Je(l),(l.type==="JSXElement"||l.type==="JSXFragment")&&(s.jsxElement=!0),s)}return s.literal=!0,s}function je(n,e){let t=n.value;return t==null?null:ae(t)?JSON.stringify(A(t)):t.type==="JSXExpressionContainer"&&t.expression?.type!=="JSXEmptyExpression"?e.code(t.expression):null}function _t(n,e){let t=[],r=[];for(let i of n){if(i.type==="JSXSpreadAttribute"){t.push({name:"",kind:"spread",expr:e.code(i.argument)});continue}if(i.type!=="JSXAttribute"||te(le(i.name)))continue;let o=i.name.type==="JSXNamespacedName"?i.name.namespace.name:null;if(o==="use"){let s=i.name.name.name;e.used.add(s);let a=je(i,e);r.push(a!=null?`[${s}, () => (${a})]`:`[${s}]`);continue}if(o==="oncapture"){let s=i.name.name.name.toLowerCase(),a=je(i,e)??"undefined";t.push({name:"on:"+s,kind:"attr",expr:`[${a}, { capture: true }]`});continue}t.push(At(i,e))}return r.length>0&&t.push({name:"use",kind:"attr",expr:`[${r.join(", ")}]`}),t}function De(n,e){let t=[];for(let r of n)if(r.type==="JSXText"){let i=M(r.value);i&&t.push({kind:"text",value:i})}else if(r.type==="JSXExpressionContainer"){if(r.expression?.type!=="JSXEmptyExpression"){let i=r.expression;t.push({kind:"expr",code:e.code(i),reactive:Je(i)})}}else r.type==="JSXElement"||r.type==="JSXFragment"?t.push(Be(r,e)):r.type==="JSXSpreadChild"&&t.push({kind:"expr",code:e.code(r.expression),reactive:!1});return t}function jt(n){for(let e of n){if(e.type!=="JSXAttribute")continue;let t=le(e.name);if(te(t)){if(e.value&&!ae(e.value))throw new v(`'${t}' needs a literal value, not an expression — the strategy is compile-time.`);return H(t,e.value?A(e.value):null)}}}function Be(n,e){if(n.type==="JSXFragment")return{kind:"fragment",children:De(n.children,e)};let{tag:t,component:r}=Pt(n.openingElement.name,e),i=_t(n.openingElement.attributes,e),o=De(n.children,e);if(r){let s=jt(n.openingElement.attributes);return{kind:"component",name:t,props:i,children:o,...s?{load:s}:{}}}return{kind:"element",tag:t,svg:Ot.has(t),props:i,children:o,static:!1}}function Fe(n,e){let t=Be(n,e);return R(t),t}function y(n,e){if(n)switch(n.type){case"Identifier":e.add(n.name);return;case"ObjectPattern":for(let t of n.properties)t.type==="RestElement"?y(t.argument,e):y(t.value,e);return;case"ArrayPattern":for(let t of n.elements)y(t,e);return;case"AssignmentPattern":y(n.left,e);return;case"RestElement":y(n.argument,e);return}}function He(n,e){switch(n.type){case"ImportDeclaration":for(let t of n.specifiers)y(t.local,e);return;case"VariableDeclaration":for(let t of n.declarations)y(t.id,e);return;case"FunctionDeclaration":case"ClassDeclaration":y(n.id,e);return;case"ExportNamedDeclaration":case"ExportDefaultDeclaration":n.declaration&&He(n.declaration,e);return}}function qe(n){let e=new Set;for(let t of n.body)He(t,e);return e}var Jt=new Set(I),Bt=new Set(T),Ft=new Set(w),Ht=new Set(["createMemo","createEffect","createRenderEffect","createRoot","createSignal","onCleanup","batch","untrack"]);function ce(n,e,t=null,r=""){if(!(!n||typeof n!="object")){if(Array.isArray(n)){for(let i of n)ce(i,e,t,r);return}typeof n.type=="string"&&e(n,t,r);for(let i of Object.keys(n))i==="loc"||i==="leadingComments"||i==="trailingComments"||ce(n[i],e,typeof n.type=="string"?n:t,i)}}var ue=n=>n.type==="JSXElement"||n.type==="JSXFragment";function qt(n,e,t){return ue(n)?!(e&&ue(e)&&t==="children"):!1}function Ut(n,e){return n.type==="TaggedTemplateExpression"&&n.tag?.type==="Identifier"&&(n.tag.name===e||n.tag.name==="svg")}function Ue(n){return n.filter(e=>!n.some(t=>t!==e&&t.start<=e.start&&t.end>=e.end&&t.end-t.start>e.end-e.start))}function Y(n,e,t,r){let i=Ue(r.filter(s=>s.start>=e&&s.end<=t)).sort((s,a)=>a.start-s.start),o=n.slice(e,t);for(let s of i)o=o.slice(0,s.start-e)+s.code+o.slice(s.end-e);return o}function Xt(n,e,t){let r={code:Y(n,e.start,e.end,t),reactive:C(k(e))};return e.type==="ArrowFunctionExpression"&&e.body?.type!=="BlockStatement"&&(r.arrow={params:e.params.map(i=>Y(n,i.start,i.end,t)),body:Y(n,e.body.start,e.body.end,t),bodyReactive:C(k(e.body))}),e.type==="ObjectExpression"&&(r.object=!0),r}function Xe(n,e,t){if(!e||e.length===0)return n;let r=new Map;for(let i of e){let o=`${i.svg?"svg:":""}${i.html}`,s=t.get(o);s||(s=`_fxTmpl$${t.size}`,t.set(o,s)),r.set(i.id,s)}return n.replace(/_tmpl\$\d+/g,i=>r.get(i)??i)}function de(n,e){if(n.kind==="component"&&n.source){let t=n.source;t.origin==="builtin"?e.builtins.add(n.name):q(t.loading)&&!e.resolved.has(n.name)?e.deferred.set(n.name,t):(e.deferred.delete(n.name),e.resolved.set(n.name,t))}if("props"in n&&n.props)for(let t of n.props)t.kind==="event"&&t.event?.delegated&&e.delegatedEvents.add(t.event.name);if("children"in n&&n.children)for(let t of n.children)de(t,e)}function zt(n){let e=[`kind: ${JSON.stringify(n.kind)}`];return n.kind==="visible"&&n.rootMargin&&e.push(`rootMargin: ${JSON.stringify(n.rootMargin)}`),n.kind==="interaction"&&e.push(`events: ${JSON.stringify(n.events)}`),n.kind==="media"&&e.push(`query: ${JSON.stringify(n.query)}`),`{ ${e.join(", ")} }`}function Wt(n){let e=[];return n.quasi.quasis.forEach((t,r)=>{if(e.push({kind:"static",text:t.value.cooked??t.value.raw,start:t.start}),r<n.quasi.expressions.length){let i=n.quasi.expressions[r];e.push({kind:"hole",index:r,start:i.start,end:i.end})}}),e}function rr(n,e,t={}){let r=t.litTag??"html",i=t.format??"both",o=i!=="jsx",s=i!=="lit";if(!(o&&(n.includes(`${r}\``)||n.includes("svg`")))&&!(s&&n.includes("<")))return null;let l=Dt(n,{sourceType:"module",plugins:["jsx","typescript"],errorRecovery:!0}),c=[];if(ce(l.program,(f,x,Z)=>{(o&&Ut(f,r)||s&&qt(f,x,Z))&&c.push(f)}),c.length===0)return null;c.sort((f,x)=>x.start-f.start||f.end-x.end);let u=new Set,p={builtins:new Set,resolved:new Map,deferred:new Map,delegatedEvents:new Set},d=new Map,h=[];for(let f of c){let x=c.some(g=>g!==f&&g.start<=f.start&&g.end>=f.end&&g.end-g.start>f.end-f.start);if(ue(f)){h.push({start:f.start,end:f.end,code:Gt(n,f,h,x,u,p,d,t)});continue}let Z=f.quasi.expressions.map(g=>Xt(n,g,h)),j=_e(Wt(f),Z,{...t,hoistTemplates:!0,templateClone:t.templateClone??!0,partialTemplates:x?!1:t.partialTemplates??!0,svg:f.tag.name==="svg"});for(let g of j.imports)u.add(g);de(j.ir,p),h.push({start:f.start,end:f.end,code:Xe(j.code,j.templates,d)})}let m=new B(n);for(let f of Ue(h))m.overwrite(f.start,f.end,f.code);let _=qe(l.program),pe=Vt(u,p,d,_,t);pe&&m.prepend(pe);for(let f of l.program.body)f.type==="ImportDeclaration"&&f.source?.value==="@fluixi/core/rx"&&m.overwrite(f.source.start,f.source.end,JSON.stringify("@fluixi/reactive"));return{code:m.toString(),map:m.generateMap({source:e,includeContent:!0,hires:!0})}}function Gt(n,e,t,r,i,o,s,a){let l=Fe(e,{code:u=>Y(n,u.start,u.end,t),used:i});R(l),U(l,{resolver:K(a.resolve??[]),modules:{controlFlowModule:a.controlFlowModule??a.runtimeModule??"@fluixi/dom",coreModule:a.coreModule??"@fluixi/core",routerModule:a.routerModule??"@fluixi/core/router-next"},strategyFor:u=>u.load}),z(l);let c=S.emit(l,{templateClone:a.templateClone??!0,partialTemplates:r?!1:a.partialTemplates??!0});for(let u of c.imports)i.add(u);return de(l,o),Xe(c.code,c.templates,s)}function Vt(n,e,t,r,i){let o=i.runtimeModule??"@fluixi/dom",s=i.coreModule??"@fluixi/core",a=new Map,l=(d,h)=>a.set(d,[...a.get(d)??[],h]),c=new Set(n);for(let d of e.builtins)c.add(d);e.delegatedEvents.size>0&&c.add("delegateEvents");for(let d of[...c].sort())r.has(d)||(Ht.has(d)?l(i.reactiveModule??"@fluixi/reactive/signal",d):Ft.has(d)?l(i.routerModule??"@fluixi/core/router-next",d):Bt.has(d)?l(s,d):Jt.has(d)?l(i.controlFlowModule??o,d):l(o,d));for(let[d,h]of e.resolved)r.has(d)||l(h.module,h.export==="default"?`default as ${d}`:d===h.export?d:`${h.export} as ${d}`);let u=[];for(let[d,h]of a)u.push(`import { ${h.join(", ")} } from ${JSON.stringify(d)};`);let p=[...e.deferred].filter(([d])=>!r.has(d));if(p.length>0){r.has("deferred")||u.push(`import { deferred } from ${JSON.stringify(s)};`);for(let[d,h]of p)u.push(`const ${d} = deferred(() => import(${JSON.stringify(h.module)}), { strategy: ${zt(h.loading)}, export: ${JSON.stringify(h.export)} });`)}for(let[d,h]of t)u.push(`const ${h} = ${JSON.stringify(d.startsWith("svg:")?d.slice(4):d)};`);return e.delegatedEvents.size>0&&u.push(`delegateEvents(${JSON.stringify([...e.delegatedEvents])});`),u.length>0?u.join(`
10
+ `?s=!0:u!=="\r"&&s&&(s=!1,a===l.start||(this._splitChunk(l,a),l=l.next),l.prependRight(e))}a+=1}a=l.end,l=l.next}return this.outro=this.outro.replace(r,o),this}insert(){throw new Error("magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)")}insertLeft(e,t){return O.insertLeft||(console.warn("magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead"),O.insertLeft=!0),this.appendLeft(e,t)}insertRight(e,t){return O.insertRight||(console.warn("magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead"),O.insertRight=!0),this.prependRight(e,t)}move(e,t,r){if(e=e+this.offset,t=t+this.offset,r=r+this.offset,r>=e&&r<=t)throw new Error("Cannot move a selection inside itself");this._split(e),this._split(t),this._split(r);let i=this.byStart[e],s=this.byEnd[t],o=i.previous,a=s.next,l=this.byStart[r];if(!l&&s===this.lastChunk)return this;let c=l?l.previous:this.lastChunk;return o&&(o.next=a),a&&(a.previous=o),c&&(c.next=i),l&&(l.previous=s),i.previous||(this.firstChunk=s.next),s.next||(this.lastChunk=i.previous,this.lastChunk.next=null),i.previous=c,s.next=l||null,c||(this.firstChunk=i),l||(this.lastChunk=s),this}overwrite(e,t,r,i){return i=i||{},this.update(e,t,r,{...i,overwrite:!i.contentOnly})}update(e,t,r,i){if(e=e+this.offset,t=t+this.offset,typeof r!="string")throw new TypeError("replacement content must be a string");if(this.original.length!==0){for(;e<0;)e+=this.original.length;for(;t<0;)t+=this.original.length}if(t>this.original.length)throw new Error("end is out of bounds");if(e===t)throw new Error("Cannot overwrite a zero-length range – use appendLeft or prependRight instead");this._split(e),this._split(t),i===!0&&(O.storeName||(console.warn("The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string"),O.storeName=!0),i={storeName:!0});let s=i!==void 0?i.storeName:!1,o=i!==void 0?i.overwrite:!1;if(s){let c=this.original.slice(e,t);Object.defineProperty(this.storedNames,c,{writable:!0,value:!0,enumerable:!0})}let a=this.byStart[e],l=this.byEnd[t];if(a){let c=a;for(;c!==l;){if(c.next!==this.byStart[c.end])throw new Error("Cannot overwrite across a split point");c=c.next,c.edit("",!1)}a.edit(r,s,!o)}else{let c=new Q(e,t,"").edit(r,s);l.next=c,c.previous=l}return this}prepend(e){if(typeof e!="string")throw new TypeError("outro content must be a string");return this.intro=e+this.intro,this}prependLeft(e,t){if(e=e+this.offset,typeof t!="string")throw new TypeError("inserted content must be a string");this._split(e);let r=this.byEnd[e];return r?r.prependLeft(t):this.intro=t+this.intro,this}prependRight(e,t){if(e=e+this.offset,typeof t!="string")throw new TypeError("inserted content must be a string");this._split(e);let r=this.byStart[e];return r?r.prependRight(t):this.outro=t+this.outro,this}remove(e,t){if(e=e+this.offset,t=t+this.offset,this.original.length!==0){for(;e<0;)e+=this.original.length;for(;t<0;)t+=this.original.length}if(e===t)return this;if(e<0||t>this.original.length)throw new Error("Character is out of bounds");if(e>t)throw new Error("end must be greater than start");this._split(e),this._split(t);let r=this.byStart[e];for(;r;)r.intro="",r.outro="",r.edit(""),r=t>r.end?this.byStart[r.end]:null;return this}reset(e,t){if(e=e+this.offset,t=t+this.offset,this.original.length!==0){for(;e<0;)e+=this.original.length;for(;t<0;)t+=this.original.length}if(e===t)return this;if(e<0||t>this.original.length)throw new Error("Character is out of bounds");if(e>t)throw new Error("end must be greater than start");this._split(e),this._split(t);let r=this.byStart[e];for(;r;)r.reset(),r=t>r.end?this.byStart[r.end]:null;return this}lastChar(){if(this.outro.length)return this.outro[this.outro.length-1];let e=this.lastChunk;do{if(e.outro.length)return e.outro[e.outro.length-1];if(e.content.length)return e.content[e.content.length-1];if(e.intro.length)return e.intro[e.intro.length-1]}while(e=e.previous);return this.intro.length?this.intro[this.intro.length-1]:""}lastLine(){let e=this.outro.lastIndexOf(_);if(e!==-1)return this.outro.substr(e+1);let t=this.outro,r=this.lastChunk;do{if(r.outro.length>0){if(e=r.outro.lastIndexOf(_),e!==-1)return r.outro.substr(e+1)+t;t=r.outro+t}if(r.content.length>0){if(e=r.content.lastIndexOf(_),e!==-1)return r.content.substr(e+1)+t;t=r.content+t}if(r.intro.length>0){if(e=r.intro.lastIndexOf(_),e!==-1)return r.intro.substr(e+1)+t;t=r.intro+t}}while(r=r.previous);return e=this.intro.lastIndexOf(_),e!==-1?this.intro.substr(e+1)+t:this.intro+t}slice(e=0,t=this.original.length-this.offset){if(e=e+this.offset,t=t+this.offset,this.original.length!==0){for(;e<0;)e+=this.original.length;for(;t<0;)t+=this.original.length}let r="",i=this.firstChunk;for(;i&&(i.start>e||i.end<=e);){if(i.start<t&&i.end>=t)return r;i=i.next}if(i&&i.edited&&i.start!==e)throw new Error(`Cannot use replaced character ${e} as slice start anchor.`);let s=i;for(;i;){i.intro&&(s!==i||i.start===e)&&(r+=i.intro);let o=i.start<t&&i.end>=t;if(o&&i.edited&&i.end!==t)throw new Error(`Cannot use replaced character ${t} as slice end anchor.`);let a=s===i?e-i.start:0,l=o?i.content.length+t-i.end:i.content.length;if(r+=i.content.slice(a,l),i.outro&&(!o||i.end===t)&&(r+=i.outro),o)break;i=i.next}return r}snip(e,t){let r=this.clone();return r.remove(0,e),r.remove(t,r.original.length),r}_split(e){if(this.byStart[e]||this.byEnd[e])return;let t=this.lastSearchedChunk,r=t,i=e>t.end;for(;t;){if(t.contains(e))return this._splitChunk(t,e);if(t=i?this.byStart[t.end]:this.byEnd[t.start],t===r)return;r=t}}_splitChunk(e,t){if(e.edited&&e.content.length){let i=je(this.original)(t);throw new Error(`Cannot split a chunk that has already been edited (${i.line}:${i.column} – "${e.original}")`)}let r=e.split(t);return this.byEnd[t]=e,this.byStart[t]=r,this.byEnd[r.end]=r,e===this.lastChunk&&(this.lastChunk=r),this.lastSearchedChunk=e,!0}toString(){let e=this.intro,t=this.firstChunk;for(;t;)e+=t.toString(),t=t.next;return e+this.outro}isEmpty(){let e=this.firstChunk;do if(e.intro.length&&e.intro.trim()||e.content.length&&e.content.trim()||e.outro.length&&e.outro.trim())return!1;while(e=e.next);return!0}length(){let e=this.firstChunk,t=0;do t+=e.intro.length+e.content.length+e.outro.length;while(e=e.next);return t}trimLines(){return this.trim("[\\r\\n]")}trim(e){return this.trimStart(e).trimEnd(e)}trimEndAborted(e){let t=new RegExp((e||"\\s")+"+$");if(this.outro=this.outro.replace(t,""),this.outro.length)return!0;let r=this.lastChunk;do{let i=r.end,s=r.trimEnd(t);if(r.end!==i&&(this.lastChunk===r&&(this.lastChunk=r.next),this.byEnd[r.end]=r,this.byStart[r.next.start]=r.next,this.byEnd[r.next.end]=r.next),s)return!0;r=r.previous}while(r);return!1}trimEnd(e){return this.trimEndAborted(e),this}trimStartAborted(e){let t=new RegExp("^"+(e||"\\s")+"+");if(this.intro=this.intro.replace(t,""),this.intro.length)return!0;let r=this.firstChunk;do{let i=r.end,s=r.trimStart(t);if(r.end!==i&&(r===this.lastChunk&&(this.lastChunk=r.next),this.byEnd[r.end]=r,this.byStart[r.next.start]=r.next,this.byEnd[r.next.end]=r.next),s)return!0;r=r.next}while(r);return!1}trimStart(e){return this.trimStartAborted(e),this}hasChanged(){return this.original!==this.toString()}_replaceRegexp(e,t){function r(s,o){return typeof t=="string"?t.replace(/\$(\$|&|\d+)/g,(a,l)=>l==="$"?"$":l==="&"?s[0]:+l<s.length?s[+l]:`$${l}`):t(...s,s.index,o,s.groups)}function i(s,o){let a,l=[];for(;a=s.exec(o);)l.push(a);return l}if(e.global)i(e,this.original).forEach(o=>{if(o.index!=null){let a=r(o,this.original);a!==o[0]&&this.overwrite(o.index,o.index+o[0].length,a)}});else{let s=this.original.match(e);if(s&&s.index!=null){let o=r(s,this.original);o!==s[0]&&this.overwrite(s.index,s.index+s[0].length,o)}}return this}_replaceString(e,t){let{original:r}=this,i=r.indexOf(e);return i!==-1&&(typeof t=="function"&&(t=t(e,i,r)),e!==t&&this.overwrite(i,i+e.length,t)),this}replace(e,t){return typeof e=="string"?this._replaceString(e,t):this._replaceRegexp(e,t)}_replaceAllString(e,t){let{original:r}=this,i=e.length;for(let s=r.indexOf(e);s!==-1;s=r.indexOf(e,s+i)){let o=r.slice(s,s+i),a=t;typeof t=="function"&&(a=t(o,s,r)),o!==a&&this.overwrite(s,s+i,a)}return this}replaceAll(e,t){if(typeof e=="string")return this._replaceAllString(e,t);if(!e.global)throw new TypeError("MagicString.prototype.replaceAll called with a non-global RegExp argument");return this._replaceRegexp(e,t)}};function Dt(n){switch(n.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 n.reactive?"reactive-prop":n.expr!==void 0?"expression-prop":void 0;default:return"expression-prop"}}function L(n){let e=[],t=new Map,r=i=>{switch(i.kind){case"text":return!0;case"expr":return!1;case"component":case"control":for(let s of i.children)r(s);return!1;case"fragment":for(let s of i.children)r(s);return!1;case"element":{let s=!0;for(let a of i.children)r(a)||(s=!1);let o;for(let a of i.props)if(o=Dt(a),o)break;return!o&&!s&&(o=At(i)),i.static=!o,o?t.set(i,o):e.push(i),i.static}default:return!1}};for(let i of Array.isArray(n)?n:[n])r(i);return{staticElements:e,reasons:t}}function At(n){for(let e of n.children){if(e.kind==="expr")return"expression-child";if(e.kind==="component")return"component-child";if(e.kind==="control")return"control-child";if(e.kind==="element"&&!e.static||e.kind==="fragment")return"expression-child"}return"expression-child"}var te={kind:"eager"},jt=["pointerdown","focusin","keydown"],_e=new Set(["eager","idle","visible","interaction","media","never"]),E=class extends Error{};function me(n){return n.startsWith("load:")}function ne(n,e){let t=n.slice(5);if(!_e.has(t))throw new E(`Unknown load strategy 'load:${t}'. Expected one of ${[..._e].join(", ")}.`);switch(t){case"eager":return te;case"idle":return{kind:"idle"};case"never":return{kind:"never"};case"visible":return e?{kind:"visible",rootMargin:e}:{kind:"visible"};case"interaction":return{kind:"interaction",events:e?_t(e):[...jt]};case"media":if(!e)throw new E(`'load:media' needs a query, e.g. load:media="(min-width: 1024px)".`);return{kind:"media",query:e};default:throw new E(`Unhandled load strategy '${t}'.`)}}function _t(n){let e=n.split(/[\s,]+/).map(t=>t.trim()).filter(Boolean);if(e.length===0)throw new E("'load:interaction' was given no event names.");return e}function J(n){return n.kind!=="eager"&&n.kind!=="never"}var B=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],F=["Suspense","SuspenseList","Await"],P=["Router","Outlet","Redirect","Link"],Wn=[...B,...F,...P],ge=new Set([...B,...F]);function Je(n={}){let{controlFlowModule:e="@fluixi/dom",coreModule:t="@fluixi/core",routerModule:r="@fluixi/core/router-next"}=n,i={};for(let s of B)i[s]=e;for(let s of F)i[s]=t;for(let s of P)i[s]=r;return i}function re(n,e={}){let{resolver:t,isBound:r,modules:i,strategyFor:s}=e,o=Je(i),a=new Map,l=new Set,c=p=>{let{name:f}=p;if(!f||f.includes(".")||r?.(f))return;let m=u(f);if(!m){l.add(f);return}let h=m.origin==="builtin"&&ge.has(f)?te:s?.(p)??te;p.source={...m,loading:h},a.set(f,p.source)},u=p=>{if(ge.has(p))return{module:o[p],export:p,origin:"builtin"};let f=t?.resolve(p);if(f)return{module:f.module,export:f.export,origin:"rule"};if(P.includes(p))return{module:o[p],export:p,origin:"builtin"}};return ie(n,p=>{p.kind==="component"&&c(p)}),{resolved:a,unresolved:[...l]}}function ie(n,e){let t=Array.isArray(n)?n:[n];for(let r of t){e(r);let i=r.children;i&&ie(i,e)}}function se(n){let e=[];ie(n,s=>{s.kind==="component"&&s.source&&e.push(s)});let t=new Set,r=new Set;for(let s of e){let{module:o,loading:a}=s.source;a.kind==="eager"&&t.add(o),a.kind==="never"&&r.add(o)}let i=new Map;for(let s of e){let o=s.source;J(o.loading)&&t.has(o.module)&&(o.loading={kind:"eager"},i.set(o.module,(i.get(o.module)??0)+1))}return{collapsed:i,conflicted:[...r].filter(s=>t.has(s))}}var Jt=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),Be={className:"class",htmlFor:"for"},Bt=new Set(["innerHTML","outerHTML","innerText","textContent","value","checked","selected","muted","defaultValue","defaultChecked","children","ref"]),Ft=new Set(["script","style","textarea","title"]);function ye(n){return Ft.has(n)}function Fe(n){return Be[n]??n}function U(n){return n.kind!=="attr"||n.expr!==void 0||n.name.includes(":")?!1:!Bt.has(n.name)}function ve(n){if(!n.static||ye(n.tag))return!1;for(let e of n.props)if(!U(e))return!1;for(let e of n.children)if(e.kind!=="text"&&!(e.kind==="element"&&ve(e)))return!1;return!0}function H(n){let e=n.props.map(Ht).filter(Boolean).join(""),t=`<${n.tag}${e}>`;return Jt.has(n.tag)?t:`${t}${n.children.map(Ut).join("")}</${n.tag}>`}function Ut(n){if(n.kind==="text")return Xt(n.value);if(n.kind!=="element")throw new Error(`serializeStatic: unexpected ${n.kind}`);return H(n)}function Ht(n){let e=Be[n.name]??n.name,t=n.literal;return t===!0||t===void 0?` ${e}`:t===!1||t===null?"":` ${e}="${qt(String(t))}"`}function qt(n){return n.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function Xt(n){return n.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}var zt="<!--fx-->",Vt="<!--fx/-->";function ae(n){return n.kind==="expr"||n.kind==="component"||n.kind==="control"}function Wt(n){return n.kind==="text"||n.kind==="element"&&Ue(n)}function Ue(n){return n.svg||ye(n.tag)||!n.props.every(e=>U(e))?!1:n.children.every(e=>Wt(e)||ae(e))}function oe(n){if(ae(n))return!0;let e=n.children;return e?e.some(oe):!1}function He(n){for(let e=0;e<n.children.length;e++){let t=n.children[e];if(t.kind==="text"&&(t.value===""||n.children[e+1]?.kind==="text"))return!1}return n.children.every(e=>e.kind!=="element"||He(e))}function qe(n){if(!Ue(n)||!He(n)||!n.children.some(oe))return null;let e=[],t=[],r=0,i=o=>{let a=`_n$${r++}`;return e.push({ref:a,expr:o}),a};return s(n,"_el$"),{html:Kt(n),tag:n.tag,steps:e,holes:t};function s(o,a){let l=-1;o.children.forEach((u,p)=>{oe(u)&&(l=p)});let c=null;for(let u=0;u<=l;u++){let p=o.children[u],f=c?`${c}.nextSibling`:`${a}.firstChild`;if(ae(p)){let h=i(f),g=i(`holeEnd(${h})`);t.push({parentRef:a,startRef:h,endRef:g,node:p}),c=g;continue}let m=i(f);p.kind==="element"&&oe(p)&&s(p,m),c=m}}}function Kt(n){return H(Xe(n)).split(ze).join(zt+Vt)}function Xe(n){return{...n,children:n.children.map(e=>ae(e)?{kind:"text",value:ze}:e.kind==="element"?Xe(e):e)}}var ze="\0fx-hole\0";var xe={version:1,module:"@fluixi/dom",symbols:["createNativeElement","insert","spread","setAttribute","delegateEvents","createComponent","createMemo","untrack","Show","For","Index","Switch","Match","Dynamic","ErrorBoundary"]},sr={version:2,module:"@fluixi/dom",symbols:[...xe.symbols,"template","cloneTemplate","walk"]};var Gt={show:"Show",for:"For",index:"Index",switch:"Switch",match:"Match",dynamic:"Dynamic",errorBoundary:"ErrorBoundary",suspense:"Suspense"};function Yt(n){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(n)}function We(n){return Yt(n)?n:JSON.stringify(n)}function Zt(n){return n.expr!==void 0?n.reactive?`() => (${n.expr})`:`(${n.expr})`:JSON.stringify(n.literal??!0)}function Qt(n){return n.expr!==void 0?`(${n.expr})`:JSON.stringify(n.literal??!0)}function en(n,e,t){let r=n.filter(a=>a.kind==="spread"),s=n.filter(a=>a.kind!=="spread").map(a=>`${We(a.name)}: ${Zt(a)}`);e!=null&&s.push(`children: ${e}`);let o=`{ ${s.join(", ")} }`;return r.length>0?(t.add("mergeProps"),`mergeProps(${r.map(a=>a.expr).join(", ")}, ${o})`):o}function Ke(n,e,t){return n.length===1?q(n[0],e,t):`[${n.map(r=>q(r,e,t)).join(", ")}]`}function Ve(n,e,t,r,i){r.add("createMemo"),r.add("createComponent");let s=e.filter(c=>c.kind==="spread"),a=e.filter(c=>c.kind!=="spread").map(c=>`get ${We(c.name)}() { return ${Qt(c)}; }`);t.length>0&&a.push(`get children() { return ${Ke(t,r,i)}; }`);let l=`{ ${a.join(", ")} }`;return s.length>0&&(r.add("mergeProps"),l=`mergeProps(${s.map(c=>c.expr).join(", ")}, ${l})`),`createMemo(() => createComponent(${n}, ${l}))`}function tn(n,e){let t=Fe(e.name),r=e.literal;return r===!0||r===void 0?`${n}.setAttribute(${JSON.stringify(t)}, "");`:r===!1||r===null?"":`${n}.setAttribute(${JSON.stringify(t)}, ${JSON.stringify(String(r))});`}var Ge=!1;function q(n,e,t){switch(n.kind){case"text":return JSON.stringify(n.value);case"expr":return n.reactive?`() => (${n.code})`:`(${n.code})`;case"fragment":return n.children.length===0?"null":Ke(n.children,e,t);case"component":return Ve(n.name,n.props,n.children,e,t);case"control":{let r=Gt[n.control]??n.control;return e.add(r),Ve(r,n.props,n.children,e,t)}case"element":{if(t&&n.static&&!n.svg&&ve(n)){e.add("templateNode");let a=`_tmpl$${t.length}`;return t.push({id:a,html:H(n),tag:n.tag,svg:!1}),`templateNode(${a}, ${JSON.stringify(n.tag)})`}if(t&&Ge){let a=qe(n);if(a){e.add("templateNode"),e.add("insert"),e.add("holeEnd"),e.add("holeContent"),e.add("holeScope");let l=`_tmpl$${t.length}`;t.push({id:l,html:a.html,tag:a.tag,svg:!1});let c=[`const _el$ = templateNode(${l}, ${JSON.stringify(a.tag)}, true);`];for(let u of a.steps)c.push(`const ${u.ref} = ${u.expr};`);for(let u of a.holes)c.push(`insert(${u.parentRef}, holeScope(${u.startRef}, () => (${q(u.node,e,t)})), ${u.endRef}, holeContent(${u.startRef}, ${u.endRef}));`);return c.push("return _el$;"),`(() => { ${c.join(" ")} })()`}}e.add("createNativeElement");let r=JSON.stringify(n.tag),i="_el$",s=[],o=n.svg?`${r}, true`:r;if(s.push(`const ${i} = createNativeElement(${o});`),n.props.length>0)if(!n.svg&&n.props.every(U))for(let a of n.props)s.push(tn(i,a));else{e.add("spread");let a=n.svg?", isSVG: true":"";s.push(`spread({ element: ${i}, props: ${en(n.props,null,e)}${a} });`)}for(let a of n.children){e.add("insert");let l=q(a,e,t),c=a.kind==="expr"&&a.reactive||a.kind==="component"||a.kind==="control";s.push(c?`insert(${i}, ${l}, null);`:`insert(${i}, ${l});`)}return s.push(`return ${i};`),`(() => { ${s.join(" ")} })()`}}}function le(n,e){if(!e||e.length===0)return n;let t=new Map(e.map(r=>[r.id,JSON.stringify(r.html)]));return n.replace(/_tmpl\$\d+/g,r=>t.get(r)??r)}var M={name:"imperative",contract:xe,emit(n,e){let t=new Set,r=e?.templateClone!==!1?[]:void 0;return Ge=e?.partialTemplates===!0,{code:q(n,t,r),imports:Array.from(t),templates:r}}};var nn=n=>"components"in n;function Ye(n,e){return n.replace(/\$(\d+)/g,(t,r)=>e[Number(r)]??t)}function rn(n,e){return typeof e=="string"?{module:e,export:n}:e}function ce(n=[]){let e=new Map,t=[],r=[];for(let o of n){if(!nn(o)){r.push(o);continue}for(let[a,l]of Object.entries(o.components)){let c=rn(a,l),u=e.get(a);if(u&&u.module!==c.module){let p=t.find(f=>f.name===a);p?p.modules.push(c.module):t.push({name:a,modules:[u.module,c.module]});continue}e.set(a,c)}}let i=new Map;return{resolve:o=>{if(i.has(o))return i.get(o);let a=e.get(o);if(!a)for(let l of r){let c=o.match(new RegExp(l.match.source,l.match.flags.replace("g","")));if(c){a={module:Ye(l.module,c),export:l.export?Ye(l.export,c):o};break}}return i.set(o,a),a},names:()=>[...e.keys()],conflicts:()=>t}}import{parseTemplate as sn}from"@fluixi/template-parser";function X(n){let e=n.split(/\r\n|\n|\r/),t=0;for(let i=0;i<e.length;i++)/[^ \t]/.test(e[i])&&(t=i);let r="";for(let i=0;i<e.length;i++){let s=e[i].replace(/\t/g," ");i!==0&&(s=s.replace(/^ +/,"")),i!==e.length-1&&(s=s.replace(/ +$/,"")),s&&(i!==t&&(s+=" "),r+=s)}return r}var Ze=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function on(n){return n.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${")}function Qe(n){return n.charAt(0).toUpperCase()+n.slice(1)}var Ne=class{constructor(e,t){this.holes=e;this.used=t}hole(e){return this.holes[e]??{code:"undefined",reactive:!1}}emit(e){let{code:t,imports:r,templates:i}=M.emit(e,{});for(let s of r)this.used.add(s);return le(t,i)}lowerRoot(e){let t=this.lowerChildren(e);return t.length===1?t[0]:{kind:"fragment",children:t}}lowerChildren(e){let t=[];for(let r=0;r<e.length;r++){let i=e[r];if(i.kind==="Element"||i.kind==="Component"){let o=i.attributes.find(a=>a.kind==="IfDirective");if(o&&o.kind==="IfDirective"){let a=r+1;a<e.length&&this.isBlankText(e[a])&&a++;let l=e[a],c=l&&(l.kind==="Element"||l.kind==="Component")&&l.attributes.some(u=>u.kind==="ElseDirective");t.push(this.lowerIf(i,o.hole,c?l:null)),c&&(r=a);continue}if(i.attributes.some(a=>a.kind==="EachDirective")){t.push(this.lowerEach(i));continue}}let s=this.lowerNode(i);s&&t.push(s)}return t}isBlankText(e){return e.kind==="Text"&&!e.raw&&X(e.value)===""}lowerNode(e){switch(e.kind){case"Text":{if(e.raw)return{kind:"text",value:e.value};let t=X(e.value);return t?{kind:"text",value:t}:null}case"Comment":return null;case"Expression":{let t=this.hole(e.hole);return{kind:"expr",code:t.code,reactive:t.reactive}}case"Fragment":return{kind:"fragment",children:this.lowerChildren(e.children)};case"Element":return this.lowerElement(e);case"Component":return this.lowerComponent(e);default:return null}}lowerElement(e){let t=e.attributes.find(r=>r.kind==="Attribute"&&r.name==="is");if(e.tag==="component"&&t&&t.value&&t.value.kind==="hole"){let r=e.attributes.filter(s=>s!==t),i=this.lowerComponent({...e,kind:"Component",tag:"Dynamic",tagHole:null,attributes:r});return i.props.unshift({name:"component",kind:"attr",expr:`() => (${this.hole(t.value.hole).code})`}),i}return{kind:"element",tag:e.tag,svg:e.namespace==="svg",props:this.lowerAttributes(e.attributes),children:this.lowerChildren(e.children),static:!1}}lowerComponent(e){let t=e.tagHole!=null?this.hole(e.tagHole).code:e.tag,r=this.lowerAttributes(e.attributes),{slots:i,rest:s}=this.partitionSlots(e.children);for(let[l,c]of i){let u=c.length===1?c[0]:{kind:"fragment",children:c},p={name:l,kind:"attr",expr:this.emit(u),jsxElement:!0},f=r.findIndex(m=>m.name===l);f>=0?r[f]=p:r.push(p)}let o=e.attributes.find(l=>l.kind==="LoadDirective"),a=o?ne(`load:${o.strategy}`,o.modifier):void 0;return{kind:"component",name:t,props:r,children:this.lowerChildren(s),...a?{load:a}:{}}}partitionSlots(e){let t=new Map,r=[];for(let i of e){if(i.kind==="Element"||i.kind==="Component"){let s=i.attributes.find(o=>o.kind==="Attribute"&&o.name==="slot");if(s&&s.value&&s.value.kind==="static"){let o={...i,attributes:i.attributes.filter(c=>c!==s)},a=o.kind==="Element"?this.lowerElement(o):this.lowerComponent(o),l=t.get(s.value.value)??[];l.push(a),t.set(s.value.value,l);continue}}r.push(i)}return{slots:t,rest:r}}lowerIf(e,t,r){let i=this.hole(t),s=[{name:"when",kind:"attr",expr:i.code,reactive:i.reactive}];if(r){let a=this.stripAndLower(r,l=>l.kind==="ElseDirective");s.push({name:"fallback",kind:"attr",expr:this.emit(a),jsxElement:!0})}let o=this.stripAndLower(e,a=>a.kind==="IfDirective");return{kind:"component",name:"Show",props:s,children:[o]}}lowerEach(e){let t=e.attributes.find(l=>l.kind==="EachDirective");if(!t||t.kind!=="EachDirective")return this.lowerNode(e);let r=this.hole(t.hole),i=[{name:"each",kind:"attr",expr:r.code,reactive:r.reactive}];if(t.key){let l="static"in t.key?`(item) => item[${JSON.stringify(t.key.static)}]`:this.hole(t.key.hole).code;i.push({name:"by",kind:"attr",expr:l})}let s=this.itemArrow(e),o;if(s){let l={kind:"expr",code:s.body,reactive:s.bodyReactive},c=this.rebuildWithChildren(e,[l]);o=`(${s.params.join(", ")}) => (${this.emit(c)})`}else{let l=this.stripAndLower(e,c=>c.kind==="EachDirective");o=`() => (${this.emit(l)})`}return{kind:"component",name:"For",props:i,children:[{kind:"expr",code:o,reactive:!1}]}}itemArrow(e){let t=e.children.filter(r=>!this.isBlankText(r));return t.length!==1||t[0].kind!=="Expression"?null:this.hole(t[0].hole).arrow??null}stripAndLower(e,t){let r={...e,attributes:e.attributes.filter(i=>!t(i))};return r.kind==="Element"?this.lowerElement(r):this.lowerComponent(r)}rebuildWithChildren(e,t){let r=this.lowerAttributes(e.attributes.filter(i=>i.kind!=="EachDirective"));return e.kind==="Element"?{kind:"element",tag:e.tag,svg:e.namespace==="svg",props:r,children:t,static:!1}:{kind:"component",name:e.tag,props:r,children:t}}lowerAttributes(e){let t=[],r=[],i=!1,s=[],o=!1,a=[];for(let l of e)switch(l.kind){case"IfDirective":case"EachDirective":case"ElseDirective":break;case"Attribute":t.push(this.plainAttr(l));break;case"PropertyBinding":t.push({name:l.name,kind:"prop",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"EventBinding":t.push(this.eventProp(l));break;case"RefBinding":t.push({name:"ref",kind:"ref",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"Spread":t.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);s.push(`${JSON.stringify(l.name)}: ${c.code}`),o=o||c.reactive;break}case"BindDirective":t.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&&t.push({name:"classList",kind:"attr",expr:`{ ${r.join(", ")} }`,reactive:i}),s.length>0&&t.push({name:"style",kind:"attr",expr:`{ ${s.join(", ")} }`,reactive:o}),a.length>0&&t.push({name:"use",kind:"attr",expr:`[${a.join(", ")}]`}),t}eventProp(e){let t=e.name.toLowerCase(),r=this.hole(e.hole).code;if(!(e.syntax==="colon"||e.modifiers.length>0))return{name:"on"+Qe(e.name),kind:"event",event:{name:t,delegated:Ze.has(t)},expr:r};let s=this.wrapHandler(r,e.modifiers),o=this.eventOptions(e.modifiers),a=o?`[${s}, ${o}]`:s;return{name:"on:"+t,kind:"attr",expr:a}}wrapHandler(e,t){let r=t.includes("self")?"if (e.target !== e.currentTarget) return; ":"",i=[];return t.includes("prevent")&&i.push("e.preventDefault();"),t.includes("stop")&&i.push("e.stopPropagation();"),!r&&i.length===0?e:`(e) => { ${r}${i.join(" ")} return (${e})(e); }`}eventOptions(e){let t=[];return e.includes("capture")&&t.push("capture: true"),e.includes("once")&&t.push("once: true"),e.includes("passive")&&t.push("passive: true"),t.length?`{ ${t.join(", ")} }`:null}bindProps(e,t){let r=e==="checked",i=r?"change":"input",s=r?"checked":"value";this.used.add("bindPair");let o=`bindPair(${t})`;return[{name:e,kind:"attr",expr:`${o}[0]()`,reactive:!0},{name:"on"+Qe(i),kind:"event",event:{name:i,delegated:Ze.has(i)},expr:`(e) => ${o}[1](e.target.${s})`}]}plainAttr(e){let t=e.value,r=e.name;e.name==="class"?r=t&&t.kind==="hole"&&this.hole(t.hole).object?"classList":"className":e.name==="html"&&(r="innerHTML");let s={name:r,kind:"attr"};if(t==null)return s.literal=!0,s;if(t.kind==="static")return s.literal=t.value,s;if(t.kind==="hole"){let l=this.hole(t.hole);return s.expr=l.code,s.reactive=l.reactive,s}let o=!1,a=t.parts.map(l=>{if("text"in l)return on(l.text);let c=this.hole(l.hole);return o=o||c.reactive,"${"+c.code+"}"}).join("");return s.expr="`"+a+"`",s.reactive=o,s}};function et(n,e,t,r={}){let{root:i}=sn(n,{svg:r.svg});return new Ne(e,t).lowerRoot(i.children)}function tt(n,e,t={}){let r=new Set,i=et(n,[...e],r,{svg:t.svg});L(i),re(i,{resolver:ce(t.resolve??[]),modules:{controlFlowModule:t.controlFlowModule??"@fluixi/dom",coreModule:t.coreModule??"@fluixi/core",routerModule:t.routerModule??"@fluixi/core/router-next"},strategyFor:l=>l.load}),se(i);let{code:s,imports:o,templates:a}=M.emit(i,{templateClone:t.templateClone,partialTemplates:t.partialTemplates});for(let l of o)r.add(l);return t.hoistTemplates?{code:s,imports:[...r],ir:i,templates:a}:{code:le(s,a),imports:[...r],ir:i}}var an="children";function D(n){switch(n.kind){case"call":return!0;case"member":return n.property!==an;case"compound":return n.parts.some(D);case"opaque":return!1}}var ln=new Set(["CallExpression","OptionalCallExpression"]),cn=new Set(["MemberExpression","OptionalMemberExpression"]);function A(n){if(!n)return{kind:"opaque"};if(ln.has(n.type))return{kind:"call"};if(cn.has(n.type)){let e=n.property;return{kind:"member",property:!(n.computed===!0)&&e?.type==="Identifier"?e.name:null}}return n.type==="ConditionalExpression"?{kind:"compound",parts:[n.test,n.consequent,n.alternate].map(z)}:n.type==="LogicalExpression"||n.type==="BinaryExpression"?{kind:"compound",parts:[n.left,n.right].map(z)}:n.type==="TemplateLiteral"?{kind:"compound",parts:n.expressions.map(z)}:n.type==="ObjectExpression"?{kind:"compound",parts:n.properties.filter(t=>(t.type==="ObjectProperty"||t.type==="Property")&&t.computed!==!0).map(t=>z(t.value))}:n.type==="ArrayExpression"?{kind:"compound",parts:n.elements.filter(t=>t!=null&&t.type!=="SpreadElement").map(z)}:{kind:"opaque"}}var z=n=>A(n);var un=new Set(["svg","path","circle","rect","line","polygon","polyline","ellipse","g","defs","clipPath","text"]),dn=/^on[A-Z]/,pn=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]),it=n=>D(A(n));function V(n){if(n.type==="StringLiteral"||n.type==="NumericLiteral"||n.type==="BooleanLiteral"||n.type==="Literal"&&(typeof n.value=="string"||typeof n.value=="number"||typeof n.value=="boolean"))return n.value}var be=n=>!!n&&typeof V(n)=="string";function fn(n,e){return n.type==="JSXIdentifier"?{tag:n.name,component:n.name[0]!==n.name[0].toLowerCase()}:n.type==="JSXMemberExpression"?{tag:e.code(n),component:!0}:n.type==="JSXNamespacedName"?{tag:`${n.namespace.name}:${n.name.name}`,component:!1}:{tag:"div",component:!1}}function we(n){return n.type==="JSXIdentifier"?n.name==="class"?"className":n.name:n.type==="JSXNamespacedName"?`${n.namespace.name}:${n.name.name}`:"unknown"}function hn(n,e){let t=we(n.name),r=dn.test(t),i=r||t.startsWith("on:")||t==="ref",o={name:t,kind:r?"event":"attr"};if(r){let l=t.slice(2).toLowerCase();o.event={name:l,delegated:pn.has(l)}}let a=n.value;if(a==null)return o.literal=!0,o;if(be(a))return o.literal=V(a),o;if(a.type==="JSXExpressionContainer"&&a.expression?.type!=="JSXEmptyExpression"){let l=a.expression,c=V(l);return c!==void 0?(o.literal=c,o):(o.expr=e.code(l),o.reactive=i?!1:it(l),(l.type==="JSXElement"||l.type==="JSXFragment")&&(o.jsxElement=!0),o)}return o.literal=!0,o}function nt(n,e){let t=n.value;return t==null?null:be(t)?JSON.stringify(V(t)):t.type==="JSXExpressionContainer"&&t.expression?.type!=="JSXEmptyExpression"?e.code(t.expression):null}function mn(n,e){let t=[],r=[];for(let i of n){if(i.type==="JSXSpreadAttribute"){t.push({name:"",kind:"spread",expr:e.code(i.argument)});continue}if(i.type!=="JSXAttribute"||me(we(i.name)))continue;let s=i.name.type==="JSXNamespacedName"?i.name.namespace.name:null;if(s==="use"){let o=i.name.name.name;e.used.add(o);let a=nt(i,e);r.push(a!=null?`[${o}, () => (${a})]`:`[${o}]`);continue}if(s==="oncapture"){let o=i.name.name.name.toLowerCase(),a=nt(i,e)??"undefined";t.push({name:"on:"+o,kind:"attr",expr:`[${a}, { capture: true }]`});continue}t.push(hn(i,e))}return r.length>0&&t.push({name:"use",kind:"attr",expr:`[${r.join(", ")}]`}),t}function rt(n,e){let t=[];for(let r of n)if(r.type==="JSXText"){let i=X(r.value);i&&t.push({kind:"text",value:i})}else if(r.type==="JSXExpressionContainer"){if(r.expression?.type!=="JSXEmptyExpression"){let i=r.expression;t.push({kind:"expr",code:e.code(i),reactive:it(i)})}}else r.type==="JSXElement"||r.type==="JSXFragment"?t.push(st(r,e)):r.type==="JSXSpreadChild"&&t.push({kind:"expr",code:e.code(r.expression),reactive:!1});return t}function gn(n){for(let e of n){if(e.type!=="JSXAttribute")continue;let t=we(e.name);if(me(t)){if(e.value&&!be(e.value))throw new E(`'${t}' needs a literal value, not an expression — the strategy is compile-time.`);return ne(t,e.value?V(e.value):null)}}}function st(n,e){if(n.type==="JSXFragment")return{kind:"fragment",children:rt(n.children,e)};let{tag:t,component:r}=fn(n.openingElement.name,e),i=mn(n.openingElement.attributes,e),s=rt(n.children,e);if(r){let o=gn(n.openingElement.attributes);return{kind:"component",name:t,props:i,children:s,...o?{load:o}:{}}}return{kind:"element",tag:t,svg:un.has(t),props:i,children:s,static:!1}}function ot(n,e){let t=st(n,e);return L(t),t}function C(n,e){if(n)switch(n.type){case"Identifier":e.add(n.name);return;case"ObjectPattern":for(let t of n.properties)t.type==="RestElement"?C(t.argument,e):C(t.value,e);return;case"ArrayPattern":for(let t of n.elements)C(t,e);return;case"AssignmentPattern":C(n.left,e);return;case"RestElement":C(n.argument,e);return}}function at(n,e){switch(n.type){case"ImportDeclaration":for(let t of n.specifiers)C(t.local,e);return;case"VariableDeclaration":for(let t of n.declarations)C(t.id,e);return;case"FunctionDeclaration":case"ClassDeclaration":C(n.id,e);return;case"ExportNamedDeclaration":case"ExportDefaultDeclaration":n.declaration&&at(n.declaration,e);return}}function Re(n){let e=new Set;for(let t of n.body)at(t,e);return e}import{parse as Ar}from"@babel/parser";function R(n,e){if(n)switch(n.type){case"Identifier":e.add(n.name);return;case"ObjectPattern":for(let t of n.properties)t.type==="RestElement"?R(t.argument,e):R(t.value,e);return;case"ArrayPattern":for(let t of n.elements)R(t,e);return;case"AssignmentPattern":R(n.left,e);return;case"RestElement":R(n.argument,e);return}}function Se(n){switch(n.type){case"StringLiteral":case"NumericLiteral":case"BooleanLiteral":case"NullLiteral":case"BigIntLiteral":case"RegExpLiteral":case"Identifier":return!0;case"Literal":return!0;case"TemplateLiteral":return n.expressions.every(Se);case"UnaryExpression":return Se(n.argument);case"MemberExpression":return!1;default:return!1}}function ue(n,e){if(!(!n||typeof n!="object")){e(n);for(let t of Object.keys(n)){if(t==="loc"||t==="range"||t==="leadingComments"||t==="trailingComments")continue;let r=n[t];if(Array.isArray(r))for(let i of r)i&&typeof i=="object"&&ue(i,e);else r&&typeof r=="object"&&typeof r.type=="string"&&ue(r,e)}}}function yn(n){let e=new Set;return ue(n,t=>{if(t.type==="AssignmentExpression")R(t.left,e);else if(t.type==="UpdateExpression"){let r=t.argument;r?.type==="Identifier"&&e.add(r.name)}}),e}function vn(n,e){let t=new Set,r=i=>{let s=new Set;R(i,s);for(let o of s)e.has(o)&&t.add(o)};return ue(n,i=>{switch(i.type){case"VariableDeclarator":r(i.id);return;case"FunctionDeclaration":case"FunctionExpression":case"ArrowFunctionExpression":r(i.id);for(let s of i.params??[])r(s);return;case"CatchClause":r(i.param);return;case"ClassDeclaration":case"ClassExpression":r(i.id);return}}),t}function lt(n,e,t){for(let r of n.properties??[]){if(r.type==="RestElement"){let u=r.argument;if(u?.type!=="Identifier"||e.length>0){let p=new Set;R(u,p);for(let f of p)t.bails.push({name:f,reason:"rest"});continue}t.rest={name:u.name,keys:[]};continue}if(r.computed){let u=new Set;R(r.value,u);for(let p of u)t.bails.push({name:p,reason:"computed"});continue}let i=r.key,s=i.type==="Identifier"?i.name:i.value,o=r.value,a;o.type==="AssignmentPattern"&&(a=o.right,o=o.left);let l=[...e,s];if(o.type==="Identifier"){if(a&&!Se(a)){t.bails.push({name:o.name,reason:"unsafe-default"});continue}t.reads.push({name:o.name,path:l,...a?{fallback:a}:{}});continue}if(o.type==="ObjectPattern"){if(a){let u=new Set;R(o,u);for(let p of u)t.bails.push({name:p,reason:"unsafe-default"});continue}lt(o,l,t);continue}let c=new Set;R(o,c);for(let u of c)t.bails.push({name:u,reason:"computed"})}}function ct(n,e){let t={reads:[],bails:[]};if(n?.type!=="ObjectPattern"||(lt(n,[],t),t.rest&&(e?.type!=="BlockStatement"?(t.bails.push({name:t.rest.name,reason:"rest"}),delete t.rest):t.rest.keys=(n.properties??[]).filter(a=>a.type!=="RestElement"&&!a.computed).map(a=>{let l=a.key;return l.type==="Identifier"?l.name:l.value})),t.reads.length===0&&!t.rest))return t;let r=new Set(t.reads.map(a=>a.name));t.rest&&r.add(t.rest.name);let i=yn(e),s=vn(e,r),o=[];for(let a of t.reads)i.has(a.name)?t.bails.push({name:a.name,reason:"reassigned"}):s.has(a.name)?t.bails.push({name:a.name,reason:"shadowed"}):o.push(a);return t.reads=o,t.rest&&i.has(t.rest.name)?(t.bails.push({name:t.rest.name,reason:"reassigned"}),delete t.rest):t.rest&&s.has(t.rest.name)&&(t.bails.push({name:t.rest.name,reason:"shadowed"}),delete t.rest),t}function ut(n){switch(n){case"rest":return"this rest element cannot be served by splitProps, and copying the props into a plain object would lose the getters";case"computed":return"the property is not known until it runs";case"reassigned":return"the binding is assigned to, and props are read-only";case"shadowed":return"an inner scope binds the same name";case"unsafe-default":return"the default would have to run again on every read"}}function W(n,e,t=null){if(!(!n||typeof n!="object"||typeof n.type!="string")&&!n.type.startsWith("TS")&&e(n,t)!==!1)for(let r of Object.keys(n)){if(r==="loc"||r==="leadingComments"||r==="trailingComments")continue;let i=n[r];if(Array.isArray(i))for(let s of i)W(s,e,n);else i&&typeof i=="object"&&W(i,e,n)}}function dt(n){return!!n&&n[0]>="A"&&n[0]<="Z"}function xn(n){let e=[];return W(n,t=>{if(t.type==="FunctionDeclaration"&&dt(t.id?.name)){e.push(t);return}if(t.type==="VariableDeclarator"&&dt(t.id?.name)){let r=t.init;r&&(r.type==="ArrowFunctionExpression"||r.type==="FunctionExpression")&&e.push(r)}}),e}function Nn(n){let e=new Set;return W(n,t=>{t.type==="Identifier"&&e.add(t.name)}),e}function bn(n,e){if(!e)return!0;switch(e.type){case"MemberExpression":case"OptionalMemberExpression":return!(e.property===n&&!e.computed);case"ObjectProperty":case"ObjectMethod":case"ClassProperty":case"ClassMethod":return!(e.key===n&&!e.computed);case"LabeledStatement":case"BreakStatement":case"ContinueStatement":return e.label!==n;case"ImportSpecifier":case"ExportSpecifier":return!1;default:return!0}}function pt(n,e,t={}){let r=[],i=[],s=new Set;for(let o of xn(n)){let a=o.params?.[0];if(a?.type!=="ObjectPattern")continue;let l=ct(a,o.body);for(let h of l.bails)i.push({name:h.name,reason:h.reason,message:ut(h.reason),start:a.start});if(l.bails.length>0||l.reads.length===0&&!l.rest)continue;let c=Nn(o),u=t.parameterName??"props";for(;c.has(u);)u=`_${u}`;let p=new Map;for(let h of l.reads){let g=`${u}.${h.path.join(".")}`,x=h.fallback;p.set(h.name,x?`(${g} === undefined ? ${e.slice(x.start,x.end)} : ${g})`:g)}let f=a.typeAnnotation;if(r.push({start:a.start,end:f?.start??a.end,code:u}),l.rest){let h=l.rest.keys.map(x=>JSON.stringify(x)).join(", "),g=o.body;r.push({start:g.start+1,end:g.start+1,code:`
11
+ const [, ${l.rest.name}] = splitProps(${u}, [${h}]);`}),s.add("splitProps")}let m=[];W(o.body,(h,g)=>{if(h.type!=="Identifier")return;let x=p.get(h.name);if(!x)return;let S=g?.type==="ObjectProperty"&&g.shorthand&&g.value===h;if(!S&&!bn(h,g))return;let b=l.reads.find(I=>I.name===h.name).path;m.push({node:h,parent:S?g:null,text:x,property:b[b.length-1]})});for(let h of m)h.parent?r.push({start:h.parent.start,end:h.parent.end,code:`${h.node.name}: ${h.text}`}):r.push({start:h.node.start,end:h.node.end,code:h.text}),wn(h.node,u,h.property)}return{edits:r,diagnostics:i,used:s}}function wn(n,e,t){n.type="MemberExpression",n.computed=!1,n.optional=!1,n.object={type:"Identifier",name:e,start:n.start,end:n.start},n.property={type:"Identifier",name:t,start:n.end,end:n.end},delete n.name}var $="@fluixi/reactive/signal",T={$signal:{export:"signal",module:$,returns:"signal-handle"},$memo:{export:"memo",module:$,returns:"memo-handle"},$effect:{export:"effect",module:$,returns:"effect"},$store:{export:"store",module:"@fluixi/reactive/store",returns:"store-handle"},$resource:{export:"resource",module:$,returns:"resource-handle"},$selector:{export:"createSelector",module:$,returns:"memo-accessor"},$deferred:{export:"createDeferred",module:$,returns:"memo-accessor"},$untrack:{export:"untrack",module:$,returns:"plain"},$untrackStore:{export:"untrackStore",module:"@fluixi/reactive/store",returns:"plain"}},ft={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"},Rn=["@fluixi/reactive","@fluixi/reactive/signal","@fluixi/reactive/signal-next","@fluixi/reactive/store","@fluixi/core","@fluixi/core/rx"],Sn=new RegExp(`\\$(?:${Object.keys(T).map(n=>n.slice(1)).join("|")})\\s*\\(`);function ht(n){return Sn.test(n)}function mt(n){return Object.prototype.hasOwnProperty.call(T,n)}function gt(n){return Rn.includes(n)}function y(n,e){if(n)switch(n.type){case"Identifier":e.add(n.name);return;case"ObjectPattern":for(let t of n.properties??[])t.type==="RestElement"?y(t.argument,e):y(t.value,e);return;case"ArrayPattern":for(let t of n.elements??[])y(t,e);return;case"AssignmentPattern":y(n.left,e);return;case"RestElement":y(n.argument,e);return}}function K(n,e){if(!(!n||typeof n!="object"||typeof n.type!="string")){e(n);for(let t of Object.keys(n)){if(t==="loc"||t==="leadingComments"||t==="trailingComments")continue;let r=n[t];if(Array.isArray(r))for(let i of r)K(i,e);else r&&typeof r=="object"&&K(r,e)}}}function kn(n,e){if(n.type!=="CallExpression")return;let t=n.callee;if(t?.type!=="Identifier")return;let r=t.name,i=e.primitives.get(r);if(i)return i;let s=T[r];if(s&&!e.shadowed.has(r))return s.returns}function En(n,e,t){if(Array.isArray(e)){n.type==="ArrayPattern"&&n.elements.forEach((r,i)=>{let s=e[i];r?.type==="Identifier"&&s&&t.set(r.name,s)});return}n.type==="Identifier"&&t.set(n.name,e)}function yt(n){let e=new Set;return K(n,t=>{switch(t.type){case"VariableDeclarator":y(t.id,e);return;case"FunctionDeclaration":case"FunctionExpression":case"ArrowFunctionExpression":y(t.id,e);for(let r of t.params??[])y(r,e);return;case"ClassDeclaration":case"ClassExpression":y(t.id,e);return;case"ImportSpecifier":case"ImportDefaultSpecifier":case"ImportNamespaceSpecifier":y(t.local,e);return;case"CatchClause":y(t.param,e);return}}),e}function vt(n){let e={kinds:new Map,primitives:new Map,shadowed:new Set},t=n;K(t,r=>{let i=new Set;if(r.type==="VariableDeclarator")y(r.id,i);else if(r.type==="FunctionDeclaration"||r.type==="ClassDeclaration")y(r.id,i);else if(r.type==="ImportDefaultSpecifier"||r.type==="ImportNamespaceSpecifier")y(r.local,i);else if(r.type==="ImportSpecifier")y(r.local,i);else if(r.type==="FunctionExpression"||r.type==="ArrowFunctionExpression"||r.type==="FunctionDeclaration")for(let s of r.params??[])y(s,i);for(let s of i)T[s]&&e.shadowed.add(s)});for(let r of t.body??[])if(r.type==="ImportDeclaration"&&gt(r.source?.value))for(let i of r.specifiers??[]){if(i.type!=="ImportSpecifier")continue;let s=i.imported,o=s.type==="Identifier"?s.name:s.value,a=ft[o];a&&e.primitives.set(i.local.name,a)}return K(t,r=>{if(r.type!=="VariableDeclarator"||!r.init)return;let i=kn(r.init,e);i&&En(r.id,i,e.kinds)}),e}function ke(n,e){if(!(!n||typeof n!="object"||typeof n.type!="string")){e(n);for(let t of Object.keys(n)){if(t==="loc"||t==="leadingComments"||t==="trailingComments")continue;let r=n[t];if(Array.isArray(r))for(let i of r)ke(i,e);else r&&typeof r=="object"&&ke(r,e)}}}function xt(n){let e=[],t=[],r=new Map,i=new Set,{shadowed:s}=vt(n);return ke(n,o=>{if(o.type!=="CallExpression")return;let a=o.callee;if(a?.type!=="Identifier")return;let l=a.name;if(!mt(l))return;if(s.has(l)){i.has(l)||(i.add(l),t.push({name:l,message:`${l} is reserved for the compiler, and this module binds it. The call keeps your binding's meaning; rename it to use the intrinsic.`,start:a.start}));return}let c=T[l];e.push({start:a.start,end:a.end,code:c.export});let u=r.get(c.module)??new Set;u.add(c.export),r.set(c.module,u)}),{edits:e,diagnostics:t,imports:r}}function Nt(n,e){let t=[];for(let[r,i]of[...n.imports].sort(([s],[o])=>s.localeCompare(o))){let s=[...i].filter(o=>!e.has(o)).sort();s.length&&t.push(`import { ${s.join(", ")} } from ${JSON.stringify(r)};`)}return t.length?`${t.join(`
12
+ `)}
13
+ `:""}var In=new Set(B),$n=new Set(F),Tn=new Set(P),On=new Set(["createMemo","createEffect","createRenderEffect","createRoot","createSignal","onCleanup","batch","untrack"]);function pe(n,e,t=null,r=""){if(!(!n||typeof n!="object")){if(Array.isArray(n)){for(let i of n)pe(i,e,t,r);return}typeof n.type=="string"&&e(n,t,r);for(let i of Object.keys(n))i==="loc"||i==="leadingComments"||i==="trailingComments"||pe(n[i],e,typeof n.type=="string"?n:t,i)}}var Ee=n=>n.type==="JSXElement"||n.type==="JSXFragment";function Ln(n,e,t){return Ee(n)?!(e&&Ee(e)&&t==="children"):!1}function Pn(n,e){return n.type==="TaggedTemplateExpression"&&n.tag?.type==="Identifier"&&(n.tag.name===e||n.tag.name==="svg")}function bt(n){return n.filter(e=>!n.some(t=>t!==e&&t.start<=e.start&&t.end>=e.end&&t.end-t.start>e.end-e.start))}function de(n,e,t,r){let i=bt(r.filter(o=>o.start>=e&&o.end<=t)).sort((o,a)=>a.start-o.start),s=n.slice(e,t);for(let o of i)s=s.slice(0,o.start-e)+o.code+s.slice(o.end-e);return s}function Mn(n,e,t){let r={code:de(n,e.start,e.end,t),reactive:D(A(e))};return e.type==="ArrowFunctionExpression"&&e.body?.type!=="BlockStatement"&&(r.arrow={params:e.params.map(i=>de(n,i.start,i.end,t)),body:de(n,e.body.start,e.body.end,t),bodyReactive:D(A(e.body))}),e.type==="ObjectExpression"&&(r.object=!0),r}function wt(n,e,t){if(!e||e.length===0)return n;let r=new Map;for(let i of e){let s=`${i.svg?"svg:":""}${i.html}`,o=t.get(s);o||(o=`_fxTmpl$${t.size}`,t.set(s,o)),r.set(i.id,o)}return n.replace(/_tmpl\$\d+/g,i=>r.get(i)??i)}function Ce(n,e){if(n.kind==="component"&&n.load&&!n.source&&J(n.load)&&(e.ignoredLoad.has(n.name)||e.ignoredLoad.set(n.name,n.load)),n.kind==="component"&&n.source){let t=n.source;t.origin==="builtin"?e.builtins.add(n.name):J(t.loading)&&!e.resolved.has(n.name)?e.deferred.set(n.name,t):(e.deferred.delete(n.name),e.resolved.set(n.name,t))}if("props"in n&&n.props)for(let t of n.props)t.kind==="event"&&t.event?.delegated&&e.delegatedEvents.add(t.event.name);if("children"in n&&n.children)for(let t of n.children)Ce(t,e)}function Dn(n,e){for(let t of n.body??[])if(t.type==="ImportDeclaration")for(let r of t.specifiers??[]){if(r.local?.name!==e)continue;if(r.type==="ImportNamespaceSpecifier")return;let i=r.type==="ImportDefaultSpecifier"?"default":r.imported?.name??r.imported?.value;return{module:t.source.value,export:i,declaration:t,specifier:r}}}function An(n,e){for(let t of n.body??[])if(t.type==="ImportDeclaration"){for(let r of t.specifiers??[])if(r.type==="ImportNamespaceSpecifier"&&r.local?.name===e)return!0}return!1}function jn(n,e,t){let r=!1;return pe(n,i=>{r||i.type!=="Identifier"||i.name!==e||i.start===t.local?.start&&i.end===t.local?.end||(r=!0)}),r}function _n(n){let e=[`kind: ${JSON.stringify(n.kind)}`];return n.kind==="visible"&&n.rootMargin&&e.push(`rootMargin: ${JSON.stringify(n.rootMargin)}`),n.kind==="interaction"&&e.push(`events: ${JSON.stringify(n.events)}`),n.kind==="media"&&e.push(`query: ${JSON.stringify(n.query)}`),`{ ${e.join(", ")} }`}function Jn(n){let e=[];return n.quasi.quasis.forEach((t,r)=>{if(e.push({kind:"static",text:t.value.cooked??t.value.raw,start:t.start}),r<n.quasi.expressions.length){let i=n.quasi.expressions[r];e.push({kind:"hole",index:r,start:i.start,end:i.end})}}),e}function ui(n,e,t={}){let r=t.litTag??"html",i=t.format??"both",s=i!=="jsx",o=i!=="lit",a=s&&(n.includes(`${r}\``)||n.includes("svg`")),l=t.intrinsics!==!1&&ht(n);if(!a&&!(o&&n.includes("<"))&&!l)return null;let c=Cn(n,{sourceType:"module",plugins:["jsx","typescript"],errorRecovery:!0}),u=[];pe(c.program,(d,N,v)=>{(s&&Pn(d,r)||o&&Ln(d,N,v))&&u.push(d)});let p=t.propsDestructure===!1?{edits:[],diagnostics:[],used:new Set}:pt(c.program,n,{runtimeModule:t.runtimeModule}),f=t.intrinsics===!1?{edits:[],diagnostics:[],imports:new Map}:xt(c.program);if(u.length===0&&p.edits.length===0&&f.edits.length===0&&f.diagnostics.length===0&&p.diagnostics.length===0)return null;u.sort((d,N)=>N.start-d.start||d.end-N.end);let h=new Set(p.used),g={builtins:new Set,resolved:new Map,deferred:new Map,delegatedEvents:new Set,ignoredLoad:new Map,unresolved:new Set,declared:yt(c.program)},x=new Map,S=[...p.edits,...f.edits];for(let d of u){let N=u.some(w=>w!==d&&w.start<=d.start&&w.end>=d.end&&w.end-w.start>d.end-d.start);if(Ee(d)){S.push({start:d.start,end:d.end,code:Bn(n,d,S,N,h,g,x,t)});continue}let v=d.quasi.expressions.map(w=>Mn(n,w,S)),k=tt(Jn(d),v,{...t,hoistTemplates:!0,templateClone:t.templateClone??!0,partialTemplates:N?!1:t.partialTemplates??!0,svg:d.tag.name==="svg"});for(let w of k.imports)h.add(w);Ce(k.ir,g),S.push({start:d.start,end:d.end,code:wt(k.code,k.templates,x)})}let b=new ee(n);for(let d of bt(S))d.start===d.end?b.appendLeft(d.start,d.code):b.overwrite(d.start,d.end,d.code);let I=Re(c.program),G=new Map;for(let[d]of g.ignoredLoad)I.has(d)||G.set(d,"unsupplied");for(let[d,N]of[...g.ignoredLoad]){if(!I.has(d))continue;let v=Dn(c.program,d);if(!v){G.set(d,An(c.program,d)?"namespace":"local");continue}if(jn(c.program,d,v.specifier)){G.set(d,"value");continue}let k=v.declaration.specifiers.filter(Y=>Y!==v.specifier),w=k.length===0&&n[v.declaration.end]===`
14
+ `?v.declaration.end+1:v.declaration.end;b.overwrite(v.declaration.start,w,k.length===0?"":`import { ${k.map(Y=>n.slice(Y.start,Y.end)).join(", ")} } from ${JSON.stringify(v.declaration.source.value)};`),g.deferred.set(d,{module:v.module,export:v.export,origin:"rule",loading:N}),I.delete(d),g.ignoredLoad.delete(d)}let Ie=Fn(h,g,x,I,t);Ie&&b.prepend(Ie);let $e=Nt(f,I);$e&&b.prepend($e);for(let d of c.program.body)d.type==="ImportDeclaration"&&d.source?.value==="@fluixi/core/rx"&&b.overwrite(d.source.start,d.source.end,JSON.stringify("@fluixi/reactive"));let Rt={value:d=>`${d} is used as a value here, not only as a tag, so its import has to stay — deferring would hand those references a lazy wrapper instead of the component. Defer it at the point it is rendered, or keep it eager.`,namespace:d=>`${d} came in through a namespace import, which has no single export to defer. Import ${d} by name.`,local:d=>`${d} is declared in this file, so there is no module to load separately. Move it to its own file and import it.`,unsupplied:d=>`nothing supplies ${d}, so there is no import to defer. Import it, or add a \`resolve\` rule for it.`},Te=[...g.ignoredLoad].map(([d,N])=>({name:d,strategy:N,message:`load:${N.kind} has no effect on <${d}>: ${Rt[G.get(d)??"unsupplied"](d)}`})),Oe=[...g.unresolved].map(d=>({name:d,message:`<${d}> is not defined: nothing imports it and no \`resolve\` rule supplies it. This compiles to a reference to a name that does not exist, so the component renders nothing. Import ${d}, or add a \`resolve\` rule for it.`}));return{code:b.toString(),map:b.generateMap({source:e,includeContent:!0,hires:!0}),...Te.length?{loadDiagnostics:Te}:{},...Oe.length?{unresolvedDiagnostics:Oe}:{},...p.diagnostics.length?{propsDiagnostics:p.diagnostics}:{},...f.diagnostics.length?{intrinsicDiagnostics:f.diagnostics}:{}}}function Bn(n,e,t,r,i,s,o,a){let l=ot(e,{code:p=>de(n,p.start,p.end,t),used:i});L(l);let c=re(l,{resolver:ce(a.resolve??[]),isBound:p=>s.declared.has(p),modules:{controlFlowModule:a.controlFlowModule??a.runtimeModule??"@fluixi/dom",coreModule:a.coreModule??"@fluixi/core",routerModule:a.routerModule??"@fluixi/core/router-next"},strategyFor:p=>p.load});for(let p of c.unresolved)s.unresolved.add(p);se(l);let u=M.emit(l,{templateClone:a.templateClone??!0,partialTemplates:r?!1:a.partialTemplates??!0});for(let p of u.imports)i.add(p);return Ce(l,s),wt(u.code,u.templates,o)}function Fn(n,e,t,r,i){let s=i.runtimeModule??"@fluixi/dom",o=i.coreModule??"@fluixi/core",a=new Map,l=(f,m)=>a.set(f,[...a.get(f)??[],m]),c=new Set(n);for(let f of e.builtins)c.add(f);e.delegatedEvents.size>0&&c.add("delegateEvents");for(let f of[...c].sort())r.has(f)||(On.has(f)?l(i.reactiveModule??"@fluixi/reactive/signal",f):Tn.has(f)?l(i.routerModule??"@fluixi/core/router-next",f):$n.has(f)?l(o,f):In.has(f)?l(i.controlFlowModule??s,f):l(s,f));for(let[f,m]of e.resolved)r.has(f)||l(m.module,m.export==="default"?`default as ${f}`:f===m.export?f:`${m.export} as ${f}`);let u=[];for(let[f,m]of a)u.push(`import { ${m.join(", ")} } from ${JSON.stringify(f)};`);let p=[...e.deferred].filter(([f])=>!r.has(f));if(p.length>0){r.has("deferred")||u.push(`import { deferred } from ${JSON.stringify(o)};`);for(let[f,m]of p)u.push(`const ${f} = deferred(() => import(${JSON.stringify(m.module)}), { strategy: ${_n(m.loading)}, export: ${JSON.stringify(m.export)} });`)}for(let[f,m]of t)u.push(`const ${m} = ${JSON.stringify(f.startsWith("svg:")?f.slice(4):f)};`);return e.delegatedEvents.size>0&&u.push(`delegateEvents(${JSON.stringify([...e.delegatedEvents])});`),u.length>0?u.join(`
11
15
  `)+`
12
- `:null}export{rr as transformTemplates};
16
+ `:null}export{ui as transformTemplates};