@fluixi/compiler 1.0.0-alpha.79 → 1.0.0-alpha.80
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/analyze/intrinsics.cjs +1 -1
- package/dist/analyze/intrinsics.js +1 -1
- package/dist/analyze/intrinsics.mjs +1 -1
- package/dist/analyze/reactive-bindings.cjs +1 -1
- package/dist/analyze/reactive-bindings.mjs +1 -1
- package/dist/babel-4JUDAR2G.mjs +1 -0
- package/dist/{chunk-5DJ424I7.mjs → chunk-PVR2SN3B.mjs} +1 -1
- package/dist/{chunk-SZPI4R7H.mjs → chunk-QUIYULS2.mjs} +1 -1
- package/dist/{chunk-Y7E6OX3A.mjs → chunk-YR3SAEO7.mjs} +1 -1
- package/dist/frontend/babel/index.cjs +1 -1
- package/dist/frontend/babel/index.mjs +1 -1
- package/dist/frontend/babel/plugin.cjs +1 -1
- package/dist/frontend/babel/plugin.d.ts +1 -1
- package/dist/frontend/babel/plugin.js +5 -5
- package/dist/frontend/babel/plugin.mjs +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +1 -1
- package/dist/integrations.cjs +2 -2
- package/dist/integrations.d.ts +1 -1
- package/dist/integrations.mjs +2 -2
- package/dist/lower/compile-template.cjs +1 -1
- package/dist/lower/compile-template.d.ts +3 -2
- package/dist/lower/compile-template.d.ts.map +1 -1
- package/dist/lower/compile-template.js +2 -2
- package/dist/lower/compile-template.mjs +1 -1
- package/dist/resolve/builtins.cjs +1 -1
- package/dist/resolve/builtins.d.ts +3 -3
- package/dist/resolve/builtins.d.ts.map +1 -1
- package/dist/resolve/builtins.js +3 -3
- package/dist/resolve/builtins.mjs +1 -1
- package/dist/resolve/component-globals.cjs +1 -1
- package/dist/resolve/component-globals.mjs +1 -1
- package/dist/resolve/resolve-ir.cjs +1 -1
- package/dist/resolve/resolve-ir.mjs +1 -1
- package/dist/resolve/write-globals.cjs +1 -1
- package/dist/resolve/write-globals.mjs +1 -1
- package/dist/transform/index.cjs +3 -3
- package/dist/transform/index.mjs +5 -5
- package/dist/transform/intrinsics.cjs +1 -1
- package/dist/transform/intrinsics.mjs +1 -1
- package/dist/transform/templates.cjs +3 -3
- package/dist/transform/templates.js +4 -4
- package/dist/transform/templates.mjs +3 -3
- package/dist/transform-5WC4FWJE.mjs +8 -0
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/package.json +9 -3
- package/dist/babel-FPDLKOXR.mjs +0 -1
- package/dist/transform-ERQ6CKFE.mjs +0 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
import{declare as At}from"@babel/helper-plugin-utils";var We=e=>"components"in e;function me(e,t){return e.replace(/\$(\d+)/g,(n,o)=>t[Number(o)]??n)}function Ue(e,t){return typeof t=="string"?{module:t,export:e}:t}function fe(e=[]){let t=new Map,n=[],o=[];for(let s of e){if(!We(s)){o.push(s);continue}for(let[i,l]of Object.entries(s.components)){let p=Ue(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:me(l.module,p),export:l.export?me(l.export,p):s};break}}return r.set(s,i),i},names:()=>[...t.keys()],conflicts:()=>n}}var te=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],M=["Suspense","SuspenseList","Await"],T=["Router","Outlet","Redirect","Link"],Xt=[...te,...M,...T],ne=new Set([...te,...M]);function ge(e={}){let{controlFlowModule:t="@fluixi/dom",coreModule:n="fluixi",routerModule:o="fluixi/router"}=e,r={};for(let a of te)r[a]=t;for(let a of M)r[a]=n;for(let a of T)r[a]=o;return r}var H={kind:"eager"},qe=["pointerdown","focusin","keydown"],he=new Set(["eager","idle","visible","interaction","media","never"]),S=class extends Error{};function re(e){return e.startsWith("load:")}function z(e,t){let n=e.slice(5);if(!he.has(n))throw new S(`Unknown load strategy 'load:${n}'. Expected one of ${[...he].join(", ")}.`);switch(n){case"eager":return H;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?Ge(t):[...qe]};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 Ge(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 V(e){return e.kind!=="eager"&&e.kind!=="never"}function W(e,t={}){let{resolver:n,isBound:o,modules:r,strategyFor:a}=t,s=ge(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"&&ne.has(g)?H:a?.(d)??H;d.source={...k,loading:C},i.set(g,d.source)},u=d=>{if(ne.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 U(e,d=>{d.kind==="component"&&p(d)}),{resolved:i,unresolved:[...l]}}function U(e,t){let n=Array.isArray(e)?e:[e];for(let o of n){t(o);let r=o.children;r&&U(r,t)}}function q(e){let t=[];U(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;V(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 He}from"@babel/core";import{types as _,traverse as $t,template as Lt}from"@babel/core";import je from"@babel/generator";var Ke=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),ve={className:"class",htmlFor:"for"},Ye=new Set(["innerHTML","outerHTML","innerText","textContent","value","checked","selected","muted","defaultValue","defaultChecked","children","ref"]),Ze=new Set(["script","style","textarea","title"]);function oe(e){return Ze.has(e)}function Re(e){return ve[e]??e}function $(e){return e.kind!=="attr"||e.expr!==void 0||e.name.includes(":")?!1:!Ye.has(e.name)}function ie(e){if(!e.static||oe(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"&&ie(t)))return!1;return!0}function L(e){let t=e.props.map(et).filter(Boolean).join(""),n=`<${e.tag}${t}>`;return Ke.has(e.tag)?n:`${n}${e.children.map(Qe).join("")}</${e.tag}>`}function Qe(e){if(e.kind==="text")return nt(e.value);if(e.kind!=="element")throw new Error(`serializeStatic: unexpected ${e.kind}`);return L(e)}function et(e){let t=ve[e.name]??e.name,n=e.literal;return n===!0||n===void 0?` ${t}`:n===!1||n===null?"":` ${t}="${tt(String(n))}"`}function tt(e){return e.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function nt(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}var rt="<!--fx-->",ot="<!--fx/-->";function K(e){return e.kind==="expr"||e.kind==="component"||e.kind==="control"}function it(e){return e.kind==="text"||e.kind==="element"&&xe(e)}function xe(e){return e.svg||oe(e.tag)||!e.props.every(t=>$(t))?!1:e.children.every(t=>it(t)||K(t))}function G(e){if(K(e))return!0;let t=e.children;return t?t.some(G):!1}function ye(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"||ye(t))}function Ee(e){if(!xe(e)||!ye(e)||!e.children.some(G))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:st(e),tag:e.tag,steps:t,holes:n};function a(s,i){let l=-1;s.children.forEach((u,d)=>{G(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(K(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"&&G(d)&&a(d,k),p=k}}}function st(e){return L(Ne(e)).split(be).join(rt+ot)}function Ne(e){return{...e,children:e.children.map(t=>K(t)?{kind:"text",value:be}:t.kind==="element"?Ne(t):t)}}var be="\0fx-hole\0";var se={version:1,module:"@fluixi/dom",symbols:["createNativeElement","insert","spread","setAttribute","delegateEvents","createComponent","createMemo","untrack","Show","For","Index","Switch","Match","Dynamic","ErrorBoundary"]},Qt={version:2,module:"@fluixi/dom",symbols:[...se.symbols,"template","cloneTemplate","walk"]};var at={show:"Show",for:"For",index:"Index",switch:"Switch",match:"Match",dynamic:"Dynamic",errorBoundary:"ErrorBoundary",suspense:"Suspense"};function lt(e){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e)}function Se(e){return lt(e)?e:JSON.stringify(e)}function ct(e){return e.expr!==void 0?e.reactive?`() => (${e.expr})`:`(${e.expr})`:JSON.stringify(e.literal??!0)}function pt(e){return e.expr!==void 0?`(${e.expr})`:JSON.stringify(e.literal??!0)}function dt(e,t,n){let o=e.filter(i=>i.kind==="spread"),a=e.filter(i=>i.kind!=="spread").map(i=>`${Se(i.name)}: ${ct(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 Ie(e,t,n){return e.length===1?P(e[0],t,n):`[${e.map(o=>P(o,t,n)).join(", ")}]`}function ke(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 ${Se(p.name)}() { return ${pt(p)}; }`);n.length>0&&i.push(`get children() { return ${Ie(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 ut(e,t){let n=Re(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 Ce=!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":Ie(e.children,t,n);case"component":return ke(e.name,e.props,e.children,t,n);case"control":{let o=at[e.control]??e.control;return t.add(o),ke(o,e.props,e.children,t,n)}case"element":{if(n&&e.static&&!e.svg&&ie(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&&Ce){let i=Ee(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(ut(r,i));else{t.add("spread");let i=e.svg?", isSVG: true":"";a.push(`spread({ element: ${r}, props: ${dt(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:se,emit(e,t){let n=new Set,o=t?.templateClone!==!1?[]:void 0;return Ce=t?.partialTemplates===!0,{code:P(e,n,o),imports:Array.from(n),templates:o}}};import{types as le}from"@babel/core";import $e from"@babel/generator";import{parseTemplate as mt}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 we=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function ft(e){return e.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${")}function Te(e){return e.charAt(0).toUpperCase()+e.slice(1)}var ae=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?z(`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"+Te(t.name),kind:"event",event:{name:n,delegated:we.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"+Te(r),kind:"event",event:{name:r,delegated:we.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 ft(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 Me(e,t,n,o={}){let{root:r}=mt(e,{svg:o.svg});return new ae(t,n).lowerRoot(r.children)}var gt=$e.default??$e;function ht(e){return gt(e,{concise:!0}).code}function vt(e,t,n){let o={code:Y(e,t,n),reactive:ce(e)};if(le.isArrowFunctionExpression(e)&&!le.isBlockStatement(e.body)){let r=e.body;o.arrow={params:e.params.map(a=>ht(a)),body:Y(r,t,n),bodyReactive:ce(r)}}return le.isObjectExpression(e)&&(o.object=!0),o}function Le(e,t,n={}){let o=e.quasi,r=o.expressions.map(a=>vt(a,t,n.onNested));return Me(Rt(o),r,t,n)}function Rt(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 xt(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 Z(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=xt(i),s)break;return!s&&!a&&(s=yt(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 yt(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 Q(e,t=new Set,n={}){let o=Le(e,t,n);return Z(o),o}var Et="children";function D(e){switch(e.kind){case"call":return!0;case"member":return e.property!==Et;case"compound":return e.parts.some(D);case"opaque":return!1}}var Nt=new Set(["CallExpression","OptionalCallExpression"]),bt=new Set(["MemberExpression","OptionalMemberExpression"]);function j(e){if(!e)return{kind:"opaque"};if(Nt.has(e.type))return{kind:"call"};if(bt.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 kt=new Set(["svg","path","circle","rect","line","polygon","polyline","ellipse","g","defs","clipPath","text"]),St=/^on[A-Z]/,It=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]),Ae=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 pe=e=>!!e&&typeof F(e)=="string";function Ct(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 de(e){return e.type==="JSXIdentifier"?e.name==="class"?"className":e.name:e.type==="JSXNamespacedName"?`${e.namespace.name}:${e.name.name}`:"unknown"}function wt(e,t){let n=de(e.name),o=St.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:It.has(l)}}let i=e.value;if(i==null)return s.literal=!0,s;if(pe(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:Ae(l),(l.type==="JSXElement"||l.type==="JSXFragment")&&(s.jsxElement=!0),s)}return s.literal=!0,s}function Pe(e,t){let n=e.value;return n==null?null:pe(n)?JSON.stringify(F(n)):n.type==="JSXExpressionContainer"&&n.expression?.type!=="JSXEmptyExpression"?t.code(n.expression):null}function Tt(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"||re(de(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=Pe(r,t);o.push(i!=null?`[${s}, () => (${i})]`:`[${s}]`);continue}if(a==="oncapture"){let s=r.name.name.name.toLowerCase(),i=Pe(r,t)??"undefined";n.push({name:"on:"+s,kind:"attr",expr:`[${i}, { capture: true }]`});continue}n.push(wt(r,t))}return o.length>0&&n.push({name:"use",kind:"attr",expr:`[${o.join(", ")}]`}),n}function Oe(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:Ae(r)})}}else o.type==="JSXElement"||o.type==="JSXFragment"?n.push(De(o,t)):o.type==="JSXSpreadChild"&&n.push({kind:"expr",code:t.code(o.expression),reactive:!1});return n}function Mt(e){for(let t of e){if(t.type!=="JSXAttribute")continue;let n=de(t.name);if(re(n)){if(t.value&&!pe(t.value))throw new S(`'${n}' needs a literal value, not an expression — the strategy is compile-time.`);return z(n,t.value?F(t.value):null)}}}function De(e,t){if(e.type==="JSXFragment")return{kind:"fragment",children:Oe(e.children,t)};let{tag:n,component:o}=Ct(e.openingElement.name,t),r=Tt(e.openingElement.attributes,t),a=Oe(e.children,t);if(o){let s=Mt(e.openingElement.attributes);return{kind:"component",name:n,props:r,children:a,...s?{load:s}:{}}}return{kind:"element",tag:n,svg:kt.has(n),props:r,children:a,static:!1}}function Je(e,t){let n=De(e,t);return Z(n),n}var Pt=je.default??je;function Fe(e){return Pt(e,{concise:!0}).code}function Ot(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(Lt.expression(l,{placeholderPattern:!1,plugins:["typescript"]})()),i.skip(),a=!0};return $t(r,{"JSXElement|JSXFragment"(i){let l=i.node,p=ue(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=Q(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 Y(e,t,n){return Fe(Ot(e,t,n))}function ce(e){return D(j(e))}function ue(e,t=new Set,n){return Je(e,{code:r=>r.type==="JSXMemberExpression"?Fe(r):Y(r,t,n),used:t})}var _e=new Set(M),Xe=new Set(T),Un=At((e,t={})=>{e.assertVersion(7);let{delegateEvents:n=!0,signalModule:o="@fluixi/dom",controlFlowModule:r="@fluixi/dom",routerModule:a="fluixi/router",reactiveModule:s="@fluixi/reactive/signal",templateClone:i=!0,partialTemplates:l=!0,format:p="both",litTag:u="html",resolve:d=[]}=t,g=fe(d),k=p==="lit"||p==="both",C={irImports:new Set,libModule:"fluixi",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",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)),B=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))),B.length>0&&N.push(c.importDeclaration(B.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",x=v.filter(E=>Xe.has(E)),y=v.filter(E=>_e.has(E)),b=v.filter(E=>!_e.has(E)&&!Xe.has(E)),w=(E,B)=>c.importDeclaration(E.map(R=>c.importSpecifier(c.identifier(R),c.identifier(R))),c.stringLiteral(B));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 X=[];if(m.deferredComponents.size>0){for(let[v,h]of m.deferredComponents)f.scope.hasBinding(v)||X.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"),Dt(h.strategy)),c.objectProperty(c.identifier("export"),c.stringLiteral(h.export))])]))]));X.length>0&&!f.scope.hasBinding("deferred")&&N.push(c.importDeclaration([c.importSpecifier(c.identifier("deferred"),c.identifier("deferred"))],c.stringLiteral(m.libModule??"fluixi")))}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(X.length>0&&f.node.body.unshift(...X),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(...Jt(N))}},JSXElement(f,m){m.hasJSX=!0,f.replaceWith(Be(f.node,m))},JSXFragment(f,m){m.hasJSX=!0,f.replaceWith(Be(f.node,m))},TaggedTemplateExpression(f,m){k&&c.isIdentifier(f.node.tag)&&(f.node.tag.name===u||f.node.tag.name==="svg")&&f.replaceWith(jt(f.node,m))}}}});function ze(e){return t=>{W(t,{resolver:e.componentResolver,modules:{controlFlowModule:e.controlFlowModule,coreModule:e.libModule,routerModule:e.routerModule},strategyFor:n=>n.load}),q(t),ee(t,e)}}function Dt(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 Ve(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 Be(e,t){let n=new Set,o=ue(e,n,ze(t));W(o,{resolver:t.componentResolver,modules:{controlFlowModule:t.controlFlowModule,coreModule:t.libModule,routerModule:t.routerModule},strategyFor:l=>l.load}),q(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);ee(o,t);let i=Ve(r,s,t);return He.expression(i,{placeholderPattern:!1,plugins:["typescript"]})()}function Jt(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 jt(e,t){let n=new Set,o=c.isIdentifier(e.tag)&&e.tag.name==="svg",r=Q(e,n,{svg:o,onNested:ze(t)});W(r,{resolver:t.componentResolver,modules:{controlFlowModule:t.controlFlowModule,coreModule:t.libModule,routerModule:t.routerModule},strategyFor:p=>p.load}),q(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);ee(r,t),t.hasLitIR=!0;let l=He.expression(Ve(a,i,t),{placeholderPattern:!1,plugins:["typescript"]})();return Ft(l,e),l}function Ft(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 ee(e,t){if(e.kind==="component"&&e.source&&(e.source.origin==="builtin"?(t.controlFlowComponents.add(e.name),t.needsControlFlowImport=!0):V(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)ee(n,t)}export{Un as default};
|
|
1
|
+
import{declare as At}from"@babel/helper-plugin-utils";var We=e=>"components"in e;function me(e,t){return e.replace(/\$(\d+)/g,(n,o)=>t[Number(o)]??n)}function Ue(e,t){return typeof t=="string"?{module:t,export:e}:t}function fe(e=[]){let t=new Map,n=[],o=[];for(let s of e){if(!We(s)){o.push(s);continue}for(let[i,l]of Object.entries(s.components)){let p=Ue(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:me(l.module,p),export:l.export?me(l.export,p):s};break}}return r.set(s,i),i},names:()=>[...t.keys()],conflicts:()=>n}}var te=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],M=["Suspense","SuspenseList","Await"],T=["Router","Outlet","Redirect","Link"],Xt=[...te,...M,...T],ne=new Set([...te,...M]);function ge(e={}){let{controlFlowModule:t="@fluixi/dom",coreModule:n="@fluixi/core",routerModule:o="@fluixi/core/router"}=e,r={};for(let a of te)r[a]=t;for(let a of M)r[a]=n;for(let a of T)r[a]=o;return r}var H={kind:"eager"},qe=["pointerdown","focusin","keydown"],he=new Set(["eager","idle","visible","interaction","media","never"]),S=class extends Error{};function re(e){return e.startsWith("load:")}function z(e,t){let n=e.slice(5);if(!he.has(n))throw new S(`Unknown load strategy 'load:${n}'. Expected one of ${[...he].join(", ")}.`);switch(n){case"eager":return H;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?Ge(t):[...qe]};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 Ge(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 V(e){return e.kind!=="eager"&&e.kind!=="never"}function W(e,t={}){let{resolver:n,isBound:o,modules:r,strategyFor:a}=t,s=ge(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"&&ne.has(g)?H:a?.(d)??H;d.source={...k,loading:C},i.set(g,d.source)},u=d=>{if(ne.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 U(e,d=>{d.kind==="component"&&p(d)}),{resolved:i,unresolved:[...l]}}function U(e,t){let n=Array.isArray(e)?e:[e];for(let o of n){t(o);let r=o.children;r&&U(r,t)}}function q(e){let t=[];U(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;V(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 He}from"@babel/core";import{types as _,traverse as $t,template as Lt}from"@babel/core";import je from"@babel/generator";var Ke=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),ve={className:"class",htmlFor:"for"},Ye=new Set(["innerHTML","outerHTML","innerText","textContent","value","checked","selected","muted","defaultValue","defaultChecked","children","ref"]),Ze=new Set(["script","style","textarea","title"]);function oe(e){return Ze.has(e)}function Re(e){return ve[e]??e}function $(e){return e.kind!=="attr"||e.expr!==void 0||e.name.includes(":")?!1:!Ye.has(e.name)}function ie(e){if(!e.static||oe(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"&&ie(t)))return!1;return!0}function L(e){let t=e.props.map(et).filter(Boolean).join(""),n=`<${e.tag}${t}>`;return Ke.has(e.tag)?n:`${n}${e.children.map(Qe).join("")}</${e.tag}>`}function Qe(e){if(e.kind==="text")return nt(e.value);if(e.kind!=="element")throw new Error(`serializeStatic: unexpected ${e.kind}`);return L(e)}function et(e){let t=ve[e.name]??e.name,n=e.literal;return n===!0||n===void 0?` ${t}`:n===!1||n===null?"":` ${t}="${tt(String(n))}"`}function tt(e){return e.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function nt(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}var rt="<!--fx-->",ot="<!--fx/-->";function K(e){return e.kind==="expr"||e.kind==="component"||e.kind==="control"}function it(e){return e.kind==="text"||e.kind==="element"&&xe(e)}function xe(e){return e.svg||oe(e.tag)||!e.props.every(t=>$(t))?!1:e.children.every(t=>it(t)||K(t))}function G(e){if(K(e))return!0;let t=e.children;return t?t.some(G):!1}function ye(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"||ye(t))}function Ee(e){if(!xe(e)||!ye(e)||!e.children.some(G))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:st(e),tag:e.tag,steps:t,holes:n};function a(s,i){let l=-1;s.children.forEach((u,d)=>{G(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(K(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"&&G(d)&&a(d,k),p=k}}}function st(e){return L(Ne(e)).split(be).join(rt+ot)}function Ne(e){return{...e,children:e.children.map(t=>K(t)?{kind:"text",value:be}:t.kind==="element"?Ne(t):t)}}var be="\0fx-hole\0";var se={version:1,module:"@fluixi/dom",symbols:["createNativeElement","insert","spread","setAttribute","delegateEvents","createComponent","createMemo","untrack","Show","For","Index","Switch","Match","Dynamic","ErrorBoundary"]},Qt={version:2,module:"@fluixi/dom",symbols:[...se.symbols,"template","cloneTemplate","walk"]};var at={show:"Show",for:"For",index:"Index",switch:"Switch",match:"Match",dynamic:"Dynamic",errorBoundary:"ErrorBoundary",suspense:"Suspense"};function lt(e){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e)}function Se(e){return lt(e)?e:JSON.stringify(e)}function ct(e){return e.expr!==void 0?e.reactive?`() => (${e.expr})`:`(${e.expr})`:JSON.stringify(e.literal??!0)}function pt(e){return e.expr!==void 0?`(${e.expr})`:JSON.stringify(e.literal??!0)}function dt(e,t,n){let o=e.filter(i=>i.kind==="spread"),a=e.filter(i=>i.kind!=="spread").map(i=>`${Se(i.name)}: ${ct(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 Ie(e,t,n){return e.length===1?P(e[0],t,n):`[${e.map(o=>P(o,t,n)).join(", ")}]`}function ke(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 ${Se(p.name)}() { return ${pt(p)}; }`);n.length>0&&i.push(`get children() { return ${Ie(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 ut(e,t){let n=Re(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 Ce=!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":Ie(e.children,t,n);case"component":return ke(e.name,e.props,e.children,t,n);case"control":{let o=at[e.control]??e.control;return t.add(o),ke(o,e.props,e.children,t,n)}case"element":{if(n&&e.static&&!e.svg&&ie(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&&Ce){let i=Ee(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(ut(r,i));else{t.add("spread");let i=e.svg?", isSVG: true":"";a.push(`spread({ element: ${r}, props: ${dt(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:se,emit(e,t){let n=new Set,o=t?.templateClone!==!1?[]:void 0;return Ce=t?.partialTemplates===!0,{code:P(e,n,o),imports:Array.from(n),templates:o}}};import{types as le}from"@babel/core";import $e from"@babel/generator";import{parseTemplate as mt}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 we=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function ft(e){return e.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${")}function Te(e){return e.charAt(0).toUpperCase()+e.slice(1)}var ae=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?z(`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"+Te(t.name),kind:"event",event:{name:n,delegated:we.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"+Te(r),kind:"event",event:{name:r,delegated:we.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 ft(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 Me(e,t,n,o={}){let{root:r}=mt(e,{svg:o.svg});return new ae(t,n).lowerRoot(r.children)}var gt=$e.default??$e;function ht(e){return gt(e,{concise:!0}).code}function vt(e,t,n){let o={code:Y(e,t,n),reactive:ce(e)};if(le.isArrowFunctionExpression(e)&&!le.isBlockStatement(e.body)){let r=e.body;o.arrow={params:e.params.map(a=>ht(a)),body:Y(r,t,n),bodyReactive:ce(r)}}return le.isObjectExpression(e)&&(o.object=!0),o}function Le(e,t,n={}){let o=e.quasi,r=o.expressions.map(a=>vt(a,t,n.onNested));return Me(Rt(o),r,t,n)}function Rt(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 xt(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 Z(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=xt(i),s)break;return!s&&!a&&(s=yt(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 yt(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 Q(e,t=new Set,n={}){let o=Le(e,t,n);return Z(o),o}var Et="children";function D(e){switch(e.kind){case"call":return!0;case"member":return e.property!==Et;case"compound":return e.parts.some(D);case"opaque":return!1}}var Nt=new Set(["CallExpression","OptionalCallExpression"]),bt=new Set(["MemberExpression","OptionalMemberExpression"]);function j(e){if(!e)return{kind:"opaque"};if(Nt.has(e.type))return{kind:"call"};if(bt.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 kt=new Set(["svg","path","circle","rect","line","polygon","polyline","ellipse","g","defs","clipPath","text"]),St=/^on[A-Z]/,It=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]),Ae=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 pe=e=>!!e&&typeof F(e)=="string";function Ct(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 de(e){return e.type==="JSXIdentifier"?e.name==="class"?"className":e.name:e.type==="JSXNamespacedName"?`${e.namespace.name}:${e.name.name}`:"unknown"}function wt(e,t){let n=de(e.name),o=St.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:It.has(l)}}let i=e.value;if(i==null)return s.literal=!0,s;if(pe(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:Ae(l),(l.type==="JSXElement"||l.type==="JSXFragment")&&(s.jsxElement=!0),s)}return s.literal=!0,s}function Pe(e,t){let n=e.value;return n==null?null:pe(n)?JSON.stringify(F(n)):n.type==="JSXExpressionContainer"&&n.expression?.type!=="JSXEmptyExpression"?t.code(n.expression):null}function Tt(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"||re(de(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=Pe(r,t);o.push(i!=null?`[${s}, () => (${i})]`:`[${s}]`);continue}if(a==="oncapture"){let s=r.name.name.name.toLowerCase(),i=Pe(r,t)??"undefined";n.push({name:"on:"+s,kind:"attr",expr:`[${i}, { capture: true }]`});continue}n.push(wt(r,t))}return o.length>0&&n.push({name:"use",kind:"attr",expr:`[${o.join(", ")}]`}),n}function Oe(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:Ae(r)})}}else o.type==="JSXElement"||o.type==="JSXFragment"?n.push(De(o,t)):o.type==="JSXSpreadChild"&&n.push({kind:"expr",code:t.code(o.expression),reactive:!1});return n}function Mt(e){for(let t of e){if(t.type!=="JSXAttribute")continue;let n=de(t.name);if(re(n)){if(t.value&&!pe(t.value))throw new S(`'${n}' needs a literal value, not an expression — the strategy is compile-time.`);return z(n,t.value?F(t.value):null)}}}function De(e,t){if(e.type==="JSXFragment")return{kind:"fragment",children:Oe(e.children,t)};let{tag:n,component:o}=Ct(e.openingElement.name,t),r=Tt(e.openingElement.attributes,t),a=Oe(e.children,t);if(o){let s=Mt(e.openingElement.attributes);return{kind:"component",name:n,props:r,children:a,...s?{load:s}:{}}}return{kind:"element",tag:n,svg:kt.has(n),props:r,children:a,static:!1}}function Je(e,t){let n=De(e,t);return Z(n),n}var Pt=je.default??je;function Fe(e){return Pt(e,{concise:!0}).code}function Ot(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(Lt.expression(l,{placeholderPattern:!1,plugins:["typescript"]})()),i.skip(),a=!0};return $t(r,{"JSXElement|JSXFragment"(i){let l=i.node,p=ue(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=Q(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 Y(e,t,n){return Fe(Ot(e,t,n))}function ce(e){return D(j(e))}function ue(e,t=new Set,n){return Je(e,{code:r=>r.type==="JSXMemberExpression"?Fe(r):Y(r,t,n),used:t})}var _e=new Set(M),Xe=new Set(T),Un=At((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=fe(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)),B=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))),B.length>0&&N.push(c.importDeclaration(B.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=>Xe.has(E)),y=v.filter(E=>_e.has(E)),b=v.filter(E=>!_e.has(E)&&!Xe.has(E)),w=(E,B)=>c.importDeclaration(E.map(R=>c.importSpecifier(c.identifier(R),c.identifier(R))),c.stringLiteral(B));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 X=[];if(m.deferredComponents.size>0){for(let[v,h]of m.deferredComponents)f.scope.hasBinding(v)||X.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"),Dt(h.strategy)),c.objectProperty(c.identifier("export"),c.stringLiteral(h.export))])]))]));X.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(X.length>0&&f.node.body.unshift(...X),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(...Jt(N))}},JSXElement(f,m){m.hasJSX=!0,f.replaceWith(Be(f.node,m))},JSXFragment(f,m){m.hasJSX=!0,f.replaceWith(Be(f.node,m))},TaggedTemplateExpression(f,m){k&&c.isIdentifier(f.node.tag)&&(f.node.tag.name===u||f.node.tag.name==="svg")&&f.replaceWith(jt(f.node,m))}}}});function ze(e){return t=>{W(t,{resolver:e.componentResolver,modules:{controlFlowModule:e.controlFlowModule,coreModule:e.libModule,routerModule:e.routerModule},strategyFor:n=>n.load}),q(t),ee(t,e)}}function Dt(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 Ve(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 Be(e,t){let n=new Set,o=ue(e,n,ze(t));W(o,{resolver:t.componentResolver,modules:{controlFlowModule:t.controlFlowModule,coreModule:t.libModule,routerModule:t.routerModule},strategyFor:l=>l.load}),q(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);ee(o,t);let i=Ve(r,s,t);return He.expression(i,{placeholderPattern:!1,plugins:["typescript"]})()}function Jt(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 jt(e,t){let n=new Set,o=c.isIdentifier(e.tag)&&e.tag.name==="svg",r=Q(e,n,{svg:o,onNested:ze(t)});W(r,{resolver:t.componentResolver,modules:{controlFlowModule:t.controlFlowModule,coreModule:t.libModule,routerModule:t.routerModule},strategyFor:p=>p.load}),q(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);ee(r,t),t.hasLitIR=!0;let l=He.expression(Ve(a,i,t),{placeholderPattern:!1,plugins:["typescript"]})();return Ft(l,e),l}function Ft(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 ee(e,t){if(e.kind==="component"&&e.source&&(e.source.origin==="builtin"?(t.controlFlowComponents.add(e.name),t.needsControlFlowImport=!0):V(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)ee(n,t)}export{Un as default};
|
package/dist/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var W=Object.defineProperty;var Ce=Object.getOwnPropertyDescriptor;var $e=Object.getOwnPropertyNames;var we=Object.prototype.hasOwnProperty;var Se=(t,e)=>{for(var n in e)W(t,n,{get:e[n],enumerable:!0})},Te=(t,e,n,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of $e(e))!we.call(t,r)&&r!==n&&W(t,r,{get:()=>e[r],enumerable:!(o=Ce(e,r))||o.enumerable});return t};var Oe=t=>Te(W({},"__esModule",{value:!0}),t);var Rt={};Se(Rt,{BUILTIN_COMPONENTS:()=>nt,CORE_CONTROL_FLOW:()=>B,DEFAULT_GLOBALS_PATH:()=>be,DOM_CONTROL_FLOW:()=>_,RESERVED_COMPONENTS:()=>H,ROUTER_COMPONENTS:()=>y,RUNTIME_CONTRACT_V1:()=>j,RUNTIME_CONTRACT_V2:()=>ze,backends:()=>vt,builtinComponentMap:()=>N,builtinComponents:()=>rt,cleanTemplateText:()=>w,compilePieces:()=>Re,compileTemplate:()=>lt,componentGlobals:()=>K,createComponentResolver:()=>T,defaultOptions:()=>ht,imperativeBackend:()=>v,isReactiveShape:()=>Y,lowerTemplate:()=>L,resolveComponentSources:()=>V,routerComponents:()=>ot,walk:()=>S,writeComponentGlobals:()=>gt});module.exports=Oe(Rt);var Me="children";function Y(t){switch(t.kind){case"call":return!0;case"member":return t.property!==Me;case"compound":return t.parts.some(Y);case"opaque":return!1}}var fe=require("@fluixi/template-parser");var M={kind:"eager"},Pe=["pointerdown","focusin","keydown"],X=new Set(["eager","idle","visible","interaction","media","never"]),k=class extends Error{};function Q(t,e){let n=t.slice(5);if(!X.has(n))throw new k(`Unknown load strategy 'load:${n}'. Expected one of ${[...X].join(", ")}.`);switch(n){case"eager":return M;case"idle":return{kind:"idle"};case"never":return{kind:"never"};case"visible":return e?{kind:"visible",rootMargin:e}:{kind:"visible"};case"interaction":return{kind:"interaction",events:e?Ae(e):[...Pe]};case"media":if(!e)throw new k(`'load:media' needs a query, e.g. load:media="(min-width: 1024px)".`);return{kind:"media",query:e};default:throw new k(`Unhandled load strategy '${n}'.`)}}function Ae(t){let e=t.split(/[\s,]+/).map(n=>n.trim()).filter(Boolean);if(e.length===0)throw new k("'load:interaction' was given no event names.");return e}function ee(t){return t.kind!=="eager"&&t.kind!=="never"}var je=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),te={className:"class",htmlFor:"for"},De=new Set(["innerHTML","outerHTML","innerText","textContent","value","checked","selected","muted","defaultValue","defaultChecked","children","ref"]),Le=new Set(["script","style","textarea","title"]);function U(t){return Le.has(t)}function ne(t){return te[t]??t}function E(t){return t.kind!=="attr"||t.expr!==void 0||t.name.includes(":")?!1:!De.has(t.name)}function J(t){if(!t.static||U(t.tag))return!1;for(let e of t.props)if(!E(e))return!1;for(let e of t.children)if(e.kind!=="text"&&!(e.kind==="element"&&J(e)))return!1;return!0}function C(t){let e=t.props.map(Be).filter(Boolean).join(""),n=`<${t.tag}${e}>`;return je.has(t.tag)?n:`${n}${t.children.map(_e).join("")}</${t.tag}>`}function _e(t){if(t.kind==="text")return Fe(t.value);if(t.kind!=="element")throw new Error(`serializeStatic: unexpected ${t.kind}`);return C(t)}function Be(t){let e=te[t.name]??t.name,n=t.literal;return n===!0||n===void 0?` ${e}`:n===!1||n===null?"":` ${e}="${He(String(n))}"`}function He(t){return t.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function Fe(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}var Ge="<!--fx-->",We="<!--fx/-->";function A(t){return t.kind==="expr"||t.kind==="component"||t.kind==="control"}function Ue(t){return t.kind==="text"||t.kind==="element"&&re(t)}function re(t){return t.svg||U(t.tag)||!t.props.every(e=>E(e))?!1:t.children.every(e=>Ue(e)||A(e))}function P(t){if(A(t))return!0;let e=t.children;return e?e.some(P):!1}function oe(t){for(let e=0;e<t.children.length;e++){let n=t.children[e];if(n.kind==="text"&&(n.value===""||t.children[e+1]?.kind==="text"))return!1}return t.children.every(e=>e.kind!=="element"||oe(e))}function ie(t){if(!re(t)||!oe(t)||!t.children.some(P))return null;let e=[],n=[],o=0,r=a=>{let s=`_n$${o++}`;return e.push({ref:s,expr:a}),s};return i(t,"_el$"),{html:Je(t),tag:t.tag,steps:e,holes:n};function i(a,s){let l=-1;a.children.forEach((d,p)=>{P(d)&&(l=p)});let c=null;for(let d=0;d<=l;d++){let p=a.children[d],m=c?`${c}.nextSibling`:`${s}.firstChild`;if(A(p)){let b=r(m),G=r(`holeEnd(${b})`);n.push({parentRef:s,startRef:b,endRef:G,node:p}),c=G;continue}let h=r(m);p.kind==="element"&&P(p)&&i(p,h),c=h}}}function Je(t){return C(se(t)).split(ae).join(Ge+We)}function se(t){return{...t,children:t.children.map(e=>A(e)?{kind:"text",value:ae}:e.kind==="element"?se(e):e)}}var ae="\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"]},ze={version:2,module:"@fluixi/dom",symbols:[...j.symbols,"template","cloneTemplate","walk"]};var Ve={show:"Show",for:"For",index:"Index",switch:"Switch",match:"Match",dynamic:"Dynamic",errorBoundary:"ErrorBoundary",suspense:"Suspense"};function qe(t){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(t)}function ce(t){return qe(t)?t:JSON.stringify(t)}function Ke(t){return t.expr!==void 0?t.reactive?`() => (${t.expr})`:`(${t.expr})`:JSON.stringify(t.literal??!0)}function Ze(t){return t.expr!==void 0?`(${t.expr})`:JSON.stringify(t.literal??!0)}function Ye(t,e,n){let o=t.filter(s=>s.kind==="spread"),i=t.filter(s=>s.kind!=="spread").map(s=>`${ce(s.name)}: ${Ke(s)}`);e!=null&&i.push(`children: ${e}`);let a=`{ ${i.join(", ")} }`;return o.length>0?(n.add("mergeProps"),`mergeProps(${o.map(s=>s.expr).join(", ")}, ${a})`):a}function pe(t,e,n){return t.length===1?$(t[0],e,n):`[${t.map(o=>$(o,e,n)).join(", ")}]`}function le(t,e,n,o,r){o.add("createMemo"),o.add("createComponent");let i=e.filter(c=>c.kind==="spread"),s=e.filter(c=>c.kind!=="spread").map(c=>`get ${ce(c.name)}() { return ${Ze(c)}; }`);n.length>0&&s.push(`get children() { return ${pe(n,o,r)}; }`);let l=`{ ${s.join(", ")} }`;return i.length>0&&(o.add("mergeProps"),l=`mergeProps(${i.map(c=>c.expr).join(", ")}, ${l})`),`createMemo(() => createComponent(${t}, ${l}))`}function Xe(t,e){let n=ne(e.name),o=e.literal;return o===!0||o===void 0?`${t}.setAttribute(${JSON.stringify(n)}, "");`:o===!1||o===null?"":`${t}.setAttribute(${JSON.stringify(n)}, ${JSON.stringify(String(o))});`}var de=!1;function $(t,e,n){switch(t.kind){case"text":return JSON.stringify(t.value);case"expr":return t.reactive?`() => (${t.code})`:`(${t.code})`;case"fragment":return t.children.length===0?"null":pe(t.children,e,n);case"component":return le(t.name,t.props,t.children,e,n);case"control":{let o=Ve[t.control]??t.control;return e.add(o),le(o,t.props,t.children,e,n)}case"element":{if(n&&t.static&&!t.svg&&J(t)){e.add("templateNode");let s=`_tmpl$${n.length}`;return n.push({id:s,html:C(t),tag:t.tag,svg:!1}),`templateNode(${s}, ${JSON.stringify(t.tag)})`}if(n&&de){let s=ie(t);if(s){e.add("templateNode"),e.add("insert"),e.add("holeEnd"),e.add("holeContent"),e.add("holeScope");let l=`_tmpl$${n.length}`;n.push({id:l,html:s.html,tag:s.tag,svg:!1});let c=[`const _el$ = templateNode(${l}, ${JSON.stringify(s.tag)}, true);`];for(let d of s.steps)c.push(`const ${d.ref} = ${d.expr};`);for(let d of s.holes)c.push(`insert(${d.parentRef}, holeScope(${d.startRef}, () => (${$(d.node,e,n)})), ${d.endRef}, holeContent(${d.startRef}, ${d.endRef}));`);return c.push("return _el$;"),`(() => { ${c.join(" ")} })()`}}e.add("createNativeElement");let o=JSON.stringify(t.tag),r="_el$",i=[],a=t.svg?`${o}, true`:o;if(i.push(`const ${r} = createNativeElement(${a});`),t.props.length>0)if(!t.svg&&t.props.every(E))for(let s of t.props)i.push(Xe(r,s));else{e.add("spread");let s=t.svg?", isSVG: true":"";i.push(`spread({ element: ${r}, props: ${Ye(t.props,null,e)}${s} });`)}for(let s of t.children){e.add("insert");let l=$(s,e,n),c=s.kind==="expr"&&s.reactive||s.kind==="component"||s.kind==="control";i.push(c?`insert(${r}, ${l}, null);`:`insert(${r}, ${l});`)}return i.push(`return ${r};`),`(() => { ${i.join(" ")} })()`}}}function D(t,e){if(!e||e.length===0)return t;let n=new Map(e.map(o=>[o.id,JSON.stringify(o.html)]));return t.replace(/_tmpl\$\d+/g,o=>n.get(o)??o)}var v={name:"imperative",contract:j,emit(t,e){let n=new Set,o=e?.templateClone!==!1?[]:void 0;return de=e?.partialTemplates===!0,{code:$(t,n,o),imports:Array.from(n),templates:o}}};function w(t){let e=t.split(/\r\n|\n|\r/),n=0;for(let r=0;r<e.length;r++)/[^ \t]/.test(e[r])&&(n=r);let o="";for(let r=0;r<e.length;r++){let i=e[r].replace(/\t/g," ");r!==0&&(i=i.replace(/^ +/,"")),r!==e.length-1&&(i=i.replace(/ +$/,"")),i&&(r!==n&&(i+=" "),o+=i)}return o}var ue=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function Qe(t){return t.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${")}function me(t){return t.charAt(0).toUpperCase()+t.slice(1)}var z=class{constructor(e,n){this.holes=e;this.used=n}hole(e){return this.holes[e]??{code:"undefined",reactive:!1}}emit(e){let{code:n,imports:o,templates:r}=v.emit(e,{});for(let i of o)this.used.add(i);return D(n,r)}lowerRoot(e){let n=this.lowerChildren(e);return n.length===1?n[0]:{kind:"fragment",children:n}}lowerChildren(e){let n=[];for(let o=0;o<e.length;o++){let r=e[o];if(r.kind==="Element"||r.kind==="Component"){let a=r.attributes.find(s=>s.kind==="IfDirective");if(a&&a.kind==="IfDirective"){let s=o+1;s<e.length&&this.isBlankText(e[s])&&s++;let l=e[s],c=l&&(l.kind==="Element"||l.kind==="Component")&&l.attributes.some(d=>d.kind==="ElseDirective");n.push(this.lowerIf(r,a.hole,c?l:null)),c&&(o=s);continue}if(r.attributes.some(s=>s.kind==="EachDirective")){n.push(this.lowerEach(r));continue}}let i=this.lowerNode(r);i&&n.push(i)}return n}isBlankText(e){return e.kind==="Text"&&!e.raw&&w(e.value)===""}lowerNode(e){switch(e.kind){case"Text":{if(e.raw)return{kind:"text",value:e.value};let n=w(e.value);return n?{kind:"text",value:n}:null}case"Comment":return null;case"Expression":{let n=this.hole(e.hole);return{kind:"expr",code:n.code,reactive:n.reactive}}case"Fragment":return{kind:"fragment",children:this.lowerChildren(e.children)};case"Element":return this.lowerElement(e);case"Component":return this.lowerComponent(e);default:return null}}lowerElement(e){let n=e.attributes.find(o=>o.kind==="Attribute"&&o.name==="is");if(e.tag==="component"&&n&&n.value&&n.value.kind==="hole"){let o=e.attributes.filter(i=>i!==n),r=this.lowerComponent({...e,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:e.tag,svg:e.namespace==="svg",props:this.lowerAttributes(e.attributes),children:this.lowerChildren(e.children),static:!1}}lowerComponent(e){let n=e.tagHole!=null?this.hole(e.tagHole).code:e.tag,o=this.lowerAttributes(e.attributes),{slots:r,rest:i}=this.partitionSlots(e.children);for(let[l,c]of r){let d=c.length===1?c[0]:{kind:"fragment",children:c},p={name:l,kind:"attr",expr:this.emit(d),jsxElement:!0},m=o.findIndex(h=>h.name===l);m>=0?o[m]=p:o.push(p)}let a=e.attributes.find(l=>l.kind==="LoadDirective"),s=a?Q(`load:${a.strategy}`,a.modifier):void 0;return{kind:"component",name:n,props:o,children:this.lowerChildren(i),...s?{load:s}:{}}}partitionSlots(e){let n=new Map,o=[];for(let r of e){if(r.kind==="Element"||r.kind==="Component"){let i=r.attributes.find(a=>a.kind==="Attribute"&&a.name==="slot");if(i&&i.value&&i.value.kind==="static"){let a={...r,attributes:r.attributes.filter(c=>c!==i)},s=a.kind==="Element"?this.lowerElement(a):this.lowerComponent(a),l=n.get(i.value.value)??[];l.push(s),n.set(i.value.value,l);continue}}o.push(r)}return{slots:n,rest:o}}lowerIf(e,n,o){let r=this.hole(n),i=[{name:"when",kind:"attr",expr:r.code,reactive:r.reactive}];if(o){let s=this.stripAndLower(o,l=>l.kind==="ElseDirective");i.push({name:"fallback",kind:"attr",expr:this.emit(s),jsxElement:!0})}let a=this.stripAndLower(e,s=>s.kind==="IfDirective");return{kind:"component",name:"Show",props:i,children:[a]}}lowerEach(e){let n=e.attributes.find(l=>l.kind==="EachDirective");if(!n||n.kind!=="EachDirective")return this.lowerNode(e);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 i=this.itemArrow(e),a;if(i){let l={kind:"expr",code:i.body,reactive:i.bodyReactive},c=this.rebuildWithChildren(e,[l]);a=`(${i.params.join(", ")}) => (${this.emit(c)})`}else{let l=this.stripAndLower(e,c=>c.kind==="EachDirective");a=`() => (${this.emit(l)})`}return{kind:"component",name:"For",props:r,children:[{kind:"expr",code:a,reactive:!1}]}}itemArrow(e){let n=e.children.filter(o=>!this.isBlankText(o));return n.length!==1||n[0].kind!=="Expression"?null:this.hole(n[0].hole).arrow??null}stripAndLower(e,n){let o={...e,attributes:e.attributes.filter(r=>!n(r))};return o.kind==="Element"?this.lowerElement(o):this.lowerComponent(o)}rebuildWithChildren(e,n){let o=this.lowerAttributes(e.attributes.filter(r=>r.kind!=="EachDirective"));return e.kind==="Element"?{kind:"element",tag:e.tag,svg:e.namespace==="svg",props:o,children:n,static:!1}:{kind:"component",name:e.tag,props:o,children:n}}lowerAttributes(e){let n=[],o=[],r=!1,i=[],a=!1,s=[];for(let l of e)switch(l.kind){case"IfDirective":case"EachDirective":case"ElseDirective":break;case"Attribute":n.push(this.plainAttr(l));break;case"PropertyBinding":n.push({name:l.name,kind:"prop",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"EventBinding":n.push(this.eventProp(l));break;case"RefBinding":n.push({name:"ref",kind:"ref",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"Spread":n.push({name:"",kind:"spread",expr:this.hole(l.hole).code});break;case"ClassDirective":{let c=this.hole(l.hole);o.push(`${JSON.stringify(l.name)}: ${c.code}`),r=r||c.reactive;break}case"StyleDirective":{let c=this.hole(l.hole);i.push(`${JSON.stringify(l.name)}: ${c.code}`),a=a||c.reactive;break}case"BindDirective":n.push(...this.bindProps(l.name,this.hole(l.hole).code));break;case"UseDirective":{let c=l.name??(l.hole!=null?this.hole(l.hole).code:null);if(!c)break;s.push(l.name!=null&&l.hole!=null?`[${c}, () => (${this.hole(l.hole).code})]`:`[${c}]`);break}}return o.length>0&&n.push({name:"classList",kind:"attr",expr:`{ ${o.join(", ")} }`,reactive:r}),i.length>0&&n.push({name:"style",kind:"attr",expr:`{ ${i.join(", ")} }`,reactive:a}),s.length>0&&n.push({name:"use",kind:"attr",expr:`[${s.join(", ")}]`}),n}eventProp(e){let n=e.name.toLowerCase(),o=this.hole(e.hole).code;if(!(e.syntax==="colon"||e.modifiers.length>0))return{name:"on"+me(e.name),kind:"event",event:{name:n,delegated:ue.has(n)},expr:o};let i=this.wrapHandler(o,e.modifiers),a=this.eventOptions(e.modifiers),s=a?`[${i}, ${a}]`:i;return{name:"on:"+n,kind:"attr",expr:s}}wrapHandler(e,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?e:`(e) => { ${o}${r.join(" ")} return (${e})(e); }`}eventOptions(e){let n=[];return e.includes("capture")&&n.push("capture: true"),e.includes("once")&&n.push("once: true"),e.includes("passive")&&n.push("passive: true"),n.length?`{ ${n.join(", ")} }`:null}bindProps(e,n){let o=e==="checked",r=o?"change":"input",i=o?"checked":"value";this.used.add("bindPair");let a=`bindPair(${n})`;return[{name:e,kind:"attr",expr:`${a}[0]()`,reactive:!0},{name:"on"+me(r),kind:"event",event:{name:r,delegated:ue.has(r)},expr:`(e) => ${a}[1](e.target.${i})`}]}plainAttr(e){let n=e.value,o=e.name;e.name==="class"?o=n&&n.kind==="hole"&&this.hole(n.hole).object?"classList":"className":e.name==="html"&&(o="innerHTML");let i={name:o,kind:"attr"};if(n==null)return i.literal=!0,i;if(n.kind==="static")return i.literal=n.value,i;if(n.kind==="hole"){let l=this.hole(n.hole);return i.expr=l.code,i.reactive=l.reactive,i}let a=!1,s=n.parts.map(l=>{if("text"in l)return Qe(l.text);let c=this.hole(l.hole);return a=a||c.reactive,"${"+c.code+"}"}).join("");return i.expr="`"+s+"`",i.reactive=a,i}};function L(t,e,n,o={}){let{root:r}=(0,fe.parseTemplate)(t,{svg:o.svg});return new z(e,n).lowerRoot(r.children)}function et(t){switch(t.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 t.reactive?"reactive-prop":t.expr!==void 0?"expression-prop":void 0;default:return"expression-prop"}}function ge(t){let e=[],n=new Map,o=r=>{switch(r.kind){case"text":return!0;case"expr":return!1;case"component":case"control":for(let i of r.children)o(i);return!1;case"fragment":for(let i of r.children)o(i);return!1;case"element":{let i=!0;for(let s of r.children)o(s)||(i=!1);let a;for(let s of r.props)if(a=et(s),a)break;return!a&&!i&&(a=tt(r)),r.static=!a,a?n.set(r,a):e.push(r),r.static}default:return!1}};for(let r of Array.isArray(t)?t:[t])o(r);return{staticElements:e,reasons:n}}function tt(t){for(let e of t.children){if(e.kind==="expr")return"expression-child";if(e.kind==="component")return"component-child";if(e.kind==="control")return"control-child";if(e.kind==="element"&&!e.static||e.kind==="fragment")return"expression-child"}return"expression-child"}var _=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],B=["Suspense","SuspenseList","Await"],y=["Router","Outlet","Redirect","Link"],nt=[..._,...B,...y],H=new Set([..._,...B]);function N(t={}){let{controlFlowModule:e="@fluixi/dom",coreModule:n="fluixi",routerModule:o="fluixi/router"}=t,r={};for(let i of _)r[i]=e;for(let i of B)r[i]=n;for(let i of y)r[i]=o;return r}function rt(t={}){return{components:N(t)}}function ot(t){let e=t??"fluixi/router";return{components:Object.fromEntries(y.map(n=>[n,e]))}}function V(t,e={}){let{resolver:n,isBound:o,modules:r,strategyFor:i}=e,a=N(r),s=new Map,l=new Set,c=p=>{let{name:m}=p;if(!m||m.includes(".")||o?.(m))return;let h=d(m);if(!h){l.add(m);return}let b=h.origin==="builtin"&&H.has(m)?M:i?.(p)??M;p.source={...h,loading:b},s.set(m,p.source)},d=p=>{if(H.has(p))return{module:a[p],export:p,origin:"builtin"};let m=n?.resolve(p);if(m)return{module:m.module,export:m.export,origin:"rule"};if(y.includes(p))return{module:a[p],export:p,origin:"builtin"}};return S(t,p=>{p.kind==="component"&&c(p)}),{resolved:s,unresolved:[...l]}}function S(t,e){let n=Array.isArray(t)?t:[t];for(let o of n){e(o);let r=o.children;r&&S(r,e)}}function he(t){let e=[];S(t,i=>{i.kind==="component"&&i.source&&e.push(i)});let n=new Set,o=new Set;for(let i of e){let{module:a,loading:s}=i.source;s.kind==="eager"&&n.add(a),s.kind==="never"&&o.add(a)}let r=new Map;for(let i of e){let a=i.source;ee(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(i=>n.has(i))}}var it=t=>"components"in t;function ve(t,e){return t.replace(/\$(\d+)/g,(n,o)=>e[Number(o)]??n)}function st(t,e){return typeof e=="string"?{module:e,export:t}:e}function T(t=[]){let e=new Map,n=[],o=[];for(let a of t){if(!it(a)){o.push(a);continue}for(let[s,l]of Object.entries(a.components)){let c=st(s,l),d=e.get(s);if(d&&d.module!==c.module){let p=n.find(m=>m.name===s);p?p.modules.push(c.module):n.push({name:s,modules:[d.module,c.module]});continue}e.set(s,c)}}let r=new Map;return{resolve:a=>{if(r.has(a))return r.get(a);let s=e.get(a);if(!s)for(let l of o){let c=a.match(new RegExp(l.match.source,l.match.flags.replace("g","")));if(c){s={module:ve(l.module,c),export:l.export?ve(l.export,c):a};break}}return r.set(a,s),s},names:()=>[...e.keys()],conflicts:()=>n}}function at(t){let e=[],n=0;return t.statics.forEach((o,r)=>{if(e.push({kind:"static",text:o,start:n}),n+=o.length,r<t.holes.length){let i=n+t.holes[r].code.length;e.push({kind:"hole",index:r,start:n,end:i}),n=i}}),e}function lt(t,e={}){if(t.statics.length!==t.holes.length+1)throw new Error(`[fluixi] compileTemplate: ${t.statics.length} static runs for ${t.holes.length} holes — a template always has exactly one more.`);return Re(at(t),t.holes,e)}function Re(t,e,n={}){let o=new Set,r=L(t,[...e],o,{svg:n.svg});ge(r),V(r,{resolver:T(n.resolve??[]),modules:{controlFlowModule:n.controlFlowModule??"@fluixi/dom",coreModule:n.coreModule??"fluixi",routerModule:n.routerModule??"fluixi/router"},strategyFor:l=>l.load}),he(r);let{code:i,imports:a,templates:s}=v.emit(r,{templateClone:n.templateClone,partialTemplates:n.partialTemplates});for(let l of a)o.add(l);return n.hoistTemplates?{code:i,imports:[...o],ir:r,templates:s}:{code:D(i,s),imports:[...o],ir:r}}var x="@fluixi/reactive/signal",F={$signal:{export:"signal",module:x,returns:"signal-handle"},$memo:{export:"memo",module:x,returns:"memo-handle"},$effect:{export:"effect",module:x,returns:"effect"},$store:{export:"store",module:"@fluixi/reactive/store",returns:"store-handle"},$resource:{export:"resource",module:x,returns:"resource-handle"},$selector:{export:"createSelector",module:x,returns:"memo-accessor"},$deferred:{export:"createDeferred",module:x,returns:"memo-accessor"},$untrack:{export:"untrack",module:x,returns:"plain"},$untrackStore:{export:"untrackStore",module:"@fluixi/reactive/store",returns:"plain"}};var Xt=new RegExp(`\\$(?:${Object.keys(F).map(t=>t.slice(1)).join("|")})\\s*\\(`);var ct=new Set(["Text","Image","Option","Audio","Comment","Range","Selection","Notification","Event","Document","Element","Node","Screen","Window","Location","History","Storage","Response","Request","Headers"]);function pt(t){if(t.startsWith(".")||t.startsWith("/")||/^[~@]\//.test(t))return;let e=t.split("/");return t.startsWith("@")?e.slice(0,2).join("/"):e[0]}function q(t){return`_${t.replace(/[^A-Za-z0-9]/g,"_")}`}function K(t,e={}){let{available:n,builtins:o=!0,intrinsics:r=!0,generator:i="@fluixi/compiler",specifier:a=u=>u}=e,s=[...t];o&&s.push({components:N()});let l=T(s),c=n?new Set(n):void 0,d=[],p=[],m=[],h=new Map;for(let u of[...l.names()].sort()){let g=l.resolve(u);if(!g)continue;let I=pt(g.module);ct.has(u)?p.push(u):c&&I&&!c.has(I)?m.push(u):(d.push(u),h.set(u,g))}let b=r?[...new Set(Object.values(F).map(u=>u.module))]:[],Z=[...new Set([...d.map(u=>h.get(u).module),...b])].sort().map(u=>`import * as ${q(u)} from '${a(u)}';`),ye=d.map(u=>{let g=h.get(u),I=q(g.module);return g.export==="default"?` const ${u}: typeof ${I}.default;`:` export import ${u} = ${I}.${g.export};`}),Ne=p.length>0?`//
|
|
1
|
+
"use strict";var W=Object.defineProperty;var Ce=Object.getOwnPropertyDescriptor;var $e=Object.getOwnPropertyNames;var we=Object.prototype.hasOwnProperty;var Se=(t,e)=>{for(var n in e)W(t,n,{get:e[n],enumerable:!0})},Te=(t,e,n,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of $e(e))!we.call(t,r)&&r!==n&&W(t,r,{get:()=>e[r],enumerable:!(o=Ce(e,r))||o.enumerable});return t};var Oe=t=>Te(W({},"__esModule",{value:!0}),t);var Rt={};Se(Rt,{BUILTIN_COMPONENTS:()=>nt,CORE_CONTROL_FLOW:()=>B,DEFAULT_GLOBALS_PATH:()=>be,DOM_CONTROL_FLOW:()=>_,RESERVED_COMPONENTS:()=>H,ROUTER_COMPONENTS:()=>y,RUNTIME_CONTRACT_V1:()=>j,RUNTIME_CONTRACT_V2:()=>ze,backends:()=>vt,builtinComponentMap:()=>N,builtinComponents:()=>rt,cleanTemplateText:()=>w,compilePieces:()=>Re,compileTemplate:()=>lt,componentGlobals:()=>K,createComponentResolver:()=>T,defaultOptions:()=>ht,imperativeBackend:()=>v,isReactiveShape:()=>Y,lowerTemplate:()=>L,resolveComponentSources:()=>V,routerComponents:()=>ot,walk:()=>S,writeComponentGlobals:()=>gt});module.exports=Oe(Rt);var Me="children";function Y(t){switch(t.kind){case"call":return!0;case"member":return t.property!==Me;case"compound":return t.parts.some(Y);case"opaque":return!1}}var fe=require("@fluixi/template-parser");var M={kind:"eager"},Pe=["pointerdown","focusin","keydown"],X=new Set(["eager","idle","visible","interaction","media","never"]),k=class extends Error{};function Q(t,e){let n=t.slice(5);if(!X.has(n))throw new k(`Unknown load strategy 'load:${n}'. Expected one of ${[...X].join(", ")}.`);switch(n){case"eager":return M;case"idle":return{kind:"idle"};case"never":return{kind:"never"};case"visible":return e?{kind:"visible",rootMargin:e}:{kind:"visible"};case"interaction":return{kind:"interaction",events:e?Ae(e):[...Pe]};case"media":if(!e)throw new k(`'load:media' needs a query, e.g. load:media="(min-width: 1024px)".`);return{kind:"media",query:e};default:throw new k(`Unhandled load strategy '${n}'.`)}}function Ae(t){let e=t.split(/[\s,]+/).map(n=>n.trim()).filter(Boolean);if(e.length===0)throw new k("'load:interaction' was given no event names.");return e}function ee(t){return t.kind!=="eager"&&t.kind!=="never"}var je=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),te={className:"class",htmlFor:"for"},De=new Set(["innerHTML","outerHTML","innerText","textContent","value","checked","selected","muted","defaultValue","defaultChecked","children","ref"]),Le=new Set(["script","style","textarea","title"]);function U(t){return Le.has(t)}function ne(t){return te[t]??t}function E(t){return t.kind!=="attr"||t.expr!==void 0||t.name.includes(":")?!1:!De.has(t.name)}function J(t){if(!t.static||U(t.tag))return!1;for(let e of t.props)if(!E(e))return!1;for(let e of t.children)if(e.kind!=="text"&&!(e.kind==="element"&&J(e)))return!1;return!0}function C(t){let e=t.props.map(Be).filter(Boolean).join(""),n=`<${t.tag}${e}>`;return je.has(t.tag)?n:`${n}${t.children.map(_e).join("")}</${t.tag}>`}function _e(t){if(t.kind==="text")return Fe(t.value);if(t.kind!=="element")throw new Error(`serializeStatic: unexpected ${t.kind}`);return C(t)}function Be(t){let e=te[t.name]??t.name,n=t.literal;return n===!0||n===void 0?` ${e}`:n===!1||n===null?"":` ${e}="${He(String(n))}"`}function He(t){return t.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function Fe(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}var Ge="<!--fx-->",We="<!--fx/-->";function A(t){return t.kind==="expr"||t.kind==="component"||t.kind==="control"}function Ue(t){return t.kind==="text"||t.kind==="element"&&re(t)}function re(t){return t.svg||U(t.tag)||!t.props.every(e=>E(e))?!1:t.children.every(e=>Ue(e)||A(e))}function P(t){if(A(t))return!0;let e=t.children;return e?e.some(P):!1}function oe(t){for(let e=0;e<t.children.length;e++){let n=t.children[e];if(n.kind==="text"&&(n.value===""||t.children[e+1]?.kind==="text"))return!1}return t.children.every(e=>e.kind!=="element"||oe(e))}function ie(t){if(!re(t)||!oe(t)||!t.children.some(P))return null;let e=[],n=[],o=0,r=a=>{let s=`_n$${o++}`;return e.push({ref:s,expr:a}),s};return i(t,"_el$"),{html:Je(t),tag:t.tag,steps:e,holes:n};function i(a,s){let l=-1;a.children.forEach((d,p)=>{P(d)&&(l=p)});let c=null;for(let d=0;d<=l;d++){let p=a.children[d],m=c?`${c}.nextSibling`:`${s}.firstChild`;if(A(p)){let b=r(m),G=r(`holeEnd(${b})`);n.push({parentRef:s,startRef:b,endRef:G,node:p}),c=G;continue}let h=r(m);p.kind==="element"&&P(p)&&i(p,h),c=h}}}function Je(t){return C(se(t)).split(ae).join(Ge+We)}function se(t){return{...t,children:t.children.map(e=>A(e)?{kind:"text",value:ae}:e.kind==="element"?se(e):e)}}var ae="\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"]},ze={version:2,module:"@fluixi/dom",symbols:[...j.symbols,"template","cloneTemplate","walk"]};var Ve={show:"Show",for:"For",index:"Index",switch:"Switch",match:"Match",dynamic:"Dynamic",errorBoundary:"ErrorBoundary",suspense:"Suspense"};function qe(t){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(t)}function ce(t){return qe(t)?t:JSON.stringify(t)}function Ke(t){return t.expr!==void 0?t.reactive?`() => (${t.expr})`:`(${t.expr})`:JSON.stringify(t.literal??!0)}function Ze(t){return t.expr!==void 0?`(${t.expr})`:JSON.stringify(t.literal??!0)}function Ye(t,e,n){let o=t.filter(s=>s.kind==="spread"),i=t.filter(s=>s.kind!=="spread").map(s=>`${ce(s.name)}: ${Ke(s)}`);e!=null&&i.push(`children: ${e}`);let a=`{ ${i.join(", ")} }`;return o.length>0?(n.add("mergeProps"),`mergeProps(${o.map(s=>s.expr).join(", ")}, ${a})`):a}function pe(t,e,n){return t.length===1?$(t[0],e,n):`[${t.map(o=>$(o,e,n)).join(", ")}]`}function le(t,e,n,o,r){o.add("createMemo"),o.add("createComponent");let i=e.filter(c=>c.kind==="spread"),s=e.filter(c=>c.kind!=="spread").map(c=>`get ${ce(c.name)}() { return ${Ze(c)}; }`);n.length>0&&s.push(`get children() { return ${pe(n,o,r)}; }`);let l=`{ ${s.join(", ")} }`;return i.length>0&&(o.add("mergeProps"),l=`mergeProps(${i.map(c=>c.expr).join(", ")}, ${l})`),`createMemo(() => createComponent(${t}, ${l}))`}function Xe(t,e){let n=ne(e.name),o=e.literal;return o===!0||o===void 0?`${t}.setAttribute(${JSON.stringify(n)}, "");`:o===!1||o===null?"":`${t}.setAttribute(${JSON.stringify(n)}, ${JSON.stringify(String(o))});`}var de=!1;function $(t,e,n){switch(t.kind){case"text":return JSON.stringify(t.value);case"expr":return t.reactive?`() => (${t.code})`:`(${t.code})`;case"fragment":return t.children.length===0?"null":pe(t.children,e,n);case"component":return le(t.name,t.props,t.children,e,n);case"control":{let o=Ve[t.control]??t.control;return e.add(o),le(o,t.props,t.children,e,n)}case"element":{if(n&&t.static&&!t.svg&&J(t)){e.add("templateNode");let s=`_tmpl$${n.length}`;return n.push({id:s,html:C(t),tag:t.tag,svg:!1}),`templateNode(${s}, ${JSON.stringify(t.tag)})`}if(n&&de){let s=ie(t);if(s){e.add("templateNode"),e.add("insert"),e.add("holeEnd"),e.add("holeContent"),e.add("holeScope");let l=`_tmpl$${n.length}`;n.push({id:l,html:s.html,tag:s.tag,svg:!1});let c=[`const _el$ = templateNode(${l}, ${JSON.stringify(s.tag)}, true);`];for(let d of s.steps)c.push(`const ${d.ref} = ${d.expr};`);for(let d of s.holes)c.push(`insert(${d.parentRef}, holeScope(${d.startRef}, () => (${$(d.node,e,n)})), ${d.endRef}, holeContent(${d.startRef}, ${d.endRef}));`);return c.push("return _el$;"),`(() => { ${c.join(" ")} })()`}}e.add("createNativeElement");let o=JSON.stringify(t.tag),r="_el$",i=[],a=t.svg?`${o}, true`:o;if(i.push(`const ${r} = createNativeElement(${a});`),t.props.length>0)if(!t.svg&&t.props.every(E))for(let s of t.props)i.push(Xe(r,s));else{e.add("spread");let s=t.svg?", isSVG: true":"";i.push(`spread({ element: ${r}, props: ${Ye(t.props,null,e)}${s} });`)}for(let s of t.children){e.add("insert");let l=$(s,e,n),c=s.kind==="expr"&&s.reactive||s.kind==="component"||s.kind==="control";i.push(c?`insert(${r}, ${l}, null);`:`insert(${r}, ${l});`)}return i.push(`return ${r};`),`(() => { ${i.join(" ")} })()`}}}function D(t,e){if(!e||e.length===0)return t;let n=new Map(e.map(o=>[o.id,JSON.stringify(o.html)]));return t.replace(/_tmpl\$\d+/g,o=>n.get(o)??o)}var v={name:"imperative",contract:j,emit(t,e){let n=new Set,o=e?.templateClone!==!1?[]:void 0;return de=e?.partialTemplates===!0,{code:$(t,n,o),imports:Array.from(n),templates:o}}};function w(t){let e=t.split(/\r\n|\n|\r/),n=0;for(let r=0;r<e.length;r++)/[^ \t]/.test(e[r])&&(n=r);let o="";for(let r=0;r<e.length;r++){let i=e[r].replace(/\t/g," ");r!==0&&(i=i.replace(/^ +/,"")),r!==e.length-1&&(i=i.replace(/ +$/,"")),i&&(r!==n&&(i+=" "),o+=i)}return o}var ue=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function Qe(t){return t.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${")}function me(t){return t.charAt(0).toUpperCase()+t.slice(1)}var z=class{constructor(e,n){this.holes=e;this.used=n}hole(e){return this.holes[e]??{code:"undefined",reactive:!1}}emit(e){let{code:n,imports:o,templates:r}=v.emit(e,{});for(let i of o)this.used.add(i);return D(n,r)}lowerRoot(e){let n=this.lowerChildren(e);return n.length===1?n[0]:{kind:"fragment",children:n}}lowerChildren(e){let n=[];for(let o=0;o<e.length;o++){let r=e[o];if(r.kind==="Element"||r.kind==="Component"){let a=r.attributes.find(s=>s.kind==="IfDirective");if(a&&a.kind==="IfDirective"){let s=o+1;s<e.length&&this.isBlankText(e[s])&&s++;let l=e[s],c=l&&(l.kind==="Element"||l.kind==="Component")&&l.attributes.some(d=>d.kind==="ElseDirective");n.push(this.lowerIf(r,a.hole,c?l:null)),c&&(o=s);continue}if(r.attributes.some(s=>s.kind==="EachDirective")){n.push(this.lowerEach(r));continue}}let i=this.lowerNode(r);i&&n.push(i)}return n}isBlankText(e){return e.kind==="Text"&&!e.raw&&w(e.value)===""}lowerNode(e){switch(e.kind){case"Text":{if(e.raw)return{kind:"text",value:e.value};let n=w(e.value);return n?{kind:"text",value:n}:null}case"Comment":return null;case"Expression":{let n=this.hole(e.hole);return{kind:"expr",code:n.code,reactive:n.reactive}}case"Fragment":return{kind:"fragment",children:this.lowerChildren(e.children)};case"Element":return this.lowerElement(e);case"Component":return this.lowerComponent(e);default:return null}}lowerElement(e){let n=e.attributes.find(o=>o.kind==="Attribute"&&o.name==="is");if(e.tag==="component"&&n&&n.value&&n.value.kind==="hole"){let o=e.attributes.filter(i=>i!==n),r=this.lowerComponent({...e,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:e.tag,svg:e.namespace==="svg",props:this.lowerAttributes(e.attributes),children:this.lowerChildren(e.children),static:!1}}lowerComponent(e){let n=e.tagHole!=null?this.hole(e.tagHole).code:e.tag,o=this.lowerAttributes(e.attributes),{slots:r,rest:i}=this.partitionSlots(e.children);for(let[l,c]of r){let d=c.length===1?c[0]:{kind:"fragment",children:c},p={name:l,kind:"attr",expr:this.emit(d),jsxElement:!0},m=o.findIndex(h=>h.name===l);m>=0?o[m]=p:o.push(p)}let a=e.attributes.find(l=>l.kind==="LoadDirective"),s=a?Q(`load:${a.strategy}`,a.modifier):void 0;return{kind:"component",name:n,props:o,children:this.lowerChildren(i),...s?{load:s}:{}}}partitionSlots(e){let n=new Map,o=[];for(let r of e){if(r.kind==="Element"||r.kind==="Component"){let i=r.attributes.find(a=>a.kind==="Attribute"&&a.name==="slot");if(i&&i.value&&i.value.kind==="static"){let a={...r,attributes:r.attributes.filter(c=>c!==i)},s=a.kind==="Element"?this.lowerElement(a):this.lowerComponent(a),l=n.get(i.value.value)??[];l.push(s),n.set(i.value.value,l);continue}}o.push(r)}return{slots:n,rest:o}}lowerIf(e,n,o){let r=this.hole(n),i=[{name:"when",kind:"attr",expr:r.code,reactive:r.reactive}];if(o){let s=this.stripAndLower(o,l=>l.kind==="ElseDirective");i.push({name:"fallback",kind:"attr",expr:this.emit(s),jsxElement:!0})}let a=this.stripAndLower(e,s=>s.kind==="IfDirective");return{kind:"component",name:"Show",props:i,children:[a]}}lowerEach(e){let n=e.attributes.find(l=>l.kind==="EachDirective");if(!n||n.kind!=="EachDirective")return this.lowerNode(e);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 i=this.itemArrow(e),a;if(i){let l={kind:"expr",code:i.body,reactive:i.bodyReactive},c=this.rebuildWithChildren(e,[l]);a=`(${i.params.join(", ")}) => (${this.emit(c)})`}else{let l=this.stripAndLower(e,c=>c.kind==="EachDirective");a=`() => (${this.emit(l)})`}return{kind:"component",name:"For",props:r,children:[{kind:"expr",code:a,reactive:!1}]}}itemArrow(e){let n=e.children.filter(o=>!this.isBlankText(o));return n.length!==1||n[0].kind!=="Expression"?null:this.hole(n[0].hole).arrow??null}stripAndLower(e,n){let o={...e,attributes:e.attributes.filter(r=>!n(r))};return o.kind==="Element"?this.lowerElement(o):this.lowerComponent(o)}rebuildWithChildren(e,n){let o=this.lowerAttributes(e.attributes.filter(r=>r.kind!=="EachDirective"));return e.kind==="Element"?{kind:"element",tag:e.tag,svg:e.namespace==="svg",props:o,children:n,static:!1}:{kind:"component",name:e.tag,props:o,children:n}}lowerAttributes(e){let n=[],o=[],r=!1,i=[],a=!1,s=[];for(let l of e)switch(l.kind){case"IfDirective":case"EachDirective":case"ElseDirective":break;case"Attribute":n.push(this.plainAttr(l));break;case"PropertyBinding":n.push({name:l.name,kind:"prop",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"EventBinding":n.push(this.eventProp(l));break;case"RefBinding":n.push({name:"ref",kind:"ref",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"Spread":n.push({name:"",kind:"spread",expr:this.hole(l.hole).code});break;case"ClassDirective":{let c=this.hole(l.hole);o.push(`${JSON.stringify(l.name)}: ${c.code}`),r=r||c.reactive;break}case"StyleDirective":{let c=this.hole(l.hole);i.push(`${JSON.stringify(l.name)}: ${c.code}`),a=a||c.reactive;break}case"BindDirective":n.push(...this.bindProps(l.name,this.hole(l.hole).code));break;case"UseDirective":{let c=l.name??(l.hole!=null?this.hole(l.hole).code:null);if(!c)break;s.push(l.name!=null&&l.hole!=null?`[${c}, () => (${this.hole(l.hole).code})]`:`[${c}]`);break}}return o.length>0&&n.push({name:"classList",kind:"attr",expr:`{ ${o.join(", ")} }`,reactive:r}),i.length>0&&n.push({name:"style",kind:"attr",expr:`{ ${i.join(", ")} }`,reactive:a}),s.length>0&&n.push({name:"use",kind:"attr",expr:`[${s.join(", ")}]`}),n}eventProp(e){let n=e.name.toLowerCase(),o=this.hole(e.hole).code;if(!(e.syntax==="colon"||e.modifiers.length>0))return{name:"on"+me(e.name),kind:"event",event:{name:n,delegated:ue.has(n)},expr:o};let i=this.wrapHandler(o,e.modifiers),a=this.eventOptions(e.modifiers),s=a?`[${i}, ${a}]`:i;return{name:"on:"+n,kind:"attr",expr:s}}wrapHandler(e,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?e:`(e) => { ${o}${r.join(" ")} return (${e})(e); }`}eventOptions(e){let n=[];return e.includes("capture")&&n.push("capture: true"),e.includes("once")&&n.push("once: true"),e.includes("passive")&&n.push("passive: true"),n.length?`{ ${n.join(", ")} }`:null}bindProps(e,n){let o=e==="checked",r=o?"change":"input",i=o?"checked":"value";this.used.add("bindPair");let a=`bindPair(${n})`;return[{name:e,kind:"attr",expr:`${a}[0]()`,reactive:!0},{name:"on"+me(r),kind:"event",event:{name:r,delegated:ue.has(r)},expr:`(e) => ${a}[1](e.target.${i})`}]}plainAttr(e){let n=e.value,o=e.name;e.name==="class"?o=n&&n.kind==="hole"&&this.hole(n.hole).object?"classList":"className":e.name==="html"&&(o="innerHTML");let i={name:o,kind:"attr"};if(n==null)return i.literal=!0,i;if(n.kind==="static")return i.literal=n.value,i;if(n.kind==="hole"){let l=this.hole(n.hole);return i.expr=l.code,i.reactive=l.reactive,i}let a=!1,s=n.parts.map(l=>{if("text"in l)return Qe(l.text);let c=this.hole(l.hole);return a=a||c.reactive,"${"+c.code+"}"}).join("");return i.expr="`"+s+"`",i.reactive=a,i}};function L(t,e,n,o={}){let{root:r}=(0,fe.parseTemplate)(t,{svg:o.svg});return new z(e,n).lowerRoot(r.children)}function et(t){switch(t.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 t.reactive?"reactive-prop":t.expr!==void 0?"expression-prop":void 0;default:return"expression-prop"}}function ge(t){let e=[],n=new Map,o=r=>{switch(r.kind){case"text":return!0;case"expr":return!1;case"component":case"control":for(let i of r.children)o(i);return!1;case"fragment":for(let i of r.children)o(i);return!1;case"element":{let i=!0;for(let s of r.children)o(s)||(i=!1);let a;for(let s of r.props)if(a=et(s),a)break;return!a&&!i&&(a=tt(r)),r.static=!a,a?n.set(r,a):e.push(r),r.static}default:return!1}};for(let r of Array.isArray(t)?t:[t])o(r);return{staticElements:e,reasons:n}}function tt(t){for(let e of t.children){if(e.kind==="expr")return"expression-child";if(e.kind==="component")return"component-child";if(e.kind==="control")return"control-child";if(e.kind==="element"&&!e.static||e.kind==="fragment")return"expression-child"}return"expression-child"}var _=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],B=["Suspense","SuspenseList","Await"],y=["Router","Outlet","Redirect","Link"],nt=[..._,...B,...y],H=new Set([..._,...B]);function N(t={}){let{controlFlowModule:e="@fluixi/dom",coreModule:n="@fluixi/core",routerModule:o="@fluixi/core/router"}=t,r={};for(let i of _)r[i]=e;for(let i of B)r[i]=n;for(let i of y)r[i]=o;return r}function rt(t={}){return{components:N(t)}}function ot(t){let e=t??"@fluixi/core/router";return{components:Object.fromEntries(y.map(n=>[n,e]))}}function V(t,e={}){let{resolver:n,isBound:o,modules:r,strategyFor:i}=e,a=N(r),s=new Map,l=new Set,c=p=>{let{name:m}=p;if(!m||m.includes(".")||o?.(m))return;let h=d(m);if(!h){l.add(m);return}let b=h.origin==="builtin"&&H.has(m)?M:i?.(p)??M;p.source={...h,loading:b},s.set(m,p.source)},d=p=>{if(H.has(p))return{module:a[p],export:p,origin:"builtin"};let m=n?.resolve(p);if(m)return{module:m.module,export:m.export,origin:"rule"};if(y.includes(p))return{module:a[p],export:p,origin:"builtin"}};return S(t,p=>{p.kind==="component"&&c(p)}),{resolved:s,unresolved:[...l]}}function S(t,e){let n=Array.isArray(t)?t:[t];for(let o of n){e(o);let r=o.children;r&&S(r,e)}}function he(t){let e=[];S(t,i=>{i.kind==="component"&&i.source&&e.push(i)});let n=new Set,o=new Set;for(let i of e){let{module:a,loading:s}=i.source;s.kind==="eager"&&n.add(a),s.kind==="never"&&o.add(a)}let r=new Map;for(let i of e){let a=i.source;ee(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(i=>n.has(i))}}var it=t=>"components"in t;function ve(t,e){return t.replace(/\$(\d+)/g,(n,o)=>e[Number(o)]??n)}function st(t,e){return typeof e=="string"?{module:e,export:t}:e}function T(t=[]){let e=new Map,n=[],o=[];for(let a of t){if(!it(a)){o.push(a);continue}for(let[s,l]of Object.entries(a.components)){let c=st(s,l),d=e.get(s);if(d&&d.module!==c.module){let p=n.find(m=>m.name===s);p?p.modules.push(c.module):n.push({name:s,modules:[d.module,c.module]});continue}e.set(s,c)}}let r=new Map;return{resolve:a=>{if(r.has(a))return r.get(a);let s=e.get(a);if(!s)for(let l of o){let c=a.match(new RegExp(l.match.source,l.match.flags.replace("g","")));if(c){s={module:ve(l.module,c),export:l.export?ve(l.export,c):a};break}}return r.set(a,s),s},names:()=>[...e.keys()],conflicts:()=>n}}function at(t){let e=[],n=0;return t.statics.forEach((o,r)=>{if(e.push({kind:"static",text:o,start:n}),n+=o.length,r<t.holes.length){let i=n+t.holes[r].code.length;e.push({kind:"hole",index:r,start:n,end:i}),n=i}}),e}function lt(t,e={}){if(t.statics.length!==t.holes.length+1)throw new Error(`[fluixi] compileTemplate: ${t.statics.length} static runs for ${t.holes.length} holes — a template always has exactly one more.`);return Re(at(t),t.holes,e)}function Re(t,e,n={}){let o=new Set,r=L(t,[...e],o,{svg:n.svg});ge(r),V(r,{resolver:T(n.resolve??[]),modules:{controlFlowModule:n.controlFlowModule??"@fluixi/dom",coreModule:n.coreModule??"@fluixi/core",routerModule:n.routerModule??"@fluixi/core/router"},strategyFor:l=>l.load}),he(r);let{code:i,imports:a,templates:s}=v.emit(r,{templateClone:n.templateClone,partialTemplates:n.partialTemplates});for(let l of a)o.add(l);return n.hoistTemplates?{code:i,imports:[...o],ir:r,templates:s}:{code:D(i,s),imports:[...o],ir:r}}var x="@fluixi/reactive/signal",F={$signal:{export:"signal",module:x,returns:"signal-handle"},$memo:{export:"memo",module:x,returns:"memo-handle"},$effect:{export:"effect",module:x,returns:"effect"},$store:{export:"store",module:"@fluixi/reactive/store",returns:"store-handle"},$resource:{export:"resource",module:x,returns:"resource-handle"},$selector:{export:"createSelector",module:x,returns:"memo-accessor"},$deferred:{export:"createDeferred",module:x,returns:"memo-accessor"},$untrack:{export:"untrack",module:x,returns:"plain"},$untrackStore:{export:"untrackStore",module:"@fluixi/reactive/store",returns:"plain"}};var Xt=new RegExp(`\\$(?:${Object.keys(F).map(t=>t.slice(1)).join("|")})\\s*\\(`);var ct=new Set(["Text","Image","Option","Audio","Comment","Range","Selection","Notification","Event","Document","Element","Node","Screen","Window","Location","History","Storage","Response","Request","Headers"]);function pt(t){if(t.startsWith(".")||t.startsWith("/")||/^[~@]\//.test(t))return;let e=t.split("/");return t.startsWith("@")?e.slice(0,2).join("/"):e[0]}function q(t){return`_${t.replace(/[^A-Za-z0-9]/g,"_")}`}function K(t,e={}){let{available:n,builtins:o=!0,intrinsics:r=!0,generator:i="@fluixi/compiler",specifier:a=u=>u}=e,s=[...t];o&&s.push({components:N()});let l=T(s),c=n?new Set(n):void 0,d=[],p=[],m=[],h=new Map;for(let u of[...l.names()].sort()){let g=l.resolve(u);if(!g)continue;let I=pt(g.module);ct.has(u)?p.push(u):c&&I&&!c.has(I)?m.push(u):(d.push(u),h.set(u,g))}let b=r?[...new Set(Object.values(F).map(u=>u.module))]:[],Z=[...new Set([...d.map(u=>h.get(u).module),...b])].sort().map(u=>`import * as ${q(u)} from '${a(u)}';`),ye=d.map(u=>{let g=h.get(u),I=q(g.module);return g.export==="default"?` const ${u}: typeof ${I}.default;`:` export import ${u} = ${I}.${g.export};`}),Ne=p.length>0?`//
|
|
2
2
|
// Import these explicitly — lib.dom already declares the name, so an ambient
|
|
3
3
|
// declaration cannot win:
|
|
4
4
|
`+p.map(u=>{let g=l.resolve(u)?.module;return`// import { ${u} } from '${g?a(g):""}';
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var Ie="children";function Ee(t){switch(t.kind){case"call":return!0;case"member":return t.property!==Ie;case"compound":return t.parts.some(Ee);case"opaque":return!1}}import{parseTemplate as Je}from"@fluixi/template-parser";var $={kind:"eager"},Ce=["pointerdown","focusin","keydown"],q=new Set(["eager","idle","visible","interaction","media","never"]),x=class extends Error{};function K(t,e){let n=t.slice(5);if(!q.has(n))throw new x(`Unknown load strategy 'load:${n}'. Expected one of ${[...q].join(", ")}.`);switch(n){case"eager":return $;case"idle":return{kind:"idle"};case"never":return{kind:"never"};case"visible":return e?{kind:"visible",rootMargin:e}:{kind:"visible"};case"interaction":return{kind:"interaction",events:e?$e(e):[...Ce]};case"media":if(!e)throw new x(`'load:media' needs a query, e.g. load:media="(min-width: 1024px)".`);return{kind:"media",query:e};default:throw new x(`Unhandled load strategy '${n}'.`)}}function $e(t){let e=t.split(/[\s,]+/).map(n=>n.trim()).filter(Boolean);if(e.length===0)throw new x("'load:interaction' was given no event names.");return e}function Z(t){return t.kind!=="eager"&&t.kind!=="never"}var we=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),Y={className:"class",htmlFor:"for"},Se=new Set(["innerHTML","outerHTML","innerText","textContent","value","checked","selected","muted","defaultValue","defaultChecked","children","ref"]),Te=new Set(["script","style","textarea","title"]);function L(t){return Te.has(t)}function X(t){return Y[t]??t}function k(t){return t.kind!=="attr"||t.expr!==void 0||t.name.includes(":")?!1:!Se.has(t.name)}function _(t){if(!t.static||L(t.tag))return!1;for(let e of t.props)if(!k(e))return!1;for(let e of t.children)if(e.kind!=="text"&&!(e.kind==="element"&&_(e)))return!1;return!0}function y(t){let e=t.props.map(Me).filter(Boolean).join(""),n=`<${t.tag}${e}>`;return we.has(t.tag)?n:`${n}${t.children.map(Oe).join("")}</${t.tag}>`}function Oe(t){if(t.kind==="text")return Ae(t.value);if(t.kind!=="element")throw new Error(`serializeStatic: unexpected ${t.kind}`);return y(t)}function Me(t){let e=Y[t.name]??t.name,n=t.literal;return n===!0||n===void 0?` ${e}`:n===!1||n===null?"":` ${e}="${Pe(String(n))}"`}function Pe(t){return t.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function Ae(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}var je="<!--fx-->",De="<!--fx/-->";function S(t){return t.kind==="expr"||t.kind==="component"||t.kind==="control"}function Le(t){return t.kind==="text"||t.kind==="element"&&Q(t)}function Q(t){return t.svg||L(t.tag)||!t.props.every(e=>k(e))?!1:t.children.every(e=>Le(e)||S(e))}function w(t){if(S(t))return!0;let e=t.children;return e?e.some(w):!1}function ee(t){for(let e=0;e<t.children.length;e++){let n=t.children[e];if(n.kind==="text"&&(n.value===""||t.children[e+1]?.kind==="text"))return!1}return t.children.every(e=>e.kind!=="element"||ee(e))}function te(t){if(!Q(t)||!ee(t)||!t.children.some(w))return null;let e=[],n=[],o=0,r=a=>{let s=`_n$${o++}`;return e.push({ref:s,expr:a}),s};return i(t,"_el$"),{html:_e(t),tag:t.tag,steps:e,holes:n};function i(a,s){let l=-1;a.children.forEach((d,p)=>{w(d)&&(l=p)});let c=null;for(let d=0;d<=l;d++){let p=a.children[d],m=c?`${c}.nextSibling`:`${s}.firstChild`;if(S(p)){let R=r(m),D=r(`holeEnd(${R})`);n.push({parentRef:s,startRef:R,endRef:D,node:p}),c=D;continue}let g=r(m);p.kind==="element"&&w(p)&&i(p,g),c=g}}}function _e(t){return y(ne(t)).split(re).join(je+De)}function ne(t){return{...t,children:t.children.map(e=>S(e)?{kind:"text",value:re}:e.kind==="element"?ne(e):e)}}var re="\0fx-hole\0";var B={version:1,module:"@fluixi/dom",symbols:["createNativeElement","insert","spread","setAttribute","delegateEvents","createComponent","createMemo","untrack","Show","For","Index","Switch","Match","Dynamic","ErrorBoundary"]},ft={version:2,module:"@fluixi/dom",symbols:[...B.symbols,"template","cloneTemplate","walk"]};var Be={show:"Show",for:"For",index:"Index",switch:"Switch",match:"Match",dynamic:"Dynamic",errorBoundary:"ErrorBoundary",suspense:"Suspense"};function He(t){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(t)}function ie(t){return He(t)?t:JSON.stringify(t)}function Fe(t){return t.expr!==void 0?t.reactive?`() => (${t.expr})`:`(${t.expr})`:JSON.stringify(t.literal??!0)}function Ge(t){return t.expr!==void 0?`(${t.expr})`:JSON.stringify(t.literal??!0)}function We(t,e,n){let o=t.filter(s=>s.kind==="spread"),i=t.filter(s=>s.kind!=="spread").map(s=>`${ie(s.name)}: ${Fe(s)}`);e!=null&&i.push(`children: ${e}`);let a=`{ ${i.join(", ")} }`;return o.length>0?(n.add("mergeProps"),`mergeProps(${o.map(s=>s.expr).join(", ")}, ${a})`):a}function se(t,e,n){return t.length===1?N(t[0],e,n):`[${t.map(o=>N(o,e,n)).join(", ")}]`}function oe(t,e,n,o,r){o.add("createMemo"),o.add("createComponent");let i=e.filter(c=>c.kind==="spread"),s=e.filter(c=>c.kind!=="spread").map(c=>`get ${ie(c.name)}() { return ${Ge(c)}; }`);n.length>0&&s.push(`get children() { return ${se(n,o,r)}; }`);let l=`{ ${s.join(", ")} }`;return i.length>0&&(o.add("mergeProps"),l=`mergeProps(${i.map(c=>c.expr).join(", ")}, ${l})`),`createMemo(() => createComponent(${t}, ${l}))`}function Ue(t,e){let n=X(e.name),o=e.literal;return o===!0||o===void 0?`${t}.setAttribute(${JSON.stringify(n)}, "");`:o===!1||o===null?"":`${t}.setAttribute(${JSON.stringify(n)}, ${JSON.stringify(String(o))});`}var ae=!1;function N(t,e,n){switch(t.kind){case"text":return JSON.stringify(t.value);case"expr":return t.reactive?`() => (${t.code})`:`(${t.code})`;case"fragment":return t.children.length===0?"null":se(t.children,e,n);case"component":return oe(t.name,t.props,t.children,e,n);case"control":{let o=Be[t.control]??t.control;return e.add(o),oe(o,t.props,t.children,e,n)}case"element":{if(n&&t.static&&!t.svg&&_(t)){e.add("templateNode");let s=`_tmpl$${n.length}`;return n.push({id:s,html:y(t),tag:t.tag,svg:!1}),`templateNode(${s}, ${JSON.stringify(t.tag)})`}if(n&&ae){let s=te(t);if(s){e.add("templateNode"),e.add("insert"),e.add("holeEnd"),e.add("holeContent"),e.add("holeScope");let l=`_tmpl$${n.length}`;n.push({id:l,html:s.html,tag:s.tag,svg:!1});let c=[`const _el$ = templateNode(${l}, ${JSON.stringify(s.tag)}, true);`];for(let d of s.steps)c.push(`const ${d.ref} = ${d.expr};`);for(let d of s.holes)c.push(`insert(${d.parentRef}, holeScope(${d.startRef}, () => (${N(d.node,e,n)})), ${d.endRef}, holeContent(${d.startRef}, ${d.endRef}));`);return c.push("return _el$;"),`(() => { ${c.join(" ")} })()`}}e.add("createNativeElement");let o=JSON.stringify(t.tag),r="_el$",i=[],a=t.svg?`${o}, true`:o;if(i.push(`const ${r} = createNativeElement(${a});`),t.props.length>0)if(!t.svg&&t.props.every(k))for(let s of t.props)i.push(Ue(r,s));else{e.add("spread");let s=t.svg?", isSVG: true":"";i.push(`spread({ element: ${r}, props: ${We(t.props,null,e)}${s} });`)}for(let s of t.children){e.add("insert");let l=N(s,e,n),c=s.kind==="expr"&&s.reactive||s.kind==="component"||s.kind==="control";i.push(c?`insert(${r}, ${l}, null);`:`insert(${r}, ${l});`)}return i.push(`return ${r};`),`(() => { ${i.join(" ")} })()`}}}function T(t,e){if(!e||e.length===0)return t;let n=new Map(e.map(o=>[o.id,JSON.stringify(o.html)]));return t.replace(/_tmpl\$\d+/g,o=>n.get(o)??o)}var h={name:"imperative",contract:B,emit(t,e){let n=new Set,o=e?.templateClone!==!1?[]:void 0;return ae=e?.partialTemplates===!0,{code:N(t,n,o),imports:Array.from(n),templates:o}}};function O(t){let e=t.split(/\r\n|\n|\r/),n=0;for(let r=0;r<e.length;r++)/[^ \t]/.test(e[r])&&(n=r);let o="";for(let r=0;r<e.length;r++){let i=e[r].replace(/\t/g," ");r!==0&&(i=i.replace(/^ +/,"")),r!==e.length-1&&(i=i.replace(/ +$/,"")),i&&(r!==n&&(i+=" "),o+=i)}return o}var le=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function ze(t){return t.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${")}function ce(t){return t.charAt(0).toUpperCase()+t.slice(1)}var H=class{constructor(e,n){this.holes=e;this.used=n}hole(e){return this.holes[e]??{code:"undefined",reactive:!1}}emit(e){let{code:n,imports:o,templates:r}=h.emit(e,{});for(let i of o)this.used.add(i);return T(n,r)}lowerRoot(e){let n=this.lowerChildren(e);return n.length===1?n[0]:{kind:"fragment",children:n}}lowerChildren(e){let n=[];for(let o=0;o<e.length;o++){let r=e[o];if(r.kind==="Element"||r.kind==="Component"){let a=r.attributes.find(s=>s.kind==="IfDirective");if(a&&a.kind==="IfDirective"){let s=o+1;s<e.length&&this.isBlankText(e[s])&&s++;let l=e[s],c=l&&(l.kind==="Element"||l.kind==="Component")&&l.attributes.some(d=>d.kind==="ElseDirective");n.push(this.lowerIf(r,a.hole,c?l:null)),c&&(o=s);continue}if(r.attributes.some(s=>s.kind==="EachDirective")){n.push(this.lowerEach(r));continue}}let i=this.lowerNode(r);i&&n.push(i)}return n}isBlankText(e){return e.kind==="Text"&&!e.raw&&O(e.value)===""}lowerNode(e){switch(e.kind){case"Text":{if(e.raw)return{kind:"text",value:e.value};let n=O(e.value);return n?{kind:"text",value:n}:null}case"Comment":return null;case"Expression":{let n=this.hole(e.hole);return{kind:"expr",code:n.code,reactive:n.reactive}}case"Fragment":return{kind:"fragment",children:this.lowerChildren(e.children)};case"Element":return this.lowerElement(e);case"Component":return this.lowerComponent(e);default:return null}}lowerElement(e){let n=e.attributes.find(o=>o.kind==="Attribute"&&o.name==="is");if(e.tag==="component"&&n&&n.value&&n.value.kind==="hole"){let o=e.attributes.filter(i=>i!==n),r=this.lowerComponent({...e,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:e.tag,svg:e.namespace==="svg",props:this.lowerAttributes(e.attributes),children:this.lowerChildren(e.children),static:!1}}lowerComponent(e){let n=e.tagHole!=null?this.hole(e.tagHole).code:e.tag,o=this.lowerAttributes(e.attributes),{slots:r,rest:i}=this.partitionSlots(e.children);for(let[l,c]of r){let d=c.length===1?c[0]:{kind:"fragment",children:c},p={name:l,kind:"attr",expr:this.emit(d),jsxElement:!0},m=o.findIndex(g=>g.name===l);m>=0?o[m]=p:o.push(p)}let a=e.attributes.find(l=>l.kind==="LoadDirective"),s=a?K(`load:${a.strategy}`,a.modifier):void 0;return{kind:"component",name:n,props:o,children:this.lowerChildren(i),...s?{load:s}:{}}}partitionSlots(e){let n=new Map,o=[];for(let r of e){if(r.kind==="Element"||r.kind==="Component"){let i=r.attributes.find(a=>a.kind==="Attribute"&&a.name==="slot");if(i&&i.value&&i.value.kind==="static"){let a={...r,attributes:r.attributes.filter(c=>c!==i)},s=a.kind==="Element"?this.lowerElement(a):this.lowerComponent(a),l=n.get(i.value.value)??[];l.push(s),n.set(i.value.value,l);continue}}o.push(r)}return{slots:n,rest:o}}lowerIf(e,n,o){let r=this.hole(n),i=[{name:"when",kind:"attr",expr:r.code,reactive:r.reactive}];if(o){let s=this.stripAndLower(o,l=>l.kind==="ElseDirective");i.push({name:"fallback",kind:"attr",expr:this.emit(s),jsxElement:!0})}let a=this.stripAndLower(e,s=>s.kind==="IfDirective");return{kind:"component",name:"Show",props:i,children:[a]}}lowerEach(e){let n=e.attributes.find(l=>l.kind==="EachDirective");if(!n||n.kind!=="EachDirective")return this.lowerNode(e);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 i=this.itemArrow(e),a;if(i){let l={kind:"expr",code:i.body,reactive:i.bodyReactive},c=this.rebuildWithChildren(e,[l]);a=`(${i.params.join(", ")}) => (${this.emit(c)})`}else{let l=this.stripAndLower(e,c=>c.kind==="EachDirective");a=`() => (${this.emit(l)})`}return{kind:"component",name:"For",props:r,children:[{kind:"expr",code:a,reactive:!1}]}}itemArrow(e){let n=e.children.filter(o=>!this.isBlankText(o));return n.length!==1||n[0].kind!=="Expression"?null:this.hole(n[0].hole).arrow??null}stripAndLower(e,n){let o={...e,attributes:e.attributes.filter(r=>!n(r))};return o.kind==="Element"?this.lowerElement(o):this.lowerComponent(o)}rebuildWithChildren(e,n){let o=this.lowerAttributes(e.attributes.filter(r=>r.kind!=="EachDirective"));return e.kind==="Element"?{kind:"element",tag:e.tag,svg:e.namespace==="svg",props:o,children:n,static:!1}:{kind:"component",name:e.tag,props:o,children:n}}lowerAttributes(e){let n=[],o=[],r=!1,i=[],a=!1,s=[];for(let l of e)switch(l.kind){case"IfDirective":case"EachDirective":case"ElseDirective":break;case"Attribute":n.push(this.plainAttr(l));break;case"PropertyBinding":n.push({name:l.name,kind:"prop",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"EventBinding":n.push(this.eventProp(l));break;case"RefBinding":n.push({name:"ref",kind:"ref",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"Spread":n.push({name:"",kind:"spread",expr:this.hole(l.hole).code});break;case"ClassDirective":{let c=this.hole(l.hole);o.push(`${JSON.stringify(l.name)}: ${c.code}`),r=r||c.reactive;break}case"StyleDirective":{let c=this.hole(l.hole);i.push(`${JSON.stringify(l.name)}: ${c.code}`),a=a||c.reactive;break}case"BindDirective":n.push(...this.bindProps(l.name,this.hole(l.hole).code));break;case"UseDirective":{let c=l.name??(l.hole!=null?this.hole(l.hole).code:null);if(!c)break;s.push(l.name!=null&&l.hole!=null?`[${c}, () => (${this.hole(l.hole).code})]`:`[${c}]`);break}}return o.length>0&&n.push({name:"classList",kind:"attr",expr:`{ ${o.join(", ")} }`,reactive:r}),i.length>0&&n.push({name:"style",kind:"attr",expr:`{ ${i.join(", ")} }`,reactive:a}),s.length>0&&n.push({name:"use",kind:"attr",expr:`[${s.join(", ")}]`}),n}eventProp(e){let n=e.name.toLowerCase(),o=this.hole(e.hole).code;if(!(e.syntax==="colon"||e.modifiers.length>0))return{name:"on"+ce(e.name),kind:"event",event:{name:n,delegated:le.has(n)},expr:o};let i=this.wrapHandler(o,e.modifiers),a=this.eventOptions(e.modifiers),s=a?`[${i}, ${a}]`:i;return{name:"on:"+n,kind:"attr",expr:s}}wrapHandler(e,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?e:`(e) => { ${o}${r.join(" ")} return (${e})(e); }`}eventOptions(e){let n=[];return e.includes("capture")&&n.push("capture: true"),e.includes("once")&&n.push("once: true"),e.includes("passive")&&n.push("passive: true"),n.length?`{ ${n.join(", ")} }`:null}bindProps(e,n){let o=e==="checked",r=o?"change":"input",i=o?"checked":"value";this.used.add("bindPair");let a=`bindPair(${n})`;return[{name:e,kind:"attr",expr:`${a}[0]()`,reactive:!0},{name:"on"+ce(r),kind:"event",event:{name:r,delegated:le.has(r)},expr:`(e) => ${a}[1](e.target.${i})`}]}plainAttr(e){let n=e.value,o=e.name;e.name==="class"?o=n&&n.kind==="hole"&&this.hole(n.hole).object?"classList":"className":e.name==="html"&&(o="innerHTML");let i={name:o,kind:"attr"};if(n==null)return i.literal=!0,i;if(n.kind==="static")return i.literal=n.value,i;if(n.kind==="hole"){let l=this.hole(n.hole);return i.expr=l.code,i.reactive=l.reactive,i}let a=!1,s=n.parts.map(l=>{if("text"in l)return ze(l.text);let c=this.hole(l.hole);return a=a||c.reactive,"${"+c.code+"}"}).join("");return i.expr="`"+s+"`",i.reactive=a,i}};function F(t,e,n,o={}){let{root:r}=Je(t,{svg:o.svg});return new H(e,n).lowerRoot(r.children)}function Ve(t){switch(t.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 t.reactive?"reactive-prop":t.expr!==void 0?"expression-prop":void 0;default:return"expression-prop"}}function pe(t){let e=[],n=new Map,o=r=>{switch(r.kind){case"text":return!0;case"expr":return!1;case"component":case"control":for(let i of r.children)o(i);return!1;case"fragment":for(let i of r.children)o(i);return!1;case"element":{let i=!0;for(let s of r.children)o(s)||(i=!1);let a;for(let s of r.props)if(a=Ve(s),a)break;return!a&&!i&&(a=qe(r)),r.static=!a,a?n.set(r,a):e.push(r),r.static}default:return!1}};for(let r of Array.isArray(t)?t:[t])o(r);return{staticElements:e,reasons:n}}function qe(t){for(let e of t.children){if(e.kind==="expr")return"expression-child";if(e.kind==="component")return"component-child";if(e.kind==="control")return"control-child";if(e.kind==="element"&&!e.static||e.kind==="fragment")return"expression-child"}return"expression-child"}var G=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],W=["Suspense","SuspenseList","Await"],I=["Router","Outlet","Redirect","Link"],$t=[...G,...W,...I],U=new Set([...G,...W]);function E(t={}){let{controlFlowModule:e="@fluixi/dom",coreModule:n="fluixi",routerModule:o="fluixi/router"}=t,r={};for(let i of G)r[i]=e;for(let i of W)r[i]=n;for(let i of I)r[i]=o;return r}function wt(t={}){return{components:E(t)}}function St(t){let e=t??"fluixi/router";return{components:Object.fromEntries(I.map(n=>[n,e]))}}function de(t,e={}){let{resolver:n,isBound:o,modules:r,strategyFor:i}=e,a=E(r),s=new Map,l=new Set,c=p=>{let{name:m}=p;if(!m||m.includes(".")||o?.(m))return;let g=d(m);if(!g){l.add(m);return}let R=g.origin==="builtin"&&U.has(m)?$:i?.(p)??$;p.source={...g,loading:R},s.set(m,p.source)},d=p=>{if(U.has(p))return{module:a[p],export:p,origin:"builtin"};let m=n?.resolve(p);if(m)return{module:m.module,export:m.export,origin:"rule"};if(I.includes(p))return{module:a[p],export:p,origin:"builtin"}};return M(t,p=>{p.kind==="component"&&c(p)}),{resolved:s,unresolved:[...l]}}function M(t,e){let n=Array.isArray(t)?t:[t];for(let o of n){e(o);let r=o.children;r&&M(r,e)}}function ue(t){let e=[];M(t,i=>{i.kind==="component"&&i.source&&e.push(i)});let n=new Set,o=new Set;for(let i of e){let{module:a,loading:s}=i.source;s.kind==="eager"&&n.add(a),s.kind==="never"&&o.add(a)}let r=new Map;for(let i of e){let a=i.source;Z(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(i=>n.has(i))}}var Ke=t=>"components"in t;function me(t,e){return t.replace(/\$(\d+)/g,(n,o)=>e[Number(o)]??n)}function Ze(t,e){return typeof e=="string"?{module:e,export:t}:e}function P(t=[]){let e=new Map,n=[],o=[];for(let a of t){if(!Ke(a)){o.push(a);continue}for(let[s,l]of Object.entries(a.components)){let c=Ze(s,l),d=e.get(s);if(d&&d.module!==c.module){let p=n.find(m=>m.name===s);p?p.modules.push(c.module):n.push({name:s,modules:[d.module,c.module]});continue}e.set(s,c)}}let r=new Map;return{resolve:a=>{if(r.has(a))return r.get(a);let s=e.get(a);if(!s)for(let l of o){let c=a.match(new RegExp(l.match.source,l.match.flags.replace("g","")));if(c){s={module:me(l.module,c),export:l.export?me(l.export,c):a};break}}return r.set(a,s),s},names:()=>[...e.keys()],conflicts:()=>n}}function Ye(t){let e=[],n=0;return t.statics.forEach((o,r)=>{if(e.push({kind:"static",text:o,start:n}),n+=o.length,r<t.holes.length){let i=n+t.holes[r].code.length;e.push({kind:"hole",index:r,start:n,end:i}),n=i}}),e}function Ut(t,e={}){if(t.statics.length!==t.holes.length+1)throw new Error(`[fluixi] compileTemplate: ${t.statics.length} static runs for ${t.holes.length} holes — a template always has exactly one more.`);return Xe(Ye(t),t.holes,e)}function Xe(t,e,n={}){let o=new Set,r=F(t,[...e],o,{svg:n.svg});pe(r),de(r,{resolver:P(n.resolve??[]),modules:{controlFlowModule:n.controlFlowModule??"@fluixi/dom",coreModule:n.coreModule??"fluixi",routerModule:n.routerModule??"fluixi/router"},strategyFor:l=>l.load}),ue(r);let{code:i,imports:a,templates:s}=h.emit(r,{templateClone:n.templateClone,partialTemplates:n.partialTemplates});for(let l of a)o.add(l);return n.hoistTemplates?{code:i,imports:[...o],ir:r,templates:s}:{code:T(i,s),imports:[...o],ir:r}}var v="@fluixi/reactive/signal",A={$signal:{export:"signal",module:v,returns:"signal-handle"},$memo:{export:"memo",module:v,returns:"memo-handle"},$effect:{export:"effect",module:v,returns:"effect"},$store:{export:"store",module:"@fluixi/reactive/store",returns:"store-handle"},$resource:{export:"resource",module:v,returns:"resource-handle"},$selector:{export:"createSelector",module:v,returns:"memo-accessor"},$deferred:{export:"createDeferred",module:v,returns:"memo-accessor"},$untrack:{export:"untrack",module:v,returns:"plain"},$untrackStore:{export:"untrackStore",module:"@fluixi/reactive/store",returns:"plain"}};var zt=new RegExp(`\\$(?:${Object.keys(A).map(t=>t.slice(1)).join("|")})\\s*\\(`);var Qe=new Set(["Text","Image","Option","Audio","Comment","Range","Selection","Notification","Event","Document","Element","Node","Screen","Window","Location","History","Storage","Response","Request","Headers"]);function et(t){if(t.startsWith(".")||t.startsWith("/")||/^[~@]\//.test(t))return;let e=t.split("/");return t.startsWith("@")?e.slice(0,2).join("/"):e[0]}function J(t){return`_${t.replace(/[^A-Za-z0-9]/g,"_")}`}function fe(t,e={}){let{available:n,builtins:o=!0,intrinsics:r=!0,generator:i="@fluixi/compiler",specifier:a=u=>u}=e,s=[...t];o&&s.push({components:E()});let l=P(s),c=n?new Set(n):void 0,d=[],p=[],m=[],g=new Map;for(let u of[...l.names()].sort()){let f=l.resolve(u);if(!f)continue;let b=et(f.module);Qe.has(u)?p.push(u):c&&b&&!c.has(b)?m.push(u):(d.push(u),g.set(u,f))}let R=r?[...new Set(Object.values(A).map(u=>u.module))]:[],V=[...new Set([...d.map(u=>g.get(u).module),...R])].sort().map(u=>`import * as ${J(u)} from '${a(u)}';`),be=d.map(u=>{let f=g.get(u),b=J(f.module);return f.export==="default"?` const ${u}: typeof ${b}.default;`:` export import ${u} = ${b}.${f.export};`}),ke=p.length>0?`//
|
|
1
|
+
var Ie="children";function Ee(t){switch(t.kind){case"call":return!0;case"member":return t.property!==Ie;case"compound":return t.parts.some(Ee);case"opaque":return!1}}import{parseTemplate as Je}from"@fluixi/template-parser";var $={kind:"eager"},Ce=["pointerdown","focusin","keydown"],q=new Set(["eager","idle","visible","interaction","media","never"]),x=class extends Error{};function K(t,e){let n=t.slice(5);if(!q.has(n))throw new x(`Unknown load strategy 'load:${n}'. Expected one of ${[...q].join(", ")}.`);switch(n){case"eager":return $;case"idle":return{kind:"idle"};case"never":return{kind:"never"};case"visible":return e?{kind:"visible",rootMargin:e}:{kind:"visible"};case"interaction":return{kind:"interaction",events:e?$e(e):[...Ce]};case"media":if(!e)throw new x(`'load:media' needs a query, e.g. load:media="(min-width: 1024px)".`);return{kind:"media",query:e};default:throw new x(`Unhandled load strategy '${n}'.`)}}function $e(t){let e=t.split(/[\s,]+/).map(n=>n.trim()).filter(Boolean);if(e.length===0)throw new x("'load:interaction' was given no event names.");return e}function Z(t){return t.kind!=="eager"&&t.kind!=="never"}var we=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),Y={className:"class",htmlFor:"for"},Se=new Set(["innerHTML","outerHTML","innerText","textContent","value","checked","selected","muted","defaultValue","defaultChecked","children","ref"]),Te=new Set(["script","style","textarea","title"]);function L(t){return Te.has(t)}function X(t){return Y[t]??t}function k(t){return t.kind!=="attr"||t.expr!==void 0||t.name.includes(":")?!1:!Se.has(t.name)}function _(t){if(!t.static||L(t.tag))return!1;for(let e of t.props)if(!k(e))return!1;for(let e of t.children)if(e.kind!=="text"&&!(e.kind==="element"&&_(e)))return!1;return!0}function y(t){let e=t.props.map(Me).filter(Boolean).join(""),n=`<${t.tag}${e}>`;return we.has(t.tag)?n:`${n}${t.children.map(Oe).join("")}</${t.tag}>`}function Oe(t){if(t.kind==="text")return Ae(t.value);if(t.kind!=="element")throw new Error(`serializeStatic: unexpected ${t.kind}`);return y(t)}function Me(t){let e=Y[t.name]??t.name,n=t.literal;return n===!0||n===void 0?` ${e}`:n===!1||n===null?"":` ${e}="${Pe(String(n))}"`}function Pe(t){return t.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function Ae(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}var je="<!--fx-->",De="<!--fx/-->";function S(t){return t.kind==="expr"||t.kind==="component"||t.kind==="control"}function Le(t){return t.kind==="text"||t.kind==="element"&&Q(t)}function Q(t){return t.svg||L(t.tag)||!t.props.every(e=>k(e))?!1:t.children.every(e=>Le(e)||S(e))}function w(t){if(S(t))return!0;let e=t.children;return e?e.some(w):!1}function ee(t){for(let e=0;e<t.children.length;e++){let n=t.children[e];if(n.kind==="text"&&(n.value===""||t.children[e+1]?.kind==="text"))return!1}return t.children.every(e=>e.kind!=="element"||ee(e))}function te(t){if(!Q(t)||!ee(t)||!t.children.some(w))return null;let e=[],n=[],o=0,r=a=>{let s=`_n$${o++}`;return e.push({ref:s,expr:a}),s};return i(t,"_el$"),{html:_e(t),tag:t.tag,steps:e,holes:n};function i(a,s){let l=-1;a.children.forEach((d,p)=>{w(d)&&(l=p)});let c=null;for(let d=0;d<=l;d++){let p=a.children[d],m=c?`${c}.nextSibling`:`${s}.firstChild`;if(S(p)){let R=r(m),D=r(`holeEnd(${R})`);n.push({parentRef:s,startRef:R,endRef:D,node:p}),c=D;continue}let g=r(m);p.kind==="element"&&w(p)&&i(p,g),c=g}}}function _e(t){return y(ne(t)).split(re).join(je+De)}function ne(t){return{...t,children:t.children.map(e=>S(e)?{kind:"text",value:re}:e.kind==="element"?ne(e):e)}}var re="\0fx-hole\0";var B={version:1,module:"@fluixi/dom",symbols:["createNativeElement","insert","spread","setAttribute","delegateEvents","createComponent","createMemo","untrack","Show","For","Index","Switch","Match","Dynamic","ErrorBoundary"]},ft={version:2,module:"@fluixi/dom",symbols:[...B.symbols,"template","cloneTemplate","walk"]};var Be={show:"Show",for:"For",index:"Index",switch:"Switch",match:"Match",dynamic:"Dynamic",errorBoundary:"ErrorBoundary",suspense:"Suspense"};function He(t){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(t)}function ie(t){return He(t)?t:JSON.stringify(t)}function Fe(t){return t.expr!==void 0?t.reactive?`() => (${t.expr})`:`(${t.expr})`:JSON.stringify(t.literal??!0)}function Ge(t){return t.expr!==void 0?`(${t.expr})`:JSON.stringify(t.literal??!0)}function We(t,e,n){let o=t.filter(s=>s.kind==="spread"),i=t.filter(s=>s.kind!=="spread").map(s=>`${ie(s.name)}: ${Fe(s)}`);e!=null&&i.push(`children: ${e}`);let a=`{ ${i.join(", ")} }`;return o.length>0?(n.add("mergeProps"),`mergeProps(${o.map(s=>s.expr).join(", ")}, ${a})`):a}function se(t,e,n){return t.length===1?N(t[0],e,n):`[${t.map(o=>N(o,e,n)).join(", ")}]`}function oe(t,e,n,o,r){o.add("createMemo"),o.add("createComponent");let i=e.filter(c=>c.kind==="spread"),s=e.filter(c=>c.kind!=="spread").map(c=>`get ${ie(c.name)}() { return ${Ge(c)}; }`);n.length>0&&s.push(`get children() { return ${se(n,o,r)}; }`);let l=`{ ${s.join(", ")} }`;return i.length>0&&(o.add("mergeProps"),l=`mergeProps(${i.map(c=>c.expr).join(", ")}, ${l})`),`createMemo(() => createComponent(${t}, ${l}))`}function Ue(t,e){let n=X(e.name),o=e.literal;return o===!0||o===void 0?`${t}.setAttribute(${JSON.stringify(n)}, "");`:o===!1||o===null?"":`${t}.setAttribute(${JSON.stringify(n)}, ${JSON.stringify(String(o))});`}var ae=!1;function N(t,e,n){switch(t.kind){case"text":return JSON.stringify(t.value);case"expr":return t.reactive?`() => (${t.code})`:`(${t.code})`;case"fragment":return t.children.length===0?"null":se(t.children,e,n);case"component":return oe(t.name,t.props,t.children,e,n);case"control":{let o=Be[t.control]??t.control;return e.add(o),oe(o,t.props,t.children,e,n)}case"element":{if(n&&t.static&&!t.svg&&_(t)){e.add("templateNode");let s=`_tmpl$${n.length}`;return n.push({id:s,html:y(t),tag:t.tag,svg:!1}),`templateNode(${s}, ${JSON.stringify(t.tag)})`}if(n&&ae){let s=te(t);if(s){e.add("templateNode"),e.add("insert"),e.add("holeEnd"),e.add("holeContent"),e.add("holeScope");let l=`_tmpl$${n.length}`;n.push({id:l,html:s.html,tag:s.tag,svg:!1});let c=[`const _el$ = templateNode(${l}, ${JSON.stringify(s.tag)}, true);`];for(let d of s.steps)c.push(`const ${d.ref} = ${d.expr};`);for(let d of s.holes)c.push(`insert(${d.parentRef}, holeScope(${d.startRef}, () => (${N(d.node,e,n)})), ${d.endRef}, holeContent(${d.startRef}, ${d.endRef}));`);return c.push("return _el$;"),`(() => { ${c.join(" ")} })()`}}e.add("createNativeElement");let o=JSON.stringify(t.tag),r="_el$",i=[],a=t.svg?`${o}, true`:o;if(i.push(`const ${r} = createNativeElement(${a});`),t.props.length>0)if(!t.svg&&t.props.every(k))for(let s of t.props)i.push(Ue(r,s));else{e.add("spread");let s=t.svg?", isSVG: true":"";i.push(`spread({ element: ${r}, props: ${We(t.props,null,e)}${s} });`)}for(let s of t.children){e.add("insert");let l=N(s,e,n),c=s.kind==="expr"&&s.reactive||s.kind==="component"||s.kind==="control";i.push(c?`insert(${r}, ${l}, null);`:`insert(${r}, ${l});`)}return i.push(`return ${r};`),`(() => { ${i.join(" ")} })()`}}}function T(t,e){if(!e||e.length===0)return t;let n=new Map(e.map(o=>[o.id,JSON.stringify(o.html)]));return t.replace(/_tmpl\$\d+/g,o=>n.get(o)??o)}var h={name:"imperative",contract:B,emit(t,e){let n=new Set,o=e?.templateClone!==!1?[]:void 0;return ae=e?.partialTemplates===!0,{code:N(t,n,o),imports:Array.from(n),templates:o}}};function O(t){let e=t.split(/\r\n|\n|\r/),n=0;for(let r=0;r<e.length;r++)/[^ \t]/.test(e[r])&&(n=r);let o="";for(let r=0;r<e.length;r++){let i=e[r].replace(/\t/g," ");r!==0&&(i=i.replace(/^ +/,"")),r!==e.length-1&&(i=i.replace(/ +$/,"")),i&&(r!==n&&(i+=" "),o+=i)}return o}var le=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function ze(t){return t.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${")}function ce(t){return t.charAt(0).toUpperCase()+t.slice(1)}var H=class{constructor(e,n){this.holes=e;this.used=n}hole(e){return this.holes[e]??{code:"undefined",reactive:!1}}emit(e){let{code:n,imports:o,templates:r}=h.emit(e,{});for(let i of o)this.used.add(i);return T(n,r)}lowerRoot(e){let n=this.lowerChildren(e);return n.length===1?n[0]:{kind:"fragment",children:n}}lowerChildren(e){let n=[];for(let o=0;o<e.length;o++){let r=e[o];if(r.kind==="Element"||r.kind==="Component"){let a=r.attributes.find(s=>s.kind==="IfDirective");if(a&&a.kind==="IfDirective"){let s=o+1;s<e.length&&this.isBlankText(e[s])&&s++;let l=e[s],c=l&&(l.kind==="Element"||l.kind==="Component")&&l.attributes.some(d=>d.kind==="ElseDirective");n.push(this.lowerIf(r,a.hole,c?l:null)),c&&(o=s);continue}if(r.attributes.some(s=>s.kind==="EachDirective")){n.push(this.lowerEach(r));continue}}let i=this.lowerNode(r);i&&n.push(i)}return n}isBlankText(e){return e.kind==="Text"&&!e.raw&&O(e.value)===""}lowerNode(e){switch(e.kind){case"Text":{if(e.raw)return{kind:"text",value:e.value};let n=O(e.value);return n?{kind:"text",value:n}:null}case"Comment":return null;case"Expression":{let n=this.hole(e.hole);return{kind:"expr",code:n.code,reactive:n.reactive}}case"Fragment":return{kind:"fragment",children:this.lowerChildren(e.children)};case"Element":return this.lowerElement(e);case"Component":return this.lowerComponent(e);default:return null}}lowerElement(e){let n=e.attributes.find(o=>o.kind==="Attribute"&&o.name==="is");if(e.tag==="component"&&n&&n.value&&n.value.kind==="hole"){let o=e.attributes.filter(i=>i!==n),r=this.lowerComponent({...e,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:e.tag,svg:e.namespace==="svg",props:this.lowerAttributes(e.attributes),children:this.lowerChildren(e.children),static:!1}}lowerComponent(e){let n=e.tagHole!=null?this.hole(e.tagHole).code:e.tag,o=this.lowerAttributes(e.attributes),{slots:r,rest:i}=this.partitionSlots(e.children);for(let[l,c]of r){let d=c.length===1?c[0]:{kind:"fragment",children:c},p={name:l,kind:"attr",expr:this.emit(d),jsxElement:!0},m=o.findIndex(g=>g.name===l);m>=0?o[m]=p:o.push(p)}let a=e.attributes.find(l=>l.kind==="LoadDirective"),s=a?K(`load:${a.strategy}`,a.modifier):void 0;return{kind:"component",name:n,props:o,children:this.lowerChildren(i),...s?{load:s}:{}}}partitionSlots(e){let n=new Map,o=[];for(let r of e){if(r.kind==="Element"||r.kind==="Component"){let i=r.attributes.find(a=>a.kind==="Attribute"&&a.name==="slot");if(i&&i.value&&i.value.kind==="static"){let a={...r,attributes:r.attributes.filter(c=>c!==i)},s=a.kind==="Element"?this.lowerElement(a):this.lowerComponent(a),l=n.get(i.value.value)??[];l.push(s),n.set(i.value.value,l);continue}}o.push(r)}return{slots:n,rest:o}}lowerIf(e,n,o){let r=this.hole(n),i=[{name:"when",kind:"attr",expr:r.code,reactive:r.reactive}];if(o){let s=this.stripAndLower(o,l=>l.kind==="ElseDirective");i.push({name:"fallback",kind:"attr",expr:this.emit(s),jsxElement:!0})}let a=this.stripAndLower(e,s=>s.kind==="IfDirective");return{kind:"component",name:"Show",props:i,children:[a]}}lowerEach(e){let n=e.attributes.find(l=>l.kind==="EachDirective");if(!n||n.kind!=="EachDirective")return this.lowerNode(e);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 i=this.itemArrow(e),a;if(i){let l={kind:"expr",code:i.body,reactive:i.bodyReactive},c=this.rebuildWithChildren(e,[l]);a=`(${i.params.join(", ")}) => (${this.emit(c)})`}else{let l=this.stripAndLower(e,c=>c.kind==="EachDirective");a=`() => (${this.emit(l)})`}return{kind:"component",name:"For",props:r,children:[{kind:"expr",code:a,reactive:!1}]}}itemArrow(e){let n=e.children.filter(o=>!this.isBlankText(o));return n.length!==1||n[0].kind!=="Expression"?null:this.hole(n[0].hole).arrow??null}stripAndLower(e,n){let o={...e,attributes:e.attributes.filter(r=>!n(r))};return o.kind==="Element"?this.lowerElement(o):this.lowerComponent(o)}rebuildWithChildren(e,n){let o=this.lowerAttributes(e.attributes.filter(r=>r.kind!=="EachDirective"));return e.kind==="Element"?{kind:"element",tag:e.tag,svg:e.namespace==="svg",props:o,children:n,static:!1}:{kind:"component",name:e.tag,props:o,children:n}}lowerAttributes(e){let n=[],o=[],r=!1,i=[],a=!1,s=[];for(let l of e)switch(l.kind){case"IfDirective":case"EachDirective":case"ElseDirective":break;case"Attribute":n.push(this.plainAttr(l));break;case"PropertyBinding":n.push({name:l.name,kind:"prop",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"EventBinding":n.push(this.eventProp(l));break;case"RefBinding":n.push({name:"ref",kind:"ref",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"Spread":n.push({name:"",kind:"spread",expr:this.hole(l.hole).code});break;case"ClassDirective":{let c=this.hole(l.hole);o.push(`${JSON.stringify(l.name)}: ${c.code}`),r=r||c.reactive;break}case"StyleDirective":{let c=this.hole(l.hole);i.push(`${JSON.stringify(l.name)}: ${c.code}`),a=a||c.reactive;break}case"BindDirective":n.push(...this.bindProps(l.name,this.hole(l.hole).code));break;case"UseDirective":{let c=l.name??(l.hole!=null?this.hole(l.hole).code:null);if(!c)break;s.push(l.name!=null&&l.hole!=null?`[${c}, () => (${this.hole(l.hole).code})]`:`[${c}]`);break}}return o.length>0&&n.push({name:"classList",kind:"attr",expr:`{ ${o.join(", ")} }`,reactive:r}),i.length>0&&n.push({name:"style",kind:"attr",expr:`{ ${i.join(", ")} }`,reactive:a}),s.length>0&&n.push({name:"use",kind:"attr",expr:`[${s.join(", ")}]`}),n}eventProp(e){let n=e.name.toLowerCase(),o=this.hole(e.hole).code;if(!(e.syntax==="colon"||e.modifiers.length>0))return{name:"on"+ce(e.name),kind:"event",event:{name:n,delegated:le.has(n)},expr:o};let i=this.wrapHandler(o,e.modifiers),a=this.eventOptions(e.modifiers),s=a?`[${i}, ${a}]`:i;return{name:"on:"+n,kind:"attr",expr:s}}wrapHandler(e,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?e:`(e) => { ${o}${r.join(" ")} return (${e})(e); }`}eventOptions(e){let n=[];return e.includes("capture")&&n.push("capture: true"),e.includes("once")&&n.push("once: true"),e.includes("passive")&&n.push("passive: true"),n.length?`{ ${n.join(", ")} }`:null}bindProps(e,n){let o=e==="checked",r=o?"change":"input",i=o?"checked":"value";this.used.add("bindPair");let a=`bindPair(${n})`;return[{name:e,kind:"attr",expr:`${a}[0]()`,reactive:!0},{name:"on"+ce(r),kind:"event",event:{name:r,delegated:le.has(r)},expr:`(e) => ${a}[1](e.target.${i})`}]}plainAttr(e){let n=e.value,o=e.name;e.name==="class"?o=n&&n.kind==="hole"&&this.hole(n.hole).object?"classList":"className":e.name==="html"&&(o="innerHTML");let i={name:o,kind:"attr"};if(n==null)return i.literal=!0,i;if(n.kind==="static")return i.literal=n.value,i;if(n.kind==="hole"){let l=this.hole(n.hole);return i.expr=l.code,i.reactive=l.reactive,i}let a=!1,s=n.parts.map(l=>{if("text"in l)return ze(l.text);let c=this.hole(l.hole);return a=a||c.reactive,"${"+c.code+"}"}).join("");return i.expr="`"+s+"`",i.reactive=a,i}};function F(t,e,n,o={}){let{root:r}=Je(t,{svg:o.svg});return new H(e,n).lowerRoot(r.children)}function Ve(t){switch(t.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 t.reactive?"reactive-prop":t.expr!==void 0?"expression-prop":void 0;default:return"expression-prop"}}function pe(t){let e=[],n=new Map,o=r=>{switch(r.kind){case"text":return!0;case"expr":return!1;case"component":case"control":for(let i of r.children)o(i);return!1;case"fragment":for(let i of r.children)o(i);return!1;case"element":{let i=!0;for(let s of r.children)o(s)||(i=!1);let a;for(let s of r.props)if(a=Ve(s),a)break;return!a&&!i&&(a=qe(r)),r.static=!a,a?n.set(r,a):e.push(r),r.static}default:return!1}};for(let r of Array.isArray(t)?t:[t])o(r);return{staticElements:e,reasons:n}}function qe(t){for(let e of t.children){if(e.kind==="expr")return"expression-child";if(e.kind==="component")return"component-child";if(e.kind==="control")return"control-child";if(e.kind==="element"&&!e.static||e.kind==="fragment")return"expression-child"}return"expression-child"}var G=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],W=["Suspense","SuspenseList","Await"],I=["Router","Outlet","Redirect","Link"],$t=[...G,...W,...I],U=new Set([...G,...W]);function E(t={}){let{controlFlowModule:e="@fluixi/dom",coreModule:n="@fluixi/core",routerModule:o="@fluixi/core/router"}=t,r={};for(let i of G)r[i]=e;for(let i of W)r[i]=n;for(let i of I)r[i]=o;return r}function wt(t={}){return{components:E(t)}}function St(t){let e=t??"@fluixi/core/router";return{components:Object.fromEntries(I.map(n=>[n,e]))}}function de(t,e={}){let{resolver:n,isBound:o,modules:r,strategyFor:i}=e,a=E(r),s=new Map,l=new Set,c=p=>{let{name:m}=p;if(!m||m.includes(".")||o?.(m))return;let g=d(m);if(!g){l.add(m);return}let R=g.origin==="builtin"&&U.has(m)?$:i?.(p)??$;p.source={...g,loading:R},s.set(m,p.source)},d=p=>{if(U.has(p))return{module:a[p],export:p,origin:"builtin"};let m=n?.resolve(p);if(m)return{module:m.module,export:m.export,origin:"rule"};if(I.includes(p))return{module:a[p],export:p,origin:"builtin"}};return M(t,p=>{p.kind==="component"&&c(p)}),{resolved:s,unresolved:[...l]}}function M(t,e){let n=Array.isArray(t)?t:[t];for(let o of n){e(o);let r=o.children;r&&M(r,e)}}function ue(t){let e=[];M(t,i=>{i.kind==="component"&&i.source&&e.push(i)});let n=new Set,o=new Set;for(let i of e){let{module:a,loading:s}=i.source;s.kind==="eager"&&n.add(a),s.kind==="never"&&o.add(a)}let r=new Map;for(let i of e){let a=i.source;Z(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(i=>n.has(i))}}var Ke=t=>"components"in t;function me(t,e){return t.replace(/\$(\d+)/g,(n,o)=>e[Number(o)]??n)}function Ze(t,e){return typeof e=="string"?{module:e,export:t}:e}function P(t=[]){let e=new Map,n=[],o=[];for(let a of t){if(!Ke(a)){o.push(a);continue}for(let[s,l]of Object.entries(a.components)){let c=Ze(s,l),d=e.get(s);if(d&&d.module!==c.module){let p=n.find(m=>m.name===s);p?p.modules.push(c.module):n.push({name:s,modules:[d.module,c.module]});continue}e.set(s,c)}}let r=new Map;return{resolve:a=>{if(r.has(a))return r.get(a);let s=e.get(a);if(!s)for(let l of o){let c=a.match(new RegExp(l.match.source,l.match.flags.replace("g","")));if(c){s={module:me(l.module,c),export:l.export?me(l.export,c):a};break}}return r.set(a,s),s},names:()=>[...e.keys()],conflicts:()=>n}}function Ye(t){let e=[],n=0;return t.statics.forEach((o,r)=>{if(e.push({kind:"static",text:o,start:n}),n+=o.length,r<t.holes.length){let i=n+t.holes[r].code.length;e.push({kind:"hole",index:r,start:n,end:i}),n=i}}),e}function Ut(t,e={}){if(t.statics.length!==t.holes.length+1)throw new Error(`[fluixi] compileTemplate: ${t.statics.length} static runs for ${t.holes.length} holes — a template always has exactly one more.`);return Xe(Ye(t),t.holes,e)}function Xe(t,e,n={}){let o=new Set,r=F(t,[...e],o,{svg:n.svg});pe(r),de(r,{resolver:P(n.resolve??[]),modules:{controlFlowModule:n.controlFlowModule??"@fluixi/dom",coreModule:n.coreModule??"@fluixi/core",routerModule:n.routerModule??"@fluixi/core/router"},strategyFor:l=>l.load}),ue(r);let{code:i,imports:a,templates:s}=h.emit(r,{templateClone:n.templateClone,partialTemplates:n.partialTemplates});for(let l of a)o.add(l);return n.hoistTemplates?{code:i,imports:[...o],ir:r,templates:s}:{code:T(i,s),imports:[...o],ir:r}}var v="@fluixi/reactive/signal",A={$signal:{export:"signal",module:v,returns:"signal-handle"},$memo:{export:"memo",module:v,returns:"memo-handle"},$effect:{export:"effect",module:v,returns:"effect"},$store:{export:"store",module:"@fluixi/reactive/store",returns:"store-handle"},$resource:{export:"resource",module:v,returns:"resource-handle"},$selector:{export:"createSelector",module:v,returns:"memo-accessor"},$deferred:{export:"createDeferred",module:v,returns:"memo-accessor"},$untrack:{export:"untrack",module:v,returns:"plain"},$untrackStore:{export:"untrackStore",module:"@fluixi/reactive/store",returns:"plain"}};var zt=new RegExp(`\\$(?:${Object.keys(A).map(t=>t.slice(1)).join("|")})\\s*\\(`);var Qe=new Set(["Text","Image","Option","Audio","Comment","Range","Selection","Notification","Event","Document","Element","Node","Screen","Window","Location","History","Storage","Response","Request","Headers"]);function et(t){if(t.startsWith(".")||t.startsWith("/")||/^[~@]\//.test(t))return;let e=t.split("/");return t.startsWith("@")?e.slice(0,2).join("/"):e[0]}function J(t){return`_${t.replace(/[^A-Za-z0-9]/g,"_")}`}function fe(t,e={}){let{available:n,builtins:o=!0,intrinsics:r=!0,generator:i="@fluixi/compiler",specifier:a=u=>u}=e,s=[...t];o&&s.push({components:E()});let l=P(s),c=n?new Set(n):void 0,d=[],p=[],m=[],g=new Map;for(let u of[...l.names()].sort()){let f=l.resolve(u);if(!f)continue;let b=et(f.module);Qe.has(u)?p.push(u):c&&b&&!c.has(b)?m.push(u):(d.push(u),g.set(u,f))}let R=r?[...new Set(Object.values(A).map(u=>u.module))]:[],V=[...new Set([...d.map(u=>g.get(u).module),...R])].sort().map(u=>`import * as ${J(u)} from '${a(u)}';`),be=d.map(u=>{let f=g.get(u),b=J(f.module);return f.export==="default"?` const ${u}: typeof ${b}.default;`:` export import ${u} = ${b}.${f.export};`}),ke=p.length>0?`//
|
|
2
2
|
// Import these explicitly — lib.dom already declares the name, so an ambient
|
|
3
3
|
// declaration cannot win:
|
|
4
4
|
`+p.map(u=>{let f=l.resolve(u)?.module;return`// import { ${u} } from '${f?a(f):""}';
|