@fluixi/compiler 1.0.0-alpha.81 → 1.0.0-alpha.83

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 (75) hide show
  1. package/dist/analyze/static-graph.cjs +1 -0
  2. package/dist/analyze/static-graph.d.ts +103 -0
  3. package/dist/analyze/static-graph.d.ts.map +1 -0
  4. package/dist/analyze/static-graph.js +869 -0
  5. package/dist/analyze/static-graph.mjs +1 -0
  6. package/dist/{babel-4JUDAR2G.mjs → babel-VXKH6MRQ.mjs} +1 -1
  7. package/dist/chunk-5KMMN5QP.mjs +1 -0
  8. package/dist/chunk-YKZ54NVE.mjs +1 -0
  9. package/dist/codegen/backends/imperative.cjs +1 -1
  10. package/dist/codegen/backends/imperative.d.ts.map +1 -1
  11. package/dist/codegen/backends/imperative.js +62 -11
  12. package/dist/codegen/backends/imperative.mjs +1 -1
  13. package/dist/codegen/partial-template.cjs +1 -1
  14. package/dist/codegen/partial-template.mjs +1 -1
  15. package/dist/codegen/serialize-static.cjs +1 -1
  16. package/dist/codegen/serialize-static.d.ts +16 -0
  17. package/dist/codegen/serialize-static.d.ts.map +1 -1
  18. package/dist/codegen/serialize-static.js +25 -0
  19. package/dist/codegen/serialize-static.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.d.ts.map +1 -1
  32. package/dist/index.js +3 -0
  33. package/dist/index.mjs +8 -8
  34. package/dist/integrations.cjs +18 -18
  35. package/dist/integrations.d.ts +16 -0
  36. package/dist/integrations.d.ts.map +1 -1
  37. package/dist/integrations.js +21 -2
  38. package/dist/integrations.mjs +5 -5
  39. package/dist/ir/nodes.cjs +1 -1
  40. package/dist/ir/nodes.d.ts +46 -0
  41. package/dist/ir/nodes.d.ts.map +1 -1
  42. package/dist/lower/compile-template.cjs +1 -1
  43. package/dist/lower/compile-template.d.ts +12 -0
  44. package/dist/lower/compile-template.d.ts.map +1 -1
  45. package/dist/lower/compile-template.js +5 -1
  46. package/dist/lower/compile-template.mjs +1 -1
  47. package/dist/lower/jsx.cjs +1 -1
  48. package/dist/lower/jsx.d.ts +2 -0
  49. package/dist/lower/jsx.d.ts.map +1 -1
  50. package/dist/lower/jsx.js +25 -3
  51. package/dist/lower/jsx.mjs +1 -1
  52. package/dist/lower/template.cjs +1 -1
  53. package/dist/lower/template.d.ts +14 -1
  54. package/dist/lower/template.d.ts.map +1 -1
  55. package/dist/lower/template.js +101 -15
  56. package/dist/lower/template.mjs +1 -1
  57. package/dist/transform/index.cjs +5 -5
  58. package/dist/transform/index.mjs +12 -12
  59. package/dist/transform/source-locations.cjs +1 -0
  60. package/dist/transform/source-locations.d.ts +44 -0
  61. package/dist/transform/source-locations.d.ts.map +1 -0
  62. package/dist/transform/source-locations.js +238 -0
  63. package/dist/transform/source-locations.mjs +1 -0
  64. package/dist/transform/templates.cjs +4 -4
  65. package/dist/transform/templates.d.ts +12 -4
  66. package/dist/transform/templates.d.ts.map +1 -1
  67. package/dist/transform/templates.js +72 -7
  68. package/dist/transform/templates.mjs +11 -11
  69. package/dist/transform-C4ZXRVGP.mjs +8 -0
  70. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  71. package/package.json +3 -3
  72. package/dist/chunk-PVR2SN3B.mjs +0 -1
  73. package/dist/chunk-QUIYULS2.mjs +0 -1
  74. package/dist/chunk-YR3SAEO7.mjs +0 -1
  75. package/dist/transform-5WC4FWJE.mjs +0 -8
@@ -1 +1 @@
1
- "use strict";var Ze=Object.create;var z=Object.defineProperty;var Qe=Object.getOwnPropertyDescriptor;var et=Object.getOwnPropertyNames;var tt=Object.getPrototypeOf,nt=Object.prototype.hasOwnProperty;var rt=(e,t)=>{for(var n in t)z(e,n,{get:t[n],enumerable:!0})},Re=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of et(t))!nt.call(e,r)&&r!==n&&z(e,r,{get:()=>t[r],enumerable:!(o=Qe(t,r))||o.enumerable});return e};var xe=(e,t,n)=>(n=e!=null?Ze(tt(e)):{},Re(t||!e||!e.__esModule?z(n,"default",{value:e,enumerable:!0}):n,e)),ot=e=>Re(z({},"__esModule",{value:!0}),e);var Zt={};rt(Zt,{babelPluginReactiveJSX:()=>Gt,createPlugin:()=>Kt,createPreset:()=>oe,default:()=>$,presets:()=>Yt});module.exports=ot(Zt);var Ge=require("@babel/helper-plugin-utils");var it=e=>"components"in e;function ye(e,t){return e.replace(/\$(\d+)/g,(n,o)=>t[Number(o)]??n)}function st(e,t){return typeof t=="string"?{module:t,export:e}:t}function Ee(e=[]){let t=new Map,n=[],o=[];for(let s of e){if(!it(s)){o.push(s);continue}for(let[i,l]of Object.entries(s.components)){let p=st(i,l),u=t.get(i);if(u&&u.module!==p.module){let d=n.find(g=>g.name===i);d?d.modules.push(p.module):n.push({name:i,modules:[u.module,p.module]});continue}t.set(i,p)}}let r=new Map;return{resolve:s=>{if(r.has(s))return r.get(s);let i=t.get(s);if(!i)for(let l of o){let p=s.match(new RegExp(l.match.source,l.match.flags.replace("g","")));if(p){i={module:ye(l.module,p),export:l.export?ye(l.export,p):s};break}}return r.set(s,i),i},names:()=>[...t.keys()],conflicts:()=>n}}var ie=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],L=["Suspense","SuspenseList","Await"],M=["Router","Outlet","Redirect","Link"],tn=[...ie,...L,...M],se=new Set([...ie,...L]);function Ne(e={}){let{controlFlowModule:t="@fluixi/dom",coreModule:n="@fluixi/core",routerModule:o="@fluixi/core/router"}=e,r={};for(let a of ie)r[a]=t;for(let a of L)r[a]=n;for(let a of M)r[a]=o;return r}var V={kind:"eager"},at=["pointerdown","focusin","keydown"],be=new Set(["eager","idle","visible","interaction","media","never"]),I=class extends Error{};function ae(e){return e.startsWith("load:")}function W(e,t){let n=e.slice(5);if(!be.has(n))throw new I(`Unknown load strategy 'load:${n}'. Expected one of ${[...be].join(", ")}.`);switch(n){case"eager":return V;case"idle":return{kind:"idle"};case"never":return{kind:"never"};case"visible":return t?{kind:"visible",rootMargin:t}:{kind:"visible"};case"interaction":return{kind:"interaction",events:t?lt(t):[...at]};case"media":if(!t)throw new I(`'load:media' needs a query, e.g. load:media="(min-width: 1024px)".`);return{kind:"media",query:t};default:throw new I(`Unhandled load strategy '${n}'.`)}}function lt(e){let t=e.split(/[\s,]+/).map(n=>n.trim()).filter(Boolean);if(t.length===0)throw new I("'load:interaction' was given no event names.");return t}function U(e){return e.kind!=="eager"&&e.kind!=="never"}function q(e,t={}){let{resolver:n,isBound:o,modules:r,strategyFor:a}=t,s=Ne(r),i=new Map,l=new Set,p=d=>{let{name:g}=d;if(!g||g.includes(".")||o?.(g))return;let k=u(g);if(!k){l.add(g);return}let w=k.origin==="builtin"&&se.has(g)?V:a?.(d)??V;d.source={...k,loading:w},i.set(g,d.source)},u=d=>{if(se.has(d))return{module:s[d],export:d,origin:"builtin"};let g=n?.resolve(d);if(g)return{module:g.module,export:g.export,origin:"rule"};if(M.includes(d))return{module:s[d],export:d,origin:"builtin"}};return G(e,d=>{d.kind==="component"&&p(d)}),{resolved:i,unresolved:[...l]}}function G(e,t){let n=Array.isArray(e)?e:[e];for(let o of n){t(o);let r=o.children;r&&G(r,t)}}function K(e){let t=[];G(e,a=>{a.kind==="component"&&a.source&&t.push(a)});let n=new Set,o=new Set;for(let a of t){let{module:s,loading:i}=a.source;i.kind==="eager"&&n.add(s),i.kind==="never"&&o.add(s)}let r=new Map;for(let a of t){let s=a.source;U(s.loading)&&n.has(s.module)&&(s.loading={kind:"eager"},r.set(s.module,(r.get(s.module)??0)+1))}return{collapsed:r,conflicted:[...o].filter(a=>n.has(a))}}var c=require("@babel/core");var S=require("@babel/core"),he=xe(require("@babel/generator"),1);var ct=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),ke={className:"class",htmlFor:"for"},pt=new Set(["innerHTML","outerHTML","innerText","textContent","value","checked","selected","muted","defaultValue","defaultChecked","children","ref"]),dt=new Set(["script","style","textarea","title"]);function le(e){return dt.has(e)}function Se(e){return ke[e]??e}function P(e){return e.kind!=="attr"||e.expr!==void 0||e.name.includes(":")?!1:!pt.has(e.name)}function ce(e){if(!e.static||le(e.tag))return!1;for(let t of e.props)if(!P(t))return!1;for(let t of e.children)if(t.kind!=="text"&&!(t.kind==="element"&&ce(t)))return!1;return!0}function O(e){let t=e.props.map(mt).filter(Boolean).join(""),n=`<${e.tag}${t}>`;return ct.has(e.tag)?n:`${n}${e.children.map(ut).join("")}</${e.tag}>`}function ut(e){if(e.kind==="text")return gt(e.value);if(e.kind!=="element")throw new Error(`serializeStatic: unexpected ${e.kind}`);return O(e)}function mt(e){let t=ke[e.name]??e.name,n=e.literal;return n===!0||n===void 0?` ${t}`:n===!1||n===null?"":` ${t}="${ft(String(n))}"`}function ft(e){return e.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function gt(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}var ht="<!--fx-->",vt="<!--fx/-->";function Z(e){return e.kind==="expr"||e.kind==="component"||e.kind==="control"}function Rt(e){return e.kind==="text"||e.kind==="element"&&Ie(e)}function Ie(e){return e.svg||le(e.tag)||!e.props.every(t=>P(t))?!1:e.children.every(t=>Rt(t)||Z(t))}function Y(e){if(Z(e))return!0;let t=e.children;return t?t.some(Y):!1}function Ce(e){for(let t=0;t<e.children.length;t++){let n=e.children[t];if(n.kind==="text"&&(n.value===""||e.children[t+1]?.kind==="text"))return!1}return e.children.every(t=>t.kind!=="element"||Ce(t))}function we(e){if(!Ie(e)||!Ce(e)||!e.children.some(Y))return null;let t=[],n=[],o=0,r=s=>{let i=`_n$${o++}`;return t.push({ref:i,expr:s}),i};return a(e,"_el$"),{html:xt(e),tag:e.tag,steps:t,holes:n};function a(s,i){let l=-1;s.children.forEach((u,d)=>{Y(u)&&(l=d)});let p=null;for(let u=0;u<=l;u++){let d=s.children[u],g=p?`${p}.nextSibling`:`${i}.firstChild`;if(Z(d)){let w=r(g),f=r(`holeEnd(${w})`);n.push({parentRef:i,startRef:w,endRef:f,node:d}),p=f;continue}let k=r(g);d.kind==="element"&&Y(d)&&a(d,k),p=k}}}function xt(e){return O(Te(e)).split(Me).join(ht+vt)}function Te(e){return{...e,children:e.children.map(t=>Z(t)?{kind:"text",value:Me}:t.kind==="element"?Te(t):t)}}var Me="\0fx-hole\0";var pe={version:1,module:"@fluixi/dom",symbols:["createNativeElement","insert","spread","setAttribute","delegateEvents","createComponent","createMemo","untrack","Show","For","Index","Switch","Match","Dynamic","ErrorBoundary"]},fn={version:2,module:"@fluixi/dom",symbols:[...pe.symbols,"template","cloneTemplate","walk"]};var yt={show:"Show",for:"For",index:"Index",switch:"Switch",match:"Match",dynamic:"Dynamic",errorBoundary:"ErrorBoundary",suspense:"Suspense"};function Et(e){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e)}function Le(e){return Et(e)?e:JSON.stringify(e)}function Nt(e){return e.expr!==void 0?e.reactive?`() => (${e.expr})`:`(${e.expr})`:JSON.stringify(e.literal??!0)}function bt(e){return e.expr!==void 0?`(${e.expr})`:JSON.stringify(e.literal??!0)}function kt(e,t,n){let o=e.filter(i=>i.kind==="spread"),a=e.filter(i=>i.kind!=="spread").map(i=>`${Le(i.name)}: ${Nt(i)}`);t!=null&&a.push(`children: ${t}`);let s=`{ ${a.join(", ")} }`;return o.length>0?(n.add("mergeProps"),`mergeProps(${o.map(i=>i.expr).join(", ")}, ${s})`):s}function Pe(e,t,n){return e.length===1?A(e[0],t,n):`[${e.map(o=>A(o,t,n)).join(", ")}]`}function $e(e,t,n,o,r){o.add("createMemo"),o.add("createComponent");let a=t.filter(p=>p.kind==="spread"),i=t.filter(p=>p.kind!=="spread").map(p=>`get ${Le(p.name)}() { return ${bt(p)}; }`);n.length>0&&i.push(`get children() { return ${Pe(n,o,r)}; }`);let l=`{ ${i.join(", ")} }`;return a.length>0&&(o.add("mergeProps"),l=`mergeProps(${a.map(p=>p.expr).join(", ")}, ${l})`),`createMemo(() => createComponent(${e}, ${l}))`}function St(e,t){let n=Se(t.name),o=t.literal;return o===!0||o===void 0?`${e}.setAttribute(${JSON.stringify(n)}, "");`:o===!1||o===null?"":`${e}.setAttribute(${JSON.stringify(n)}, ${JSON.stringify(String(o))});`}var Oe=!1;function A(e,t,n){switch(e.kind){case"text":return JSON.stringify(e.value);case"expr":return e.reactive?`() => (${e.code})`:`(${e.code})`;case"fragment":return e.children.length===0?"null":Pe(e.children,t,n);case"component":return $e(e.name,e.props,e.children,t,n);case"control":{let o=yt[e.control]??e.control;return t.add(o),$e(o,e.props,e.children,t,n)}case"element":{if(n&&e.static&&!e.svg&&ce(e)){t.add("templateNode");let i=`_tmpl$${n.length}`;return n.push({id:i,html:O(e),tag:e.tag,svg:!1}),`templateNode(${i}, ${JSON.stringify(e.tag)})`}if(n&&Oe){let i=we(e);if(i){t.add("templateNode"),t.add("insert"),t.add("holeEnd"),t.add("holeContent"),t.add("holeScope");let l=`_tmpl$${n.length}`;n.push({id:l,html:i.html,tag:i.tag,svg:!1});let p=[`const _el$ = templateNode(${l}, ${JSON.stringify(i.tag)}, true);`];for(let u of i.steps)p.push(`const ${u.ref} = ${u.expr};`);for(let u of i.holes)p.push(`insert(${u.parentRef}, holeScope(${u.startRef}, () => (${A(u.node,t,n)})), ${u.endRef}, holeContent(${u.startRef}, ${u.endRef}));`);return p.push("return _el$;"),`(() => { ${p.join(" ")} })()`}}t.add("createNativeElement");let o=JSON.stringify(e.tag),r="_el$",a=[],s=e.svg?`${o}, true`:o;if(a.push(`const ${r} = createNativeElement(${s});`),e.props.length>0)if(!e.svg&&e.props.every(P))for(let i of e.props)a.push(St(r,i));else{t.add("spread");let i=e.svg?", isSVG: true":"";a.push(`spread({ element: ${r}, props: ${kt(e.props,null,t)}${i} });`)}for(let i of e.children){t.add("insert");let l=A(i,t,n),p=i.kind==="expr"&&i.reactive||i.kind==="component"||i.kind==="control";a.push(p?`insert(${r}, ${l}, null);`:`insert(${r}, ${l});`)}return a.push(`return ${r};`),`(() => { ${a.join(" ")} })()`}}}function D(e,t){if(!t||t.length===0)return e;let n=new Map(t.map(o=>[o.id,JSON.stringify(o.html)]));return e.replace(/_tmpl\$\d+/g,o=>n.get(o)??o)}var C={name:"imperative",contract:pe,emit(e,t){let n=new Set,o=t?.templateClone!==!1?[]:void 0;return Oe=t?.partialTemplates===!0,{code:A(e,n,o),imports:Array.from(n),templates:o}}};var Q=require("@babel/core"),ue=xe(require("@babel/generator"),1);var Je=require("@fluixi/template-parser");function J(e){let t=e.split(/\r\n|\n|\r/),n=0;for(let r=0;r<t.length;r++)/[^ \t]/.test(t[r])&&(n=r);let o="";for(let r=0;r<t.length;r++){let a=t[r].replace(/\t/g," ");r!==0&&(a=a.replace(/^ +/,"")),r!==t.length-1&&(a=a.replace(/ +$/,"")),a&&(r!==n&&(a+=" "),o+=a)}return o}var Ae=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function It(e){return e.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${")}function De(e){return e.charAt(0).toUpperCase()+e.slice(1)}var de=class{constructor(t,n){this.holes=t;this.used=n}hole(t){return this.holes[t]??{code:"undefined",reactive:!1}}emit(t){let{code:n,imports:o,templates:r}=C.emit(t,{});for(let a of o)this.used.add(a);return D(n,r)}lowerRoot(t){let n=this.lowerChildren(t);return n.length===1?n[0]:{kind:"fragment",children:n}}lowerChildren(t){let n=[];for(let o=0;o<t.length;o++){let r=t[o];if(r.kind==="Element"||r.kind==="Component"){let s=r.attributes.find(i=>i.kind==="IfDirective");if(s&&s.kind==="IfDirective"){let i=o+1;i<t.length&&this.isBlankText(t[i])&&i++;let l=t[i],p=l&&(l.kind==="Element"||l.kind==="Component")&&l.attributes.some(u=>u.kind==="ElseDirective");n.push(this.lowerIf(r,s.hole,p?l:null)),p&&(o=i);continue}if(r.attributes.some(i=>i.kind==="EachDirective")){n.push(this.lowerEach(r));continue}}let a=this.lowerNode(r);a&&n.push(a)}return n}isBlankText(t){return t.kind==="Text"&&!t.raw&&J(t.value)===""}lowerNode(t){switch(t.kind){case"Text":{if(t.raw)return{kind:"text",value:t.value};let n=J(t.value);return n?{kind:"text",value:n}:null}case"Comment":return null;case"Expression":{let n=this.hole(t.hole);return{kind:"expr",code:n.code,reactive:n.reactive}}case"Fragment":return{kind:"fragment",children:this.lowerChildren(t.children)};case"Element":return this.lowerElement(t);case"Component":return this.lowerComponent(t);default:return null}}lowerElement(t){let n=t.attributes.find(o=>o.kind==="Attribute"&&o.name==="is");if(t.tag==="component"&&n&&n.value&&n.value.kind==="hole"){let o=t.attributes.filter(a=>a!==n),r=this.lowerComponent({...t,kind:"Component",tag:"Dynamic",tagHole:null,attributes:o});return r.props.unshift({name:"component",kind:"attr",expr:`() => (${this.hole(n.value.hole).code})`}),r}return{kind:"element",tag:t.tag,svg:t.namespace==="svg",props:this.lowerAttributes(t.attributes),children:this.lowerChildren(t.children),static:!1}}lowerComponent(t){let n=t.tagHole!=null?this.hole(t.tagHole).code:t.tag,o=this.lowerAttributes(t.attributes),{slots:r,rest:a}=this.partitionSlots(t.children);for(let[l,p]of r){let u=p.length===1?p[0]:{kind:"fragment",children:p},d={name:l,kind:"attr",expr:this.emit(u),jsxElement:!0},g=o.findIndex(k=>k.name===l);g>=0?o[g]=d:o.push(d)}let s=t.attributes.find(l=>l.kind==="LoadDirective"),i=s?W(`load:${s.strategy}`,s.modifier):void 0;return{kind:"component",name:n,props:o,children:this.lowerChildren(a),...i?{load:i}:{}}}partitionSlots(t){let n=new Map,o=[];for(let r of t){if(r.kind==="Element"||r.kind==="Component"){let a=r.attributes.find(s=>s.kind==="Attribute"&&s.name==="slot");if(a&&a.value&&a.value.kind==="static"){let s={...r,attributes:r.attributes.filter(p=>p!==a)},i=s.kind==="Element"?this.lowerElement(s):this.lowerComponent(s),l=n.get(a.value.value)??[];l.push(i),n.set(a.value.value,l);continue}}o.push(r)}return{slots:n,rest:o}}lowerIf(t,n,o){let r=this.hole(n),a=[{name:"when",kind:"attr",expr:r.code,reactive:r.reactive}];if(o){let i=this.stripAndLower(o,l=>l.kind==="ElseDirective");a.push({name:"fallback",kind:"attr",expr:this.emit(i),jsxElement:!0})}let s=this.stripAndLower(t,i=>i.kind==="IfDirective");return{kind:"component",name:"Show",props:a,children:[s]}}lowerEach(t){let n=t.attributes.find(l=>l.kind==="EachDirective");if(!n||n.kind!=="EachDirective")return this.lowerNode(t);let o=this.hole(n.hole),r=[{name:"each",kind:"attr",expr:o.code,reactive:o.reactive}];if(n.key){let l="static"in n.key?`(item) => item[${JSON.stringify(n.key.static)}]`:this.hole(n.key.hole).code;r.push({name:"by",kind:"attr",expr:l})}let a=this.itemArrow(t),s;if(a){let l={kind:"expr",code:a.body,reactive:a.bodyReactive},p=this.rebuildWithChildren(t,[l]);s=`(${a.params.join(", ")}) => (${this.emit(p)})`}else{let l=this.stripAndLower(t,p=>p.kind==="EachDirective");s=`() => (${this.emit(l)})`}return{kind:"component",name:"For",props:r,children:[{kind:"expr",code:s,reactive:!1}]}}itemArrow(t){let n=t.children.filter(o=>!this.isBlankText(o));return n.length!==1||n[0].kind!=="Expression"?null:this.hole(n[0].hole).arrow??null}stripAndLower(t,n){let o={...t,attributes:t.attributes.filter(r=>!n(r))};return o.kind==="Element"?this.lowerElement(o):this.lowerComponent(o)}rebuildWithChildren(t,n){let o=this.lowerAttributes(t.attributes.filter(r=>r.kind!=="EachDirective"));return t.kind==="Element"?{kind:"element",tag:t.tag,svg:t.namespace==="svg",props:o,children:n,static:!1}:{kind:"component",name:t.tag,props:o,children:n}}lowerAttributes(t){let n=[],o=[],r=!1,a=[],s=!1,i=[];for(let l of t)switch(l.kind){case"IfDirective":case"EachDirective":case"ElseDirective":break;case"Attribute":n.push(this.plainAttr(l));break;case"PropertyBinding":n.push({name:l.name,kind:"prop",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"EventBinding":n.push(this.eventProp(l));break;case"RefBinding":n.push({name:"ref",kind:"ref",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"Spread":n.push({name:"",kind:"spread",expr:this.hole(l.hole).code});break;case"ClassDirective":{let p=this.hole(l.hole);o.push(`${JSON.stringify(l.name)}: ${p.code}`),r=r||p.reactive;break}case"StyleDirective":{let p=this.hole(l.hole);a.push(`${JSON.stringify(l.name)}: ${p.code}`),s=s||p.reactive;break}case"BindDirective":n.push(...this.bindProps(l.name,this.hole(l.hole).code));break;case"UseDirective":{let p=l.name??(l.hole!=null?this.hole(l.hole).code:null);if(!p)break;i.push(l.name!=null&&l.hole!=null?`[${p}, () => (${this.hole(l.hole).code})]`:`[${p}]`);break}}return o.length>0&&n.push({name:"classList",kind:"attr",expr:`{ ${o.join(", ")} }`,reactive:r}),a.length>0&&n.push({name:"style",kind:"attr",expr:`{ ${a.join(", ")} }`,reactive:s}),i.length>0&&n.push({name:"use",kind:"attr",expr:`[${i.join(", ")}]`}),n}eventProp(t){let n=t.name.toLowerCase(),o=this.hole(t.hole).code;if(!(t.syntax==="colon"||t.modifiers.length>0))return{name:"on"+De(t.name),kind:"event",event:{name:n,delegated:Ae.has(n)},expr:o};let a=this.wrapHandler(o,t.modifiers),s=this.eventOptions(t.modifiers),i=s?`[${a}, ${s}]`:a;return{name:"on:"+n,kind:"attr",expr:i}}wrapHandler(t,n){let o=n.includes("self")?"if (e.target !== e.currentTarget) return; ":"",r=[];return n.includes("prevent")&&r.push("e.preventDefault();"),n.includes("stop")&&r.push("e.stopPropagation();"),!o&&r.length===0?t:`(e) => { ${o}${r.join(" ")} return (${t})(e); }`}eventOptions(t){let n=[];return t.includes("capture")&&n.push("capture: true"),t.includes("once")&&n.push("once: true"),t.includes("passive")&&n.push("passive: true"),n.length?`{ ${n.join(", ")} }`:null}bindProps(t,n){let o=t==="checked",r=o?"change":"input",a=o?"checked":"value";this.used.add("bindPair");let s=`bindPair(${n})`;return[{name:t,kind:"attr",expr:`${s}[0]()`,reactive:!0},{name:"on"+De(r),kind:"event",event:{name:r,delegated:Ae.has(r)},expr:`(e) => ${s}[1](e.target.${a})`}]}plainAttr(t){let n=t.value,o=t.name;t.name==="class"?o=n&&n.kind==="hole"&&this.hole(n.hole).object?"classList":"className":t.name==="html"&&(o="innerHTML");let a={name:o,kind:"attr"};if(n==null)return a.literal=!0,a;if(n.kind==="static")return a.literal=n.value,a;if(n.kind==="hole"){let l=this.hole(n.hole);return a.expr=l.code,a.reactive=l.reactive,a}let s=!1,i=n.parts.map(l=>{if("text"in l)return It(l.text);let p=this.hole(l.hole);return s=s||p.reactive,"${"+p.code+"}"}).join("");return a.expr="`"+i+"`",a.reactive=s,a}};function je(e,t,n,o={}){let{root:r}=(0,Je.parseTemplate)(e,{svg:o.svg});return new de(t,n).lowerRoot(r.children)}var Ct=ue.default.default??ue.default;function wt(e){return Ct(e,{concise:!0}).code}function Tt(e,t,n){let o={code:ee(e,t,n),reactive:me(e)};if(Q.types.isArrowFunctionExpression(e)&&!Q.types.isBlockStatement(e.body)){let r=e.body;o.arrow={params:e.params.map(a=>wt(a)),body:ee(r,t,n),bodyReactive:me(r)}}return Q.types.isObjectExpression(e)&&(o.object=!0),o}function Fe(e,t,n={}){let o=e.quasi,r=o.expressions.map(a=>Tt(a,t,n.onNested));return je(Mt(o),r,t,n)}function Mt(e){let t=[];return e.quasis.forEach((n,o)=>{let r=n.value.cooked??n.value.raw;if(t.push({kind:"static",text:r,start:n.start??0}),o<e.expressions.length){let a=e.expressions[o];t.push({kind:"hole",index:o,start:a.start??0,end:a.end??0})}}),t}function $t(e){switch(e.kind){case"event":return"event";case"ref":return"ref";case"spread":return"spread";case"class":case"style":return"class-or-style-directive";case"attr":case"prop":return e.reactive?"reactive-prop":e.expr!==void 0?"expression-prop":void 0;default:return"expression-prop"}}function te(e){let t=[],n=new Map,o=r=>{switch(r.kind){case"text":return!0;case"expr":return!1;case"component":case"control":for(let a of r.children)o(a);return!1;case"fragment":for(let a of r.children)o(a);return!1;case"element":{let a=!0;for(let i of r.children)o(i)||(a=!1);let s;for(let i of r.props)if(s=$t(i),s)break;return!s&&!a&&(s=Lt(r)),r.static=!s,s?n.set(r,s):t.push(r),r.static}default:return!1}};for(let r of Array.isArray(e)?e:[e])o(r);return{staticElements:t,reasons:n}}function Lt(e){for(let t of e.children){if(t.kind==="expr")return"expression-child";if(t.kind==="component")return"component-child";if(t.kind==="control")return"control-child";if(t.kind==="element"&&!t.static||t.kind==="fragment")return"expression-child"}return"expression-child"}function ne(e,t=new Set,n={}){let o=Fe(e,t,n);return te(o),o}var Pt="children";function j(e){switch(e.kind){case"call":return!0;case"member":return e.property!==Pt;case"compound":return e.parts.some(j);case"opaque":return!1}}var Ot=new Set(["CallExpression","OptionalCallExpression"]),At=new Set(["MemberExpression","OptionalMemberExpression"]);function _(e){if(!e)return{kind:"opaque"};if(Ot.has(e.type))return{kind:"call"};if(At.has(e.type)){let t=e.property;return{kind:"member",property:!(e.computed===!0)&&t?.type==="Identifier"?t.name:null}}return e.type==="ConditionalExpression"?{kind:"compound",parts:[e.test,e.consequent,e.alternate].map(F)}:e.type==="LogicalExpression"||e.type==="BinaryExpression"?{kind:"compound",parts:[e.left,e.right].map(F)}:e.type==="TemplateLiteral"?{kind:"compound",parts:e.expressions.map(F)}:e.type==="ObjectExpression"?{kind:"compound",parts:e.properties.filter(n=>(n.type==="ObjectProperty"||n.type==="Property")&&n.computed!==!0).map(n=>F(n.value))}:e.type==="ArrayExpression"?{kind:"compound",parts:e.elements.filter(n=>n!=null&&n.type!=="SpreadElement").map(F)}:{kind:"opaque"}}var F=e=>_(e);var Dt=new Set(["svg","path","circle","rect","line","polygon","polyline","ellipse","g","defs","clipPath","text"]),Jt=/^on[A-Z]/,jt=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]),Be=e=>j(_(e));function X(e){if(e.type==="StringLiteral"||e.type==="NumericLiteral"||e.type==="BooleanLiteral"||e.type==="Literal"&&(typeof e.value=="string"||typeof e.value=="number"||typeof e.value=="boolean"))return e.value}var fe=e=>!!e&&typeof X(e)=="string";function Ft(e,t){return e.type==="JSXIdentifier"?{tag:e.name,component:e.name[0]!==e.name[0].toLowerCase()}:e.type==="JSXMemberExpression"?{tag:t.code(e),component:!0}:e.type==="JSXNamespacedName"?{tag:`${e.namespace.name}:${e.name.name}`,component:!1}:{tag:"div",component:!1}}function ge(e){return e.type==="JSXIdentifier"?e.name==="class"?"className":e.name:e.type==="JSXNamespacedName"?`${e.namespace.name}:${e.name.name}`:"unknown"}function _t(e,t){let n=ge(e.name),o=Jt.test(n),r=o||n.startsWith("on:")||n==="ref",s={name:n,kind:o?"event":"attr"};if(o){let l=n.slice(2).toLowerCase();s.event={name:l,delegated:jt.has(l)}}let i=e.value;if(i==null)return s.literal=!0,s;if(fe(i))return s.literal=X(i),s;if(i.type==="JSXExpressionContainer"&&i.expression?.type!=="JSXEmptyExpression"){let l=i.expression,p=X(l);return p!==void 0?(s.literal=p,s):(s.expr=t.code(l),s.reactive=r?!1:Be(l),(l.type==="JSXElement"||l.type==="JSXFragment")&&(s.jsxElement=!0),s)}return s.literal=!0,s}function _e(e,t){let n=e.value;return n==null?null:fe(n)?JSON.stringify(X(n)):n.type==="JSXExpressionContainer"&&n.expression?.type!=="JSXEmptyExpression"?t.code(n.expression):null}function Xt(e,t){let n=[],o=[];for(let r of e){if(r.type==="JSXSpreadAttribute"){n.push({name:"",kind:"spread",expr:t.code(r.argument)});continue}if(r.type!=="JSXAttribute"||ae(ge(r.name)))continue;let a=r.name.type==="JSXNamespacedName"?r.name.namespace.name:null;if(a==="use"){let s=r.name.name.name;t.used.add(s);let i=_e(r,t);o.push(i!=null?`[${s}, () => (${i})]`:`[${s}]`);continue}if(a==="oncapture"){let s=r.name.name.name.toLowerCase(),i=_e(r,t)??"undefined";n.push({name:"on:"+s,kind:"attr",expr:`[${i}, { capture: true }]`});continue}n.push(_t(r,t))}return o.length>0&&n.push({name:"use",kind:"attr",expr:`[${o.join(", ")}]`}),n}function Xe(e,t){let n=[];for(let o of e)if(o.type==="JSXText"){let r=J(o.value);r&&n.push({kind:"text",value:r})}else if(o.type==="JSXExpressionContainer"){if(o.expression?.type!=="JSXEmptyExpression"){let r=o.expression;n.push({kind:"expr",code:t.code(r),reactive:Be(r)})}}else o.type==="JSXElement"||o.type==="JSXFragment"?n.push(He(o,t)):o.type==="JSXSpreadChild"&&n.push({kind:"expr",code:t.code(o.expression),reactive:!1});return n}function Bt(e){for(let t of e){if(t.type!=="JSXAttribute")continue;let n=ge(t.name);if(ae(n)){if(t.value&&!fe(t.value))throw new I(`'${n}' needs a literal value, not an expression — the strategy is compile-time.`);return W(n,t.value?X(t.value):null)}}}function He(e,t){if(e.type==="JSXFragment")return{kind:"fragment",children:Xe(e.children,t)};let{tag:n,component:o}=Ft(e.openingElement.name,t),r=Xt(e.openingElement.attributes,t),a=Xe(e.children,t);if(o){let s=Bt(e.openingElement.attributes);return{kind:"component",name:n,props:r,children:a,...s?{load:s}:{}}}return{kind:"element",tag:n,svg:Dt.has(n),props:r,children:a,static:!1}}function ze(e,t){let n=He(e,t);return te(n),n}var Ht=he.default.default??he.default;function Ve(e){return Ht(e,{concise:!0}).code}function zt(e,t,n){let o=S.types.cloneNode(e,!0),r=S.types.file(S.types.program([S.types.expressionStatement(o)])),a=!1,s=(i,l,p)=>{for(let u of p)t.add(u);i.replaceWith(S.template.expression(l,{placeholderPattern:!1,plugins:["typescript"]})()),i.skip(),a=!0};return(0,S.traverse)(r,{"JSXElement|JSXFragment"(i){let l=i.node,p=ve(l,t,n);n?.(p);let{code:u,imports:d,templates:g}=C.emit(p,{});s(i,D(u,g),d)},TaggedTemplateExpression(i){let l=i.node.tag;if(!S.types.isIdentifier(l)||l.name!=="html"&&l.name!=="svg")return;let p=ne(i.node,t,{svg:l.name==="svg",onNested:n});n?.(p);let{code:u,imports:d,templates:g}=C.emit(p,{});s(i,D(u,g),d)}}),a?r.program.body[0].expression:e}function ee(e,t,n){return Ve(zt(e,t,n))}function me(e){return j(_(e))}function ve(e,t=new Set,n){return ze(e,{code:r=>r.type==="JSXMemberExpression"?Ve(r):ee(r,t,n),used:t})}var We=new Set(L),Ue=new Set(M),$=(0,Ge.declare)((e,t={})=>{e.assertVersion(7);let{delegateEvents:n=!0,signalModule:o="@fluixi/dom",controlFlowModule:r="@fluixi/dom",routerModule:a="@fluixi/core/router",reactiveModule:s="@fluixi/reactive/signal",templateClone:i=!0,partialTemplates:l=!0,format:p="both",litTag:u="html",resolve:d=[]}=t,g=Ee(d),k=p==="lit"||p==="both",w={irImports:new Set,libModule:"@fluixi/core",controlFlowModule:r,routerModule:a,templateClone:i,partialTemplates:l,hasJSX:!1,hasLitHTML:!1,needsControlFlowImport:!1,needsCreateMemo:!1,controlFlowComponents:new Set,resolvedComponents:new Map,deferredComponents:new Map,componentResolver:g,delegatedEvents:new Set,staticTemplates:new Map,staticCounter:0};return{name:"@fluixi/babel-plugin-jsx",manipulateOptions(f,m){m.plugins.push("jsx","typescript")},pre(f){Object.assign(f,w)},visitor:{Program:{enter(f,m){Object.assign(m,{hasJSX:!1,hasLitHTML:!1,hasLitIR:!1,needsControlFlowImport:!1,needsCreateMemo:!1,controlFlowComponents:new Set,resolvedComponents:new Map,deferredComponents:new Map,componentResolver:g,delegatedEvents:new Set,staticTemplates:new Map,staticCounter:0,libModule:"@fluixi/core",controlFlowModule:r,routerModule:a,templateClone:i,partialTemplates:l,irImports:new Set,needsCreateNativeElement:!1,needsInsert:!1,needsSpread:!1,needsCreateComponent:!1,needsMergeProps:!1})},exit(f,m){let N=[];if(m.hasJSX||m.hasLitIR){if(m.irImports.size>0){let v=new Set(["Show","For","Index","Switch","Match","Dynamic","ErrorBoundary","Portal","Suspense"]),h=new Set(["createMemo","createEffect","createRenderEffect","createRoot","createSignal","onCleanup","batch","untrack"]),x=Array.from(m.irImports),y=R=>c.types.importSpecifier(c.types.identifier(R),c.types.identifier(R)),b=R=>!f.scope.hasBinding(R),T=x.filter(R=>h.has(R)&&b(R)),E=x.filter(R=>!v.has(R)&&!h.has(R)&&b(R)),H=x.filter(R=>v.has(R)&&b(R));T.length>0&&N.push(c.types.importDeclaration(T.map(y),c.types.stringLiteral(s))),E.length>0&&N.push(c.types.importDeclaration(E.map(y),c.types.stringLiteral(o))),H.length>0&&N.push(c.types.importDeclaration(H.map(y),c.types.stringLiteral(r)))}if(m.needsCreateMemo&&!f.scope.hasBinding("createMemo")&&N.push(c.types.importDeclaration([c.types.importSpecifier(c.types.identifier("createMemo"),c.types.identifier("createMemo"))],c.types.stringLiteral(s))),m.needsControlFlowImport&&m.controlFlowComponents.size>0){let v=Array.from(m.controlFlowComponents).filter(E=>!f.scope.hasBinding(E)),h=m.libModule??"@fluixi/core",x=v.filter(E=>Ue.has(E)),y=v.filter(E=>We.has(E)),b=v.filter(E=>!We.has(E)&&!Ue.has(E)),T=(E,H)=>c.types.importDeclaration(E.map(R=>c.types.importSpecifier(c.types.identifier(R),c.types.identifier(R))),c.types.stringLiteral(H));b.length>0&&N.push(T(b,r)),y.length>0&&N.push(T(y,h)),x.length>0&&N.push(T(x,a))}let B=[];if(m.deferredComponents.size>0){for(let[v,h]of m.deferredComponents)f.scope.hasBinding(v)||B.push(c.types.variableDeclaration("const",[c.types.variableDeclarator(c.types.identifier(v),c.types.callExpression(c.types.identifier("deferred"),[c.types.arrowFunctionExpression([],c.types.callExpression(c.types.import(),[c.types.stringLiteral(h.module)])),c.types.objectExpression([c.types.objectProperty(c.types.identifier("strategy"),Vt(h.strategy)),c.types.objectProperty(c.types.identifier("export"),c.types.stringLiteral(h.export))])]))]));B.length>0&&!f.scope.hasBinding("deferred")&&N.push(c.types.importDeclaration([c.types.importSpecifier(c.types.identifier("deferred"),c.types.identifier("deferred"))],c.types.stringLiteral(m.libModule??"@fluixi/core")))}if(m.resolvedComponents.size>0){let v=new Map;for(let[h,x]of m.resolvedComponents){if(f.scope.hasBinding(h))continue;let y=v.get(x.module)??[];y.push({local:h,exported:x.export}),v.set(x.module,y)}for(let[h,x]of v)N.push(c.types.importDeclaration(x.map(({local:y,exported:b})=>b==="default"?c.types.importDefaultSpecifier(c.types.identifier(y)):c.types.importSpecifier(c.types.identifier(y),c.types.identifier(b))),c.types.stringLiteral(h)))}if(n&&m.delegatedEvents.size>0){N.push(c.types.importDeclaration([c.types.importSpecifier(c.types.identifier("delegateEvents"),c.types.identifier("delegateEvents"))],c.types.stringLiteral(o)));let v=c.types.arrayExpression(Array.from(m.delegatedEvents).map(x=>c.types.stringLiteral(x))),h=c.types.expressionStatement(c.types.callExpression(c.types.identifier("delegateEvents"),[v]));f.node.body.unshift(h)}if(B.length>0&&f.node.body.unshift(...B),m.staticTemplates.size>0){let v=[];for(let[h,x]of m.staticTemplates){let b=h.startsWith("svg:")?h.slice(4):h;v.push(c.types.variableDeclaration("const",[c.types.variableDeclarator(c.types.identifier(x),c.types.stringLiteral(b))]))}f.node.body.unshift(...v)}}N.length>0&&f.node.body.unshift(...Wt(N))}},JSXElement(f,m){m.hasJSX=!0,f.replaceWith(qe(f.node,m))},JSXFragment(f,m){m.hasJSX=!0,f.replaceWith(qe(f.node,m))},TaggedTemplateExpression(f,m){k&&c.types.isIdentifier(f.node.tag)&&(f.node.tag.name===u||f.node.tag.name==="svg")&&f.replaceWith(Ut(f.node,m))}}}});function Ke(e){return t=>{q(t,{resolver:e.componentResolver,modules:{controlFlowModule:e.controlFlowModule,coreModule:e.libModule,routerModule:e.routerModule},strategyFor:n=>n.load}),K(t),re(t,e)}}function Vt(e){let t=[c.types.objectProperty(c.types.identifier("kind"),c.types.stringLiteral(e.kind))];return e.kind==="visible"&&e.rootMargin&&t.push(c.types.objectProperty(c.types.identifier("rootMargin"),c.types.stringLiteral(e.rootMargin))),e.kind==="interaction"&&t.push(c.types.objectProperty(c.types.identifier("events"),c.types.arrayExpression(e.events.map(n=>c.types.stringLiteral(n))))),e.kind==="media"&&t.push(c.types.objectProperty(c.types.identifier("query"),c.types.stringLiteral(e.query))),c.types.objectExpression(t)}function Ye(e,t,n){if(!t||t.length===0)return e;let o=new Map;for(let r of t){let a=`${r.svg?"svg:":""}${r.html}`,s=n.staticTemplates.get(a);s||(s=`_tmpl$${n.staticTemplates.size}`,n.staticTemplates.set(a,s)),o.set(r.id,s)}return e.replace(/_tmpl\$\d+/g,r=>o.get(r)??r)}function qe(e,t){let n=new Set,o=ve(e,n,Ke(t));q(o,{resolver:t.componentResolver,modules:{controlFlowModule:t.controlFlowModule,coreModule:t.libModule,routerModule:t.routerModule},strategyFor:l=>l.load}),K(o);let{code:r,imports:a,templates:s}=C.emit(o,{templateClone:t.templateClone,partialTemplates:t.partialTemplates});for(let l of a)n.add(l);for(let l of n)t.irImports.add(l);re(o,t);let i=Ye(r,s,t);return c.template.expression(i,{placeholderPattern:!1,plugins:["typescript"]})()}function Wt(e){let t=new Map,n=[];for(let o of e){let r=o.source.value;if(!o.specifiers.every(i=>c.types.isImportSpecifier(i))){n.push(o);continue}let s=t.get(r);if(!s){let i=new Set(o.specifiers.map(l=>l.local.name));t.set(r,{decl:o,names:i}),n.push(o);continue}for(let i of o.specifiers)s.names.has(i.local.name)||(s.names.add(i.local.name),s.decl.specifiers.push(i))}return n}function Ut(e,t){let n=new Set,o=c.types.isIdentifier(e.tag)&&e.tag.name==="svg",r=ne(e,n,{svg:o,onNested:Ke(t)});q(r,{resolver:t.componentResolver,modules:{controlFlowModule:t.controlFlowModule,coreModule:t.libModule,routerModule:t.routerModule},strategyFor:p=>p.load}),K(r);let{code:a,imports:s,templates:i}=C.emit(r,{templateClone:t.templateClone,partialTemplates:t.partialTemplates});for(let p of s)n.add(p);for(let p of n)t.irImports.add(p);re(r,t),t.hasLitIR=!0;let l=c.template.expression(Ye(a,i,t),{placeholderPattern:!1,plugins:["typescript"]})();return qt(l,e),l}function qt(e,t){if(!t.loc)return;let n=new Set,o=r=>{if(!n.has(r)){n.add(r),r.loc||(r.loc=t.loc,r.start=t.start,r.end=t.end);for(let a of c.types.VISITOR_KEYS[r.type]??[]){let s=r[a];if(Array.isArray(s))for(let i of s)i&&typeof i=="object"&&"type"in i&&o(i);else s&&typeof s=="object"&&"type"in s&&o(s)}}};o(e)}function re(e,t){if(e.kind==="component"&&e.source&&(e.source.origin==="builtin"?(t.controlFlowComponents.add(e.name),t.needsControlFlowImport=!0):U(e.source.loading)&&!t.resolvedComponents.has(e.name)?t.deferredComponents.set(e.name,{module:e.source.module,export:e.source.export,strategy:e.source.loading}):(t.deferredComponents.delete(e.name),t.resolvedComponents.set(e.name,{module:e.source.module,export:e.source.export}))),(e.kind==="element"||e.kind==="component"||e.kind==="control")&&"props"in e)for(let n of e.props)n.kind==="event"&&n.event?.delegated&&t.delegatedEvents.add(n.event.name);if("children"in e&&e.children)for(let n of e.children)re(n,t)}var Gt=$;function Kt(e){return[$,e]}function oe(e={}){return{plugins:[[$,{runtime:"automatic",importSource:"@fluixi/jsx",development:!1,detectReactivity:!0,useLitHTML:!0,hoistStatics:!0,delegateEvents:!0,optimizeControlFlow:!0,sourceMaps:!0,...e}]]}}var Yt={production:oe({development:!1,hoistStatics:!0,delegateEvents:!0,optimizeControlFlow:!0}),development:oe({development:!0,hoistStatics:!1,sourceMaps:!0}),minimal:oe({detectReactivity:!1,useLitHTML:!1,hoistStatics:!1,delegateEvents:!1,optimizeControlFlow:!1})};
1
+ "use strict";var st=Object.create;var W=Object.defineProperty;var at=Object.getOwnPropertyDescriptor;var lt=Object.getOwnPropertyNames;var ct=Object.getPrototypeOf,pt=Object.prototype.hasOwnProperty;var ut=(e,t)=>{for(var n in t)W(e,n,{get:t[n],enumerable:!0})},Se=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of lt(t))!pt.call(e,r)&&r!==n&&W(e,r,{get:()=>t[r],enumerable:!(o=at(t,r))||o.enumerable});return e};var Ee=(e,t,n)=>(n=e!=null?st(ct(e)):{},Se(t||!e||!e.__esModule?W(n,"default",{value:e,enumerable:!0}):n,e)),dt=e=>Se(W({},"__esModule",{value:!0}),e);var cn={};ut(cn,{babelPluginReactiveJSX:()=>sn,createPlugin:()=>an,createPreset:()=>ae,default:()=>P,presets:()=>ln});module.exports=dt(cn);var rt=require("@babel/helper-plugin-utils");var mt=e=>"components"in e;function Ie(e,t){return e.replace(/\$(\d+)/g,(n,o)=>t[Number(o)]??n)}function ft(e,t){return typeof t=="string"?{module:t,export:e}:t}function ke(e=[]){let t=new Map,n=[],o=[];for(let a of e){if(!mt(a)){o.push(a);continue}for(let[i,l]of Object.entries(a.components)){let p=ft(i,l),u=t.get(i);if(u&&u.module!==p.module){let d=n.find(m=>m.name===i);d?d.modules.push(p.module):n.push({name:i,modules:[u.module,p.module]});continue}t.set(i,p)}}let r=new Map;return{resolve:a=>{if(r.has(a))return r.get(a);let i=t.get(a);if(!i)for(let l of o){let p=a.match(new RegExp(l.match.source,l.match.flags.replace("g","")));if(p){i={module:Ie(l.module,p),export:l.export?Ie(l.export,p):a};break}}return r.set(a,i),i},names:()=>[...t.keys()],conflicts:()=>n}}var le=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],O=["Suspense","SuspenseList","Await"],M=["Router","Outlet","Redirect","Link"],dn=[...le,...O,...M],ce=new Set([...le,...O]);function Ce(e={}){let{controlFlowModule:t="@fluixi/dom",coreModule:n="@fluixi/core",routerModule:o="@fluixi/core/router"}=e,r={};for(let s of le)r[s]=t;for(let s of O)r[s]=n;for(let s of M)r[s]=o;return r}var K={kind:"eager"},gt=["pointerdown","focusin","keydown"],we=new Set(["eager","idle","visible","interaction","media","never"]),C=class extends Error{};function pe(e){return e.startsWith("load:")}function G(e,t){let n=e.slice(5);if(!we.has(n))throw new C(`Unknown load strategy 'load:${n}'. Expected one of ${[...we].join(", ")}.`);switch(n){case"eager":return K;case"idle":return{kind:"idle"};case"never":return{kind:"never"};case"visible":return t?{kind:"visible",rootMargin:t}:{kind:"visible"};case"interaction":return{kind:"interaction",events:t?ht(t):[...gt]};case"media":if(!t)throw new C(`'load:media' needs a query, e.g. load:media="(min-width: 1024px)".`);return{kind:"media",query:t};default:throw new C(`Unhandled load strategy '${n}'.`)}}function ht(e){let t=e.split(/[\s,]+/).map(n=>n.trim()).filter(Boolean);if(t.length===0)throw new C("'load:interaction' was given no event names.");return t}function q(e){return e.kind!=="eager"&&e.kind!=="never"}function Y(e,t={}){let{resolver:n,isBound:o,modules:r,strategyFor:s}=t,a=Ce(r),i=new Map,l=new Set,p=d=>{let{name:m}=d;if(!m||m.includes(".")||o?.(m))return;let S=u(m);if(!S){l.add(m);return}let k=S.origin==="builtin"&&ce.has(m)?K:s?.(d)??K;d.source={...S,loading:k},i.set(m,d.source)},u=d=>{if(ce.has(d))return{module:a[d],export:d,origin:"builtin"};let m=n?.resolve(d);if(m)return{module:m.module,export:m.export,origin:"rule"};if(M.includes(d))return{module:a[d],export:d,origin:"builtin"}};return Z(e,d=>{d.kind==="component"&&p(d)}),{resolved:i,unresolved:[...l]}}function Z(e,t){let n=Array.isArray(e)?e:[e];for(let o of n){t(o);let r=o.children;r&&Z(r,t)}}function Q(e){let t=[];Z(e,s=>{s.kind==="component"&&s.source&&t.push(s)});let n=new Set,o=new Set;for(let s of t){let{module:a,loading:i}=s.source;i.kind==="eager"&&n.add(a),i.kind==="never"&&o.add(a)}let r=new Map;for(let s of t){let a=s.source;q(a.loading)&&n.has(a.module)&&(a.loading={kind:"eager"},r.set(a.module,(r.get(a.module)??0)+1))}return{collapsed:r,conflicted:[...o].filter(s=>n.has(s))}}var c=require("@babel/core");var I=require("@babel/core"),Ne=Ee(require("@babel/generator"),1);var vt=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),$e={className:"class",htmlFor:"for"},yt=new Set(["innerHTML","outerHTML","innerText","textContent","value","checked","selected","muted","defaultValue","defaultChecked","children","ref"]),Rt=new Set(["script","style","textarea","title"]);function ue(e){return Rt.has(e)}function Te(e){return $e[e]??e}function A(e){return e.kind!=="attr"||e.expr!==void 0||e.name.includes(":")?!1:!yt.has(e.name)}function de(e){if(!e.static||ue(e.tag))return!1;for(let t of e.props)if(!A(t))return!1;for(let t of e.children)if(t.kind!=="text"&&!(t.kind==="element"&&de(t)))return!1;return!0}function L(e){let t=e.props.map(Nt).filter(Boolean).join(""),n=`<${e.tag}${t}>`;return vt.has(e.tag)?n:`${n}${e.children.map(xt).join("")}</${e.tag}>`}function xt(e){if(e.kind==="text")return St(e.value);if(e.kind!=="element")throw new Error(`serializeStatic: unexpected ${e.kind}`);return L(e)}function Nt(e){let t=$e[e.name]??e.name,n=e.literal;return n===!0||n===void 0?` ${t}`:n===!1||n===null?"":` ${t}="${bt(String(n))}"`}function bt(e){return e.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function St(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function me(e){let t=[],n,o=r=>{n??=r.at?.file,t.push(r.at?.line??0,r.at?.column??0);for(let s of r.children)s.kind==="element"&&o(s)};return o(e),n&&t.some(r=>r!==0)?{file:n,pos:t}:void 0}var Et="<!--fx-->",It="<!--fx/-->";function te(e){return e.kind==="expr"||e.kind==="component"||e.kind==="control"}function kt(e){return e.kind==="text"||e.kind==="element"&&Me(e)}function Me(e){return e.svg||ue(e.tag)||!e.props.every(t=>A(t))?!1:e.children.every(t=>kt(t)||te(t))}function ee(e){if(te(e))return!0;let t=e.children;return t?t.some(ee):!1}function Pe(e){for(let t=0;t<e.children.length;t++){let n=e.children[t];if(n.kind==="text"&&(n.value===""||e.children[t+1]?.kind==="text"))return!1}return e.children.every(t=>t.kind!=="element"||Pe(t))}function Oe(e){if(!Me(e)||!Pe(e)||!e.children.some(ee))return null;let t=[],n=[],o=0,r=a=>{let i=`_n$${o++}`;return t.push({ref:i,expr:a}),i};return s(e,"_el$"),{html:Ct(e),tag:e.tag,steps:t,holes:n};function s(a,i){let l=-1;a.children.forEach((u,d)=>{ee(u)&&(l=d)});let p=null;for(let u=0;u<=l;u++){let d=a.children[u],m=p?`${p}.nextSibling`:`${i}.firstChild`;if(te(d)){let k=r(m),f=r(`holeEnd(${k})`);n.push({parentRef:i,startRef:k,endRef:f,node:d}),p=f;continue}let S=r(m);d.kind==="element"&&ee(d)&&s(d,S),p=S}}}function Ct(e){return L(Ae(e)).split(Le).join(Et+It)}function Ae(e){return{...e,children:e.children.map(t=>te(t)?{kind:"text",value:Le}:t.kind==="element"?Ae(t):t)}}var Le="\0fx-hole\0";var fe={version:1,module:"@fluixi/dom",symbols:["createNativeElement","insert","spread","setAttribute","delegateEvents","createComponent","createMemo","untrack","Show","For","Index","Switch","Match","Dynamic","ErrorBoundary"]},En={version:2,module:"@fluixi/dom",symbols:[...fe.symbols,"template","cloneTemplate","walk"]};var $="@fluixi/reactive/signal",ge={$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"}};var kn=new RegExp(`\\$(?:${Object.keys(ge).map(e=>e.slice(1)).join("|")})\\s*\\(`);var De="__fx_source";var wt="__fx_hole",D=(e,t,n,o)=>`(globalThis.${wt} ?? ((f) => f))(${e},${t},${n}${o===void 0?"":`,${JSON.stringify(o)}`})`,$t="__fx_props",Je=(e,t)=>`(globalThis.${$t} ?? ((p) => p))(${e},${JSON.stringify(t)})`;var Tt={show:"Show",for:"For",index:"Index",switch:"Switch",match:"Match",dynamic:"Dynamic",errorBoundary:"ErrorBoundary",suspense:"Suspense"};function Mt(e){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e)}function _e(e){return Mt(e)?e:JSON.stringify(e)}function Pt(e){if(e.expr!==void 0){if(e.name==="ref"&&e.at)return D(`(${e.expr})`,e.at.line,e.at.column,e.expr);if(!e.reactive)return`(${e.expr})`;let t=`() => (${e.expr})`;return e.at?D(t,e.at.line,e.at.column,e.directive):t}return JSON.stringify(e.literal??!0)}function Ot(e){return e.expr!==void 0?`(${e.expr})`:JSON.stringify(e.literal??!0)}function At(e,t,n){let o=e.filter(i=>i.kind==="spread"),s=e.filter(i=>i.kind!=="spread").map(i=>`${_e(i.name)}: ${Pt(i)}`);t!=null&&s.push(`children: ${t}`);let a=`{ ${s.join(", ")} }`;return o.length>0?(n.add("mergeProps"),`mergeProps(${o.map(i=>i.expr).join(", ")}, ${a})`):a}function je(e,t){return t?D(e,t.line,t.column):e}function He(e,t,n){return e.length===1?J(e[0],t,n):`[${e.map(o=>J(o,t,n)).join(", ")}]`}function Fe(e,t,n,o,r,s){o.add("createMemo"),o.add("createComponent");let a=t.filter(m=>m.kind==="spread"),i=t.filter(m=>m.kind!=="spread"),l=i.map(m=>`get ${_e(m.name)}() { return ${Ot(m)}; }`);n.length>0&&l.push(`get children() { return ${He(n,o,r)}; }`);let p=`{ ${l.join(", ")} }`;a.length>0&&(o.add("mergeProps"),p=`mergeProps(${a.map(m=>m.expr).join(", ")}, ${p})`);let u={};for(let m of i)m.at&&(u[m.name]=[m.at.line,m.at.column]);return Object.keys(u).length&&(p=Je(p,u)),`createMemo((${s?`globalThis.${De}?.(${JSON.stringify(s.file)},${s.line},${s.column},${JSON.stringify(e)}), `:""}() => createComponent(${e}, ${p})))`}function Lt(e,t){let n=Te(t.name),o=t.literal;return o===!0||o===void 0?`${e}.setAttribute(${JSON.stringify(n)}, "");`:o===!1||o===null?"":`${e}.setAttribute(${JSON.stringify(n)}, ${JSON.stringify(String(o))});`}var Be=!1;function J(e,t,n){switch(e.kind){case"text":return JSON.stringify(e.value);case"expr":{if(!e.reactive)return`(${e.code})`;let o=`() => (${e.code})`;return e.at?D(o,e.at.line,e.at.column):o}case"fragment":return e.children.length===0?"null":He(e.children,t,n);case"component":return je(Fe(e.name,e.props,e.children,t,n,e.at),e.bindAt??e.at);case"control":{let o=Tt[e.control]??e.control;return t.add(o),je(Fe(o,e.props,e.children,t,n),e.bindAt)}case"element":{if(n&&e.static&&!e.svg&&de(e)){t.add("templateNode");let i=`_tmpl$${n.length}`;n.push({id:i,html:L(e),tag:e.tag,svg:!1});let l=me(e);return l?`templateNode(${i}, ${JSON.stringify(e.tag)}, false, false, ${JSON.stringify(l)})`:`templateNode(${i}, ${JSON.stringify(e.tag)})`}if(n&&Be){let i=Oe(e);if(i){t.add("templateNode"),t.add("insert"),t.add("holeEnd"),t.add("holeContent"),t.add("holeScope");let l=`_tmpl$${n.length}`;n.push({id:l,html:i.html,tag:i.tag,svg:!1});let p=me(e),u=[`const _el$ = templateNode(${l}, ${JSON.stringify(i.tag)}, true${p?`, false, ${JSON.stringify(p)}`:""});`];for(let d of i.steps)u.push(`const ${d.ref} = ${d.expr};`);for(let d of i.holes)u.push(`insert(${d.parentRef}, holeScope(${d.startRef}, () => (${J(d.node,t,n)})), ${d.endRef}, holeContent(${d.startRef}, ${d.endRef}));`);return u.push("return _el$;"),`(() => { ${u.join(" ")} })()`}}t.add("createNativeElement");let o=JSON.stringify(e.tag),r="_el$",s=[],a=e.at?`${o}, ${e.svg}, ${JSON.stringify(e.at)}`:e.svg?`${o}, true`:o;if(s.push(`const ${r} = createNativeElement(${a});`),e.props.length>0)if(!e.svg&&e.props.every(A))for(let i of e.props)s.push(Lt(r,i));else{t.add("spread");let i=e.svg?", isSVG: true":"";s.push(`spread({ element: ${r}, props: ${At(e.props,null,t)}${i} });`)}for(let i of e.children){t.add("insert");let l=J(i,t,n),p=i.kind==="expr"&&i.reactive||i.kind==="component"||i.kind==="control";s.push(p?`insert(${r}, ${l}, null);`:`insert(${r}, ${l});`)}return s.push(`return ${r};`),`(() => { ${s.join(" ")} })()`}}}function j(e,t){if(!t||t.length===0)return e;let n=new Map(t.map(o=>[o.id,JSON.stringify(o.html)]));return e.replace(/_tmpl\$\d+/g,o=>n.get(o)??o)}var w={name:"imperative",contract:fe,emit(e,t){let n=new Set,o=t?.templateClone!==!1?[]:void 0;return Be=t?.partialTemplates===!0,{code:J(e,n,o),imports:Array.from(n),templates:o}}};var ne=require("@babel/core"),ve=Ee(require("@babel/generator"),1);var ze=require("@fluixi/template-parser");function F(e){let t=e.split(/\r\n|\n|\r/),n=0;for(let r=0;r<t.length;r++)/[^ \t]/.test(t[r])&&(n=r);let o="";for(let r=0;r<t.length;r++){let s=t[r].replace(/\t/g," ");r!==0&&(s=s.replace(/^ +/,"")),r!==t.length-1&&(s=s.replace(/ +$/,"")),s&&(r!==n&&(s+=" "),o+=s)}return o}var Xe=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function Dt(e){return e.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${")}function Ve(e){return e.charAt(0).toUpperCase()+e.slice(1)}var he=class{constructor(t,n,o,r){this.holes=t;this.used=n;this.sourceFile=o;this.positionAt=r}tagAt(t){let n=t.loc?.start;if(!this.sourceFile||!this.positionAt||n==null)return;let{line:o,column:r}=this.positionAt(n);return{file:this.sourceFile,line:o,column:r}}hole(t){return this.holes[t]??{code:"undefined",reactive:!1}}emit(t){let{code:n,imports:o,templates:r}=w.emit(t,{});for(let s of o)this.used.add(s);return j(n,r)}lowerRoot(t){let n=this.lowerChildren(t);return n.length===1?n[0]:{kind:"fragment",children:n}}lowerChildren(t){let n=[];for(let o=0;o<t.length;o++){let r=t[o];if(r.kind==="Element"||r.kind==="Component"){let a=r.attributes.find(i=>i.kind==="IfDirective");if(a&&a.kind==="IfDirective"){let i=o+1;i<t.length&&this.isBlankText(t[i])&&i++;let l=t[i],p=l&&(l.kind==="Element"||l.kind==="Component")&&l.attributes.some(u=>u.kind==="ElseDirective");n.push(this.lowerIf(r,a.hole,p?l:null)),p&&(o=i);continue}if(r.attributes.some(i=>i.kind==="EachDirective")){n.push(this.lowerEach(r));continue}}let s=this.lowerNode(r);s&&n.push(s)}return n}isBlankText(t){return t.kind==="Text"&&!t.raw&&F(t.value)===""}lowerNode(t){switch(t.kind){case"Text":{if(t.raw)return{kind:"text",value:t.value};let n=F(t.value);return n?{kind:"text",value:n}:null}case"Comment":return null;case"Expression":{let n=this.hole(t.hole);return{kind:"expr",code:n.code,reactive:n.reactive,...n.at?{at:n.at}:{}}}case"Fragment":return{kind:"fragment",children:this.lowerChildren(t.children)};case"Element":return this.lowerElement(t);case"Component":return this.lowerComponent(t);default:return null}}lowerElement(t){let n=t.attributes.find(r=>r.kind==="Attribute"&&r.name==="is");if(t.tag==="component"&&n&&n.value&&n.value.kind==="hole"){let r=t.attributes.filter(a=>a!==n),s=this.lowerComponent({...t,kind:"Component",tag:"Dynamic",tagHole:null,attributes:r});return s.props.unshift({name:"component",kind:"attr",expr:`() => (${this.hole(n.value.hole).code})`}),s}let o=this.tagAt(t);return{kind:"element",tag:t.tag,svg:t.namespace==="svg",props:this.lowerAttributes(t.attributes),children:this.lowerChildren(t.children),static:!1,...o?{at:o}:{}}}lowerComponent(t){let n=t.tagHole!=null?this.hole(t.tagHole).code:t.tag,o=this.lowerAttributes(t.attributes),{slots:r,rest:s}=this.partitionSlots(t.children);for(let[u,d]of r){let m=d.length===1?d[0]:{kind:"fragment",children:d},S={name:u,kind:"attr",expr:this.emit(m),jsxElement:!0},k=o.findIndex(f=>f.name===u);k>=0?o[k]=S:o.push(S)}let a=t.attributes.find(u=>u.kind==="LoadDirective"),i=a?G(`load:${a.strategy}`,a.modifier):void 0,l=o.find(u=>u.at&&u.reactive)?.at,p=this.tagAt(t);return{kind:"component",name:n,props:o,children:this.lowerChildren(s),...p?{at:p}:{},...l?{bindAt:l}:{},...i?{load:i}:{}}}partitionSlots(t){let n=new Map,o=[];for(let r of t){if(r.kind==="Element"||r.kind==="Component"){let s=r.attributes.find(a=>a.kind==="Attribute"&&a.name==="slot");if(s&&s.value&&s.value.kind==="static"){let a={...r,attributes:r.attributes.filter(p=>p!==s)},i=a.kind==="Element"?this.lowerElement(a):this.lowerComponent(a),l=n.get(s.value.value)??[];l.push(i),n.set(s.value.value,l);continue}}o.push(r)}return{slots:n,rest:o}}lowerIf(t,n,o){let r=this.hole(n),s=[{name:"when",kind:"attr",expr:r.code,reactive:r.reactive,...r.at?{at:r.at}:{}}];if(o){let l=this.stripAndLower(o,p=>p.kind==="ElseDirective");s.push({name:"fallback",kind:"attr",expr:this.emit(l),jsxElement:!0})}let a=this.stripAndLower(t,l=>l.kind==="IfDirective"),i=this.tagAt(t);return{kind:"component",name:"Show",props:s,children:[a],...i?{at:i}:{},...r.at?{bindAt:r.at}:{}}}lowerEach(t){let n=t.attributes.find(p=>p.kind==="EachDirective");if(!n||n.kind!=="EachDirective")return this.lowerNode(t);let o=this.hole(n.hole),r=[{name:"each",kind:"attr",expr:o.code,reactive:o.reactive,...o.at?{at:o.at}:{}}];if(n.key){let p="static"in n.key?`(item) => item[${JSON.stringify(n.key.static)}]`:this.hole(n.key.hole).code;r.push({name:"by",kind:"attr",expr:p})}let s=this.itemArrow(t),a;if(s){let p={kind:"expr",code:s.body,reactive:s.bodyReactive},u=this.rebuildWithChildren(t,[p]);a=`(${s.params.join(", ")}) => (${this.emit(u)})`}else{let p=this.stripAndLower(t,u=>u.kind==="EachDirective");a=`() => (${this.emit(p)})`}let i=[{kind:"expr",code:a,reactive:!1}],l=this.tagAt(t);return{kind:"component",name:"For",props:r,children:i,...l?{at:l}:{},...o.at?{bindAt:o.at}:{}}}itemArrow(t){let n=t.children.filter(o=>!this.isBlankText(o));return n.length!==1||n[0].kind!=="Expression"?null:this.hole(n[0].hole).arrow??null}stripAndLower(t,n){let o={...t,attributes:t.attributes.filter(r=>!n(r))};return o.kind==="Element"?this.lowerElement(o):this.lowerComponent(o)}rebuildWithChildren(t,n){let o=this.lowerAttributes(t.attributes.filter(r=>r.kind!=="EachDirective"));if(t.kind==="Element"){let r=this.tagAt(t);return{kind:"element",tag:t.tag,svg:t.namespace==="svg",props:o,children:n,static:!1,...r?{at:r}:{}}}return{kind:"component",name:t.tag,props:o,children:n}}lowerAttributes(t){let n=[],o=[],r=!1,s,a=[],i=!1,l,p=[];for(let u of t)switch(u.kind){case"IfDirective":case"EachDirective":case"ElseDirective":break;case"Attribute":n.push(this.plainAttr(u));break;case"PropertyBinding":n.push({name:u.name,kind:"prop",expr:this.hole(u.hole).code,reactive:this.hole(u.hole).reactive,...this.hole(u.hole).at?{at:this.hole(u.hole).at}:{}});break;case"EventBinding":n.push(this.eventProp(u));break;case"RefBinding":n.push({name:"ref",kind:"ref",expr:this.hole(u.hole).code,reactive:this.hole(u.hole).reactive,...this.hole(u.hole).at?{at:this.hole(u.hole).at}:{}});break;case"Spread":n.push({name:"",kind:"spread",expr:this.hole(u.hole).code});break;case"ClassDirective":{let d=this.hole(u.hole);o.push(`${JSON.stringify(u.name)}: ${d.code}`),r=r||d.reactive,s??=d.at;break}case"StyleDirective":{let d=this.hole(u.hole);a.push(`${JSON.stringify(u.name)}: ${d.code}`),i=i||d.reactive,l??=d.at;break}case"BindDirective":n.push(...this.bindProps(u.name,this.hole(u.hole)));break;case"UseDirective":{let d=u.name??(u.hole!=null?this.hole(u.hole).code:null);if(!d)break;p.push(u.name!=null&&u.hole!=null?`[${d}, () => (${this.hole(u.hole).code})]`:`[${d}]`);break}}return o.length>0&&n.push({name:"classList",kind:"attr",expr:`{ ${o.join(", ")} }`,reactive:r,...s?{at:s}:{}}),a.length>0&&n.push({name:"style",kind:"attr",expr:`{ ${a.join(", ")} }`,reactive:i,...l?{at:l}:{}}),p.length>0&&n.push({name:"use",kind:"attr",expr:`[${p.join(", ")}]`}),n}eventProp(t){let n=t.name.toLowerCase(),o=this.hole(t.hole).code;if(!(t.syntax==="colon"||t.modifiers.length>0))return{name:"on"+Ve(t.name),kind:"event",event:{name:n,delegated:Xe.has(n)},expr:o};let s=this.wrapHandler(o,t.modifiers),a=this.eventOptions(t.modifiers),i=a?`[${s}, ${a}]`:s;return{name:"on:"+n,kind:"attr",expr:i}}wrapHandler(t,n){let o=n.includes("self")?"if (e.target !== e.currentTarget) return; ":"",r=[];return n.includes("prevent")&&r.push("e.preventDefault();"),n.includes("stop")&&r.push("e.stopPropagation();"),!o&&r.length===0?t:`(e) => { ${o}${r.join(" ")} return (${t})(e); }`}eventOptions(t){let n=[];return t.includes("capture")&&n.push("capture: true"),t.includes("once")&&n.push("once: true"),t.includes("passive")&&n.push("passive: true"),n.length?`{ ${n.join(", ")} }`:null}bindProps(t,n){let o=n.code,r=t==="checked",s=r?"change":"input",a=r?"checked":"value";this.used.add("bindPair");let i=`bindPair(${o})`;return[{name:t,kind:"attr",expr:`${i}[0]()`,reactive:!0,directive:`bind:${t}`,...n.at?{at:n.at}:{}},{name:"on"+Ve(s),kind:"event",event:{name:s,delegated:Xe.has(s)},expr:`(e) => ${i}[1](e.target.${a})`}]}plainAttr(t){let n=t.value,o=t.name;t.name==="class"?o=n&&n.kind==="hole"&&this.hole(n.hole).object?"classList":"className":t.name==="html"&&(o="innerHTML");let s={name:o,kind:"attr"};if(n==null)return s.literal=!0,s;if(n.kind==="static")return s.literal=n.value,s;if(n.kind==="hole"){let p=this.hole(n.hole);return s.expr=p.code,s.reactive=p.reactive,p.at&&(s.at=p.at),s}let a=!1,i,l=n.parts.map(p=>{if("text"in p)return Dt(p.text);let u=this.hole(p.hole);return a=a||u.reactive,i??=u.at,"${"+u.code+"}"}).join("");return s.expr="`"+l+"`",s.reactive=a,i&&(s.at=i),s}};function Ue(e,t,n,o={}){let{root:r}=(0,ze.parseTemplate)(e,{svg:o.svg});return new he(t,n,o.sourceFile,o.positionAt).lowerRoot(r.children)}var Jt=ve.default.default??ve.default;function jt(e){return Jt(e,{concise:!0}).code}function Ft(e,t,n){let o={code:re(e,t,n),reactive:ye(e)};if(ne.types.isArrowFunctionExpression(e)&&!ne.types.isBlockStatement(e.body)){let r=e.body;o.arrow={params:e.params.map(s=>jt(s)),body:re(r,t,n),bodyReactive:ye(r)}}return ne.types.isObjectExpression(e)&&(o.object=!0),o}function We(e,t,n={}){let o=e.quasi,r=o.expressions.map(s=>Ft(s,t,n.onNested));return Ue(_t(o),r,t,n)}function _t(e){let t=[];return e.quasis.forEach((n,o)=>{let r=n.value.cooked??n.value.raw;if(t.push({kind:"static",text:r,start:n.start??0}),o<e.expressions.length){let s=e.expressions[o];t.push({kind:"hole",index:o,start:s.start??0,end:s.end??0})}}),t}function Ht(e){switch(e.kind){case"event":return"event";case"ref":return"ref";case"spread":return"spread";case"class":case"style":return"class-or-style-directive";case"attr":case"prop":return e.reactive?"reactive-prop":e.expr!==void 0?"expression-prop":void 0;default:return"expression-prop"}}function oe(e){let t=[],n=new Map,o=r=>{switch(r.kind){case"text":return!0;case"expr":return!1;case"component":case"control":for(let s of r.children)o(s);return!1;case"fragment":for(let s of r.children)o(s);return!1;case"element":{let s=!0;for(let i of r.children)o(i)||(s=!1);let a;for(let i of r.props)if(a=Ht(i),a)break;return!a&&!s&&(a=Bt(r)),r.static=!a,a?n.set(r,a):t.push(r),r.static}default:return!1}};for(let r of Array.isArray(e)?e:[e])o(r);return{staticElements:t,reasons:n}}function Bt(e){for(let t of e.children){if(t.kind==="expr")return"expression-child";if(t.kind==="component")return"component-child";if(t.kind==="control")return"control-child";if(t.kind==="element"&&!t.static||t.kind==="fragment")return"expression-child"}return"expression-child"}function ie(e,t=new Set,n={}){let o=We(e,t,n);return oe(o),o}var Xt="children";function _(e){switch(e.kind){case"call":return!0;case"member":return e.property!==Xt;case"compound":return e.parts.some(_);case"opaque":return!1}}var Vt=new Set(["CallExpression","OptionalCallExpression"]),zt=new Set(["MemberExpression","OptionalMemberExpression"]);function B(e){if(!e)return{kind:"opaque"};if(Vt.has(e.type))return{kind:"call"};if(zt.has(e.type)){let t=e.property;return{kind:"member",property:!(e.computed===!0)&&t?.type==="Identifier"?t.name:null}}return e.type==="ConditionalExpression"?{kind:"compound",parts:[e.test,e.consequent,e.alternate].map(H)}:e.type==="LogicalExpression"||e.type==="BinaryExpression"?{kind:"compound",parts:[e.left,e.right].map(H)}:e.type==="TemplateLiteral"?{kind:"compound",parts:e.expressions.map(H)}:e.type==="ObjectExpression"?{kind:"compound",parts:e.properties.filter(n=>(n.type==="ObjectProperty"||n.type==="Property")&&n.computed!==!0).map(n=>H(n.value))}:e.type==="ArrayExpression"?{kind:"compound",parts:e.elements.filter(n=>n!=null&&n.type!=="SpreadElement").map(H)}:{kind:"opaque"}}var H=e=>B(e);var Ut=new Set(["svg","path","circle","rect","line","polygon","polyline","ellipse","g","defs","clipPath","text"]),Wt=/^on[A-Z]/,Kt=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]),qe=e=>_(B(e)),X=(e,t)=>{if(!t.sourceFile)return;let n=e.loc?.start;return n?{line:n.line,column:n.column}:void 0};function V(e){if(e.type==="StringLiteral"||e.type==="NumericLiteral"||e.type==="BooleanLiteral"||e.type==="Literal"&&(typeof e.value=="string"||typeof e.value=="number"||typeof e.value=="boolean"))return e.value}var Re=e=>!!e&&typeof V(e)=="string";function Gt(e,t){return e.type==="JSXIdentifier"?{tag:e.name,component:e.name[0]!==e.name[0].toLowerCase()}:e.type==="JSXMemberExpression"?{tag:t.code(e),component:!0}:e.type==="JSXNamespacedName"?{tag:`${e.namespace.name}:${e.name.name}`,component:!1}:{tag:"div",component:!1}}function xe(e){return e.type==="JSXIdentifier"?e.name==="class"?"className":e.name:e.type==="JSXNamespacedName"?`${e.namespace.name}:${e.name.name}`:"unknown"}function qt(e,t){let n=xe(e.name),o=Wt.test(n),r=o||n.startsWith("on:")||n==="ref",a={name:n,kind:o?"event":"attr"};if(o){let l=n.slice(2).toLowerCase();a.event={name:l,delegated:Kt.has(l)}}let i=e.value;if(i==null)return a.literal=!0,a.at=X(e,t),a;if(Re(i))return a.literal=V(i),a.at=X(i,t),a;if(i.type==="JSXExpressionContainer"&&i.expression?.type!=="JSXEmptyExpression"){let l=i.expression,p=V(l);return p!==void 0?(a.literal=p,a.at=X(l,t),a):(a.expr=t.code(l),a.reactive=r?!1:qe(l),a.at=X(l,t),(l.type==="JSXElement"||l.type==="JSXFragment")&&(a.jsxElement=!0),a)}return a.literal=!0,a}function Ke(e,t){let n=e.value;return n==null?null:Re(n)?JSON.stringify(V(n)):n.type==="JSXExpressionContainer"&&n.expression?.type!=="JSXEmptyExpression"?t.code(n.expression):null}function Yt(e,t){let n=[],o=[];for(let r of e){if(r.type==="JSXSpreadAttribute"){n.push({name:"",kind:"spread",expr:t.code(r.argument)});continue}if(r.type!=="JSXAttribute"||pe(xe(r.name)))continue;let s=r.name.type==="JSXNamespacedName"?r.name.namespace.name:null;if(s==="use"){let a=r.name.name.name;t.used.add(a);let i=Ke(r,t);o.push(i!=null?`[${a}, () => (${i})]`:`[${a}]`);continue}if(s==="oncapture"){let a=r.name.name.name.toLowerCase(),i=Ke(r,t)??"undefined";n.push({name:"on:"+a,kind:"attr",expr:`[${i}, { capture: true }]`});continue}n.push(qt(r,t))}return o.length>0&&n.push({name:"use",kind:"attr",expr:`[${o.join(", ")}]`}),n}function Ge(e,t){let n=[];for(let o of e)if(o.type==="JSXText"){let r=F(o.value);r&&n.push({kind:"text",value:r})}else if(o.type==="JSXExpressionContainer"){if(o.expression?.type!=="JSXEmptyExpression"){let r=o.expression,s=qe(r);n.push({kind:"expr",code:t.code(r),reactive:s,...s?{at:X(r,t)}:{}})}}else o.type==="JSXElement"||o.type==="JSXFragment"?n.push(Ye(o,t)):o.type==="JSXSpreadChild"&&n.push({kind:"expr",code:t.code(o.expression),reactive:!1});return n}function Zt(e){for(let t of e){if(t.type!=="JSXAttribute")continue;let n=xe(t.name);if(pe(n)){if(t.value&&!Re(t.value))throw new C(`'${n}' needs a literal value, not an expression — the strategy is compile-time.`);return G(n,t.value?V(t.value):null)}}}function Ye(e,t){if(e.type==="JSXFragment")return{kind:"fragment",children:Ge(e.children,t)};let{tag:n,component:o}=Gt(e.openingElement.name,t),r=Yt(e.openingElement.attributes,t),s=Ge(e.children,t),a=t.sourceFile&&e.loc?.start?{file:t.sourceFile,line:e.loc.start.line,column:e.loc.start.column}:void 0;if(o){let i=Zt(e.openingElement.attributes);return{kind:"component",name:n,props:r,children:s,...i?{load:i}:{},...a?{at:a}:{}}}return{kind:"element",tag:n,svg:Ut.has(n),props:r,children:s,static:!1,...a?{at:a}:{}}}function Ze(e,t){let n=Ye(e,t);return oe(n),n}var Qt=Ne.default.default??Ne.default;function Qe(e){return Qt(e,{concise:!0}).code}function en(e,t,n){let o=I.types.cloneNode(e,!0),r=I.types.file(I.types.program([I.types.expressionStatement(o)])),s=!1,a=(i,l,p)=>{for(let u of p)t.add(u);i.replaceWith(I.template.expression(l,{placeholderPattern:!1,plugins:["typescript"]})()),i.skip(),s=!0};return(0,I.traverse)(r,{"JSXElement|JSXFragment"(i){let l=i.node,p=be(l,t,n);n?.(p);let{code:u,imports:d,templates:m}=w.emit(p,{});a(i,j(u,m),d)},TaggedTemplateExpression(i){let l=i.node.tag;if(!I.types.isIdentifier(l)||l.name!=="html"&&l.name!=="svg")return;let p=ie(i.node,t,{svg:l.name==="svg",onNested:n});n?.(p);let{code:u,imports:d,templates:m}=w.emit(p,{});a(i,j(u,m),d)}}),s?r.program.body[0].expression:e}function re(e,t,n){return Qe(en(e,t,n))}function ye(e){return _(B(e))}function be(e,t=new Set,n){return Ze(e,{code:r=>r.type==="JSXMemberExpression"?Qe(r):re(r,t,n),used:t})}var et=new Set(O),tt=new Set(M),P=(0,rt.declare)((e,t={})=>{e.assertVersion(7);let{delegateEvents:n=!0,signalModule:o="@fluixi/dom",controlFlowModule:r="@fluixi/dom",routerModule:s="@fluixi/core/router",reactiveModule:a="@fluixi/reactive/signal",templateClone:i=!0,partialTemplates:l=!0,format:p="both",litTag:u="html",resolve:d=[]}=t,m=ke(d),S=p==="lit"||p==="both",k={irImports:new Set,libModule:"@fluixi/core",controlFlowModule:r,routerModule:s,templateClone:i,partialTemplates:l,hasJSX:!1,hasLitHTML:!1,needsControlFlowImport:!1,needsCreateMemo:!1,controlFlowComponents:new Set,resolvedComponents:new Map,deferredComponents:new Map,componentResolver:m,delegatedEvents:new Set,staticTemplates:new Map,staticCounter:0};return{name:"@fluixi/babel-plugin-jsx",manipulateOptions(f,g){g.plugins.push("jsx","typescript")},pre(f){Object.assign(f,k)},visitor:{Program:{enter(f,g){Object.assign(g,{hasJSX:!1,hasLitHTML:!1,hasLitIR:!1,needsControlFlowImport:!1,needsCreateMemo:!1,controlFlowComponents:new Set,resolvedComponents:new Map,deferredComponents:new Map,componentResolver:m,delegatedEvents:new Set,staticTemplates:new Map,staticCounter:0,libModule:"@fluixi/core",controlFlowModule:r,routerModule:s,templateClone:i,partialTemplates:l,irImports:new Set,needsCreateNativeElement:!1,needsInsert:!1,needsSpread:!1,needsCreateComponent:!1,needsMergeProps:!1})},exit(f,g){let b=[];if(g.hasJSX||g.hasLitIR){if(g.irImports.size>0){let v=new Set(["Show","For","Index","Switch","Match","Dynamic","ErrorBoundary","Portal","Suspense"]),h=new Set(["createMemo","createEffect","createRenderEffect","createRoot","createSignal","onCleanup","batch","untrack"]),R=Array.from(g.irImports),x=y=>c.types.importSpecifier(c.types.identifier(y),c.types.identifier(y)),E=y=>!f.scope.hasBinding(y),T=R.filter(y=>h.has(y)&&E(y)),N=R.filter(y=>!v.has(y)&&!h.has(y)&&E(y)),U=R.filter(y=>v.has(y)&&E(y));T.length>0&&b.push(c.types.importDeclaration(T.map(x),c.types.stringLiteral(a))),N.length>0&&b.push(c.types.importDeclaration(N.map(x),c.types.stringLiteral(o))),U.length>0&&b.push(c.types.importDeclaration(U.map(x),c.types.stringLiteral(r)))}if(g.needsCreateMemo&&!f.scope.hasBinding("createMemo")&&b.push(c.types.importDeclaration([c.types.importSpecifier(c.types.identifier("createMemo"),c.types.identifier("createMemo"))],c.types.stringLiteral(a))),g.needsControlFlowImport&&g.controlFlowComponents.size>0){let v=Array.from(g.controlFlowComponents).filter(N=>!f.scope.hasBinding(N)),h=g.libModule??"@fluixi/core",R=v.filter(N=>tt.has(N)),x=v.filter(N=>et.has(N)),E=v.filter(N=>!et.has(N)&&!tt.has(N)),T=(N,U)=>c.types.importDeclaration(N.map(y=>c.types.importSpecifier(c.types.identifier(y),c.types.identifier(y))),c.types.stringLiteral(U));E.length>0&&b.push(T(E,r)),x.length>0&&b.push(T(x,h)),R.length>0&&b.push(T(R,s))}let z=[];if(g.deferredComponents.size>0){for(let[v,h]of g.deferredComponents)f.scope.hasBinding(v)||z.push(c.types.variableDeclaration("const",[c.types.variableDeclarator(c.types.identifier(v),c.types.callExpression(c.types.identifier("deferred"),[c.types.arrowFunctionExpression([],c.types.callExpression(c.types.import(),[c.types.stringLiteral(h.module)])),c.types.objectExpression([c.types.objectProperty(c.types.identifier("strategy"),tn(h.strategy)),c.types.objectProperty(c.types.identifier("export"),c.types.stringLiteral(h.export))])]))]));z.length>0&&!f.scope.hasBinding("deferred")&&b.push(c.types.importDeclaration([c.types.importSpecifier(c.types.identifier("deferred"),c.types.identifier("deferred"))],c.types.stringLiteral(g.libModule??"@fluixi/core")))}if(g.resolvedComponents.size>0){let v=new Map;for(let[h,R]of g.resolvedComponents){if(f.scope.hasBinding(h))continue;let x=v.get(R.module)??[];x.push({local:h,exported:R.export}),v.set(R.module,x)}for(let[h,R]of v)b.push(c.types.importDeclaration(R.map(({local:x,exported:E})=>E==="default"?c.types.importDefaultSpecifier(c.types.identifier(x)):c.types.importSpecifier(c.types.identifier(x),c.types.identifier(E))),c.types.stringLiteral(h)))}if(n&&g.delegatedEvents.size>0){b.push(c.types.importDeclaration([c.types.importSpecifier(c.types.identifier("delegateEvents"),c.types.identifier("delegateEvents"))],c.types.stringLiteral(o)));let v=c.types.arrayExpression(Array.from(g.delegatedEvents).map(R=>c.types.stringLiteral(R))),h=c.types.expressionStatement(c.types.callExpression(c.types.identifier("delegateEvents"),[v]));f.node.body.unshift(h)}if(z.length>0&&f.node.body.unshift(...z),g.staticTemplates.size>0){let v=[];for(let[h,R]of g.staticTemplates){let E=h.startsWith("svg:")?h.slice(4):h;v.push(c.types.variableDeclaration("const",[c.types.variableDeclarator(c.types.identifier(R),c.types.stringLiteral(E))]))}f.node.body.unshift(...v)}}b.length>0&&f.node.body.unshift(...nn(b))}},JSXElement(f,g){g.hasJSX=!0,f.replaceWith(nt(f.node,g))},JSXFragment(f,g){g.hasJSX=!0,f.replaceWith(nt(f.node,g))},TaggedTemplateExpression(f,g){S&&c.types.isIdentifier(f.node.tag)&&(f.node.tag.name===u||f.node.tag.name==="svg")&&f.replaceWith(rn(f.node,g))}}}});function ot(e){return t=>{Y(t,{resolver:e.componentResolver,modules:{controlFlowModule:e.controlFlowModule,coreModule:e.libModule,routerModule:e.routerModule},strategyFor:n=>n.load}),Q(t),se(t,e)}}function tn(e){let t=[c.types.objectProperty(c.types.identifier("kind"),c.types.stringLiteral(e.kind))];return e.kind==="visible"&&e.rootMargin&&t.push(c.types.objectProperty(c.types.identifier("rootMargin"),c.types.stringLiteral(e.rootMargin))),e.kind==="interaction"&&t.push(c.types.objectProperty(c.types.identifier("events"),c.types.arrayExpression(e.events.map(n=>c.types.stringLiteral(n))))),e.kind==="media"&&t.push(c.types.objectProperty(c.types.identifier("query"),c.types.stringLiteral(e.query))),c.types.objectExpression(t)}function it(e,t,n){if(!t||t.length===0)return e;let o=new Map;for(let r of t){let s=`${r.svg?"svg:":""}${r.html}`,a=n.staticTemplates.get(s);a||(a=`_tmpl$${n.staticTemplates.size}`,n.staticTemplates.set(s,a)),o.set(r.id,a)}return e.replace(/_tmpl\$\d+/g,r=>o.get(r)??r)}function nt(e,t){let n=new Set,o=be(e,n,ot(t));Y(o,{resolver:t.componentResolver,modules:{controlFlowModule:t.controlFlowModule,coreModule:t.libModule,routerModule:t.routerModule},strategyFor:l=>l.load}),Q(o);let{code:r,imports:s,templates:a}=w.emit(o,{templateClone:t.templateClone,partialTemplates:t.partialTemplates});for(let l of s)n.add(l);for(let l of n)t.irImports.add(l);se(o,t);let i=it(r,a,t);return c.template.expression(i,{placeholderPattern:!1,plugins:["typescript"]})()}function nn(e){let t=new Map,n=[];for(let o of e){let r=o.source.value;if(!o.specifiers.every(i=>c.types.isImportSpecifier(i))){n.push(o);continue}let a=t.get(r);if(!a){let i=new Set(o.specifiers.map(l=>l.local.name));t.set(r,{decl:o,names:i}),n.push(o);continue}for(let i of o.specifiers)a.names.has(i.local.name)||(a.names.add(i.local.name),a.decl.specifiers.push(i))}return n}function rn(e,t){let n=new Set,o=c.types.isIdentifier(e.tag)&&e.tag.name==="svg",r=ie(e,n,{svg:o,onNested:ot(t)});Y(r,{resolver:t.componentResolver,modules:{controlFlowModule:t.controlFlowModule,coreModule:t.libModule,routerModule:t.routerModule},strategyFor:p=>p.load}),Q(r);let{code:s,imports:a,templates:i}=w.emit(r,{templateClone:t.templateClone,partialTemplates:t.partialTemplates});for(let p of a)n.add(p);for(let p of n)t.irImports.add(p);se(r,t),t.hasLitIR=!0;let l=c.template.expression(it(s,i,t),{placeholderPattern:!1,plugins:["typescript"]})();return on(l,e),l}function on(e,t){if(!t.loc)return;let n=new Set,o=r=>{if(!n.has(r)){n.add(r),r.loc||(r.loc=t.loc,r.start=t.start,r.end=t.end);for(let s of c.types.VISITOR_KEYS[r.type]??[]){let a=r[s];if(Array.isArray(a))for(let i of a)i&&typeof i=="object"&&"type"in i&&o(i);else a&&typeof a=="object"&&"type"in a&&o(a)}}};o(e)}function se(e,t){if(e.kind==="component"&&e.source&&(e.source.origin==="builtin"?(t.controlFlowComponents.add(e.name),t.needsControlFlowImport=!0):q(e.source.loading)&&!t.resolvedComponents.has(e.name)?t.deferredComponents.set(e.name,{module:e.source.module,export:e.source.export,strategy:e.source.loading}):(t.deferredComponents.delete(e.name),t.resolvedComponents.set(e.name,{module:e.source.module,export:e.source.export}))),(e.kind==="element"||e.kind==="component"||e.kind==="control")&&"props"in e)for(let n of e.props)n.kind==="event"&&n.event?.delegated&&t.delegatedEvents.add(n.event.name);if("children"in e&&e.children)for(let n of e.children)se(n,t)}var sn=P;function an(e){return[P,e]}function ae(e={}){return{plugins:[[P,{runtime:"automatic",importSource:"@fluixi/jsx",development:!1,detectReactivity:!0,useLitHTML:!0,hoistStatics:!0,delegateEvents:!0,optimizeControlFlow:!0,sourceMaps:!0,...e}]]}}var ln={production:ae({development:!1,hoistStatics:!0,delegateEvents:!0,optimizeControlFlow:!0}),development:ae({development:!0,hoistStatics:!1,sourceMaps:!0}),minimal:ae({detectReactivity:!1,useLitHTML:!1,hoistStatics:!1,delegateEvents:!1,optimizeControlFlow:!1})};
@@ -1 +1 @@
1
- import{declare as Jt}from"@babel/helper-plugin-utils";var qe=e=>"components"in e;function ge(e,t){return e.replace(/\$(\d+)/g,(n,o)=>t[Number(o)]??n)}function Ge(e,t){return typeof t=="string"?{module:t,export:e}:t}function he(e=[]){let t=new Map,n=[],o=[];for(let s of e){if(!qe(s)){o.push(s);continue}for(let[i,l]of Object.entries(s.components)){let p=Ge(i,l),u=t.get(i);if(u&&u.module!==p.module){let d=n.find(g=>g.name===i);d?d.modules.push(p.module):n.push({name:i,modules:[u.module,p.module]});continue}t.set(i,p)}}let r=new Map;return{resolve:s=>{if(r.has(s))return r.get(s);let i=t.get(s);if(!i)for(let l of o){let p=s.match(new RegExp(l.match.source,l.match.flags.replace("g","")));if(p){i={module:ge(l.module,p),export:l.export?ge(l.export,p):s};break}}return r.set(s,i),i},names:()=>[...t.keys()],conflicts:()=>n}}var ne=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],M=["Suspense","SuspenseList","Await"],T=["Router","Outlet","Redirect","Link"],Ht=[...ne,...M,...T],re=new Set([...ne,...M]);function ve(e={}){let{controlFlowModule:t="@fluixi/dom",coreModule:n="@fluixi/core",routerModule:o="@fluixi/core/router"}=e,r={};for(let a of ne)r[a]=t;for(let a of M)r[a]=n;for(let a of T)r[a]=o;return r}var z={kind:"eager"},Ke=["pointerdown","focusin","keydown"],Re=new Set(["eager","idle","visible","interaction","media","never"]),S=class extends Error{};function oe(e){return e.startsWith("load:")}function V(e,t){let n=e.slice(5);if(!Re.has(n))throw new S(`Unknown load strategy 'load:${n}'. Expected one of ${[...Re].join(", ")}.`);switch(n){case"eager":return z;case"idle":return{kind:"idle"};case"never":return{kind:"never"};case"visible":return t?{kind:"visible",rootMargin:t}:{kind:"visible"};case"interaction":return{kind:"interaction",events:t?Ye(t):[...Ke]};case"media":if(!t)throw new S(`'load:media' needs a query, e.g. load:media="(min-width: 1024px)".`);return{kind:"media",query:t};default:throw new S(`Unhandled load strategy '${n}'.`)}}function Ye(e){let t=e.split(/[\s,]+/).map(n=>n.trim()).filter(Boolean);if(t.length===0)throw new S("'load:interaction' was given no event names.");return t}function W(e){return e.kind!=="eager"&&e.kind!=="never"}function U(e,t={}){let{resolver:n,isBound:o,modules:r,strategyFor:a}=t,s=ve(r),i=new Map,l=new Set,p=d=>{let{name:g}=d;if(!g||g.includes(".")||o?.(g))return;let k=u(g);if(!k){l.add(g);return}let C=k.origin==="builtin"&&re.has(g)?z:a?.(d)??z;d.source={...k,loading:C},i.set(g,d.source)},u=d=>{if(re.has(d))return{module:s[d],export:d,origin:"builtin"};let g=n?.resolve(d);if(g)return{module:g.module,export:g.export,origin:"rule"};if(T.includes(d))return{module:s[d],export:d,origin:"builtin"}};return q(e,d=>{d.kind==="component"&&p(d)}),{resolved:i,unresolved:[...l]}}function q(e,t){let n=Array.isArray(e)?e:[e];for(let o of n){t(o);let r=o.children;r&&q(r,t)}}function G(e){let t=[];q(e,a=>{a.kind==="component"&&a.source&&t.push(a)});let n=new Set,o=new Set;for(let a of t){let{module:s,loading:i}=a.source;i.kind==="eager"&&n.add(s),i.kind==="never"&&o.add(s)}let r=new Map;for(let a of t){let s=a.source;W(s.loading)&&n.has(s.module)&&(s.loading={kind:"eager"},r.set(s.module,(r.get(s.module)??0)+1))}return{collapsed:r,conflicted:[...o].filter(a=>n.has(a))}}import{types as c,template as Ve}from"@babel/core";import{types as _,traverse as Pt,template as Ot}from"@babel/core";import _e from"@babel/generator";var Ze=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),xe={className:"class",htmlFor:"for"},Qe=new Set(["innerHTML","outerHTML","innerText","textContent","value","checked","selected","muted","defaultValue","defaultChecked","children","ref"]),et=new Set(["script","style","textarea","title"]);function ie(e){return et.has(e)}function ye(e){return xe[e]??e}function $(e){return e.kind!=="attr"||e.expr!==void 0||e.name.includes(":")?!1:!Qe.has(e.name)}function se(e){if(!e.static||ie(e.tag))return!1;for(let t of e.props)if(!$(t))return!1;for(let t of e.children)if(t.kind!=="text"&&!(t.kind==="element"&&se(t)))return!1;return!0}function L(e){let t=e.props.map(nt).filter(Boolean).join(""),n=`<${e.tag}${t}>`;return Ze.has(e.tag)?n:`${n}${e.children.map(tt).join("")}</${e.tag}>`}function tt(e){if(e.kind==="text")return ot(e.value);if(e.kind!=="element")throw new Error(`serializeStatic: unexpected ${e.kind}`);return L(e)}function nt(e){let t=xe[e.name]??e.name,n=e.literal;return n===!0||n===void 0?` ${t}`:n===!1||n===null?"":` ${t}="${rt(String(n))}"`}function rt(e){return e.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function ot(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}var it="<!--fx-->",st="<!--fx/-->";function Y(e){return e.kind==="expr"||e.kind==="component"||e.kind==="control"}function at(e){return e.kind==="text"||e.kind==="element"&&Ee(e)}function Ee(e){return e.svg||ie(e.tag)||!e.props.every(t=>$(t))?!1:e.children.every(t=>at(t)||Y(t))}function K(e){if(Y(e))return!0;let t=e.children;return t?t.some(K):!1}function Ne(e){for(let t=0;t<e.children.length;t++){let n=e.children[t];if(n.kind==="text"&&(n.value===""||e.children[t+1]?.kind==="text"))return!1}return e.children.every(t=>t.kind!=="element"||Ne(t))}function be(e){if(!Ee(e)||!Ne(e)||!e.children.some(K))return null;let t=[],n=[],o=0,r=s=>{let i=`_n$${o++}`;return t.push({ref:i,expr:s}),i};return a(e,"_el$"),{html:lt(e),tag:e.tag,steps:t,holes:n};function a(s,i){let l=-1;s.children.forEach((u,d)=>{K(u)&&(l=d)});let p=null;for(let u=0;u<=l;u++){let d=s.children[u],g=p?`${p}.nextSibling`:`${i}.firstChild`;if(Y(d)){let C=r(g),f=r(`holeEnd(${C})`);n.push({parentRef:i,startRef:C,endRef:f,node:d}),p=f;continue}let k=r(g);d.kind==="element"&&K(d)&&a(d,k),p=k}}}function lt(e){return L(ke(e)).split(Se).join(it+st)}function ke(e){return{...e,children:e.children.map(t=>Y(t)?{kind:"text",value:Se}:t.kind==="element"?ke(t):t)}}var Se="\0fx-hole\0";var ae={version:1,module:"@fluixi/dom",symbols:["createNativeElement","insert","spread","setAttribute","delegateEvents","createComponent","createMemo","untrack","Show","For","Index","Switch","Match","Dynamic","ErrorBoundary"]},tn={version:2,module:"@fluixi/dom",symbols:[...ae.symbols,"template","cloneTemplate","walk"]};var ct={show:"Show",for:"For",index:"Index",switch:"Switch",match:"Match",dynamic:"Dynamic",errorBoundary:"ErrorBoundary",suspense:"Suspense"};function pt(e){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e)}function Ce(e){return pt(e)?e:JSON.stringify(e)}function dt(e){return e.expr!==void 0?e.reactive?`() => (${e.expr})`:`(${e.expr})`:JSON.stringify(e.literal??!0)}function ut(e){return e.expr!==void 0?`(${e.expr})`:JSON.stringify(e.literal??!0)}function mt(e,t,n){let o=e.filter(i=>i.kind==="spread"),a=e.filter(i=>i.kind!=="spread").map(i=>`${Ce(i.name)}: ${dt(i)}`);t!=null&&a.push(`children: ${t}`);let s=`{ ${a.join(", ")} }`;return o.length>0?(n.add("mergeProps"),`mergeProps(${o.map(i=>i.expr).join(", ")}, ${s})`):s}function we(e,t,n){return e.length===1?P(e[0],t,n):`[${e.map(o=>P(o,t,n)).join(", ")}]`}function Ie(e,t,n,o,r){o.add("createMemo"),o.add("createComponent");let a=t.filter(p=>p.kind==="spread"),i=t.filter(p=>p.kind!=="spread").map(p=>`get ${Ce(p.name)}() { return ${ut(p)}; }`);n.length>0&&i.push(`get children() { return ${we(n,o,r)}; }`);let l=`{ ${i.join(", ")} }`;return a.length>0&&(o.add("mergeProps"),l=`mergeProps(${a.map(p=>p.expr).join(", ")}, ${l})`),`createMemo(() => createComponent(${e}, ${l}))`}function ft(e,t){let n=ye(t.name),o=t.literal;return o===!0||o===void 0?`${e}.setAttribute(${JSON.stringify(n)}, "");`:o===!1||o===null?"":`${e}.setAttribute(${JSON.stringify(n)}, ${JSON.stringify(String(o))});`}var Te=!1;function P(e,t,n){switch(e.kind){case"text":return JSON.stringify(e.value);case"expr":return e.reactive?`() => (${e.code})`:`(${e.code})`;case"fragment":return e.children.length===0?"null":we(e.children,t,n);case"component":return Ie(e.name,e.props,e.children,t,n);case"control":{let o=ct[e.control]??e.control;return t.add(o),Ie(o,e.props,e.children,t,n)}case"element":{if(n&&e.static&&!e.svg&&se(e)){t.add("templateNode");let i=`_tmpl$${n.length}`;return n.push({id:i,html:L(e),tag:e.tag,svg:!1}),`templateNode(${i}, ${JSON.stringify(e.tag)})`}if(n&&Te){let i=be(e);if(i){t.add("templateNode"),t.add("insert"),t.add("holeEnd"),t.add("holeContent"),t.add("holeScope");let l=`_tmpl$${n.length}`;n.push({id:l,html:i.html,tag:i.tag,svg:!1});let p=[`const _el$ = templateNode(${l}, ${JSON.stringify(i.tag)}, true);`];for(let u of i.steps)p.push(`const ${u.ref} = ${u.expr};`);for(let u of i.holes)p.push(`insert(${u.parentRef}, holeScope(${u.startRef}, () => (${P(u.node,t,n)})), ${u.endRef}, holeContent(${u.startRef}, ${u.endRef}));`);return p.push("return _el$;"),`(() => { ${p.join(" ")} })()`}}t.add("createNativeElement");let o=JSON.stringify(e.tag),r="_el$",a=[],s=e.svg?`${o}, true`:o;if(a.push(`const ${r} = createNativeElement(${s});`),e.props.length>0)if(!e.svg&&e.props.every($))for(let i of e.props)a.push(ft(r,i));else{t.add("spread");let i=e.svg?", isSVG: true":"";a.push(`spread({ element: ${r}, props: ${mt(e.props,null,t)}${i} });`)}for(let i of e.children){t.add("insert");let l=P(i,t,n),p=i.kind==="expr"&&i.reactive||i.kind==="component"||i.kind==="control";a.push(p?`insert(${r}, ${l}, null);`:`insert(${r}, ${l});`)}return a.push(`return ${r};`),`(() => { ${a.join(" ")} })()`}}}function O(e,t){if(!t||t.length===0)return e;let n=new Map(t.map(o=>[o.id,JSON.stringify(o.html)]));return e.replace(/_tmpl\$\d+/g,o=>n.get(o)??o)}var I={name:"imperative",contract:ae,emit(e,t){let n=new Set,o=t?.templateClone!==!1?[]:void 0;return Te=t?.partialTemplates===!0,{code:P(e,n,o),imports:Array.from(n),templates:o}}};import{types as ce}from"@babel/core";import Pe from"@babel/generator";import{parseTemplate as gt}from"@fluixi/template-parser";function A(e){let t=e.split(/\r\n|\n|\r/),n=0;for(let r=0;r<t.length;r++)/[^ \t]/.test(t[r])&&(n=r);let o="";for(let r=0;r<t.length;r++){let a=t[r].replace(/\t/g," ");r!==0&&(a=a.replace(/^ +/,"")),r!==t.length-1&&(a=a.replace(/ +$/,"")),a&&(r!==n&&(a+=" "),o+=a)}return o}var Me=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function ht(e){return e.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${")}function $e(e){return e.charAt(0).toUpperCase()+e.slice(1)}var le=class{constructor(t,n){this.holes=t;this.used=n}hole(t){return this.holes[t]??{code:"undefined",reactive:!1}}emit(t){let{code:n,imports:o,templates:r}=I.emit(t,{});for(let a of o)this.used.add(a);return O(n,r)}lowerRoot(t){let n=this.lowerChildren(t);return n.length===1?n[0]:{kind:"fragment",children:n}}lowerChildren(t){let n=[];for(let o=0;o<t.length;o++){let r=t[o];if(r.kind==="Element"||r.kind==="Component"){let s=r.attributes.find(i=>i.kind==="IfDirective");if(s&&s.kind==="IfDirective"){let i=o+1;i<t.length&&this.isBlankText(t[i])&&i++;let l=t[i],p=l&&(l.kind==="Element"||l.kind==="Component")&&l.attributes.some(u=>u.kind==="ElseDirective");n.push(this.lowerIf(r,s.hole,p?l:null)),p&&(o=i);continue}if(r.attributes.some(i=>i.kind==="EachDirective")){n.push(this.lowerEach(r));continue}}let a=this.lowerNode(r);a&&n.push(a)}return n}isBlankText(t){return t.kind==="Text"&&!t.raw&&A(t.value)===""}lowerNode(t){switch(t.kind){case"Text":{if(t.raw)return{kind:"text",value:t.value};let n=A(t.value);return n?{kind:"text",value:n}:null}case"Comment":return null;case"Expression":{let n=this.hole(t.hole);return{kind:"expr",code:n.code,reactive:n.reactive}}case"Fragment":return{kind:"fragment",children:this.lowerChildren(t.children)};case"Element":return this.lowerElement(t);case"Component":return this.lowerComponent(t);default:return null}}lowerElement(t){let n=t.attributes.find(o=>o.kind==="Attribute"&&o.name==="is");if(t.tag==="component"&&n&&n.value&&n.value.kind==="hole"){let o=t.attributes.filter(a=>a!==n),r=this.lowerComponent({...t,kind:"Component",tag:"Dynamic",tagHole:null,attributes:o});return r.props.unshift({name:"component",kind:"attr",expr:`() => (${this.hole(n.value.hole).code})`}),r}return{kind:"element",tag:t.tag,svg:t.namespace==="svg",props:this.lowerAttributes(t.attributes),children:this.lowerChildren(t.children),static:!1}}lowerComponent(t){let n=t.tagHole!=null?this.hole(t.tagHole).code:t.tag,o=this.lowerAttributes(t.attributes),{slots:r,rest:a}=this.partitionSlots(t.children);for(let[l,p]of r){let u=p.length===1?p[0]:{kind:"fragment",children:p},d={name:l,kind:"attr",expr:this.emit(u),jsxElement:!0},g=o.findIndex(k=>k.name===l);g>=0?o[g]=d:o.push(d)}let s=t.attributes.find(l=>l.kind==="LoadDirective"),i=s?V(`load:${s.strategy}`,s.modifier):void 0;return{kind:"component",name:n,props:o,children:this.lowerChildren(a),...i?{load:i}:{}}}partitionSlots(t){let n=new Map,o=[];for(let r of t){if(r.kind==="Element"||r.kind==="Component"){let a=r.attributes.find(s=>s.kind==="Attribute"&&s.name==="slot");if(a&&a.value&&a.value.kind==="static"){let s={...r,attributes:r.attributes.filter(p=>p!==a)},i=s.kind==="Element"?this.lowerElement(s):this.lowerComponent(s),l=n.get(a.value.value)??[];l.push(i),n.set(a.value.value,l);continue}}o.push(r)}return{slots:n,rest:o}}lowerIf(t,n,o){let r=this.hole(n),a=[{name:"when",kind:"attr",expr:r.code,reactive:r.reactive}];if(o){let i=this.stripAndLower(o,l=>l.kind==="ElseDirective");a.push({name:"fallback",kind:"attr",expr:this.emit(i),jsxElement:!0})}let s=this.stripAndLower(t,i=>i.kind==="IfDirective");return{kind:"component",name:"Show",props:a,children:[s]}}lowerEach(t){let n=t.attributes.find(l=>l.kind==="EachDirective");if(!n||n.kind!=="EachDirective")return this.lowerNode(t);let o=this.hole(n.hole),r=[{name:"each",kind:"attr",expr:o.code,reactive:o.reactive}];if(n.key){let l="static"in n.key?`(item) => item[${JSON.stringify(n.key.static)}]`:this.hole(n.key.hole).code;r.push({name:"by",kind:"attr",expr:l})}let a=this.itemArrow(t),s;if(a){let l={kind:"expr",code:a.body,reactive:a.bodyReactive},p=this.rebuildWithChildren(t,[l]);s=`(${a.params.join(", ")}) => (${this.emit(p)})`}else{let l=this.stripAndLower(t,p=>p.kind==="EachDirective");s=`() => (${this.emit(l)})`}return{kind:"component",name:"For",props:r,children:[{kind:"expr",code:s,reactive:!1}]}}itemArrow(t){let n=t.children.filter(o=>!this.isBlankText(o));return n.length!==1||n[0].kind!=="Expression"?null:this.hole(n[0].hole).arrow??null}stripAndLower(t,n){let o={...t,attributes:t.attributes.filter(r=>!n(r))};return o.kind==="Element"?this.lowerElement(o):this.lowerComponent(o)}rebuildWithChildren(t,n){let o=this.lowerAttributes(t.attributes.filter(r=>r.kind!=="EachDirective"));return t.kind==="Element"?{kind:"element",tag:t.tag,svg:t.namespace==="svg",props:o,children:n,static:!1}:{kind:"component",name:t.tag,props:o,children:n}}lowerAttributes(t){let n=[],o=[],r=!1,a=[],s=!1,i=[];for(let l of t)switch(l.kind){case"IfDirective":case"EachDirective":case"ElseDirective":break;case"Attribute":n.push(this.plainAttr(l));break;case"PropertyBinding":n.push({name:l.name,kind:"prop",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"EventBinding":n.push(this.eventProp(l));break;case"RefBinding":n.push({name:"ref",kind:"ref",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"Spread":n.push({name:"",kind:"spread",expr:this.hole(l.hole).code});break;case"ClassDirective":{let p=this.hole(l.hole);o.push(`${JSON.stringify(l.name)}: ${p.code}`),r=r||p.reactive;break}case"StyleDirective":{let p=this.hole(l.hole);a.push(`${JSON.stringify(l.name)}: ${p.code}`),s=s||p.reactive;break}case"BindDirective":n.push(...this.bindProps(l.name,this.hole(l.hole).code));break;case"UseDirective":{let p=l.name??(l.hole!=null?this.hole(l.hole).code:null);if(!p)break;i.push(l.name!=null&&l.hole!=null?`[${p}, () => (${this.hole(l.hole).code})]`:`[${p}]`);break}}return o.length>0&&n.push({name:"classList",kind:"attr",expr:`{ ${o.join(", ")} }`,reactive:r}),a.length>0&&n.push({name:"style",kind:"attr",expr:`{ ${a.join(", ")} }`,reactive:s}),i.length>0&&n.push({name:"use",kind:"attr",expr:`[${i.join(", ")}]`}),n}eventProp(t){let n=t.name.toLowerCase(),o=this.hole(t.hole).code;if(!(t.syntax==="colon"||t.modifiers.length>0))return{name:"on"+$e(t.name),kind:"event",event:{name:n,delegated:Me.has(n)},expr:o};let a=this.wrapHandler(o,t.modifiers),s=this.eventOptions(t.modifiers),i=s?`[${a}, ${s}]`:a;return{name:"on:"+n,kind:"attr",expr:i}}wrapHandler(t,n){let o=n.includes("self")?"if (e.target !== e.currentTarget) return; ":"",r=[];return n.includes("prevent")&&r.push("e.preventDefault();"),n.includes("stop")&&r.push("e.stopPropagation();"),!o&&r.length===0?t:`(e) => { ${o}${r.join(" ")} return (${t})(e); }`}eventOptions(t){let n=[];return t.includes("capture")&&n.push("capture: true"),t.includes("once")&&n.push("once: true"),t.includes("passive")&&n.push("passive: true"),n.length?`{ ${n.join(", ")} }`:null}bindProps(t,n){let o=t==="checked",r=o?"change":"input",a=o?"checked":"value";this.used.add("bindPair");let s=`bindPair(${n})`;return[{name:t,kind:"attr",expr:`${s}[0]()`,reactive:!0},{name:"on"+$e(r),kind:"event",event:{name:r,delegated:Me.has(r)},expr:`(e) => ${s}[1](e.target.${a})`}]}plainAttr(t){let n=t.value,o=t.name;t.name==="class"?o=n&&n.kind==="hole"&&this.hole(n.hole).object?"classList":"className":t.name==="html"&&(o="innerHTML");let a={name:o,kind:"attr"};if(n==null)return a.literal=!0,a;if(n.kind==="static")return a.literal=n.value,a;if(n.kind==="hole"){let l=this.hole(n.hole);return a.expr=l.code,a.reactive=l.reactive,a}let s=!1,i=n.parts.map(l=>{if("text"in l)return ht(l.text);let p=this.hole(l.hole);return s=s||p.reactive,"${"+p.code+"}"}).join("");return a.expr="`"+i+"`",a.reactive=s,a}};function Le(e,t,n,o={}){let{root:r}=gt(e,{svg:o.svg});return new le(t,n).lowerRoot(r.children)}var vt=Pe.default??Pe;function Rt(e){return vt(e,{concise:!0}).code}function xt(e,t,n){let o={code:Z(e,t,n),reactive:pe(e)};if(ce.isArrowFunctionExpression(e)&&!ce.isBlockStatement(e.body)){let r=e.body;o.arrow={params:e.params.map(a=>Rt(a)),body:Z(r,t,n),bodyReactive:pe(r)}}return ce.isObjectExpression(e)&&(o.object=!0),o}function Oe(e,t,n={}){let o=e.quasi,r=o.expressions.map(a=>xt(a,t,n.onNested));return Le(yt(o),r,t,n)}function yt(e){let t=[];return e.quasis.forEach((n,o)=>{let r=n.value.cooked??n.value.raw;if(t.push({kind:"static",text:r,start:n.start??0}),o<e.expressions.length){let a=e.expressions[o];t.push({kind:"hole",index:o,start:a.start??0,end:a.end??0})}}),t}function Et(e){switch(e.kind){case"event":return"event";case"ref":return"ref";case"spread":return"spread";case"class":case"style":return"class-or-style-directive";case"attr":case"prop":return e.reactive?"reactive-prop":e.expr!==void 0?"expression-prop":void 0;default:return"expression-prop"}}function Q(e){let t=[],n=new Map,o=r=>{switch(r.kind){case"text":return!0;case"expr":return!1;case"component":case"control":for(let a of r.children)o(a);return!1;case"fragment":for(let a of r.children)o(a);return!1;case"element":{let a=!0;for(let i of r.children)o(i)||(a=!1);let s;for(let i of r.props)if(s=Et(i),s)break;return!s&&!a&&(s=Nt(r)),r.static=!s,s?n.set(r,s):t.push(r),r.static}default:return!1}};for(let r of Array.isArray(e)?e:[e])o(r);return{staticElements:t,reasons:n}}function Nt(e){for(let t of e.children){if(t.kind==="expr")return"expression-child";if(t.kind==="component")return"component-child";if(t.kind==="control")return"control-child";if(t.kind==="element"&&!t.static||t.kind==="fragment")return"expression-child"}return"expression-child"}function ee(e,t=new Set,n={}){let o=Oe(e,t,n);return Q(o),o}var bt="children";function D(e){switch(e.kind){case"call":return!0;case"member":return e.property!==bt;case"compound":return e.parts.some(D);case"opaque":return!1}}var kt=new Set(["CallExpression","OptionalCallExpression"]),St=new Set(["MemberExpression","OptionalMemberExpression"]);function j(e){if(!e)return{kind:"opaque"};if(kt.has(e.type))return{kind:"call"};if(St.has(e.type)){let t=e.property;return{kind:"member",property:!(e.computed===!0)&&t?.type==="Identifier"?t.name:null}}return e.type==="ConditionalExpression"?{kind:"compound",parts:[e.test,e.consequent,e.alternate].map(J)}:e.type==="LogicalExpression"||e.type==="BinaryExpression"?{kind:"compound",parts:[e.left,e.right].map(J)}:e.type==="TemplateLiteral"?{kind:"compound",parts:e.expressions.map(J)}:e.type==="ObjectExpression"?{kind:"compound",parts:e.properties.filter(n=>(n.type==="ObjectProperty"||n.type==="Property")&&n.computed!==!0).map(n=>J(n.value))}:e.type==="ArrayExpression"?{kind:"compound",parts:e.elements.filter(n=>n!=null&&n.type!=="SpreadElement").map(J)}:{kind:"opaque"}}var J=e=>j(e);var It=new Set(["svg","path","circle","rect","line","polygon","polyline","ellipse","g","defs","clipPath","text"]),Ct=/^on[A-Z]/,wt=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]),Je=e=>D(j(e));function F(e){if(e.type==="StringLiteral"||e.type==="NumericLiteral"||e.type==="BooleanLiteral"||e.type==="Literal"&&(typeof e.value=="string"||typeof e.value=="number"||typeof e.value=="boolean"))return e.value}var de=e=>!!e&&typeof F(e)=="string";function Tt(e,t){return e.type==="JSXIdentifier"?{tag:e.name,component:e.name[0]!==e.name[0].toLowerCase()}:e.type==="JSXMemberExpression"?{tag:t.code(e),component:!0}:e.type==="JSXNamespacedName"?{tag:`${e.namespace.name}:${e.name.name}`,component:!1}:{tag:"div",component:!1}}function ue(e){return e.type==="JSXIdentifier"?e.name==="class"?"className":e.name:e.type==="JSXNamespacedName"?`${e.namespace.name}:${e.name.name}`:"unknown"}function Mt(e,t){let n=ue(e.name),o=Ct.test(n),r=o||n.startsWith("on:")||n==="ref",s={name:n,kind:o?"event":"attr"};if(o){let l=n.slice(2).toLowerCase();s.event={name:l,delegated:wt.has(l)}}let i=e.value;if(i==null)return s.literal=!0,s;if(de(i))return s.literal=F(i),s;if(i.type==="JSXExpressionContainer"&&i.expression?.type!=="JSXEmptyExpression"){let l=i.expression,p=F(l);return p!==void 0?(s.literal=p,s):(s.expr=t.code(l),s.reactive=r?!1:Je(l),(l.type==="JSXElement"||l.type==="JSXFragment")&&(s.jsxElement=!0),s)}return s.literal=!0,s}function Ae(e,t){let n=e.value;return n==null?null:de(n)?JSON.stringify(F(n)):n.type==="JSXExpressionContainer"&&n.expression?.type!=="JSXEmptyExpression"?t.code(n.expression):null}function $t(e,t){let n=[],o=[];for(let r of e){if(r.type==="JSXSpreadAttribute"){n.push({name:"",kind:"spread",expr:t.code(r.argument)});continue}if(r.type!=="JSXAttribute"||oe(ue(r.name)))continue;let a=r.name.type==="JSXNamespacedName"?r.name.namespace.name:null;if(a==="use"){let s=r.name.name.name;t.used.add(s);let i=Ae(r,t);o.push(i!=null?`[${s}, () => (${i})]`:`[${s}]`);continue}if(a==="oncapture"){let s=r.name.name.name.toLowerCase(),i=Ae(r,t)??"undefined";n.push({name:"on:"+s,kind:"attr",expr:`[${i}, { capture: true }]`});continue}n.push(Mt(r,t))}return o.length>0&&n.push({name:"use",kind:"attr",expr:`[${o.join(", ")}]`}),n}function De(e,t){let n=[];for(let o of e)if(o.type==="JSXText"){let r=A(o.value);r&&n.push({kind:"text",value:r})}else if(o.type==="JSXExpressionContainer"){if(o.expression?.type!=="JSXEmptyExpression"){let r=o.expression;n.push({kind:"expr",code:t.code(r),reactive:Je(r)})}}else o.type==="JSXElement"||o.type==="JSXFragment"?n.push(je(o,t)):o.type==="JSXSpreadChild"&&n.push({kind:"expr",code:t.code(o.expression),reactive:!1});return n}function Lt(e){for(let t of e){if(t.type!=="JSXAttribute")continue;let n=ue(t.name);if(oe(n)){if(t.value&&!de(t.value))throw new S(`'${n}' needs a literal value, not an expression — the strategy is compile-time.`);return V(n,t.value?F(t.value):null)}}}function je(e,t){if(e.type==="JSXFragment")return{kind:"fragment",children:De(e.children,t)};let{tag:n,component:o}=Tt(e.openingElement.name,t),r=$t(e.openingElement.attributes,t),a=De(e.children,t);if(o){let s=Lt(e.openingElement.attributes);return{kind:"component",name:n,props:r,children:a,...s?{load:s}:{}}}return{kind:"element",tag:n,svg:It.has(n),props:r,children:a,static:!1}}function Fe(e,t){let n=je(e,t);return Q(n),n}var At=_e.default??_e;function Xe(e){return At(e,{concise:!0}).code}function Dt(e,t,n){let o=_.cloneNode(e,!0),r=_.file(_.program([_.expressionStatement(o)])),a=!1,s=(i,l,p)=>{for(let u of p)t.add(u);i.replaceWith(Ot.expression(l,{placeholderPattern:!1,plugins:["typescript"]})()),i.skip(),a=!0};return Pt(r,{"JSXElement|JSXFragment"(i){let l=i.node,p=me(l,t,n);n?.(p);let{code:u,imports:d,templates:g}=I.emit(p,{});s(i,O(u,g),d)},TaggedTemplateExpression(i){let l=i.node.tag;if(!_.isIdentifier(l)||l.name!=="html"&&l.name!=="svg")return;let p=ee(i.node,t,{svg:l.name==="svg",onNested:n});n?.(p);let{code:u,imports:d,templates:g}=I.emit(p,{});s(i,O(u,g),d)}}),a?r.program.body[0].expression:e}function Z(e,t,n){return Xe(Dt(e,t,n))}function pe(e){return D(j(e))}function me(e,t=new Set,n){return Fe(e,{code:r=>r.type==="JSXMemberExpression"?Xe(r):Z(r,t,n),used:t})}var Be=new Set(M),He=new Set(T),X=Jt((e,t={})=>{e.assertVersion(7);let{delegateEvents:n=!0,signalModule:o="@fluixi/dom",controlFlowModule:r="@fluixi/dom",routerModule:a="@fluixi/core/router",reactiveModule:s="@fluixi/reactive/signal",templateClone:i=!0,partialTemplates:l=!0,format:p="both",litTag:u="html",resolve:d=[]}=t,g=he(d),k=p==="lit"||p==="both",C={irImports:new Set,libModule:"@fluixi/core",controlFlowModule:r,routerModule:a,templateClone:i,partialTemplates:l,hasJSX:!1,hasLitHTML:!1,needsControlFlowImport:!1,needsCreateMemo:!1,controlFlowComponents:new Set,resolvedComponents:new Map,deferredComponents:new Map,componentResolver:g,delegatedEvents:new Set,staticTemplates:new Map,staticCounter:0};return{name:"@fluixi/babel-plugin-jsx",manipulateOptions(f,m){m.plugins.push("jsx","typescript")},pre(f){Object.assign(f,C)},visitor:{Program:{enter(f,m){Object.assign(m,{hasJSX:!1,hasLitHTML:!1,hasLitIR:!1,needsControlFlowImport:!1,needsCreateMemo:!1,controlFlowComponents:new Set,resolvedComponents:new Map,deferredComponents:new Map,componentResolver:g,delegatedEvents:new Set,staticTemplates:new Map,staticCounter:0,libModule:"@fluixi/core",controlFlowModule:r,routerModule:a,templateClone:i,partialTemplates:l,irImports:new Set,needsCreateNativeElement:!1,needsInsert:!1,needsSpread:!1,needsCreateComponent:!1,needsMergeProps:!1})},exit(f,m){let N=[];if(m.hasJSX||m.hasLitIR){if(m.irImports.size>0){let v=new Set(["Show","For","Index","Switch","Match","Dynamic","ErrorBoundary","Portal","Suspense"]),h=new Set(["createMemo","createEffect","createRenderEffect","createRoot","createSignal","onCleanup","batch","untrack"]),x=Array.from(m.irImports),y=R=>c.importSpecifier(c.identifier(R),c.identifier(R)),b=R=>!f.scope.hasBinding(R),w=x.filter(R=>h.has(R)&&b(R)),E=x.filter(R=>!v.has(R)&&!h.has(R)&&b(R)),H=x.filter(R=>v.has(R)&&b(R));w.length>0&&N.push(c.importDeclaration(w.map(y),c.stringLiteral(s))),E.length>0&&N.push(c.importDeclaration(E.map(y),c.stringLiteral(o))),H.length>0&&N.push(c.importDeclaration(H.map(y),c.stringLiteral(r)))}if(m.needsCreateMemo&&!f.scope.hasBinding("createMemo")&&N.push(c.importDeclaration([c.importSpecifier(c.identifier("createMemo"),c.identifier("createMemo"))],c.stringLiteral(s))),m.needsControlFlowImport&&m.controlFlowComponents.size>0){let v=Array.from(m.controlFlowComponents).filter(E=>!f.scope.hasBinding(E)),h=m.libModule??"@fluixi/core",x=v.filter(E=>He.has(E)),y=v.filter(E=>Be.has(E)),b=v.filter(E=>!Be.has(E)&&!He.has(E)),w=(E,H)=>c.importDeclaration(E.map(R=>c.importSpecifier(c.identifier(R),c.identifier(R))),c.stringLiteral(H));b.length>0&&N.push(w(b,r)),y.length>0&&N.push(w(y,h)),x.length>0&&N.push(w(x,a))}let B=[];if(m.deferredComponents.size>0){for(let[v,h]of m.deferredComponents)f.scope.hasBinding(v)||B.push(c.variableDeclaration("const",[c.variableDeclarator(c.identifier(v),c.callExpression(c.identifier("deferred"),[c.arrowFunctionExpression([],c.callExpression(c.import(),[c.stringLiteral(h.module)])),c.objectExpression([c.objectProperty(c.identifier("strategy"),jt(h.strategy)),c.objectProperty(c.identifier("export"),c.stringLiteral(h.export))])]))]));B.length>0&&!f.scope.hasBinding("deferred")&&N.push(c.importDeclaration([c.importSpecifier(c.identifier("deferred"),c.identifier("deferred"))],c.stringLiteral(m.libModule??"@fluixi/core")))}if(m.resolvedComponents.size>0){let v=new Map;for(let[h,x]of m.resolvedComponents){if(f.scope.hasBinding(h))continue;let y=v.get(x.module)??[];y.push({local:h,exported:x.export}),v.set(x.module,y)}for(let[h,x]of v)N.push(c.importDeclaration(x.map(({local:y,exported:b})=>b==="default"?c.importDefaultSpecifier(c.identifier(y)):c.importSpecifier(c.identifier(y),c.identifier(b))),c.stringLiteral(h)))}if(n&&m.delegatedEvents.size>0){N.push(c.importDeclaration([c.importSpecifier(c.identifier("delegateEvents"),c.identifier("delegateEvents"))],c.stringLiteral(o)));let v=c.arrayExpression(Array.from(m.delegatedEvents).map(x=>c.stringLiteral(x))),h=c.expressionStatement(c.callExpression(c.identifier("delegateEvents"),[v]));f.node.body.unshift(h)}if(B.length>0&&f.node.body.unshift(...B),m.staticTemplates.size>0){let v=[];for(let[h,x]of m.staticTemplates){let b=h.startsWith("svg:")?h.slice(4):h;v.push(c.variableDeclaration("const",[c.variableDeclarator(c.identifier(x),c.stringLiteral(b))]))}f.node.body.unshift(...v)}}N.length>0&&f.node.body.unshift(...Ft(N))}},JSXElement(f,m){m.hasJSX=!0,f.replaceWith(ze(f.node,m))},JSXFragment(f,m){m.hasJSX=!0,f.replaceWith(ze(f.node,m))},TaggedTemplateExpression(f,m){k&&c.isIdentifier(f.node.tag)&&(f.node.tag.name===u||f.node.tag.name==="svg")&&f.replaceWith(_t(f.node,m))}}}});function We(e){return t=>{U(t,{resolver:e.componentResolver,modules:{controlFlowModule:e.controlFlowModule,coreModule:e.libModule,routerModule:e.routerModule},strategyFor:n=>n.load}),G(t),te(t,e)}}function jt(e){let t=[c.objectProperty(c.identifier("kind"),c.stringLiteral(e.kind))];return e.kind==="visible"&&e.rootMargin&&t.push(c.objectProperty(c.identifier("rootMargin"),c.stringLiteral(e.rootMargin))),e.kind==="interaction"&&t.push(c.objectProperty(c.identifier("events"),c.arrayExpression(e.events.map(n=>c.stringLiteral(n))))),e.kind==="media"&&t.push(c.objectProperty(c.identifier("query"),c.stringLiteral(e.query))),c.objectExpression(t)}function Ue(e,t,n){if(!t||t.length===0)return e;let o=new Map;for(let r of t){let a=`${r.svg?"svg:":""}${r.html}`,s=n.staticTemplates.get(a);s||(s=`_tmpl$${n.staticTemplates.size}`,n.staticTemplates.set(a,s)),o.set(r.id,s)}return e.replace(/_tmpl\$\d+/g,r=>o.get(r)??r)}function ze(e,t){let n=new Set,o=me(e,n,We(t));U(o,{resolver:t.componentResolver,modules:{controlFlowModule:t.controlFlowModule,coreModule:t.libModule,routerModule:t.routerModule},strategyFor:l=>l.load}),G(o);let{code:r,imports:a,templates:s}=I.emit(o,{templateClone:t.templateClone,partialTemplates:t.partialTemplates});for(let l of a)n.add(l);for(let l of n)t.irImports.add(l);te(o,t);let i=Ue(r,s,t);return Ve.expression(i,{placeholderPattern:!1,plugins:["typescript"]})()}function Ft(e){let t=new Map,n=[];for(let o of e){let r=o.source.value;if(!o.specifiers.every(i=>c.isImportSpecifier(i))){n.push(o);continue}let s=t.get(r);if(!s){let i=new Set(o.specifiers.map(l=>l.local.name));t.set(r,{decl:o,names:i}),n.push(o);continue}for(let i of o.specifiers)s.names.has(i.local.name)||(s.names.add(i.local.name),s.decl.specifiers.push(i))}return n}function _t(e,t){let n=new Set,o=c.isIdentifier(e.tag)&&e.tag.name==="svg",r=ee(e,n,{svg:o,onNested:We(t)});U(r,{resolver:t.componentResolver,modules:{controlFlowModule:t.controlFlowModule,coreModule:t.libModule,routerModule:t.routerModule},strategyFor:p=>p.load}),G(r);let{code:a,imports:s,templates:i}=I.emit(r,{templateClone:t.templateClone,partialTemplates:t.partialTemplates});for(let p of s)n.add(p);for(let p of n)t.irImports.add(p);te(r,t),t.hasLitIR=!0;let l=Ve.expression(Ue(a,i,t),{placeholderPattern:!1,plugins:["typescript"]})();return Xt(l,e),l}function Xt(e,t){if(!t.loc)return;let n=new Set,o=r=>{if(!n.has(r)){n.add(r),r.loc||(r.loc=t.loc,r.start=t.start,r.end=t.end);for(let a of c.VISITOR_KEYS[r.type]??[]){let s=r[a];if(Array.isArray(s))for(let i of s)i&&typeof i=="object"&&"type"in i&&o(i);else s&&typeof s=="object"&&"type"in s&&o(s)}}};o(e)}function te(e,t){if(e.kind==="component"&&e.source&&(e.source.origin==="builtin"?(t.controlFlowComponents.add(e.name),t.needsControlFlowImport=!0):W(e.source.loading)&&!t.resolvedComponents.has(e.name)?t.deferredComponents.set(e.name,{module:e.source.module,export:e.source.export,strategy:e.source.loading}):(t.deferredComponents.delete(e.name),t.resolvedComponents.set(e.name,{module:e.source.module,export:e.source.export}))),(e.kind==="element"||e.kind==="component"||e.kind==="control")&&"props"in e)for(let n of e.props)n.kind==="event"&&n.event?.delegated&&t.delegatedEvents.add(n.event.name);if("children"in e&&e.children)for(let n of e.children)te(n,t)}var Yn=X;function Zn(e){return[X,e]}function fe(e={}){return{plugins:[[X,{runtime:"automatic",importSource:"@fluixi/jsx",development:!1,detectReactivity:!0,useLitHTML:!0,hoistStatics:!0,delegateEvents:!0,optimizeControlFlow:!0,sourceMaps:!0,...e}]]}}var Qn={production:fe({development:!1,hoistStatics:!0,delegateEvents:!0,optimizeControlFlow:!0}),development:fe({development:!0,hoistStatics:!1,sourceMaps:!0}),minimal:fe({detectReactivity:!1,useLitHTML:!1,hoistStatics:!1,delegateEvents:!1,optimizeControlFlow:!1})};export{Yn as babelPluginReactiveJSX,Zn as createPlugin,fe as createPreset,X as default,Qn as presets};
1
+ import{declare as Wt}from"@babel/helper-plugin-utils";var nt=e=>"components"in e;function xe(e,t){return e.replace(/\$(\d+)/g,(n,o)=>t[Number(o)]??n)}function rt(e,t){return typeof t=="string"?{module:t,export:e}:t}function Ne(e=[]){let t=new Map,n=[],o=[];for(let a of e){if(!nt(a)){o.push(a);continue}for(let[i,l]of Object.entries(a.components)){let p=rt(i,l),u=t.get(i);if(u&&u.module!==p.module){let d=n.find(m=>m.name===i);d?d.modules.push(p.module):n.push({name:i,modules:[u.module,p.module]});continue}t.set(i,p)}}let r=new Map;return{resolve:a=>{if(r.has(a))return r.get(a);let i=t.get(a);if(!i)for(let l of o){let p=a.match(new RegExp(l.match.source,l.match.flags.replace("g","")));if(p){i={module:xe(l.module,p),export:l.export?xe(l.export,p):a};break}}return r.set(a,i),i},names:()=>[...t.keys()],conflicts:()=>n}}var ie=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],M=["Suspense","SuspenseList","Await"],T=["Router","Outlet","Redirect","Link"],Qt=[...ie,...M,...T],se=new Set([...ie,...M]);function be(e={}){let{controlFlowModule:t="@fluixi/dom",coreModule:n="@fluixi/core",routerModule:o="@fluixi/core/router"}=e,r={};for(let s of ie)r[s]=t;for(let s of M)r[s]=n;for(let s of T)r[s]=o;return r}var W={kind:"eager"},ot=["pointerdown","focusin","keydown"],Se=new Set(["eager","idle","visible","interaction","media","never"]),k=class extends Error{};function ae(e){return e.startsWith("load:")}function K(e,t){let n=e.slice(5);if(!Se.has(n))throw new k(`Unknown load strategy 'load:${n}'. Expected one of ${[...Se].join(", ")}.`);switch(n){case"eager":return W;case"idle":return{kind:"idle"};case"never":return{kind:"never"};case"visible":return t?{kind:"visible",rootMargin:t}:{kind:"visible"};case"interaction":return{kind:"interaction",events:t?it(t):[...ot]};case"media":if(!t)throw new k(`'load:media' needs a query, e.g. load:media="(min-width: 1024px)".`);return{kind:"media",query:t};default:throw new k(`Unhandled load strategy '${n}'.`)}}function it(e){let t=e.split(/[\s,]+/).map(n=>n.trim()).filter(Boolean);if(t.length===0)throw new k("'load:interaction' was given no event names.");return t}function G(e){return e.kind!=="eager"&&e.kind!=="never"}function q(e,t={}){let{resolver:n,isBound:o,modules:r,strategyFor:s}=t,a=be(r),i=new Map,l=new Set,p=d=>{let{name:m}=d;if(!m||m.includes(".")||o?.(m))return;let S=u(m);if(!S){l.add(m);return}let I=S.origin==="builtin"&&se.has(m)?W:s?.(d)??W;d.source={...S,loading:I},i.set(m,d.source)},u=d=>{if(se.has(d))return{module:a[d],export:d,origin:"builtin"};let m=n?.resolve(d);if(m)return{module:m.module,export:m.export,origin:"rule"};if(T.includes(d))return{module:a[d],export:d,origin:"builtin"}};return Y(e,d=>{d.kind==="component"&&p(d)}),{resolved:i,unresolved:[...l]}}function Y(e,t){let n=Array.isArray(e)?e:[e];for(let o of n){t(o);let r=o.children;r&&Y(r,t)}}function Z(e){let t=[];Y(e,s=>{s.kind==="component"&&s.source&&t.push(s)});let n=new Set,o=new Set;for(let s of t){let{module:a,loading:i}=s.source;i.kind==="eager"&&n.add(a),i.kind==="never"&&o.add(a)}let r=new Map;for(let s of t){let a=s.source;G(a.loading)&&n.has(a.module)&&(a.loading={kind:"eager"},r.set(a.module,(r.get(a.module)??0)+1))}return{collapsed:r,conflicted:[...o].filter(s=>n.has(s))}}import{types as c,template as Qe}from"@babel/core";import{types as X,traverse as Xt,template as Vt}from"@babel/core";import Ke from"@babel/generator";var st=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),Ee={className:"class",htmlFor:"for"},at=new Set(["innerHTML","outerHTML","innerText","textContent","value","checked","selected","muted","defaultValue","defaultChecked","children","ref"]),lt=new Set(["script","style","textarea","title"]);function le(e){return lt.has(e)}function Ie(e){return Ee[e]??e}function P(e){return e.kind!=="attr"||e.expr!==void 0||e.name.includes(":")?!1:!at.has(e.name)}function ce(e){if(!e.static||le(e.tag))return!1;for(let t of e.props)if(!P(t))return!1;for(let t of e.children)if(t.kind!=="text"&&!(t.kind==="element"&&ce(t)))return!1;return!0}function O(e){let t=e.props.map(pt).filter(Boolean).join(""),n=`<${e.tag}${t}>`;return st.has(e.tag)?n:`${n}${e.children.map(ct).join("")}</${e.tag}>`}function ct(e){if(e.kind==="text")return dt(e.value);if(e.kind!=="element")throw new Error(`serializeStatic: unexpected ${e.kind}`);return O(e)}function pt(e){let t=Ee[e.name]??e.name,n=e.literal;return n===!0||n===void 0?` ${t}`:n===!1||n===null?"":` ${t}="${ut(String(n))}"`}function ut(e){return e.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function dt(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function pe(e){let t=[],n,o=r=>{n??=r.at?.file,t.push(r.at?.line??0,r.at?.column??0);for(let s of r.children)s.kind==="element"&&o(s)};return o(e),n&&t.some(r=>r!==0)?{file:n,pos:t}:void 0}var mt="<!--fx-->",ft="<!--fx/-->";function ee(e){return e.kind==="expr"||e.kind==="component"||e.kind==="control"}function gt(e){return e.kind==="text"||e.kind==="element"&&ke(e)}function ke(e){return e.svg||le(e.tag)||!e.props.every(t=>P(t))?!1:e.children.every(t=>gt(t)||ee(t))}function Q(e){if(ee(e))return!0;let t=e.children;return t?t.some(Q):!1}function Ce(e){for(let t=0;t<e.children.length;t++){let n=e.children[t];if(n.kind==="text"&&(n.value===""||e.children[t+1]?.kind==="text"))return!1}return e.children.every(t=>t.kind!=="element"||Ce(t))}function we(e){if(!ke(e)||!Ce(e)||!e.children.some(Q))return null;let t=[],n=[],o=0,r=a=>{let i=`_n$${o++}`;return t.push({ref:i,expr:a}),i};return s(e,"_el$"),{html:ht(e),tag:e.tag,steps:t,holes:n};function s(a,i){let l=-1;a.children.forEach((u,d)=>{Q(u)&&(l=d)});let p=null;for(let u=0;u<=l;u++){let d=a.children[u],m=p?`${p}.nextSibling`:`${i}.firstChild`;if(ee(d)){let I=r(m),f=r(`holeEnd(${I})`);n.push({parentRef:i,startRef:I,endRef:f,node:d}),p=f;continue}let S=r(m);d.kind==="element"&&Q(d)&&s(d,S),p=S}}}function ht(e){return O($e(e)).split(Te).join(mt+ft)}function $e(e){return{...e,children:e.children.map(t=>ee(t)?{kind:"text",value:Te}:t.kind==="element"?$e(t):t)}}var Te="\0fx-hole\0";var ue={version:1,module:"@fluixi/dom",symbols:["createNativeElement","insert","spread","setAttribute","delegateEvents","createComponent","createMemo","untrack","Show","For","Index","Switch","Match","Dynamic","ErrorBoundary"]},dn={version:2,module:"@fluixi/dom",symbols:[...ue.symbols,"template","cloneTemplate","walk"]};var w="@fluixi/reactive/signal",de={$signal:{export:"signal",module:w,returns:"signal-handle"},$memo:{export:"memo",module:w,returns:"memo-handle"},$effect:{export:"effect",module:w,returns:"effect"},$store:{export:"store",module:"@fluixi/reactive/store",returns:"store-handle"},$resource:{export:"resource",module:w,returns:"resource-handle"},$selector:{export:"createSelector",module:w,returns:"memo-accessor"},$deferred:{export:"createDeferred",module:w,returns:"memo-accessor"},$untrack:{export:"untrack",module:w,returns:"plain"},$untrackStore:{export:"untrackStore",module:"@fluixi/reactive/store",returns:"plain"}};var fn=new RegExp(`\\$(?:${Object.keys(de).map(e=>e.slice(1)).join("|")})\\s*\\(`);var Me="__fx_source";var vt="__fx_hole",A=(e,t,n,o)=>`(globalThis.${vt} ?? ((f) => f))(${e},${t},${n}${o===void 0?"":`,${JSON.stringify(o)}`})`,yt="__fx_props",Pe=(e,t)=>`(globalThis.${yt} ?? ((p) => p))(${e},${JSON.stringify(t)})`;var Rt={show:"Show",for:"For",index:"Index",switch:"Switch",match:"Match",dynamic:"Dynamic",errorBoundary:"ErrorBoundary",suspense:"Suspense"};function xt(e){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e)}function Le(e){return xt(e)?e:JSON.stringify(e)}function Nt(e){if(e.expr!==void 0){if(e.name==="ref"&&e.at)return A(`(${e.expr})`,e.at.line,e.at.column,e.expr);if(!e.reactive)return`(${e.expr})`;let t=`() => (${e.expr})`;return e.at?A(t,e.at.line,e.at.column,e.directive):t}return JSON.stringify(e.literal??!0)}function bt(e){return e.expr!==void 0?`(${e.expr})`:JSON.stringify(e.literal??!0)}function St(e,t,n){let o=e.filter(i=>i.kind==="spread"),s=e.filter(i=>i.kind!=="spread").map(i=>`${Le(i.name)}: ${Nt(i)}`);t!=null&&s.push(`children: ${t}`);let a=`{ ${s.join(", ")} }`;return o.length>0?(n.add("mergeProps"),`mergeProps(${o.map(i=>i.expr).join(", ")}, ${a})`):a}function Oe(e,t){return t?A(e,t.line,t.column):e}function De(e,t,n){return e.length===1?L(e[0],t,n):`[${e.map(o=>L(o,t,n)).join(", ")}]`}function Ae(e,t,n,o,r,s){o.add("createMemo"),o.add("createComponent");let a=t.filter(m=>m.kind==="spread"),i=t.filter(m=>m.kind!=="spread"),l=i.map(m=>`get ${Le(m.name)}() { return ${bt(m)}; }`);n.length>0&&l.push(`get children() { return ${De(n,o,r)}; }`);let p=`{ ${l.join(", ")} }`;a.length>0&&(o.add("mergeProps"),p=`mergeProps(${a.map(m=>m.expr).join(", ")}, ${p})`);let u={};for(let m of i)m.at&&(u[m.name]=[m.at.line,m.at.column]);return Object.keys(u).length&&(p=Pe(p,u)),`createMemo((${s?`globalThis.${Me}?.(${JSON.stringify(s.file)},${s.line},${s.column},${JSON.stringify(e)}), `:""}() => createComponent(${e}, ${p})))`}function Et(e,t){let n=Ie(t.name),o=t.literal;return o===!0||o===void 0?`${e}.setAttribute(${JSON.stringify(n)}, "");`:o===!1||o===null?"":`${e}.setAttribute(${JSON.stringify(n)}, ${JSON.stringify(String(o))});`}var Je=!1;function L(e,t,n){switch(e.kind){case"text":return JSON.stringify(e.value);case"expr":{if(!e.reactive)return`(${e.code})`;let o=`() => (${e.code})`;return e.at?A(o,e.at.line,e.at.column):o}case"fragment":return e.children.length===0?"null":De(e.children,t,n);case"component":return Oe(Ae(e.name,e.props,e.children,t,n,e.at),e.bindAt??e.at);case"control":{let o=Rt[e.control]??e.control;return t.add(o),Oe(Ae(o,e.props,e.children,t,n),e.bindAt)}case"element":{if(n&&e.static&&!e.svg&&ce(e)){t.add("templateNode");let i=`_tmpl$${n.length}`;n.push({id:i,html:O(e),tag:e.tag,svg:!1});let l=pe(e);return l?`templateNode(${i}, ${JSON.stringify(e.tag)}, false, false, ${JSON.stringify(l)})`:`templateNode(${i}, ${JSON.stringify(e.tag)})`}if(n&&Je){let i=we(e);if(i){t.add("templateNode"),t.add("insert"),t.add("holeEnd"),t.add("holeContent"),t.add("holeScope");let l=`_tmpl$${n.length}`;n.push({id:l,html:i.html,tag:i.tag,svg:!1});let p=pe(e),u=[`const _el$ = templateNode(${l}, ${JSON.stringify(i.tag)}, true${p?`, false, ${JSON.stringify(p)}`:""});`];for(let d of i.steps)u.push(`const ${d.ref} = ${d.expr};`);for(let d of i.holes)u.push(`insert(${d.parentRef}, holeScope(${d.startRef}, () => (${L(d.node,t,n)})), ${d.endRef}, holeContent(${d.startRef}, ${d.endRef}));`);return u.push("return _el$;"),`(() => { ${u.join(" ")} })()`}}t.add("createNativeElement");let o=JSON.stringify(e.tag),r="_el$",s=[],a=e.at?`${o}, ${e.svg}, ${JSON.stringify(e.at)}`:e.svg?`${o}, true`:o;if(s.push(`const ${r} = createNativeElement(${a});`),e.props.length>0)if(!e.svg&&e.props.every(P))for(let i of e.props)s.push(Et(r,i));else{t.add("spread");let i=e.svg?", isSVG: true":"";s.push(`spread({ element: ${r}, props: ${St(e.props,null,t)}${i} });`)}for(let i of e.children){t.add("insert");let l=L(i,t,n),p=i.kind==="expr"&&i.reactive||i.kind==="component"||i.kind==="control";s.push(p?`insert(${r}, ${l}, null);`:`insert(${r}, ${l});`)}return s.push(`return ${r};`),`(() => { ${s.join(" ")} })()`}}}function D(e,t){if(!t||t.length===0)return e;let n=new Map(t.map(o=>[o.id,JSON.stringify(o.html)]));return e.replace(/_tmpl\$\d+/g,o=>n.get(o)??o)}var C={name:"imperative",contract:ue,emit(e,t){let n=new Set,o=t?.templateClone!==!1?[]:void 0;return Je=t?.partialTemplates===!0,{code:L(e,n,o),imports:Array.from(n),templates:o}}};import{types as fe}from"@babel/core";import He from"@babel/generator";import{parseTemplate as It}from"@fluixi/template-parser";function J(e){let t=e.split(/\r\n|\n|\r/),n=0;for(let r=0;r<t.length;r++)/[^ \t]/.test(t[r])&&(n=r);let o="";for(let r=0;r<t.length;r++){let s=t[r].replace(/\t/g," ");r!==0&&(s=s.replace(/^ +/,"")),r!==t.length-1&&(s=s.replace(/ +$/,"")),s&&(r!==n&&(s+=" "),o+=s)}return o}var je=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function kt(e){return e.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${")}function Fe(e){return e.charAt(0).toUpperCase()+e.slice(1)}var me=class{constructor(t,n,o,r){this.holes=t;this.used=n;this.sourceFile=o;this.positionAt=r}tagAt(t){let n=t.loc?.start;if(!this.sourceFile||!this.positionAt||n==null)return;let{line:o,column:r}=this.positionAt(n);return{file:this.sourceFile,line:o,column:r}}hole(t){return this.holes[t]??{code:"undefined",reactive:!1}}emit(t){let{code:n,imports:o,templates:r}=C.emit(t,{});for(let s of o)this.used.add(s);return D(n,r)}lowerRoot(t){let n=this.lowerChildren(t);return n.length===1?n[0]:{kind:"fragment",children:n}}lowerChildren(t){let n=[];for(let o=0;o<t.length;o++){let r=t[o];if(r.kind==="Element"||r.kind==="Component"){let a=r.attributes.find(i=>i.kind==="IfDirective");if(a&&a.kind==="IfDirective"){let i=o+1;i<t.length&&this.isBlankText(t[i])&&i++;let l=t[i],p=l&&(l.kind==="Element"||l.kind==="Component")&&l.attributes.some(u=>u.kind==="ElseDirective");n.push(this.lowerIf(r,a.hole,p?l:null)),p&&(o=i);continue}if(r.attributes.some(i=>i.kind==="EachDirective")){n.push(this.lowerEach(r));continue}}let s=this.lowerNode(r);s&&n.push(s)}return n}isBlankText(t){return t.kind==="Text"&&!t.raw&&J(t.value)===""}lowerNode(t){switch(t.kind){case"Text":{if(t.raw)return{kind:"text",value:t.value};let n=J(t.value);return n?{kind:"text",value:n}:null}case"Comment":return null;case"Expression":{let n=this.hole(t.hole);return{kind:"expr",code:n.code,reactive:n.reactive,...n.at?{at:n.at}:{}}}case"Fragment":return{kind:"fragment",children:this.lowerChildren(t.children)};case"Element":return this.lowerElement(t);case"Component":return this.lowerComponent(t);default:return null}}lowerElement(t){let n=t.attributes.find(r=>r.kind==="Attribute"&&r.name==="is");if(t.tag==="component"&&n&&n.value&&n.value.kind==="hole"){let r=t.attributes.filter(a=>a!==n),s=this.lowerComponent({...t,kind:"Component",tag:"Dynamic",tagHole:null,attributes:r});return s.props.unshift({name:"component",kind:"attr",expr:`() => (${this.hole(n.value.hole).code})`}),s}let o=this.tagAt(t);return{kind:"element",tag:t.tag,svg:t.namespace==="svg",props:this.lowerAttributes(t.attributes),children:this.lowerChildren(t.children),static:!1,...o?{at:o}:{}}}lowerComponent(t){let n=t.tagHole!=null?this.hole(t.tagHole).code:t.tag,o=this.lowerAttributes(t.attributes),{slots:r,rest:s}=this.partitionSlots(t.children);for(let[u,d]of r){let m=d.length===1?d[0]:{kind:"fragment",children:d},S={name:u,kind:"attr",expr:this.emit(m),jsxElement:!0},I=o.findIndex(f=>f.name===u);I>=0?o[I]=S:o.push(S)}let a=t.attributes.find(u=>u.kind==="LoadDirective"),i=a?K(`load:${a.strategy}`,a.modifier):void 0,l=o.find(u=>u.at&&u.reactive)?.at,p=this.tagAt(t);return{kind:"component",name:n,props:o,children:this.lowerChildren(s),...p?{at:p}:{},...l?{bindAt:l}:{},...i?{load:i}:{}}}partitionSlots(t){let n=new Map,o=[];for(let r of t){if(r.kind==="Element"||r.kind==="Component"){let s=r.attributes.find(a=>a.kind==="Attribute"&&a.name==="slot");if(s&&s.value&&s.value.kind==="static"){let a={...r,attributes:r.attributes.filter(p=>p!==s)},i=a.kind==="Element"?this.lowerElement(a):this.lowerComponent(a),l=n.get(s.value.value)??[];l.push(i),n.set(s.value.value,l);continue}}o.push(r)}return{slots:n,rest:o}}lowerIf(t,n,o){let r=this.hole(n),s=[{name:"when",kind:"attr",expr:r.code,reactive:r.reactive,...r.at?{at:r.at}:{}}];if(o){let l=this.stripAndLower(o,p=>p.kind==="ElseDirective");s.push({name:"fallback",kind:"attr",expr:this.emit(l),jsxElement:!0})}let a=this.stripAndLower(t,l=>l.kind==="IfDirective"),i=this.tagAt(t);return{kind:"component",name:"Show",props:s,children:[a],...i?{at:i}:{},...r.at?{bindAt:r.at}:{}}}lowerEach(t){let n=t.attributes.find(p=>p.kind==="EachDirective");if(!n||n.kind!=="EachDirective")return this.lowerNode(t);let o=this.hole(n.hole),r=[{name:"each",kind:"attr",expr:o.code,reactive:o.reactive,...o.at?{at:o.at}:{}}];if(n.key){let p="static"in n.key?`(item) => item[${JSON.stringify(n.key.static)}]`:this.hole(n.key.hole).code;r.push({name:"by",kind:"attr",expr:p})}let s=this.itemArrow(t),a;if(s){let p={kind:"expr",code:s.body,reactive:s.bodyReactive},u=this.rebuildWithChildren(t,[p]);a=`(${s.params.join(", ")}) => (${this.emit(u)})`}else{let p=this.stripAndLower(t,u=>u.kind==="EachDirective");a=`() => (${this.emit(p)})`}let i=[{kind:"expr",code:a,reactive:!1}],l=this.tagAt(t);return{kind:"component",name:"For",props:r,children:i,...l?{at:l}:{},...o.at?{bindAt:o.at}:{}}}itemArrow(t){let n=t.children.filter(o=>!this.isBlankText(o));return n.length!==1||n[0].kind!=="Expression"?null:this.hole(n[0].hole).arrow??null}stripAndLower(t,n){let o={...t,attributes:t.attributes.filter(r=>!n(r))};return o.kind==="Element"?this.lowerElement(o):this.lowerComponent(o)}rebuildWithChildren(t,n){let o=this.lowerAttributes(t.attributes.filter(r=>r.kind!=="EachDirective"));if(t.kind==="Element"){let r=this.tagAt(t);return{kind:"element",tag:t.tag,svg:t.namespace==="svg",props:o,children:n,static:!1,...r?{at:r}:{}}}return{kind:"component",name:t.tag,props:o,children:n}}lowerAttributes(t){let n=[],o=[],r=!1,s,a=[],i=!1,l,p=[];for(let u of t)switch(u.kind){case"IfDirective":case"EachDirective":case"ElseDirective":break;case"Attribute":n.push(this.plainAttr(u));break;case"PropertyBinding":n.push({name:u.name,kind:"prop",expr:this.hole(u.hole).code,reactive:this.hole(u.hole).reactive,...this.hole(u.hole).at?{at:this.hole(u.hole).at}:{}});break;case"EventBinding":n.push(this.eventProp(u));break;case"RefBinding":n.push({name:"ref",kind:"ref",expr:this.hole(u.hole).code,reactive:this.hole(u.hole).reactive,...this.hole(u.hole).at?{at:this.hole(u.hole).at}:{}});break;case"Spread":n.push({name:"",kind:"spread",expr:this.hole(u.hole).code});break;case"ClassDirective":{let d=this.hole(u.hole);o.push(`${JSON.stringify(u.name)}: ${d.code}`),r=r||d.reactive,s??=d.at;break}case"StyleDirective":{let d=this.hole(u.hole);a.push(`${JSON.stringify(u.name)}: ${d.code}`),i=i||d.reactive,l??=d.at;break}case"BindDirective":n.push(...this.bindProps(u.name,this.hole(u.hole)));break;case"UseDirective":{let d=u.name??(u.hole!=null?this.hole(u.hole).code:null);if(!d)break;p.push(u.name!=null&&u.hole!=null?`[${d}, () => (${this.hole(u.hole).code})]`:`[${d}]`);break}}return o.length>0&&n.push({name:"classList",kind:"attr",expr:`{ ${o.join(", ")} }`,reactive:r,...s?{at:s}:{}}),a.length>0&&n.push({name:"style",kind:"attr",expr:`{ ${a.join(", ")} }`,reactive:i,...l?{at:l}:{}}),p.length>0&&n.push({name:"use",kind:"attr",expr:`[${p.join(", ")}]`}),n}eventProp(t){let n=t.name.toLowerCase(),o=this.hole(t.hole).code;if(!(t.syntax==="colon"||t.modifiers.length>0))return{name:"on"+Fe(t.name),kind:"event",event:{name:n,delegated:je.has(n)},expr:o};let s=this.wrapHandler(o,t.modifiers),a=this.eventOptions(t.modifiers),i=a?`[${s}, ${a}]`:s;return{name:"on:"+n,kind:"attr",expr:i}}wrapHandler(t,n){let o=n.includes("self")?"if (e.target !== e.currentTarget) return; ":"",r=[];return n.includes("prevent")&&r.push("e.preventDefault();"),n.includes("stop")&&r.push("e.stopPropagation();"),!o&&r.length===0?t:`(e) => { ${o}${r.join(" ")} return (${t})(e); }`}eventOptions(t){let n=[];return t.includes("capture")&&n.push("capture: true"),t.includes("once")&&n.push("once: true"),t.includes("passive")&&n.push("passive: true"),n.length?`{ ${n.join(", ")} }`:null}bindProps(t,n){let o=n.code,r=t==="checked",s=r?"change":"input",a=r?"checked":"value";this.used.add("bindPair");let i=`bindPair(${o})`;return[{name:t,kind:"attr",expr:`${i}[0]()`,reactive:!0,directive:`bind:${t}`,...n.at?{at:n.at}:{}},{name:"on"+Fe(s),kind:"event",event:{name:s,delegated:je.has(s)},expr:`(e) => ${i}[1](e.target.${a})`}]}plainAttr(t){let n=t.value,o=t.name;t.name==="class"?o=n&&n.kind==="hole"&&this.hole(n.hole).object?"classList":"className":t.name==="html"&&(o="innerHTML");let s={name:o,kind:"attr"};if(n==null)return s.literal=!0,s;if(n.kind==="static")return s.literal=n.value,s;if(n.kind==="hole"){let p=this.hole(n.hole);return s.expr=p.code,s.reactive=p.reactive,p.at&&(s.at=p.at),s}let a=!1,i,l=n.parts.map(p=>{if("text"in p)return kt(p.text);let u=this.hole(p.hole);return a=a||u.reactive,i??=u.at,"${"+u.code+"}"}).join("");return s.expr="`"+l+"`",s.reactive=a,i&&(s.at=i),s}};function _e(e,t,n,o={}){let{root:r}=It(e,{svg:o.svg});return new me(t,n,o.sourceFile,o.positionAt).lowerRoot(r.children)}var Ct=He.default??He;function wt(e){return Ct(e,{concise:!0}).code}function $t(e,t,n){let o={code:te(e,t,n),reactive:ge(e)};if(fe.isArrowFunctionExpression(e)&&!fe.isBlockStatement(e.body)){let r=e.body;o.arrow={params:e.params.map(s=>wt(s)),body:te(r,t,n),bodyReactive:ge(r)}}return fe.isObjectExpression(e)&&(o.object=!0),o}function Be(e,t,n={}){let o=e.quasi,r=o.expressions.map(s=>$t(s,t,n.onNested));return _e(Tt(o),r,t,n)}function Tt(e){let t=[];return e.quasis.forEach((n,o)=>{let r=n.value.cooked??n.value.raw;if(t.push({kind:"static",text:r,start:n.start??0}),o<e.expressions.length){let s=e.expressions[o];t.push({kind:"hole",index:o,start:s.start??0,end:s.end??0})}}),t}function Mt(e){switch(e.kind){case"event":return"event";case"ref":return"ref";case"spread":return"spread";case"class":case"style":return"class-or-style-directive";case"attr":case"prop":return e.reactive?"reactive-prop":e.expr!==void 0?"expression-prop":void 0;default:return"expression-prop"}}function ne(e){let t=[],n=new Map,o=r=>{switch(r.kind){case"text":return!0;case"expr":return!1;case"component":case"control":for(let s of r.children)o(s);return!1;case"fragment":for(let s of r.children)o(s);return!1;case"element":{let s=!0;for(let i of r.children)o(i)||(s=!1);let a;for(let i of r.props)if(a=Mt(i),a)break;return!a&&!s&&(a=Pt(r)),r.static=!a,a?n.set(r,a):t.push(r),r.static}default:return!1}};for(let r of Array.isArray(e)?e:[e])o(r);return{staticElements:t,reasons:n}}function Pt(e){for(let t of e.children){if(t.kind==="expr")return"expression-child";if(t.kind==="component")return"component-child";if(t.kind==="control")return"control-child";if(t.kind==="element"&&!t.static||t.kind==="fragment")return"expression-child"}return"expression-child"}function re(e,t=new Set,n={}){let o=Be(e,t,n);return ne(o),o}var Ot="children";function j(e){switch(e.kind){case"call":return!0;case"member":return e.property!==Ot;case"compound":return e.parts.some(j);case"opaque":return!1}}var At=new Set(["CallExpression","OptionalCallExpression"]),Lt=new Set(["MemberExpression","OptionalMemberExpression"]);function _(e){if(!e)return{kind:"opaque"};if(At.has(e.type))return{kind:"call"};if(Lt.has(e.type)){let t=e.property;return{kind:"member",property:!(e.computed===!0)&&t?.type==="Identifier"?t.name:null}}return e.type==="ConditionalExpression"?{kind:"compound",parts:[e.test,e.consequent,e.alternate].map(F)}:e.type==="LogicalExpression"||e.type==="BinaryExpression"?{kind:"compound",parts:[e.left,e.right].map(F)}:e.type==="TemplateLiteral"?{kind:"compound",parts:e.expressions.map(F)}:e.type==="ObjectExpression"?{kind:"compound",parts:e.properties.filter(n=>(n.type==="ObjectProperty"||n.type==="Property")&&n.computed!==!0).map(n=>F(n.value))}:e.type==="ArrayExpression"?{kind:"compound",parts:e.elements.filter(n=>n!=null&&n.type!=="SpreadElement").map(F)}:{kind:"opaque"}}var F=e=>_(e);var Dt=new Set(["svg","path","circle","rect","line","polygon","polyline","ellipse","g","defs","clipPath","text"]),Jt=/^on[A-Z]/,jt=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]),ze=e=>j(_(e)),H=(e,t)=>{if(!t.sourceFile)return;let n=e.loc?.start;return n?{line:n.line,column:n.column}:void 0};function B(e){if(e.type==="StringLiteral"||e.type==="NumericLiteral"||e.type==="BooleanLiteral"||e.type==="Literal"&&(typeof e.value=="string"||typeof e.value=="number"||typeof e.value=="boolean"))return e.value}var he=e=>!!e&&typeof B(e)=="string";function Ft(e,t){return e.type==="JSXIdentifier"?{tag:e.name,component:e.name[0]!==e.name[0].toLowerCase()}:e.type==="JSXMemberExpression"?{tag:t.code(e),component:!0}:e.type==="JSXNamespacedName"?{tag:`${e.namespace.name}:${e.name.name}`,component:!1}:{tag:"div",component:!1}}function ve(e){return e.type==="JSXIdentifier"?e.name==="class"?"className":e.name:e.type==="JSXNamespacedName"?`${e.namespace.name}:${e.name.name}`:"unknown"}function _t(e,t){let n=ve(e.name),o=Jt.test(n),r=o||n.startsWith("on:")||n==="ref",a={name:n,kind:o?"event":"attr"};if(o){let l=n.slice(2).toLowerCase();a.event={name:l,delegated:jt.has(l)}}let i=e.value;if(i==null)return a.literal=!0,a.at=H(e,t),a;if(he(i))return a.literal=B(i),a.at=H(i,t),a;if(i.type==="JSXExpressionContainer"&&i.expression?.type!=="JSXEmptyExpression"){let l=i.expression,p=B(l);return p!==void 0?(a.literal=p,a.at=H(l,t),a):(a.expr=t.code(l),a.reactive=r?!1:ze(l),a.at=H(l,t),(l.type==="JSXElement"||l.type==="JSXFragment")&&(a.jsxElement=!0),a)}return a.literal=!0,a}function Xe(e,t){let n=e.value;return n==null?null:he(n)?JSON.stringify(B(n)):n.type==="JSXExpressionContainer"&&n.expression?.type!=="JSXEmptyExpression"?t.code(n.expression):null}function Ht(e,t){let n=[],o=[];for(let r of e){if(r.type==="JSXSpreadAttribute"){n.push({name:"",kind:"spread",expr:t.code(r.argument)});continue}if(r.type!=="JSXAttribute"||ae(ve(r.name)))continue;let s=r.name.type==="JSXNamespacedName"?r.name.namespace.name:null;if(s==="use"){let a=r.name.name.name;t.used.add(a);let i=Xe(r,t);o.push(i!=null?`[${a}, () => (${i})]`:`[${a}]`);continue}if(s==="oncapture"){let a=r.name.name.name.toLowerCase(),i=Xe(r,t)??"undefined";n.push({name:"on:"+a,kind:"attr",expr:`[${i}, { capture: true }]`});continue}n.push(_t(r,t))}return o.length>0&&n.push({name:"use",kind:"attr",expr:`[${o.join(", ")}]`}),n}function Ve(e,t){let n=[];for(let o of e)if(o.type==="JSXText"){let r=J(o.value);r&&n.push({kind:"text",value:r})}else if(o.type==="JSXExpressionContainer"){if(o.expression?.type!=="JSXEmptyExpression"){let r=o.expression,s=ze(r);n.push({kind:"expr",code:t.code(r),reactive:s,...s?{at:H(r,t)}:{}})}}else o.type==="JSXElement"||o.type==="JSXFragment"?n.push(Ue(o,t)):o.type==="JSXSpreadChild"&&n.push({kind:"expr",code:t.code(o.expression),reactive:!1});return n}function Bt(e){for(let t of e){if(t.type!=="JSXAttribute")continue;let n=ve(t.name);if(ae(n)){if(t.value&&!he(t.value))throw new k(`'${n}' needs a literal value, not an expression — the strategy is compile-time.`);return K(n,t.value?B(t.value):null)}}}function Ue(e,t){if(e.type==="JSXFragment")return{kind:"fragment",children:Ve(e.children,t)};let{tag:n,component:o}=Ft(e.openingElement.name,t),r=Ht(e.openingElement.attributes,t),s=Ve(e.children,t),a=t.sourceFile&&e.loc?.start?{file:t.sourceFile,line:e.loc.start.line,column:e.loc.start.column}:void 0;if(o){let i=Bt(e.openingElement.attributes);return{kind:"component",name:n,props:r,children:s,...i?{load:i}:{},...a?{at:a}:{}}}return{kind:"element",tag:n,svg:Dt.has(n),props:r,children:s,static:!1,...a?{at:a}:{}}}function We(e,t){let n=Ue(e,t);return ne(n),n}var zt=Ke.default??Ke;function Ge(e){return zt(e,{concise:!0}).code}function Ut(e,t,n){let o=X.cloneNode(e,!0),r=X.file(X.program([X.expressionStatement(o)])),s=!1,a=(i,l,p)=>{for(let u of p)t.add(u);i.replaceWith(Vt.expression(l,{placeholderPattern:!1,plugins:["typescript"]})()),i.skip(),s=!0};return Xt(r,{"JSXElement|JSXFragment"(i){let l=i.node,p=ye(l,t,n);n?.(p);let{code:u,imports:d,templates:m}=C.emit(p,{});a(i,D(u,m),d)},TaggedTemplateExpression(i){let l=i.node.tag;if(!X.isIdentifier(l)||l.name!=="html"&&l.name!=="svg")return;let p=re(i.node,t,{svg:l.name==="svg",onNested:n});n?.(p);let{code:u,imports:d,templates:m}=C.emit(p,{});a(i,D(u,m),d)}}),s?r.program.body[0].expression:e}function te(e,t,n){return Ge(Ut(e,t,n))}function ge(e){return j(_(e))}function ye(e,t=new Set,n){return We(e,{code:r=>r.type==="JSXMemberExpression"?Ge(r):te(r,t,n),used:t})}var qe=new Set(M),Ye=new Set(T),V=Wt((e,t={})=>{e.assertVersion(7);let{delegateEvents:n=!0,signalModule:o="@fluixi/dom",controlFlowModule:r="@fluixi/dom",routerModule:s="@fluixi/core/router",reactiveModule:a="@fluixi/reactive/signal",templateClone:i=!0,partialTemplates:l=!0,format:p="both",litTag:u="html",resolve:d=[]}=t,m=Ne(d),S=p==="lit"||p==="both",I={irImports:new Set,libModule:"@fluixi/core",controlFlowModule:r,routerModule:s,templateClone:i,partialTemplates:l,hasJSX:!1,hasLitHTML:!1,needsControlFlowImport:!1,needsCreateMemo:!1,controlFlowComponents:new Set,resolvedComponents:new Map,deferredComponents:new Map,componentResolver:m,delegatedEvents:new Set,staticTemplates:new Map,staticCounter:0};return{name:"@fluixi/babel-plugin-jsx",manipulateOptions(f,g){g.plugins.push("jsx","typescript")},pre(f){Object.assign(f,I)},visitor:{Program:{enter(f,g){Object.assign(g,{hasJSX:!1,hasLitHTML:!1,hasLitIR:!1,needsControlFlowImport:!1,needsCreateMemo:!1,controlFlowComponents:new Set,resolvedComponents:new Map,deferredComponents:new Map,componentResolver:m,delegatedEvents:new Set,staticTemplates:new Map,staticCounter:0,libModule:"@fluixi/core",controlFlowModule:r,routerModule:s,templateClone:i,partialTemplates:l,irImports:new Set,needsCreateNativeElement:!1,needsInsert:!1,needsSpread:!1,needsCreateComponent:!1,needsMergeProps:!1})},exit(f,g){let b=[];if(g.hasJSX||g.hasLitIR){if(g.irImports.size>0){let v=new Set(["Show","For","Index","Switch","Match","Dynamic","ErrorBoundary","Portal","Suspense"]),h=new Set(["createMemo","createEffect","createRenderEffect","createRoot","createSignal","onCleanup","batch","untrack"]),R=Array.from(g.irImports),x=y=>c.importSpecifier(c.identifier(y),c.identifier(y)),E=y=>!f.scope.hasBinding(y),$=R.filter(y=>h.has(y)&&E(y)),N=R.filter(y=>!v.has(y)&&!h.has(y)&&E(y)),U=R.filter(y=>v.has(y)&&E(y));$.length>0&&b.push(c.importDeclaration($.map(x),c.stringLiteral(a))),N.length>0&&b.push(c.importDeclaration(N.map(x),c.stringLiteral(o))),U.length>0&&b.push(c.importDeclaration(U.map(x),c.stringLiteral(r)))}if(g.needsCreateMemo&&!f.scope.hasBinding("createMemo")&&b.push(c.importDeclaration([c.importSpecifier(c.identifier("createMemo"),c.identifier("createMemo"))],c.stringLiteral(a))),g.needsControlFlowImport&&g.controlFlowComponents.size>0){let v=Array.from(g.controlFlowComponents).filter(N=>!f.scope.hasBinding(N)),h=g.libModule??"@fluixi/core",R=v.filter(N=>Ye.has(N)),x=v.filter(N=>qe.has(N)),E=v.filter(N=>!qe.has(N)&&!Ye.has(N)),$=(N,U)=>c.importDeclaration(N.map(y=>c.importSpecifier(c.identifier(y),c.identifier(y))),c.stringLiteral(U));E.length>0&&b.push($(E,r)),x.length>0&&b.push($(x,h)),R.length>0&&b.push($(R,s))}let z=[];if(g.deferredComponents.size>0){for(let[v,h]of g.deferredComponents)f.scope.hasBinding(v)||z.push(c.variableDeclaration("const",[c.variableDeclarator(c.identifier(v),c.callExpression(c.identifier("deferred"),[c.arrowFunctionExpression([],c.callExpression(c.import(),[c.stringLiteral(h.module)])),c.objectExpression([c.objectProperty(c.identifier("strategy"),Kt(h.strategy)),c.objectProperty(c.identifier("export"),c.stringLiteral(h.export))])]))]));z.length>0&&!f.scope.hasBinding("deferred")&&b.push(c.importDeclaration([c.importSpecifier(c.identifier("deferred"),c.identifier("deferred"))],c.stringLiteral(g.libModule??"@fluixi/core")))}if(g.resolvedComponents.size>0){let v=new Map;for(let[h,R]of g.resolvedComponents){if(f.scope.hasBinding(h))continue;let x=v.get(R.module)??[];x.push({local:h,exported:R.export}),v.set(R.module,x)}for(let[h,R]of v)b.push(c.importDeclaration(R.map(({local:x,exported:E})=>E==="default"?c.importDefaultSpecifier(c.identifier(x)):c.importSpecifier(c.identifier(x),c.identifier(E))),c.stringLiteral(h)))}if(n&&g.delegatedEvents.size>0){b.push(c.importDeclaration([c.importSpecifier(c.identifier("delegateEvents"),c.identifier("delegateEvents"))],c.stringLiteral(o)));let v=c.arrayExpression(Array.from(g.delegatedEvents).map(R=>c.stringLiteral(R))),h=c.expressionStatement(c.callExpression(c.identifier("delegateEvents"),[v]));f.node.body.unshift(h)}if(z.length>0&&f.node.body.unshift(...z),g.staticTemplates.size>0){let v=[];for(let[h,R]of g.staticTemplates){let E=h.startsWith("svg:")?h.slice(4):h;v.push(c.variableDeclaration("const",[c.variableDeclarator(c.identifier(R),c.stringLiteral(E))]))}f.node.body.unshift(...v)}}b.length>0&&f.node.body.unshift(...Gt(b))}},JSXElement(f,g){g.hasJSX=!0,f.replaceWith(Ze(f.node,g))},JSXFragment(f,g){g.hasJSX=!0,f.replaceWith(Ze(f.node,g))},TaggedTemplateExpression(f,g){S&&c.isIdentifier(f.node.tag)&&(f.node.tag.name===u||f.node.tag.name==="svg")&&f.replaceWith(qt(f.node,g))}}}});function et(e){return t=>{q(t,{resolver:e.componentResolver,modules:{controlFlowModule:e.controlFlowModule,coreModule:e.libModule,routerModule:e.routerModule},strategyFor:n=>n.load}),Z(t),oe(t,e)}}function Kt(e){let t=[c.objectProperty(c.identifier("kind"),c.stringLiteral(e.kind))];return e.kind==="visible"&&e.rootMargin&&t.push(c.objectProperty(c.identifier("rootMargin"),c.stringLiteral(e.rootMargin))),e.kind==="interaction"&&t.push(c.objectProperty(c.identifier("events"),c.arrayExpression(e.events.map(n=>c.stringLiteral(n))))),e.kind==="media"&&t.push(c.objectProperty(c.identifier("query"),c.stringLiteral(e.query))),c.objectExpression(t)}function tt(e,t,n){if(!t||t.length===0)return e;let o=new Map;for(let r of t){let s=`${r.svg?"svg:":""}${r.html}`,a=n.staticTemplates.get(s);a||(a=`_tmpl$${n.staticTemplates.size}`,n.staticTemplates.set(s,a)),o.set(r.id,a)}return e.replace(/_tmpl\$\d+/g,r=>o.get(r)??r)}function Ze(e,t){let n=new Set,o=ye(e,n,et(t));q(o,{resolver:t.componentResolver,modules:{controlFlowModule:t.controlFlowModule,coreModule:t.libModule,routerModule:t.routerModule},strategyFor:l=>l.load}),Z(o);let{code:r,imports:s,templates:a}=C.emit(o,{templateClone:t.templateClone,partialTemplates:t.partialTemplates});for(let l of s)n.add(l);for(let l of n)t.irImports.add(l);oe(o,t);let i=tt(r,a,t);return Qe.expression(i,{placeholderPattern:!1,plugins:["typescript"]})()}function Gt(e){let t=new Map,n=[];for(let o of e){let r=o.source.value;if(!o.specifiers.every(i=>c.isImportSpecifier(i))){n.push(o);continue}let a=t.get(r);if(!a){let i=new Set(o.specifiers.map(l=>l.local.name));t.set(r,{decl:o,names:i}),n.push(o);continue}for(let i of o.specifiers)a.names.has(i.local.name)||(a.names.add(i.local.name),a.decl.specifiers.push(i))}return n}function qt(e,t){let n=new Set,o=c.isIdentifier(e.tag)&&e.tag.name==="svg",r=re(e,n,{svg:o,onNested:et(t)});q(r,{resolver:t.componentResolver,modules:{controlFlowModule:t.controlFlowModule,coreModule:t.libModule,routerModule:t.routerModule},strategyFor:p=>p.load}),Z(r);let{code:s,imports:a,templates:i}=C.emit(r,{templateClone:t.templateClone,partialTemplates:t.partialTemplates});for(let p of a)n.add(p);for(let p of n)t.irImports.add(p);oe(r,t),t.hasLitIR=!0;let l=Qe.expression(tt(s,i,t),{placeholderPattern:!1,plugins:["typescript"]})();return Yt(l,e),l}function Yt(e,t){if(!t.loc)return;let n=new Set,o=r=>{if(!n.has(r)){n.add(r),r.loc||(r.loc=t.loc,r.start=t.start,r.end=t.end);for(let s of c.VISITOR_KEYS[r.type]??[]){let a=r[s];if(Array.isArray(a))for(let i of a)i&&typeof i=="object"&&"type"in i&&o(i);else a&&typeof a=="object"&&"type"in a&&o(a)}}};o(e)}function oe(e,t){if(e.kind==="component"&&e.source&&(e.source.origin==="builtin"?(t.controlFlowComponents.add(e.name),t.needsControlFlowImport=!0):G(e.source.loading)&&!t.resolvedComponents.has(e.name)?t.deferredComponents.set(e.name,{module:e.source.module,export:e.source.export,strategy:e.source.loading}):(t.deferredComponents.delete(e.name),t.resolvedComponents.set(e.name,{module:e.source.module,export:e.source.export}))),(e.kind==="element"||e.kind==="component"||e.kind==="control")&&"props"in e)for(let n of e.props)n.kind==="event"&&n.event?.delegated&&t.delegatedEvents.add(n.event.name);if("children"in e&&e.children)for(let n of e.children)oe(n,t)}var Rr=V;function xr(e){return[V,e]}function Re(e={}){return{plugins:[[V,{runtime:"automatic",importSource:"@fluixi/jsx",development:!1,detectReactivity:!0,useLitHTML:!0,hoistStatics:!0,delegateEvents:!0,optimizeControlFlow:!0,sourceMaps:!0,...e}]]}}var Nr={production:Re({development:!1,hoistStatics:!0,delegateEvents:!0,optimizeControlFlow:!0}),development:Re({development:!0,hoistStatics:!1,sourceMaps:!0}),minimal:Re({detectReactivity:!1,useLitHTML:!1,hoistStatics:!1,delegateEvents:!1,optimizeControlFlow:!1})};export{Rr as babelPluginReactiveJSX,xr as createPlugin,Re as createPreset,V as default,Nr as presets};
@@ -1 +1 @@
1
- "use strict";var ve=Object.create;var I=Object.defineProperty;var ke=Object.getOwnPropertyDescriptor;var xe=Object.getOwnPropertyNames;var ye=Object.getPrototypeOf,Ne=Object.prototype.hasOwnProperty;var Ee=(e,t)=>{for(var n in t)I(e,n,{get:t[n],enumerable:!0})},G=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of xe(t))!Ne.call(e,i)&&i!==n&&I(e,i,{get:()=>t[i],enumerable:!(r=ke(t,i))||r.enumerable});return e};var W=(e,t,n)=>(n=e!=null?ve(ye(e)):{},G(t||!e||!e.__esModule?I(n,"default",{value:e,enumerable:!0}):n,e)),Re=e=>G(I({},"__esModule",{value:!0}),e);var pt={};Ee(pt,{lowerLitTemplate:()=>X});module.exports=Re(pt);var A=require("@babel/core"),F=W(require("@babel/generator"),1);var le=require("@fluixi/template-parser");var be={kind:"eager"},Se=["pointerdown","focusin","keydown"],q=new Set(["eager","idle","visible","interaction","media","never"]),f=class extends Error{};function J(e){return e.startsWith("load:")}function $(e,t){let n=e.slice(5);if(!q.has(n))throw new f(`Unknown load strategy 'load:${n}'. Expected one of ${[...q].join(", ")}.`);switch(n){case"eager":return be;case"idle":return{kind:"idle"};case"never":return{kind:"never"};case"visible":return t?{kind:"visible",rootMargin:t}:{kind:"visible"};case"interaction":return{kind:"interaction",events:t?Ie(t):[...Se]};case"media":if(!t)throw new f(`'load:media' needs a query, e.g. load:media="(min-width: 1024px)".`);return{kind:"media",query:t};default:throw new f(`Unhandled load strategy '${n}'.`)}}function Ie(e){let t=e.split(/[\s,]+/).map(n=>n.trim()).filter(Boolean);if(t.length===0)throw new f("'load:interaction' was given no event names.");return t}var $e=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),U={className:"class",htmlFor:"for"},we=new Set(["innerHTML","outerHTML","innerText","textContent","value","checked","selected","muted","defaultValue","defaultChecked","children","ref"]),Te=new Set(["script","style","textarea","title"]);function L(e){return Te.has(e)}function K(e){return U[e]??e}function h(e){return e.kind!=="attr"||e.expr!==void 0||e.name.includes(":")?!1:!we.has(e.name)}function D(e){if(!e.static||L(e.tag))return!1;for(let t of e.props)if(!h(t))return!1;for(let t of e.children)if(t.kind!=="text"&&!(t.kind==="element"&&D(t)))return!1;return!0}function g(e){let t=e.props.map(Pe).filter(Boolean).join(""),n=`<${e.tag}${t}>`;return $e.has(e.tag)?n:`${n}${e.children.map(Ce).join("")}</${e.tag}>`}function Ce(e){if(e.kind==="text")return Je(e.value);if(e.kind!=="element")throw new Error(`serializeStatic: unexpected ${e.kind}`);return g(e)}function Pe(e){let t=U[e.name]??e.name,n=e.literal;return n===!0||n===void 0?` ${t}`:n===!1||n===null?"":` ${t}="${Ae(String(n))}"`}function Ae(e){return e.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function Je(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}var Le="<!--fx-->",De="<!--fx/-->";function T(e){return e.kind==="expr"||e.kind==="component"||e.kind==="control"}function je(e){return e.kind==="text"||e.kind==="element"&&Z(e)}function Z(e){return e.svg||L(e.tag)||!e.props.every(t=>h(t))?!1:e.children.every(t=>je(t)||T(t))}function w(e){if(T(e))return!0;let t=e.children;return t?t.some(w):!1}function Y(e){for(let t=0;t<e.children.length;t++){let n=e.children[t];if(n.kind==="text"&&(n.value===""||e.children[t+1]?.kind==="text"))return!1}return e.children.every(t=>t.kind!=="element"||Y(t))}function Q(e){if(!Z(e)||!Y(e)||!e.children.some(w))return null;let t=[],n=[],r=0,i=l=>{let s=`_n$${r++}`;return t.push({ref:s,expr:l}),s};return o(e,"_el$"),{html:Oe(e),tag:e.tag,steps:t,holes:n};function o(l,s){let a=-1;l.children.forEach((p,d)=>{w(p)&&(a=d)});let c=null;for(let p=0;p<=a;p++){let d=l.children[p],m=c?`${c}.nextSibling`:`${s}.firstChild`;if(T(d)){let z=i(m),V=i(`holeEnd(${z})`);n.push({parentRef:s,startRef:z,endRef:V,node:d}),c=V;continue}let S=i(m);d.kind==="element"&&w(d)&&o(d,S),c=S}}}function Oe(e){return g(ee(e)).split(te).join(Le+De)}function ee(e){return{...e,children:e.children.map(t=>T(t)?{kind:"text",value:te}:t.kind==="element"?ee(t):t)}}var te="\0fx-hole\0";var j={version:1,module:"@fluixi/dom",symbols:["createNativeElement","insert","spread","setAttribute","delegateEvents","createComponent","createMemo","untrack","Show","For","Index","Switch","Match","Dynamic","ErrorBoundary"]},gt={version:2,module:"@fluixi/dom",symbols:[...j.symbols,"template","cloneTemplate","walk"]};var Xe={show:"Show",for:"For",index:"Index",switch:"Switch",match:"Match",dynamic:"Dynamic",errorBoundary:"ErrorBoundary",suspense:"Suspense"};function Me(e){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e)}function re(e){return Me(e)?e:JSON.stringify(e)}function He(e){return e.expr!==void 0?e.reactive?`() => (${e.expr})`:`(${e.expr})`:JSON.stringify(e.literal??!0)}function _e(e){return e.expr!==void 0?`(${e.expr})`:JSON.stringify(e.literal??!0)}function Be(e,t,n){let r=e.filter(s=>s.kind==="spread"),o=e.filter(s=>s.kind!=="spread").map(s=>`${re(s.name)}: ${He(s)}`);t!=null&&o.push(`children: ${t}`);let l=`{ ${o.join(", ")} }`;return r.length>0?(n.add("mergeProps"),`mergeProps(${r.map(s=>s.expr).join(", ")}, ${l})`):l}function ie(e,t,n){return e.length===1?v(e[0],t,n):`[${e.map(r=>v(r,t,n)).join(", ")}]`}function ne(e,t,n,r,i){r.add("createMemo"),r.add("createComponent");let o=t.filter(c=>c.kind==="spread"),s=t.filter(c=>c.kind!=="spread").map(c=>`get ${re(c.name)}() { return ${_e(c)}; }`);n.length>0&&s.push(`get children() { return ${ie(n,r,i)}; }`);let a=`{ ${s.join(", ")} }`;return o.length>0&&(r.add("mergeProps"),a=`mergeProps(${o.map(c=>c.expr).join(", ")}, ${a})`),`createMemo(() => createComponent(${e}, ${a}))`}function Fe(e,t){let n=K(t.name),r=t.literal;return r===!0||r===void 0?`${e}.setAttribute(${JSON.stringify(n)}, "");`:r===!1||r===null?"":`${e}.setAttribute(${JSON.stringify(n)}, ${JSON.stringify(String(r))});`}var oe=!1;function v(e,t,n){switch(e.kind){case"text":return JSON.stringify(e.value);case"expr":return e.reactive?`() => (${e.code})`:`(${e.code})`;case"fragment":return e.children.length===0?"null":ie(e.children,t,n);case"component":return ne(e.name,e.props,e.children,t,n);case"control":{let r=Xe[e.control]??e.control;return t.add(r),ne(r,e.props,e.children,t,n)}case"element":{if(n&&e.static&&!e.svg&&D(e)){t.add("templateNode");let s=`_tmpl$${n.length}`;return n.push({id:s,html:g(e),tag:e.tag,svg:!1}),`templateNode(${s}, ${JSON.stringify(e.tag)})`}if(n&&oe){let s=Q(e);if(s){t.add("templateNode"),t.add("insert"),t.add("holeEnd"),t.add("holeContent"),t.add("holeScope");let a=`_tmpl$${n.length}`;n.push({id:a,html:s.html,tag:s.tag,svg:!1});let c=[`const _el$ = templateNode(${a}, ${JSON.stringify(s.tag)}, true);`];for(let p of s.steps)c.push(`const ${p.ref} = ${p.expr};`);for(let p of s.holes)c.push(`insert(${p.parentRef}, holeScope(${p.startRef}, () => (${v(p.node,t,n)})), ${p.endRef}, holeContent(${p.startRef}, ${p.endRef}));`);return c.push("return _el$;"),`(() => { ${c.join(" ")} })()`}}t.add("createNativeElement");let r=JSON.stringify(e.tag),i="_el$",o=[],l=e.svg?`${r}, true`:r;if(o.push(`const ${i} = createNativeElement(${l});`),e.props.length>0)if(!e.svg&&e.props.every(h))for(let s of e.props)o.push(Fe(i,s));else{t.add("spread");let s=e.svg?", isSVG: true":"";o.push(`spread({ element: ${i}, props: ${Be(e.props,null,t)}${s} });`)}for(let s of e.children){t.add("insert");let a=v(s,t,n),c=s.kind==="expr"&&s.reactive||s.kind==="component"||s.kind==="control";o.push(c?`insert(${i}, ${a}, null);`:`insert(${i}, ${a});`)}return o.push(`return ${i};`),`(() => { ${o.join(" ")} })()`}}}function k(e,t){if(!t||t.length===0)return e;let n=new Map(t.map(r=>[r.id,JSON.stringify(r.html)]));return e.replace(/_tmpl\$\d+/g,r=>n.get(r)??r)}var x={name:"imperative",contract:j,emit(e,t){let n=new Set,r=t?.templateClone!==!1?[]:void 0;return oe=t?.partialTemplates===!0,{code:v(e,n,r),imports:Array.from(n),templates:r}}};function y(e){let t=e.split(/\r\n|\n|\r/),n=0;for(let i=0;i<t.length;i++)/[^ \t]/.test(t[i])&&(n=i);let r="";for(let i=0;i<t.length;i++){let o=t[i].replace(/\t/g," ");i!==0&&(o=o.replace(/^ +/,"")),i!==t.length-1&&(o=o.replace(/ +$/,"")),o&&(i!==n&&(o+=" "),r+=o)}return r}var se=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function ze(e){return e.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${")}function ae(e){return e.charAt(0).toUpperCase()+e.slice(1)}var O=class{constructor(t,n){this.holes=t;this.used=n}hole(t){return this.holes[t]??{code:"undefined",reactive:!1}}emit(t){let{code:n,imports:r,templates:i}=x.emit(t,{});for(let o of r)this.used.add(o);return k(n,i)}lowerRoot(t){let n=this.lowerChildren(t);return n.length===1?n[0]:{kind:"fragment",children:n}}lowerChildren(t){let n=[];for(let r=0;r<t.length;r++){let i=t[r];if(i.kind==="Element"||i.kind==="Component"){let l=i.attributes.find(s=>s.kind==="IfDirective");if(l&&l.kind==="IfDirective"){let s=r+1;s<t.length&&this.isBlankText(t[s])&&s++;let a=t[s],c=a&&(a.kind==="Element"||a.kind==="Component")&&a.attributes.some(p=>p.kind==="ElseDirective");n.push(this.lowerIf(i,l.hole,c?a:null)),c&&(r=s);continue}if(i.attributes.some(s=>s.kind==="EachDirective")){n.push(this.lowerEach(i));continue}}let o=this.lowerNode(i);o&&n.push(o)}return n}isBlankText(t){return t.kind==="Text"&&!t.raw&&y(t.value)===""}lowerNode(t){switch(t.kind){case"Text":{if(t.raw)return{kind:"text",value:t.value};let n=y(t.value);return n?{kind:"text",value:n}:null}case"Comment":return null;case"Expression":{let n=this.hole(t.hole);return{kind:"expr",code:n.code,reactive:n.reactive}}case"Fragment":return{kind:"fragment",children:this.lowerChildren(t.children)};case"Element":return this.lowerElement(t);case"Component":return this.lowerComponent(t);default:return null}}lowerElement(t){let n=t.attributes.find(r=>r.kind==="Attribute"&&r.name==="is");if(t.tag==="component"&&n&&n.value&&n.value.kind==="hole"){let r=t.attributes.filter(o=>o!==n),i=this.lowerComponent({...t,kind:"Component",tag:"Dynamic",tagHole:null,attributes:r});return i.props.unshift({name:"component",kind:"attr",expr:`() => (${this.hole(n.value.hole).code})`}),i}return{kind:"element",tag:t.tag,svg:t.namespace==="svg",props:this.lowerAttributes(t.attributes),children:this.lowerChildren(t.children),static:!1}}lowerComponent(t){let n=t.tagHole!=null?this.hole(t.tagHole).code:t.tag,r=this.lowerAttributes(t.attributes),{slots:i,rest:o}=this.partitionSlots(t.children);for(let[a,c]of i){let p=c.length===1?c[0]:{kind:"fragment",children:c},d={name:a,kind:"attr",expr:this.emit(p),jsxElement:!0},m=r.findIndex(S=>S.name===a);m>=0?r[m]=d:r.push(d)}let l=t.attributes.find(a=>a.kind==="LoadDirective"),s=l?$(`load:${l.strategy}`,l.modifier):void 0;return{kind:"component",name:n,props:r,children:this.lowerChildren(o),...s?{load:s}:{}}}partitionSlots(t){let n=new Map,r=[];for(let i of t){if(i.kind==="Element"||i.kind==="Component"){let o=i.attributes.find(l=>l.kind==="Attribute"&&l.name==="slot");if(o&&o.value&&o.value.kind==="static"){let l={...i,attributes:i.attributes.filter(c=>c!==o)},s=l.kind==="Element"?this.lowerElement(l):this.lowerComponent(l),a=n.get(o.value.value)??[];a.push(s),n.set(o.value.value,a);continue}}r.push(i)}return{slots:n,rest:r}}lowerIf(t,n,r){let i=this.hole(n),o=[{name:"when",kind:"attr",expr:i.code,reactive:i.reactive}];if(r){let s=this.stripAndLower(r,a=>a.kind==="ElseDirective");o.push({name:"fallback",kind:"attr",expr:this.emit(s),jsxElement:!0})}let l=this.stripAndLower(t,s=>s.kind==="IfDirective");return{kind:"component",name:"Show",props:o,children:[l]}}lowerEach(t){let n=t.attributes.find(a=>a.kind==="EachDirective");if(!n||n.kind!=="EachDirective")return this.lowerNode(t);let r=this.hole(n.hole),i=[{name:"each",kind:"attr",expr:r.code,reactive:r.reactive}];if(n.key){let a="static"in n.key?`(item) => item[${JSON.stringify(n.key.static)}]`:this.hole(n.key.hole).code;i.push({name:"by",kind:"attr",expr:a})}let o=this.itemArrow(t),l;if(o){let a={kind:"expr",code:o.body,reactive:o.bodyReactive},c=this.rebuildWithChildren(t,[a]);l=`(${o.params.join(", ")}) => (${this.emit(c)})`}else{let a=this.stripAndLower(t,c=>c.kind==="EachDirective");l=`() => (${this.emit(a)})`}return{kind:"component",name:"For",props:i,children:[{kind:"expr",code:l,reactive:!1}]}}itemArrow(t){let n=t.children.filter(r=>!this.isBlankText(r));return n.length!==1||n[0].kind!=="Expression"?null:this.hole(n[0].hole).arrow??null}stripAndLower(t,n){let r={...t,attributes:t.attributes.filter(i=>!n(i))};return r.kind==="Element"?this.lowerElement(r):this.lowerComponent(r)}rebuildWithChildren(t,n){let r=this.lowerAttributes(t.attributes.filter(i=>i.kind!=="EachDirective"));return t.kind==="Element"?{kind:"element",tag:t.tag,svg:t.namespace==="svg",props:r,children:n,static:!1}:{kind:"component",name:t.tag,props:r,children:n}}lowerAttributes(t){let n=[],r=[],i=!1,o=[],l=!1,s=[];for(let a of t)switch(a.kind){case"IfDirective":case"EachDirective":case"ElseDirective":break;case"Attribute":n.push(this.plainAttr(a));break;case"PropertyBinding":n.push({name:a.name,kind:"prop",expr:this.hole(a.hole).code,reactive:this.hole(a.hole).reactive});break;case"EventBinding":n.push(this.eventProp(a));break;case"RefBinding":n.push({name:"ref",kind:"ref",expr:this.hole(a.hole).code,reactive:this.hole(a.hole).reactive});break;case"Spread":n.push({name:"",kind:"spread",expr:this.hole(a.hole).code});break;case"ClassDirective":{let c=this.hole(a.hole);r.push(`${JSON.stringify(a.name)}: ${c.code}`),i=i||c.reactive;break}case"StyleDirective":{let c=this.hole(a.hole);o.push(`${JSON.stringify(a.name)}: ${c.code}`),l=l||c.reactive;break}case"BindDirective":n.push(...this.bindProps(a.name,this.hole(a.hole).code));break;case"UseDirective":{let c=a.name??(a.hole!=null?this.hole(a.hole).code:null);if(!c)break;s.push(a.name!=null&&a.hole!=null?`[${c}, () => (${this.hole(a.hole).code})]`:`[${c}]`);break}}return r.length>0&&n.push({name:"classList",kind:"attr",expr:`{ ${r.join(", ")} }`,reactive:i}),o.length>0&&n.push({name:"style",kind:"attr",expr:`{ ${o.join(", ")} }`,reactive:l}),s.length>0&&n.push({name:"use",kind:"attr",expr:`[${s.join(", ")}]`}),n}eventProp(t){let n=t.name.toLowerCase(),r=this.hole(t.hole).code;if(!(t.syntax==="colon"||t.modifiers.length>0))return{name:"on"+ae(t.name),kind:"event",event:{name:n,delegated:se.has(n)},expr:r};let o=this.wrapHandler(r,t.modifiers),l=this.eventOptions(t.modifiers),s=l?`[${o}, ${l}]`:o;return{name:"on:"+n,kind:"attr",expr:s}}wrapHandler(t,n){let r=n.includes("self")?"if (e.target !== e.currentTarget) return; ":"",i=[];return n.includes("prevent")&&i.push("e.preventDefault();"),n.includes("stop")&&i.push("e.stopPropagation();"),!r&&i.length===0?t:`(e) => { ${r}${i.join(" ")} return (${t})(e); }`}eventOptions(t){let n=[];return t.includes("capture")&&n.push("capture: true"),t.includes("once")&&n.push("once: true"),t.includes("passive")&&n.push("passive: true"),n.length?`{ ${n.join(", ")} }`:null}bindProps(t,n){let r=t==="checked",i=r?"change":"input",o=r?"checked":"value";this.used.add("bindPair");let l=`bindPair(${n})`;return[{name:t,kind:"attr",expr:`${l}[0]()`,reactive:!0},{name:"on"+ae(i),kind:"event",event:{name:i,delegated:se.has(i)},expr:`(e) => ${l}[1](e.target.${o})`}]}plainAttr(t){let n=t.value,r=t.name;t.name==="class"?r=n&&n.kind==="hole"&&this.hole(n.hole).object?"classList":"className":t.name==="html"&&(r="innerHTML");let o={name:r,kind:"attr"};if(n==null)return o.literal=!0,o;if(n.kind==="static")return o.literal=n.value,o;if(n.kind==="hole"){let a=this.hole(n.hole);return o.expr=a.code,o.reactive=a.reactive,o}let l=!1,s=n.parts.map(a=>{if("text"in a)return ze(a.text);let c=this.hole(a.hole);return l=l||c.reactive,"${"+c.code+"}"}).join("");return o.expr="`"+s+"`",o.reactive=l,o}};function ce(e,t,n,r={}){let{root:i}=(0,le.parseTemplate)(e,{svg:r.svg});return new O(t,n).lowerRoot(i.children)}var u=require("@babel/core"),_=W(require("@babel/generator"),1);function Ve(e){switch(e.kind){case"event":return"event";case"ref":return"ref";case"spread":return"spread";case"class":case"style":return"class-or-style-directive";case"attr":case"prop":return e.reactive?"reactive-prop":e.expr!==void 0?"expression-prop":void 0;default:return"expression-prop"}}function C(e){let t=[],n=new Map,r=i=>{switch(i.kind){case"text":return!0;case"expr":return!1;case"component":case"control":for(let o of i.children)r(o);return!1;case"fragment":for(let o of i.children)r(o);return!1;case"element":{let o=!0;for(let s of i.children)r(s)||(o=!1);let l;for(let s of i.props)if(l=Ve(s),l)break;return!l&&!o&&(l=Ge(i)),i.static=!l,l?n.set(i,l):t.push(i),i.static}default:return!1}};for(let i of Array.isArray(e)?e:[e])r(i);return{staticElements:t,reasons:n}}function Ge(e){for(let t of e.children){if(t.kind==="expr")return"expression-child";if(t.kind==="component")return"component-child";if(t.kind==="control")return"control-child";if(t.kind==="element"&&!t.static||t.kind==="fragment")return"expression-child"}return"expression-child"}function pe(e,t=new Set,n={}){let r=X(e,t,n);return C(r),r}var We="children";function N(e){switch(e.kind){case"call":return!0;case"member":return e.property!==We;case"compound":return e.parts.some(N);case"opaque":return!1}}var qe=new Set(["CallExpression","OptionalCallExpression"]),Ue=new Set(["MemberExpression","OptionalMemberExpression"]);function R(e){if(!e)return{kind:"opaque"};if(qe.has(e.type))return{kind:"call"};if(Ue.has(e.type)){let t=e.property;return{kind:"member",property:!(e.computed===!0)&&t?.type==="Identifier"?t.name:null}}return e.type==="ConditionalExpression"?{kind:"compound",parts:[e.test,e.consequent,e.alternate].map(E)}:e.type==="LogicalExpression"||e.type==="BinaryExpression"?{kind:"compound",parts:[e.left,e.right].map(E)}:e.type==="TemplateLiteral"?{kind:"compound",parts:e.expressions.map(E)}:e.type==="ObjectExpression"?{kind:"compound",parts:e.properties.filter(n=>(n.type==="ObjectProperty"||n.type==="Property")&&n.computed!==!0).map(n=>E(n.value))}:e.type==="ArrayExpression"?{kind:"compound",parts:e.elements.filter(n=>n!=null&&n.type!=="SpreadElement").map(E)}:{kind:"opaque"}}var E=e=>R(e);var Ke=new Set(["svg","path","circle","rect","line","polygon","polyline","ellipse","g","defs","clipPath","text"]),Ze=/^on[A-Z]/,Ye=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]),me=e=>N(R(e));function b(e){if(e.type==="StringLiteral"||e.type==="NumericLiteral"||e.type==="BooleanLiteral"||e.type==="Literal"&&(typeof e.value=="string"||typeof e.value=="number"||typeof e.value=="boolean"))return e.value}var M=e=>!!e&&typeof b(e)=="string";function Qe(e,t){return e.type==="JSXIdentifier"?{tag:e.name,component:e.name[0]!==e.name[0].toLowerCase()}:e.type==="JSXMemberExpression"?{tag:t.code(e),component:!0}:e.type==="JSXNamespacedName"?{tag:`${e.namespace.name}:${e.name.name}`,component:!1}:{tag:"div",component:!1}}function H(e){return e.type==="JSXIdentifier"?e.name==="class"?"className":e.name:e.type==="JSXNamespacedName"?`${e.namespace.name}:${e.name.name}`:"unknown"}function et(e,t){let n=H(e.name),r=Ze.test(n),i=r||n.startsWith("on:")||n==="ref",l={name:n,kind:r?"event":"attr"};if(r){let a=n.slice(2).toLowerCase();l.event={name:a,delegated:Ye.has(a)}}let s=e.value;if(s==null)return l.literal=!0,l;if(M(s))return l.literal=b(s),l;if(s.type==="JSXExpressionContainer"&&s.expression?.type!=="JSXEmptyExpression"){let a=s.expression,c=b(a);return c!==void 0?(l.literal=c,l):(l.expr=t.code(a),l.reactive=i?!1:me(a),(a.type==="JSXElement"||a.type==="JSXFragment")&&(l.jsxElement=!0),l)}return l.literal=!0,l}function de(e,t){let n=e.value;return n==null?null:M(n)?JSON.stringify(b(n)):n.type==="JSXExpressionContainer"&&n.expression?.type!=="JSXEmptyExpression"?t.code(n.expression):null}function tt(e,t){let n=[],r=[];for(let i of e){if(i.type==="JSXSpreadAttribute"){n.push({name:"",kind:"spread",expr:t.code(i.argument)});continue}if(i.type!=="JSXAttribute"||J(H(i.name)))continue;let o=i.name.type==="JSXNamespacedName"?i.name.namespace.name:null;if(o==="use"){let l=i.name.name.name;t.used.add(l);let s=de(i,t);r.push(s!=null?`[${l}, () => (${s})]`:`[${l}]`);continue}if(o==="oncapture"){let l=i.name.name.name.toLowerCase(),s=de(i,t)??"undefined";n.push({name:"on:"+l,kind:"attr",expr:`[${s}, { capture: true }]`});continue}n.push(et(i,t))}return r.length>0&&n.push({name:"use",kind:"attr",expr:`[${r.join(", ")}]`}),n}function ue(e,t){let n=[];for(let r of e)if(r.type==="JSXText"){let i=y(r.value);i&&n.push({kind:"text",value:i})}else if(r.type==="JSXExpressionContainer"){if(r.expression?.type!=="JSXEmptyExpression"){let i=r.expression;n.push({kind:"expr",code:t.code(i),reactive:me(i)})}}else r.type==="JSXElement"||r.type==="JSXFragment"?n.push(fe(r,t)):r.type==="JSXSpreadChild"&&n.push({kind:"expr",code:t.code(r.expression),reactive:!1});return n}function nt(e){for(let t of e){if(t.type!=="JSXAttribute")continue;let n=H(t.name);if(J(n)){if(t.value&&!M(t.value))throw new f(`'${n}' needs a literal value, not an expression — the strategy is compile-time.`);return $(n,t.value?b(t.value):null)}}}function fe(e,t){if(e.type==="JSXFragment")return{kind:"fragment",children:ue(e.children,t)};let{tag:n,component:r}=Qe(e.openingElement.name,t),i=tt(e.openingElement.attributes,t),o=ue(e.children,t);if(r){let l=nt(e.openingElement.attributes);return{kind:"component",name:n,props:i,children:o,...l?{load:l}:{}}}return{kind:"element",tag:n,svg:Ke.has(n),props:i,children:o,static:!1}}function he(e,t){let n=fe(e,t);return C(n),n}var rt=_.default.default??_.default;function ge(e){return rt(e,{concise:!0}).code}function it(e,t,n){let r=u.types.cloneNode(e,!0),i=u.types.file(u.types.program([u.types.expressionStatement(r)])),o=!1,l=(s,a,c)=>{for(let p of c)t.add(p);s.replaceWith(u.template.expression(a,{placeholderPattern:!1,plugins:["typescript"]})()),s.skip(),o=!0};return(0,u.traverse)(i,{"JSXElement|JSXFragment"(s){let a=s.node,c=ot(a,t,n);n?.(c);let{code:p,imports:d,templates:m}=x.emit(c,{});l(s,k(p,m),d)},TaggedTemplateExpression(s){let a=s.node.tag;if(!u.types.isIdentifier(a)||a.name!=="html"&&a.name!=="svg")return;let c=pe(s.node,t,{svg:a.name==="svg",onNested:n});n?.(c);let{code:p,imports:d,templates:m}=x.emit(c,{});l(s,k(p,m),d)}}),o?i.program.body[0].expression:e}function P(e,t,n){return ge(it(e,t,n))}function B(e){return N(R(e))}function ot(e,t=new Set,n){return he(e,{code:i=>i.type==="JSXMemberExpression"?ge(i):P(i,t,n),used:t})}var st=F.default.default??F.default;function at(e){return st(e,{concise:!0}).code}function lt(e,t,n){let r={code:P(e,t,n),reactive:B(e)};if(A.types.isArrowFunctionExpression(e)&&!A.types.isBlockStatement(e.body)){let i=e.body;r.arrow={params:e.params.map(o=>at(o)),body:P(i,t,n),bodyReactive:B(i)}}return A.types.isObjectExpression(e)&&(r.object=!0),r}function X(e,t,n={}){let r=e.quasi,i=r.expressions.map(o=>lt(o,t,n.onNested));return ce(ct(r),i,t,n)}function ct(e){let t=[];return e.quasis.forEach((n,r)=>{let i=n.value.cooked??n.value.raw;if(t.push({kind:"static",text:i,start:n.start??0}),r<e.expressions.length){let o=e.expressions[r];t.push({kind:"hole",index:r,start:o.start??0,end:o.end??0})}}),t}
1
+ "use strict";var Se=Object.create;var C=Object.defineProperty;var Ie=Object.getOwnPropertyDescriptor;var $e=Object.getOwnPropertyNames;var we=Object.getPrototypeOf,Te=Object.prototype.hasOwnProperty;var Ae=(e,t)=>{for(var n in t)C(e,n,{get:t[n],enumerable:!0})},Z=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of $e(t))!Te.call(e,i)&&i!==n&&C(e,i,{get:()=>t[i],enumerable:!(r=Ie(t,i))||r.enumerable});return e};var Y=(e,t,n)=>(n=e!=null?Se(we(e)):{},Z(t||!e||!e.__esModule?C(n,"default",{value:e,enumerable:!0}):n,e)),Ce=e=>Z(C({},"__esModule",{value:!0}),e);var xt={};Ae(xt,{lowerLitTemplate:()=>K});module.exports=Ce(xt);var M=require("@babel/core"),q=Y(require("@babel/generator"),1);var he=require("@fluixi/template-parser");var Pe={kind:"eager"},Je=["pointerdown","focusin","keydown"],Q=new Set(["eager","idle","visible","interaction","media","never"]),m=class extends Error{};function _(e){return e.startsWith("load:")}function P(e,t){let n=e.slice(5);if(!Q.has(n))throw new m(`Unknown load strategy 'load:${n}'. Expected one of ${[...Q].join(", ")}.`);switch(n){case"eager":return Pe;case"idle":return{kind:"idle"};case"never":return{kind:"never"};case"visible":return t?{kind:"visible",rootMargin:t}:{kind:"visible"};case"interaction":return{kind:"interaction",events:t?De(t):[...Je]};case"media":if(!t)throw new m(`'load:media' needs a query, e.g. load:media="(min-width: 1024px)".`);return{kind:"media",query:t};default:throw new m(`Unhandled load strategy '${n}'.`)}}function De(e){let t=e.split(/[\s,]+/).map(n=>n.trim()).filter(Boolean);if(t.length===0)throw new m("'load:interaction' was given no event names.");return t}var Oe=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),ee={className:"class",htmlFor:"for"},Le=new Set(["innerHTML","outerHTML","innerText","textContent","value","checked","selected","muted","defaultValue","defaultChecked","children","ref"]),Me=new Set(["script","style","textarea","title"]);function j(e){return Me.has(e)}function te(e){return ee[e]??e}function N(e){return e.kind!=="attr"||e.expr!==void 0||e.name.includes(":")?!1:!Le.has(e.name)}function H(e){if(!e.static||j(e.tag))return!1;for(let t of e.props)if(!N(t))return!1;for(let t of e.children)if(t.kind!=="text"&&!(t.kind==="element"&&H(t)))return!1;return!0}function v(e){let t=e.props.map(je).filter(Boolean).join(""),n=`<${e.tag}${t}>`;return Oe.has(e.tag)?n:`${n}${e.children.map(_e).join("")}</${e.tag}>`}function _e(e){if(e.kind==="text")return Fe(e.value);if(e.kind!=="element")throw new Error(`serializeStatic: unexpected ${e.kind}`);return v(e)}function je(e){let t=ee[e.name]??e.name,n=e.literal;return n===!0||n===void 0?` ${t}`:n===!1||n===null?"":` ${t}="${He(String(n))}"`}function He(e){return e.replace(/&/g,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function Fe(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function F(e){let t=[],n,r=i=>{n??=i.at?.file,t.push(i.at?.line??0,i.at?.column??0);for(let o of i.children)o.kind==="element"&&r(o)};return r(e),n&&t.some(i=>i!==0)?{file:n,pos:t}:void 0}var Xe="<!--fx-->",Be="<!--fx/-->";function D(e){return e.kind==="expr"||e.kind==="component"||e.kind==="control"}function Ve(e){return e.kind==="text"||e.kind==="element"&&ne(e)}function ne(e){return e.svg||j(e.tag)||!e.props.every(t=>N(t))?!1:e.children.every(t=>Ve(t)||D(t))}function J(e){if(D(e))return!0;let t=e.children;return t?t.some(J):!1}function re(e){for(let t=0;t<e.children.length;t++){let n=e.children[t];if(n.kind==="text"&&(n.value===""||e.children[t+1]?.kind==="text"))return!1}return e.children.every(t=>t.kind!=="element"||re(t))}function ie(e){if(!ne(e)||!re(e)||!e.children.some(J))return null;let t=[],n=[],r=0,i=a=>{let s=`_n$${r++}`;return t.push({ref:s,expr:a}),s};return o(e,"_el$"),{html:Ke(e),tag:e.tag,steps:t,holes:n};function o(a,s){let l=-1;a.children.forEach((c,u)=>{J(c)&&(l=u)});let p=null;for(let c=0;c<=l;c++){let u=a.children[c],d=p?`${p}.nextSibling`:`${s}.firstChild`;if(D(u)){let y=i(d),A=i(`holeEnd(${y})`);n.push({parentRef:s,startRef:y,endRef:A,node:u}),p=A;continue}let h=i(d);u.kind==="element"&&J(u)&&o(u,h),p=h}}}function Ke(e){return v(oe(e)).split(se).join(Xe+Be)}function oe(e){return{...e,children:e.children.map(t=>D(t)?{kind:"text",value:se}:t.kind==="element"?oe(t):t)}}var se="\0fx-hole\0";var X={version:1,module:"@fluixi/dom",symbols:["createNativeElement","insert","spread","setAttribute","delegateEvents","createComponent","createMemo","untrack","Show","For","Index","Switch","Match","Dynamic","ErrorBoundary"]},It={version:2,module:"@fluixi/dom",symbols:[...X.symbols,"template","cloneTemplate","walk"]};var g="@fluixi/reactive/signal",B={$signal:{export:"signal",module:g,returns:"signal-handle"},$memo:{export:"memo",module:g,returns:"memo-handle"},$effect:{export:"effect",module:g,returns:"effect"},$store:{export:"store",module:"@fluixi/reactive/store",returns:"store-handle"},$resource:{export:"resource",module:g,returns:"resource-handle"},$selector:{export:"createSelector",module:g,returns:"memo-accessor"},$deferred:{export:"createDeferred",module:g,returns:"memo-accessor"},$untrack:{export:"untrack",module:g,returns:"plain"},$untrackStore:{export:"untrackStore",module:"@fluixi/reactive/store",returns:"plain"}};var wt=new RegExp(`\\$(?:${Object.keys(B).map(e=>e.slice(1)).join("|")})\\s*\\(`);var ae="__fx_source";var Ue="__fx_hole",x=(e,t,n,r)=>`(globalThis.${Ue} ?? ((f) => f))(${e},${t},${n}${r===void 0?"":`,${JSON.stringify(r)}`})`,ze="__fx_props",ce=(e,t)=>`(globalThis.${ze} ?? ((p) => p))(${e},${JSON.stringify(t)})`;var We={show:"Show",for:"For",index:"Index",switch:"Switch",match:"Match",dynamic:"Dynamic",errorBoundary:"ErrorBoundary",suspense:"Suspense"};function Ge(e){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e)}function ue(e){return Ge(e)?e:JSON.stringify(e)}function qe(e){if(e.expr!==void 0){if(e.name==="ref"&&e.at)return x(`(${e.expr})`,e.at.line,e.at.column,e.expr);if(!e.reactive)return`(${e.expr})`;let t=`() => (${e.expr})`;return e.at?x(t,e.at.line,e.at.column,e.directive):t}return JSON.stringify(e.literal??!0)}function Ze(e){return e.expr!==void 0?`(${e.expr})`:JSON.stringify(e.literal??!0)}function Ye(e,t,n){let r=e.filter(s=>s.kind==="spread"),o=e.filter(s=>s.kind!=="spread").map(s=>`${ue(s.name)}: ${qe(s)}`);t!=null&&o.push(`children: ${t}`);let a=`{ ${o.join(", ")} }`;return r.length>0?(n.add("mergeProps"),`mergeProps(${r.map(s=>s.expr).join(", ")}, ${a})`):a}function le(e,t){return t?x(e,t.line,t.column):e}function de(e,t,n){return e.length===1?k(e[0],t,n):`[${e.map(r=>k(r,t,n)).join(", ")}]`}function pe(e,t,n,r,i,o){r.add("createMemo"),r.add("createComponent");let a=t.filter(d=>d.kind==="spread"),s=t.filter(d=>d.kind!=="spread"),l=s.map(d=>`get ${ue(d.name)}() { return ${Ze(d)}; }`);n.length>0&&l.push(`get children() { return ${de(n,r,i)}; }`);let p=`{ ${l.join(", ")} }`;a.length>0&&(r.add("mergeProps"),p=`mergeProps(${a.map(d=>d.expr).join(", ")}, ${p})`);let c={};for(let d of s)d.at&&(c[d.name]=[d.at.line,d.at.column]);return Object.keys(c).length&&(p=ce(p,c)),`createMemo((${o?`globalThis.${ae}?.(${JSON.stringify(o.file)},${o.line},${o.column},${JSON.stringify(e)}), `:""}() => createComponent(${e}, ${p})))`}function Qe(e,t){let n=te(t.name),r=t.literal;return r===!0||r===void 0?`${e}.setAttribute(${JSON.stringify(n)}, "");`:r===!1||r===null?"":`${e}.setAttribute(${JSON.stringify(n)}, ${JSON.stringify(String(r))});`}var fe=!1;function k(e,t,n){switch(e.kind){case"text":return JSON.stringify(e.value);case"expr":{if(!e.reactive)return`(${e.code})`;let r=`() => (${e.code})`;return e.at?x(r,e.at.line,e.at.column):r}case"fragment":return e.children.length===0?"null":de(e.children,t,n);case"component":return le(pe(e.name,e.props,e.children,t,n,e.at),e.bindAt??e.at);case"control":{let r=We[e.control]??e.control;return t.add(r),le(pe(r,e.props,e.children,t,n),e.bindAt)}case"element":{if(n&&e.static&&!e.svg&&H(e)){t.add("templateNode");let s=`_tmpl$${n.length}`;n.push({id:s,html:v(e),tag:e.tag,svg:!1});let l=F(e);return l?`templateNode(${s}, ${JSON.stringify(e.tag)}, false, false, ${JSON.stringify(l)})`:`templateNode(${s}, ${JSON.stringify(e.tag)})`}if(n&&fe){let s=ie(e);if(s){t.add("templateNode"),t.add("insert"),t.add("holeEnd"),t.add("holeContent"),t.add("holeScope");let l=`_tmpl$${n.length}`;n.push({id:l,html:s.html,tag:s.tag,svg:!1});let p=F(e),c=[`const _el$ = templateNode(${l}, ${JSON.stringify(s.tag)}, true${p?`, false, ${JSON.stringify(p)}`:""});`];for(let u of s.steps)c.push(`const ${u.ref} = ${u.expr};`);for(let u of s.holes)c.push(`insert(${u.parentRef}, holeScope(${u.startRef}, () => (${k(u.node,t,n)})), ${u.endRef}, holeContent(${u.startRef}, ${u.endRef}));`);return c.push("return _el$;"),`(() => { ${c.join(" ")} })()`}}t.add("createNativeElement");let r=JSON.stringify(e.tag),i="_el$",o=[],a=e.at?`${r}, ${e.svg}, ${JSON.stringify(e.at)}`:e.svg?`${r}, true`:r;if(o.push(`const ${i} = createNativeElement(${a});`),e.props.length>0)if(!e.svg&&e.props.every(N))for(let s of e.props)o.push(Qe(i,s));else{t.add("spread");let s=e.svg?", isSVG: true":"";o.push(`spread({ element: ${i}, props: ${Ye(e.props,null,t)}${s} });`)}for(let s of e.children){t.add("insert");let l=k(s,t,n),p=s.kind==="expr"&&s.reactive||s.kind==="component"||s.kind==="control";o.push(p?`insert(${i}, ${l}, null);`:`insert(${i}, ${l});`)}return o.push(`return ${i};`),`(() => { ${o.join(" ")} })()`}}}function R(e,t){if(!t||t.length===0)return e;let n=new Map(t.map(r=>[r.id,JSON.stringify(r.html)]));return e.replace(/_tmpl\$\d+/g,r=>n.get(r)??r)}var b={name:"imperative",contract:X,emit(e,t){let n=new Set,r=t?.templateClone!==!1?[]:void 0;return fe=t?.partialTemplates===!0,{code:k(e,n,r),imports:Array.from(n),templates:r}}};function E(e){let t=e.split(/\r\n|\n|\r/),n=0;for(let i=0;i<t.length;i++)/[^ \t]/.test(t[i])&&(n=i);let r="";for(let i=0;i<t.length;i++){let o=t[i].replace(/\t/g," ");i!==0&&(o=o.replace(/^ +/,"")),i!==t.length-1&&(o=o.replace(/ +$/,"")),o&&(i!==n&&(o+=" "),r+=o)}return r}var me=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function et(e){return e.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${")}function ge(e){return e.charAt(0).toUpperCase()+e.slice(1)}var V=class{constructor(t,n,r,i){this.holes=t;this.used=n;this.sourceFile=r;this.positionAt=i}tagAt(t){let n=t.loc?.start;if(!this.sourceFile||!this.positionAt||n==null)return;let{line:r,column:i}=this.positionAt(n);return{file:this.sourceFile,line:r,column:i}}hole(t){return this.holes[t]??{code:"undefined",reactive:!1}}emit(t){let{code:n,imports:r,templates:i}=b.emit(t,{});for(let o of r)this.used.add(o);return R(n,i)}lowerRoot(t){let n=this.lowerChildren(t);return n.length===1?n[0]:{kind:"fragment",children:n}}lowerChildren(t){let n=[];for(let r=0;r<t.length;r++){let i=t[r];if(i.kind==="Element"||i.kind==="Component"){let a=i.attributes.find(s=>s.kind==="IfDirective");if(a&&a.kind==="IfDirective"){let s=r+1;s<t.length&&this.isBlankText(t[s])&&s++;let l=t[s],p=l&&(l.kind==="Element"||l.kind==="Component")&&l.attributes.some(c=>c.kind==="ElseDirective");n.push(this.lowerIf(i,a.hole,p?l:null)),p&&(r=s);continue}if(i.attributes.some(s=>s.kind==="EachDirective")){n.push(this.lowerEach(i));continue}}let o=this.lowerNode(i);o&&n.push(o)}return n}isBlankText(t){return t.kind==="Text"&&!t.raw&&E(t.value)===""}lowerNode(t){switch(t.kind){case"Text":{if(t.raw)return{kind:"text",value:t.value};let n=E(t.value);return n?{kind:"text",value:n}:null}case"Comment":return null;case"Expression":{let n=this.hole(t.hole);return{kind:"expr",code:n.code,reactive:n.reactive,...n.at?{at:n.at}:{}}}case"Fragment":return{kind:"fragment",children:this.lowerChildren(t.children)};case"Element":return this.lowerElement(t);case"Component":return this.lowerComponent(t);default:return null}}lowerElement(t){let n=t.attributes.find(i=>i.kind==="Attribute"&&i.name==="is");if(t.tag==="component"&&n&&n.value&&n.value.kind==="hole"){let i=t.attributes.filter(a=>a!==n),o=this.lowerComponent({...t,kind:"Component",tag:"Dynamic",tagHole:null,attributes:i});return o.props.unshift({name:"component",kind:"attr",expr:`() => (${this.hole(n.value.hole).code})`}),o}let r=this.tagAt(t);return{kind:"element",tag:t.tag,svg:t.namespace==="svg",props:this.lowerAttributes(t.attributes),children:this.lowerChildren(t.children),static:!1,...r?{at:r}:{}}}lowerComponent(t){let n=t.tagHole!=null?this.hole(t.tagHole).code:t.tag,r=this.lowerAttributes(t.attributes),{slots:i,rest:o}=this.partitionSlots(t.children);for(let[c,u]of i){let d=u.length===1?u[0]:{kind:"fragment",children:u},h={name:c,kind:"attr",expr:this.emit(d),jsxElement:!0},y=r.findIndex(A=>A.name===c);y>=0?r[y]=h:r.push(h)}let a=t.attributes.find(c=>c.kind==="LoadDirective"),s=a?P(`load:${a.strategy}`,a.modifier):void 0,l=r.find(c=>c.at&&c.reactive)?.at,p=this.tagAt(t);return{kind:"component",name:n,props:r,children:this.lowerChildren(o),...p?{at:p}:{},...l?{bindAt:l}:{},...s?{load:s}:{}}}partitionSlots(t){let n=new Map,r=[];for(let i of t){if(i.kind==="Element"||i.kind==="Component"){let o=i.attributes.find(a=>a.kind==="Attribute"&&a.name==="slot");if(o&&o.value&&o.value.kind==="static"){let a={...i,attributes:i.attributes.filter(p=>p!==o)},s=a.kind==="Element"?this.lowerElement(a):this.lowerComponent(a),l=n.get(o.value.value)??[];l.push(s),n.set(o.value.value,l);continue}}r.push(i)}return{slots:n,rest:r}}lowerIf(t,n,r){let i=this.hole(n),o=[{name:"when",kind:"attr",expr:i.code,reactive:i.reactive,...i.at?{at:i.at}:{}}];if(r){let l=this.stripAndLower(r,p=>p.kind==="ElseDirective");o.push({name:"fallback",kind:"attr",expr:this.emit(l),jsxElement:!0})}let a=this.stripAndLower(t,l=>l.kind==="IfDirective"),s=this.tagAt(t);return{kind:"component",name:"Show",props:o,children:[a],...s?{at:s}:{},...i.at?{bindAt:i.at}:{}}}lowerEach(t){let n=t.attributes.find(p=>p.kind==="EachDirective");if(!n||n.kind!=="EachDirective")return this.lowerNode(t);let r=this.hole(n.hole),i=[{name:"each",kind:"attr",expr:r.code,reactive:r.reactive,...r.at?{at:r.at}:{}}];if(n.key){let p="static"in n.key?`(item) => item[${JSON.stringify(n.key.static)}]`:this.hole(n.key.hole).code;i.push({name:"by",kind:"attr",expr:p})}let o=this.itemArrow(t),a;if(o){let p={kind:"expr",code:o.body,reactive:o.bodyReactive},c=this.rebuildWithChildren(t,[p]);a=`(${o.params.join(", ")}) => (${this.emit(c)})`}else{let p=this.stripAndLower(t,c=>c.kind==="EachDirective");a=`() => (${this.emit(p)})`}let s=[{kind:"expr",code:a,reactive:!1}],l=this.tagAt(t);return{kind:"component",name:"For",props:i,children:s,...l?{at:l}:{},...r.at?{bindAt:r.at}:{}}}itemArrow(t){let n=t.children.filter(r=>!this.isBlankText(r));return n.length!==1||n[0].kind!=="Expression"?null:this.hole(n[0].hole).arrow??null}stripAndLower(t,n){let r={...t,attributes:t.attributes.filter(i=>!n(i))};return r.kind==="Element"?this.lowerElement(r):this.lowerComponent(r)}rebuildWithChildren(t,n){let r=this.lowerAttributes(t.attributes.filter(i=>i.kind!=="EachDirective"));if(t.kind==="Element"){let i=this.tagAt(t);return{kind:"element",tag:t.tag,svg:t.namespace==="svg",props:r,children:n,static:!1,...i?{at:i}:{}}}return{kind:"component",name:t.tag,props:r,children:n}}lowerAttributes(t){let n=[],r=[],i=!1,o,a=[],s=!1,l,p=[];for(let c of t)switch(c.kind){case"IfDirective":case"EachDirective":case"ElseDirective":break;case"Attribute":n.push(this.plainAttr(c));break;case"PropertyBinding":n.push({name:c.name,kind:"prop",expr:this.hole(c.hole).code,reactive:this.hole(c.hole).reactive,...this.hole(c.hole).at?{at:this.hole(c.hole).at}:{}});break;case"EventBinding":n.push(this.eventProp(c));break;case"RefBinding":n.push({name:"ref",kind:"ref",expr:this.hole(c.hole).code,reactive:this.hole(c.hole).reactive,...this.hole(c.hole).at?{at:this.hole(c.hole).at}:{}});break;case"Spread":n.push({name:"",kind:"spread",expr:this.hole(c.hole).code});break;case"ClassDirective":{let u=this.hole(c.hole);r.push(`${JSON.stringify(c.name)}: ${u.code}`),i=i||u.reactive,o??=u.at;break}case"StyleDirective":{let u=this.hole(c.hole);a.push(`${JSON.stringify(c.name)}: ${u.code}`),s=s||u.reactive,l??=u.at;break}case"BindDirective":n.push(...this.bindProps(c.name,this.hole(c.hole)));break;case"UseDirective":{let u=c.name??(c.hole!=null?this.hole(c.hole).code:null);if(!u)break;p.push(c.name!=null&&c.hole!=null?`[${u}, () => (${this.hole(c.hole).code})]`:`[${u}]`);break}}return r.length>0&&n.push({name:"classList",kind:"attr",expr:`{ ${r.join(", ")} }`,reactive:i,...o?{at:o}:{}}),a.length>0&&n.push({name:"style",kind:"attr",expr:`{ ${a.join(", ")} }`,reactive:s,...l?{at:l}:{}}),p.length>0&&n.push({name:"use",kind:"attr",expr:`[${p.join(", ")}]`}),n}eventProp(t){let n=t.name.toLowerCase(),r=this.hole(t.hole).code;if(!(t.syntax==="colon"||t.modifiers.length>0))return{name:"on"+ge(t.name),kind:"event",event:{name:n,delegated:me.has(n)},expr:r};let o=this.wrapHandler(r,t.modifiers),a=this.eventOptions(t.modifiers),s=a?`[${o}, ${a}]`:o;return{name:"on:"+n,kind:"attr",expr:s}}wrapHandler(t,n){let r=n.includes("self")?"if (e.target !== e.currentTarget) return; ":"",i=[];return n.includes("prevent")&&i.push("e.preventDefault();"),n.includes("stop")&&i.push("e.stopPropagation();"),!r&&i.length===0?t:`(e) => { ${r}${i.join(" ")} return (${t})(e); }`}eventOptions(t){let n=[];return t.includes("capture")&&n.push("capture: true"),t.includes("once")&&n.push("once: true"),t.includes("passive")&&n.push("passive: true"),n.length?`{ ${n.join(", ")} }`:null}bindProps(t,n){let r=n.code,i=t==="checked",o=i?"change":"input",a=i?"checked":"value";this.used.add("bindPair");let s=`bindPair(${r})`;return[{name:t,kind:"attr",expr:`${s}[0]()`,reactive:!0,directive:`bind:${t}`,...n.at?{at:n.at}:{}},{name:"on"+ge(o),kind:"event",event:{name:o,delegated:me.has(o)},expr:`(e) => ${s}[1](e.target.${a})`}]}plainAttr(t){let n=t.value,r=t.name;t.name==="class"?r=n&&n.kind==="hole"&&this.hole(n.hole).object?"classList":"className":t.name==="html"&&(r="innerHTML");let o={name:r,kind:"attr"};if(n==null)return o.literal=!0,o;if(n.kind==="static")return o.literal=n.value,o;if(n.kind==="hole"){let p=this.hole(n.hole);return o.expr=p.code,o.reactive=p.reactive,p.at&&(o.at=p.at),o}let a=!1,s,l=n.parts.map(p=>{if("text"in p)return et(p.text);let c=this.hole(p.hole);return a=a||c.reactive,s??=c.at,"${"+c.code+"}"}).join("");return o.expr="`"+l+"`",o.reactive=a,s&&(o.at=s),o}};function ye(e,t,n,r={}){let{root:i}=(0,he.parseTemplate)(e,{svg:r.svg});return new V(t,n,r.sourceFile,r.positionAt).lowerRoot(i.children)}var f=require("@babel/core"),W=Y(require("@babel/generator"),1);function tt(e){switch(e.kind){case"event":return"event";case"ref":return"ref";case"spread":return"spread";case"class":case"style":return"class-or-style-directive";case"attr":case"prop":return e.reactive?"reactive-prop":e.expr!==void 0?"expression-prop":void 0;default:return"expression-prop"}}function O(e){let t=[],n=new Map,r=i=>{switch(i.kind){case"text":return!0;case"expr":return!1;case"component":case"control":for(let o of i.children)r(o);return!1;case"fragment":for(let o of i.children)r(o);return!1;case"element":{let o=!0;for(let s of i.children)r(s)||(o=!1);let a;for(let s of i.props)if(a=tt(s),a)break;return!a&&!o&&(a=nt(i)),i.static=!a,a?n.set(i,a):t.push(i),i.static}default:return!1}};for(let i of Array.isArray(e)?e:[e])r(i);return{staticElements:t,reasons:n}}function nt(e){for(let t of e.children){if(t.kind==="expr")return"expression-child";if(t.kind==="component")return"component-child";if(t.kind==="control")return"control-child";if(t.kind==="element"&&!t.static||t.kind==="fragment")return"expression-child"}return"expression-child"}function Ne(e,t=new Set,n={}){let r=K(e,t,n);return O(r),r}var rt="children";function S(e){switch(e.kind){case"call":return!0;case"member":return e.property!==rt;case"compound":return e.parts.some(S);case"opaque":return!1}}var it=new Set(["CallExpression","OptionalCallExpression"]),ot=new Set(["MemberExpression","OptionalMemberExpression"]);function $(e){if(!e)return{kind:"opaque"};if(it.has(e.type))return{kind:"call"};if(ot.has(e.type)){let t=e.property;return{kind:"member",property:!(e.computed===!0)&&t?.type==="Identifier"?t.name:null}}return e.type==="ConditionalExpression"?{kind:"compound",parts:[e.test,e.consequent,e.alternate].map(I)}:e.type==="LogicalExpression"||e.type==="BinaryExpression"?{kind:"compound",parts:[e.left,e.right].map(I)}:e.type==="TemplateLiteral"?{kind:"compound",parts:e.expressions.map(I)}:e.type==="ObjectExpression"?{kind:"compound",parts:e.properties.filter(n=>(n.type==="ObjectProperty"||n.type==="Property")&&n.computed!==!0).map(n=>I(n.value))}:e.type==="ArrayExpression"?{kind:"compound",parts:e.elements.filter(n=>n!=null&&n.type!=="SpreadElement").map(I)}:{kind:"opaque"}}var I=e=>$(e);var st=new Set(["svg","path","circle","rect","line","polygon","polyline","ellipse","g","defs","clipPath","text"]),at=/^on[A-Z]/,ct=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]),ke=e=>S($(e)),w=(e,t)=>{if(!t.sourceFile)return;let n=e.loc?.start;return n?{line:n.line,column:n.column}:void 0};function T(e){if(e.type==="StringLiteral"||e.type==="NumericLiteral"||e.type==="BooleanLiteral"||e.type==="Literal"&&(typeof e.value=="string"||typeof e.value=="number"||typeof e.value=="boolean"))return e.value}var U=e=>!!e&&typeof T(e)=="string";function lt(e,t){return e.type==="JSXIdentifier"?{tag:e.name,component:e.name[0]!==e.name[0].toLowerCase()}:e.type==="JSXMemberExpression"?{tag:t.code(e),component:!0}:e.type==="JSXNamespacedName"?{tag:`${e.namespace.name}:${e.name.name}`,component:!1}:{tag:"div",component:!1}}function z(e){return e.type==="JSXIdentifier"?e.name==="class"?"className":e.name:e.type==="JSXNamespacedName"?`${e.namespace.name}:${e.name.name}`:"unknown"}function pt(e,t){let n=z(e.name),r=at.test(n),i=r||n.startsWith("on:")||n==="ref",a={name:n,kind:r?"event":"attr"};if(r){let l=n.slice(2).toLowerCase();a.event={name:l,delegated:ct.has(l)}}let s=e.value;if(s==null)return a.literal=!0,a.at=w(e,t),a;if(U(s))return a.literal=T(s),a.at=w(s,t),a;if(s.type==="JSXExpressionContainer"&&s.expression?.type!=="JSXEmptyExpression"){let l=s.expression,p=T(l);return p!==void 0?(a.literal=p,a.at=w(l,t),a):(a.expr=t.code(l),a.reactive=i?!1:ke(l),a.at=w(l,t),(l.type==="JSXElement"||l.type==="JSXFragment")&&(a.jsxElement=!0),a)}return a.literal=!0,a}function ve(e,t){let n=e.value;return n==null?null:U(n)?JSON.stringify(T(n)):n.type==="JSXExpressionContainer"&&n.expression?.type!=="JSXEmptyExpression"?t.code(n.expression):null}function ut(e,t){let n=[],r=[];for(let i of e){if(i.type==="JSXSpreadAttribute"){n.push({name:"",kind:"spread",expr:t.code(i.argument)});continue}if(i.type!=="JSXAttribute"||_(z(i.name)))continue;let o=i.name.type==="JSXNamespacedName"?i.name.namespace.name:null;if(o==="use"){let a=i.name.name.name;t.used.add(a);let s=ve(i,t);r.push(s!=null?`[${a}, () => (${s})]`:`[${a}]`);continue}if(o==="oncapture"){let a=i.name.name.name.toLowerCase(),s=ve(i,t)??"undefined";n.push({name:"on:"+a,kind:"attr",expr:`[${s}, { capture: true }]`});continue}n.push(pt(i,t))}return r.length>0&&n.push({name:"use",kind:"attr",expr:`[${r.join(", ")}]`}),n}function xe(e,t){let n=[];for(let r of e)if(r.type==="JSXText"){let i=E(r.value);i&&n.push({kind:"text",value:i})}else if(r.type==="JSXExpressionContainer"){if(r.expression?.type!=="JSXEmptyExpression"){let i=r.expression,o=ke(i);n.push({kind:"expr",code:t.code(i),reactive:o,...o?{at:w(i,t)}:{}})}}else r.type==="JSXElement"||r.type==="JSXFragment"?n.push(Re(r,t)):r.type==="JSXSpreadChild"&&n.push({kind:"expr",code:t.code(r.expression),reactive:!1});return n}function dt(e){for(let t of e){if(t.type!=="JSXAttribute")continue;let n=z(t.name);if(_(n)){if(t.value&&!U(t.value))throw new m(`'${n}' needs a literal value, not an expression — the strategy is compile-time.`);return P(n,t.value?T(t.value):null)}}}function Re(e,t){if(e.type==="JSXFragment")return{kind:"fragment",children:xe(e.children,t)};let{tag:n,component:r}=lt(e.openingElement.name,t),i=ut(e.openingElement.attributes,t),o=xe(e.children,t),a=t.sourceFile&&e.loc?.start?{file:t.sourceFile,line:e.loc.start.line,column:e.loc.start.column}:void 0;if(r){let s=dt(e.openingElement.attributes);return{kind:"component",name:n,props:i,children:o,...s?{load:s}:{},...a?{at:a}:{}}}return{kind:"element",tag:n,svg:st.has(n),props:i,children:o,static:!1,...a?{at:a}:{}}}function be(e,t){let n=Re(e,t);return O(n),n}var ft=W.default.default??W.default;function Ee(e){return ft(e,{concise:!0}).code}function mt(e,t,n){let r=f.types.cloneNode(e,!0),i=f.types.file(f.types.program([f.types.expressionStatement(r)])),o=!1,a=(s,l,p)=>{for(let c of p)t.add(c);s.replaceWith(f.template.expression(l,{placeholderPattern:!1,plugins:["typescript"]})()),s.skip(),o=!0};return(0,f.traverse)(i,{"JSXElement|JSXFragment"(s){let l=s.node,p=gt(l,t,n);n?.(p);let{code:c,imports:u,templates:d}=b.emit(p,{});a(s,R(c,d),u)},TaggedTemplateExpression(s){let l=s.node.tag;if(!f.types.isIdentifier(l)||l.name!=="html"&&l.name!=="svg")return;let p=Ne(s.node,t,{svg:l.name==="svg",onNested:n});n?.(p);let{code:c,imports:u,templates:d}=b.emit(p,{});a(s,R(c,d),u)}}),o?i.program.body[0].expression:e}function L(e,t,n){return Ee(mt(e,t,n))}function G(e){return S($(e))}function gt(e,t=new Set,n){return be(e,{code:i=>i.type==="JSXMemberExpression"?Ee(i):L(i,t,n),used:t})}var ht=q.default.default??q.default;function yt(e){return ht(e,{concise:!0}).code}function Nt(e,t,n){let r={code:L(e,t,n),reactive:G(e)};if(M.types.isArrowFunctionExpression(e)&&!M.types.isBlockStatement(e.body)){let i=e.body;r.arrow={params:e.params.map(o=>yt(o)),body:L(i,t,n),bodyReactive:G(i)}}return M.types.isObjectExpression(e)&&(r.object=!0),r}function K(e,t,n={}){let r=e.quasi,i=r.expressions.map(o=>Nt(o,t,n.onNested));return ye(vt(r),i,t,n)}function vt(e){let t=[];return e.quasis.forEach((n,r)=>{let i=n.value.cooked??n.value.raw;if(t.push({kind:"static",text:i,start:n.start??0}),r<e.expressions.length){let o=e.expressions[r];t.push({kind:"hole",index:r,start:o.start??0,end:o.end??0})}}),t}