@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
package/dist/integrations.cjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
"use strict";var Yn=Object.create;var Ne=Object.defineProperty;var Zn=Object.getOwnPropertyDescriptor;var Qn=Object.getOwnPropertyNames;var er=Object.getPrototypeOf,tr=Object.prototype.hasOwnProperty;var b=(e,t)=>()=>(e&&(t=e(e=0)),t);var oe=(e,t)=>{for(var n in t)Ne(e,n,{get:t[n],enumerable:!0})},It=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Qn(t))!tr.call(e,o)&&o!==n&&Ne(e,o,{get:()=>t[o],enumerable:!(r=Zn(t,o))||r.enumerable});return e};var J=(e,t,n)=>(n=e!=null?Yn(er(e)):{},It(t||!e||!e.__esModule?Ne(n,"default",{value:e,enumerable:!0}):n,e)),nr=e=>It(Ne({},"__esModule",{value:!0}),e);function Ct(e,t){return e.replace(/\$(\d+)/g,(n,r)=>t[Number(r)]??n)}function or(e,t){return typeof t=="string"?{module:t,export:e}:t}function X(e=[]){let t=new Map,n=[],r=[];for(let i of e){if(!rr(i)){r.push(i);continue}for(let[a,l]of Object.entries(i.components)){let c=or(a,l),p=t.get(a);if(p&&p.module!==c.module){let d=n.find(m=>m.name===a);d?d.modules.push(c.module):n.push({name:a,modules:[p.module,c.module]});continue}t.set(a,c)}}let o=new Map;return{resolve:i=>{if(o.has(i))return o.get(i);let a=t.get(i);if(!a)for(let l of r){let c=i.match(new RegExp(l.match.source,l.match.flags.replace("g","")));if(c){a={module:Ct(l.module,c),export:l.export?Ct(l.export,c):i};break}}return o.set(i,a),a},names:()=>[...t.keys()],conflicts:()=>n}}var rr,se=b(()=>{"use strict";rr=e=>"components"in e});function Se(e={}){let{controlFlowModule:t="@fluixi/dom",coreModule:n="fluixi",routerModule:r="fluixi/router"}=e,o={};for(let s of ie)o[s]=t;for(let s of K)o[s]=n;for(let s of B)o[s]=r;return o}var ie,K,B,Wo,ze,ae=b(()=>{"use strict";ie=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],K=["Suspense","SuspenseList","Await"],B=["Router","Outlet","Redirect","Link"],Wo=[...ie,...K,...B],ze=new Set([...ie,...K])});function Mt(e){return ir.test(e)}function $t(e){return Object.prototype.hasOwnProperty.call(L,e)}function Ot(e){return sr.includes(e)}var Y,L,Tt,sr,ir,le=b(()=>{"use strict";Y="@fluixi/reactive/signal",L={$signal:{export:"signal",module:Y,returns:"signal-handle"},$memo:{export:"memo",module:Y,returns:"memo-handle"},$effect:{export:"effect",module:Y,returns:"effect"},$store:{export:"store",module:"@fluixi/reactive/store",returns:"store-handle"},$resource:{export:"resource",module:Y,returns:"resource-handle"},$selector:{export:"createSelector",module:Y,returns:"memo-accessor"},$deferred:{export:"createDeferred",module:Y,returns:"memo-accessor"},$untrack:{export:"untrack",module:Y,returns:"plain"},$untrackStore:{export:"untrackStore",module:"@fluixi/reactive/store",returns:"plain"}},Tt={signal:"signal-handle",memo:"memo-handle",effect:"effect",store:"store-handle",createSignal:["signal-accessor","signal-setter"],createMemo:"memo-accessor",createEffect:"effect",createRenderEffect:"effect",createStore:"reactive-object",resource:"resource-handle",createResource:"reactive-object",createSelector:"memo-accessor",createDeferred:"memo-accessor"},sr=["@fluixi/reactive","@fluixi/reactive/signal","@fluixi/reactive/store","fluixi"],ir=new RegExp(`\\$(?:${Object.keys(L).map(e=>e.slice(1)).join("|")})\\s*\\(`)});function qe(e){return e.startsWith("load:")}function Ee(e,t){let n=e.slice(5);if(!At.has(n))throw new V(`Unknown load strategy 'load:${n}'. Expected one of ${[...At].join(", ")}.`);switch(n){case"eager":return Re;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?gr(t):[...fr]};case"media":if(!t)throw new V(`'load:media' needs a query, e.g. load:media="(min-width: 1024px)".`);return{kind:"media",query:t};default:throw new V(`Unhandled load strategy '${n}'.`)}}function gr(e){let t=e.split(/[\s,]+/).map(n=>n.trim()).filter(Boolean);if(t.length===0)throw new V("'load:interaction' was given no event names.");return t}function Z(e){return e.kind!=="eager"&&e.kind!=="never"}var Re,fr,At,V,Q=b(()=>{"use strict";Re={kind:"eager"},fr=["pointerdown","focusin","keydown"],At=new Set(["eager","idle","visible","interaction","media","never"]),V=class extends Error{}});function W(e,t={}){let{resolver:n,isBound:r,modules:o,strategyFor:s}=t,i=Se(o),a=new Map,l=new Set,c=d=>{let{name:m}=d;if(!m||m.includes(".")||r?.(m))return;let x=p(m);if(!x){l.add(m);return}let y=x.origin==="builtin"&&ze.has(m)?Re:s?.(d)??Re;d.source={...x,loading:y},a.set(m,d.source)},p=d=>{if(ze.has(d))return{module:i[d],export:d,origin:"builtin"};let m=n?.resolve(d);if(m)return{module:m.module,export:m.export,origin:"rule"};if(B.includes(d))return{module:i[d],export:d,origin:"builtin"}};return we(e,d=>{d.kind==="component"&&c(d)}),{resolved:a,unresolved:[...l]}}function we(e,t){let n=Array.isArray(e)?e:[e];for(let r of n){t(r);let o=r.children;o&&we(o,t)}}var ce=b(()=>{"use strict";ae();Q()});function U(e){let t=[];we(e,s=>{s.kind==="component"&&s.source&&t.push(s)});let n=new Set,r=new Set;for(let s of t){let{module:i,loading:a}=s.source;a.kind==="eager"&&n.add(i),a.kind==="never"&&r.add(i)}let o=new Map;for(let s of t){let i=s.source;Z(i.loading)&&n.has(i.module)&&(i.loading={kind:"eager"},o.set(i.module,(o.get(i.module)??0)+1))}return{collapsed:o,conflicted:[...r].filter(s=>n.has(s))}}var ke=b(()=>{"use strict";Q();ce()});function Ke(e){return vr.has(e)}function Jt(e){return Ft[e]??e}function pe(e){return e.kind!=="attr"||e.expr!==void 0||e.name.includes(":")?!1:!yr.has(e.name)}function Ye(e){if(!e.static||Ke(e.tag))return!1;for(let t of e.props)if(!pe(t))return!1;for(let t of e.children)if(t.kind!=="text"&&!(t.kind==="element"&&Ye(t)))return!1;return!0}function ue(e){let t=e.props.map(br).filter(Boolean).join(""),n=`<${e.tag}${t}>`;return hr.has(e.tag)?n:`${n}${e.children.map(xr).join("")}</${e.tag}>`}function xr(e){if(e.kind==="text")return Sr(e.value);if(e.kind!=="element")throw new Error(`serializeStatic: unexpected ${e.kind}`);return ue(e)}function br(e){let t=Ft[e.name]??e.name,n=e.literal;return n===!0||n===void 0?` ${t}`:n===!1||n===null?"":` ${t}="${Nr(String(n))}"`}function Nr(e){return e.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function Sr(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}var hr,Ft,yr,vr,Ze=b(()=>{"use strict";hr=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),Ft={className:"class",htmlFor:"for"},yr=new Set(["innerHTML","outerHTML","innerText","textContent","value","checked","selected","muted","defaultValue","defaultChecked","children","ref"]),vr=new Set(["script","style","textarea","title"])});function Ce(e){return e.kind==="expr"||e.kind==="component"||e.kind==="control"}function wr(e){return e.kind==="text"||e.kind==="element"&&_t(e)}function _t(e){return e.svg||Ke(e.tag)||!e.props.every(t=>pe(t))?!1:e.children.every(t=>wr(t)||Ce(t))}function Ie(e){if(Ce(e))return!0;let t=e.children;return t?t.some(Ie):!1}function Xt(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"||Xt(t))}function Bt(e){if(!_t(e)||!Xt(e)||!e.children.some(Ie))return null;let t=[],n=[],r=0,o=i=>{let a=`_n$${r++}`;return t.push({ref:a,expr:i}),a};return s(e,"_el$"),{html:kr(e),tag:e.tag,steps:t,holes:n};function s(i,a){let l=-1;i.children.forEach((p,d)=>{Ie(p)&&(l=d)});let c=null;for(let p=0;p<=l;p++){let d=i.children[p],m=c?`${c}.nextSibling`:`${a}.firstChild`;if(Ce(d)){let y=o(m),g=o(`holeEnd(${y})`);n.push({parentRef:a,startRef:y,endRef:g,node:d}),c=g;continue}let x=o(m);d.kind==="element"&&Ie(d)&&s(d,x),c=x}}}function kr(e){return ue(Ht(e)).split(Vt).join(Rr+Er)}function Ht(e){return{...e,children:e.children.map(t=>Ce(t)?{kind:"text",value:Vt}:t.kind==="element"?Ht(t):t)}}var Rr,Er,Vt,Wt=b(()=>{"use strict";Ze();Rr="<!--fx-->",Er="<!--fx/-->";Vt="\0fx-hole\0"});var Qe,ps,Ut=b(()=>{"use strict";Qe={version:1,module:"@fluixi/dom",symbols:["createNativeElement","insert","spread","setAttribute","delegateEvents","createComponent","createMemo","untrack","Show","For","Index","Switch","Match","Dynamic","ErrorBoundary"]},ps={version:2,module:"@fluixi/dom",symbols:[...Qe.symbols,"template","cloneTemplate","walk"]}});function Cr(e){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e)}function Gt(e){return Cr(e)?e:JSON.stringify(e)}function Tr(e){return e.expr!==void 0?e.reactive?`() => (${e.expr})`:`(${e.expr})`:JSON.stringify(e.literal??!0)}function Mr(e){return e.expr!==void 0?`(${e.expr})`:JSON.stringify(e.literal??!0)}function $r(e,t,n){let r=e.filter(a=>a.kind==="spread"),s=e.filter(a=>a.kind!=="spread").map(a=>`${Gt(a.name)}: ${Tr(a)}`);t!=null&&s.push(`children: ${t}`);let i=`{ ${s.join(", ")} }`;return r.length>0?(n.add("mergeProps"),`mergeProps(${r.map(a=>a.expr).join(", ")}, ${i})`):i}function qt(e,t,n){return e.length===1?de(e[0],t,n):`[${e.map(r=>de(r,t,n)).join(", ")}]`}function zt(e,t,n,r,o){r.add("createMemo"),r.add("createComponent");let s=t.filter(c=>c.kind==="spread"),a=t.filter(c=>c.kind!=="spread").map(c=>`get ${Gt(c.name)}() { return ${Mr(c)}; }`);n.length>0&&a.push(`get children() { return ${qt(n,r,o)}; }`);let l=`{ ${a.join(", ")} }`;return s.length>0&&(r.add("mergeProps"),l=`mergeProps(${s.map(c=>c.expr).join(", ")}, ${l})`),`createMemo(() => createComponent(${e}, ${l}))`}function Or(e,t){let n=Jt(t.name),r=t.literal;return r===!0||r===void 0?`${e}.setAttribute(${JSON.stringify(n)}, "");`:r===!1||r===null?"":`${e}.setAttribute(${JSON.stringify(n)}, ${JSON.stringify(String(r))});`}function de(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":qt(e.children,t,n);case"component":return zt(e.name,e.props,e.children,t,n);case"control":{let r=Ir[e.control]??e.control;return t.add(r),zt(r,e.props,e.children,t,n)}case"element":{if(n&&e.static&&!e.svg&&Ye(e)){t.add("templateNode");let a=`_tmpl$${n.length}`;return n.push({id:a,html:ue(e),tag:e.tag,svg:!1}),`templateNode(${a}, ${JSON.stringify(e.tag)})`}if(n&&Kt){let a=Bt(e);if(a){t.add("templateNode"),t.add("insert"),t.add("holeEnd"),t.add("holeContent"),t.add("holeScope");let l=`_tmpl$${n.length}`;n.push({id:l,html:a.html,tag:a.tag,svg:!1});let c=[`const _el$ = templateNode(${l}, ${JSON.stringify(a.tag)}, true);`];for(let p of a.steps)c.push(`const ${p.ref} = ${p.expr};`);for(let p of a.holes)c.push(`insert(${p.parentRef}, holeScope(${p.startRef}, () => (${de(p.node,t,n)})), ${p.endRef}, holeContent(${p.startRef}, ${p.endRef}));`);return c.push("return _el$;"),`(() => { ${c.join(" ")} })()`}}t.add("createNativeElement");let r=JSON.stringify(e.tag),o="_el$",s=[],i=e.svg?`${r}, true`:r;if(s.push(`const ${o} = createNativeElement(${i});`),e.props.length>0)if(!e.svg&&e.props.every(pe))for(let a of e.props)s.push(Or(o,a));else{t.add("spread");let a=e.svg?", isSVG: true":"";s.push(`spread({ element: ${o}, props: ${$r(e.props,null,t)}${a} });`)}for(let a of e.children){t.add("insert");let l=de(a,t,n),c=a.kind==="expr"&&a.reactive||a.kind==="component"||a.kind==="control";s.push(c?`insert(${o}, ${l}, null);`:`insert(${o}, ${l});`)}return s.push(`return ${o};`),`(() => { ${s.join(" ")} })()`}}}function ee(e,t){if(!t||t.length===0)return e;let n=new Map(t.map(r=>[r.id,JSON.stringify(r.html)]));return e.replace(/_tmpl\$\d+/g,r=>n.get(r)??r)}var Ir,Kt,P,te=b(()=>{"use strict";Wt();Ze();Ut();Ir={show:"Show",for:"For",index:"Index",switch:"Switch",match:"Match",dynamic:"Dynamic",errorBoundary:"ErrorBoundary",suspense:"Suspense"};Kt=!1;P={name:"imperative",contract:Qe,emit(e,t){let n=new Set,r=t?.templateClone!==!1?[]:void 0;return Kt=t?.partialTemplates===!0,{code:de(e,n,r),imports:Array.from(n),templates:r}}}});function me(e){let t=e.split(/\r\n|\n|\r/),n=0;for(let o=0;o<t.length;o++)/[^ \t]/.test(t[o])&&(n=o);let r="";for(let o=0;o<t.length;o++){let s=t[o].replace(/\t/g," ");o!==0&&(s=s.replace(/^ +/,"")),o!==t.length-1&&(s=s.replace(/ +$/,"")),s&&(o!==n&&(s+=" "),r+=s)}return r}var et=b(()=>{"use strict"});function Pr(e){return e.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${")}function Zt(e){return e.charAt(0).toUpperCase()+e.slice(1)}function Te(e,t,n,r={}){let{root:o}=(0,Qt.parseTemplate)(e,{svg:r.svg});return new tt(t,n).lowerRoot(o.children)}var Qt,Yt,tt,nt=b(()=>{"use strict";Qt=require("@fluixi/template-parser");Q();te();et();Yt=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);tt=class{constructor(t,n){this.holes=t;this.used=n}hole(t){return this.holes[t]??{code:"undefined",reactive:!1}}emit(t){let{code:n,imports:r,templates:o}=P.emit(t,{});for(let s of r)this.used.add(s);return ee(n,o)}lowerRoot(t){let n=this.lowerChildren(t);return n.length===1?n[0]:{kind:"fragment",children:n}}lowerChildren(t){let n=[];for(let r=0;r<t.length;r++){let o=t[r];if(o.kind==="Element"||o.kind==="Component"){let i=o.attributes.find(a=>a.kind==="IfDirective");if(i&&i.kind==="IfDirective"){let a=r+1;a<t.length&&this.isBlankText(t[a])&&a++;let l=t[a],c=l&&(l.kind==="Element"||l.kind==="Component")&&l.attributes.some(p=>p.kind==="ElseDirective");n.push(this.lowerIf(o,i.hole,c?l:null)),c&&(r=a);continue}if(o.attributes.some(a=>a.kind==="EachDirective")){n.push(this.lowerEach(o));continue}}let s=this.lowerNode(o);s&&n.push(s)}return n}isBlankText(t){return t.kind==="Text"&&!t.raw&&me(t.value)===""}lowerNode(t){switch(t.kind){case"Text":{if(t.raw)return{kind:"text",value:t.value};let n=me(t.value);return n?{kind:"text",value:n}:null}case"Comment":return null;case"Expression":{let n=this.hole(t.hole);return{kind:"expr",code:n.code,reactive:n.reactive}}case"Fragment":return{kind:"fragment",children:this.lowerChildren(t.children)};case"Element":return this.lowerElement(t);case"Component":return this.lowerComponent(t);default:return null}}lowerElement(t){let n=t.attributes.find(r=>r.kind==="Attribute"&&r.name==="is");if(t.tag==="component"&&n&&n.value&&n.value.kind==="hole"){let r=t.attributes.filter(s=>s!==n),o=this.lowerComponent({...t,kind:"Component",tag:"Dynamic",tagHole:null,attributes:r});return o.props.unshift({name:"component",kind:"attr",expr:`() => (${this.hole(n.value.hole).code})`}),o}return{kind:"element",tag:t.tag,svg:t.namespace==="svg",props:this.lowerAttributes(t.attributes),children:this.lowerChildren(t.children),static:!1}}lowerComponent(t){let n=t.tagHole!=null?this.hole(t.tagHole).code:t.tag,r=this.lowerAttributes(t.attributes),{slots:o,rest:s}=this.partitionSlots(t.children);for(let[l,c]of o){let p=c.length===1?c[0]:{kind:"fragment",children:c},d={name:l,kind:"attr",expr:this.emit(p),jsxElement:!0},m=r.findIndex(x=>x.name===l);m>=0?r[m]=d:r.push(d)}let i=t.attributes.find(l=>l.kind==="LoadDirective"),a=i?Ee(`load:${i.strategy}`,i.modifier):void 0;return{kind:"component",name:n,props:r,children:this.lowerChildren(s),...a?{load:a}:{}}}partitionSlots(t){let n=new Map,r=[];for(let o of t){if(o.kind==="Element"||o.kind==="Component"){let s=o.attributes.find(i=>i.kind==="Attribute"&&i.name==="slot");if(s&&s.value&&s.value.kind==="static"){let i={...o,attributes:o.attributes.filter(c=>c!==s)},a=i.kind==="Element"?this.lowerElement(i):this.lowerComponent(i),l=n.get(s.value.value)??[];l.push(a),n.set(s.value.value,l);continue}}r.push(o)}return{slots:n,rest:r}}lowerIf(t,n,r){let o=this.hole(n),s=[{name:"when",kind:"attr",expr:o.code,reactive:o.reactive}];if(r){let a=this.stripAndLower(r,l=>l.kind==="ElseDirective");s.push({name:"fallback",kind:"attr",expr:this.emit(a),jsxElement:!0})}let i=this.stripAndLower(t,a=>a.kind==="IfDirective");return{kind:"component",name:"Show",props:s,children:[i]}}lowerEach(t){let n=t.attributes.find(l=>l.kind==="EachDirective");if(!n||n.kind!=="EachDirective")return this.lowerNode(t);let r=this.hole(n.hole),o=[{name:"each",kind:"attr",expr:r.code,reactive:r.reactive}];if(n.key){let l="static"in n.key?`(item) => item[${JSON.stringify(n.key.static)}]`:this.hole(n.key.hole).code;o.push({name:"by",kind:"attr",expr:l})}let s=this.itemArrow(t),i;if(s){let l={kind:"expr",code:s.body,reactive:s.bodyReactive},c=this.rebuildWithChildren(t,[l]);i=`(${s.params.join(", ")}) => (${this.emit(c)})`}else{let l=this.stripAndLower(t,c=>c.kind==="EachDirective");i=`() => (${this.emit(l)})`}return{kind:"component",name:"For",props:o,children:[{kind:"expr",code:i,reactive:!1}]}}itemArrow(t){let n=t.children.filter(r=>!this.isBlankText(r));return n.length!==1||n[0].kind!=="Expression"?null:this.hole(n[0].hole).arrow??null}stripAndLower(t,n){let r={...t,attributes:t.attributes.filter(o=>!n(o))};return r.kind==="Element"?this.lowerElement(r):this.lowerComponent(r)}rebuildWithChildren(t,n){let r=this.lowerAttributes(t.attributes.filter(o=>o.kind!=="EachDirective"));return t.kind==="Element"?{kind:"element",tag:t.tag,svg:t.namespace==="svg",props:r,children:n,static:!1}:{kind:"component",name:t.tag,props:r,children:n}}lowerAttributes(t){let n=[],r=[],o=!1,s=[],i=!1,a=[];for(let l of t)switch(l.kind){case"IfDirective":case"EachDirective":case"ElseDirective":break;case"Attribute":n.push(this.plainAttr(l));break;case"PropertyBinding":n.push({name:l.name,kind:"prop",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"EventBinding":n.push(this.eventProp(l));break;case"RefBinding":n.push({name:"ref",kind:"ref",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"Spread":n.push({name:"",kind:"spread",expr:this.hole(l.hole).code});break;case"ClassDirective":{let c=this.hole(l.hole);r.push(`${JSON.stringify(l.name)}: ${c.code}`),o=o||c.reactive;break}case"StyleDirective":{let c=this.hole(l.hole);s.push(`${JSON.stringify(l.name)}: ${c.code}`),i=i||c.reactive;break}case"BindDirective":n.push(...this.bindProps(l.name,this.hole(l.hole).code));break;case"UseDirective":{let c=l.name??(l.hole!=null?this.hole(l.hole).code:null);if(!c)break;a.push(l.name!=null&&l.hole!=null?`[${c}, () => (${this.hole(l.hole).code})]`:`[${c}]`);break}}return r.length>0&&n.push({name:"classList",kind:"attr",expr:`{ ${r.join(", ")} }`,reactive:o}),s.length>0&&n.push({name:"style",kind:"attr",expr:`{ ${s.join(", ")} }`,reactive:i}),a.length>0&&n.push({name:"use",kind:"attr",expr:`[${a.join(", ")}]`}),n}eventProp(t){let n=t.name.toLowerCase(),r=this.hole(t.hole).code;if(!(t.syntax==="colon"||t.modifiers.length>0))return{name:"on"+Zt(t.name),kind:"event",event:{name:n,delegated:Yt.has(n)},expr:r};let s=this.wrapHandler(r,t.modifiers),i=this.eventOptions(t.modifiers),a=i?`[${s}, ${i}]`:s;return{name:"on:"+n,kind:"attr",expr:a}}wrapHandler(t,n){let r=n.includes("self")?"if (e.target !== e.currentTarget) return; ":"",o=[];return n.includes("prevent")&&o.push("e.preventDefault();"),n.includes("stop")&&o.push("e.stopPropagation();"),!r&&o.length===0?t:`(e) => { ${r}${o.join(" ")} return (${t})(e); }`}eventOptions(t){let n=[];return t.includes("capture")&&n.push("capture: true"),t.includes("once")&&n.push("once: true"),t.includes("passive")&&n.push("passive: true"),n.length?`{ ${n.join(", ")} }`:null}bindProps(t,n){let r=t==="checked",o=r?"change":"input",s=r?"checked":"value";this.used.add("bindPair");let i=`bindPair(${n})`;return[{name:t,kind:"attr",expr:`${i}[0]()`,reactive:!0},{name:"on"+Zt(o),kind:"event",event:{name:o,delegated:Yt.has(o)},expr:`(e) => ${i}[1](e.target.${s})`}]}plainAttr(t){let n=t.value,r=t.name;t.name==="class"?r=n&&n.kind==="hole"&&this.hole(n.hole).object?"classList":"className":t.name==="html"&&(r="innerHTML");let s={name:r,kind:"attr"};if(n==null)return s.literal=!0,s;if(n.kind==="static")return s.literal=n.value,s;if(n.kind==="hole"){let l=this.hole(n.hole);return s.expr=l.code,s.reactive=l.reactive,s}let i=!1,a=n.parts.map(l=>{if("text"in l)return Pr(l.text);let c=this.hole(l.hole);return i=i||c.reactive,"${"+c.code+"}"}).join("");return s.expr="`"+a+"`",s.reactive=i,s}}});function jr(e){return Dr(e,{concise:!0}).code}function Lr(e,t,n){let r={code:$e(e,t,n),reactive:ot(e)};if(Me.types.isArrowFunctionExpression(e)&&!Me.types.isBlockStatement(e.body)){let o=e.body;r.arrow={params:e.params.map(s=>jr(s)),body:$e(o,t,n),bodyReactive:ot(o)}}return Me.types.isObjectExpression(e)&&(r.object=!0),r}function en(e,t,n={}){let r=e.quasi,o=r.expressions.map(s=>Lr(s,t,n.onNested));return Te(Ar(r),o,t,n)}function Ar(e){let t=[];return e.quasis.forEach((n,r)=>{let o=n.value.cooked??n.value.raw;if(t.push({kind:"static",text:o,start:n.start??0}),r<e.expressions.length){let s=e.expressions[r];t.push({kind:"hole",index:r,start:s.start??0,end:s.end??0})}}),t}var Me,rt,Dr,tn=b(()=>{"use strict";Me=require("@babel/core"),rt=J(require("@babel/generator"),1);nt();st();Dr=rt.default.default??rt.default});function Fr(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,r=o=>{switch(o.kind){case"text":return!0;case"expr":return!1;case"component":case"control":for(let s of o.children)r(s);return!1;case"fragment":for(let s of o.children)r(s);return!1;case"element":{let s=!0;for(let a of o.children)r(a)||(s=!1);let i;for(let a of o.props)if(i=Fr(a),i)break;return!i&&!s&&(i=Jr(o)),o.static=!i,i?n.set(o,i):t.push(o),o.static}default:return!1}};for(let o of Array.isArray(e)?e:[e])r(o);return{staticElements:t,reasons:n}}function Jr(e){for(let t of e.children){if(t.kind==="expr")return"expression-child";if(t.kind==="component")return"component-child";if(t.kind==="control")return"control-child";if(t.kind==="element"&&!t.static||t.kind==="fragment")return"expression-child"}return"expression-child"}var fe=b(()=>{"use strict"});function Oe(e,t=new Set,n={}){let r=en(e,t,n);return z(r),r}var it=b(()=>{"use strict";tn();fe()});function G(e){switch(e.kind){case"call":return!0;case"member":return e.property!==_r;case"compound":return e.parts.some(G);case"opaque":return!1}}var _r,Pe=b(()=>{"use strict";_r="children"});function A(e){if(!e)return{kind:"opaque"};if(Xr.has(e.type))return{kind:"call"};if(Br.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(ge)}:e.type==="LogicalExpression"||e.type==="BinaryExpression"?{kind:"compound",parts:[e.left,e.right].map(ge)}:e.type==="TemplateLiteral"?{kind:"compound",parts:e.expressions.map(ge)}:e.type==="ObjectExpression"?{kind:"compound",parts:e.properties.filter(n=>(n.type==="ObjectProperty"||n.type==="Property")&&n.computed!==!0).map(n=>ge(n.value))}:e.type==="ArrayExpression"?{kind:"compound",parts:e.elements.filter(n=>n!=null&&n.type!=="SpreadElement").map(ge)}:{kind:"opaque"}}var Xr,Br,ge,he=b(()=>{"use strict";Xr=new Set(["CallExpression","OptionalCallExpression"]),Br=new Set(["MemberExpression","OptionalMemberExpression"]);ge=e=>A(e)});function ye(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}function Ur(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 lt(e){return e.type==="JSXIdentifier"?e.name==="class"?"className":e.name:e.type==="JSXNamespacedName"?`${e.namespace.name}:${e.name.name}`:"unknown"}function zr(e,t){let n=lt(e.name),r=Vr.test(n),o=r||n.startsWith("on:")||n==="ref",i={name:n,kind:r?"event":"attr"};if(r){let l=n.slice(2).toLowerCase();i.event={name:l,delegated:Wr.has(l)}}let a=e.value;if(a==null)return i.literal=!0,i;if(at(a))return i.literal=ye(a),i;if(a.type==="JSXExpressionContainer"&&a.expression?.type!=="JSXEmptyExpression"){let l=a.expression,c=ye(l);return c!==void 0?(i.literal=c,i):(i.expr=t.code(l),i.reactive=o?!1:on(l),(l.type==="JSXElement"||l.type==="JSXFragment")&&(i.jsxElement=!0),i)}return i.literal=!0,i}function nn(e,t){let n=e.value;return n==null?null:at(n)?JSON.stringify(ye(n)):n.type==="JSXExpressionContainer"&&n.expression?.type!=="JSXEmptyExpression"?t.code(n.expression):null}function Gr(e,t){let n=[],r=[];for(let o of e){if(o.type==="JSXSpreadAttribute"){n.push({name:"",kind:"spread",expr:t.code(o.argument)});continue}if(o.type!=="JSXAttribute"||qe(lt(o.name)))continue;let s=o.name.type==="JSXNamespacedName"?o.name.namespace.name:null;if(s==="use"){let i=o.name.name.name;t.used.add(i);let a=nn(o,t);r.push(a!=null?`[${i}, () => (${a})]`:`[${i}]`);continue}if(s==="oncapture"){let i=o.name.name.name.toLowerCase(),a=nn(o,t)??"undefined";n.push({name:"on:"+i,kind:"attr",expr:`[${a}, { capture: true }]`});continue}n.push(zr(o,t))}return r.length>0&&n.push({name:"use",kind:"attr",expr:`[${r.join(", ")}]`}),n}function rn(e,t){let n=[];for(let r of e)if(r.type==="JSXText"){let o=me(r.value);o&&n.push({kind:"text",value:o})}else if(r.type==="JSXExpressionContainer"){if(r.expression?.type!=="JSXEmptyExpression"){let o=r.expression;n.push({kind:"expr",code:t.code(o),reactive:on(o)})}}else r.type==="JSXElement"||r.type==="JSXFragment"?n.push(sn(r,t)):r.type==="JSXSpreadChild"&&n.push({kind:"expr",code:t.code(r.expression),reactive:!1});return n}function qr(e){for(let t of e){if(t.type!=="JSXAttribute")continue;let n=lt(t.name);if(qe(n)){if(t.value&&!at(t.value))throw new V(`'${n}' needs a literal value, not an expression — the strategy is compile-time.`);return Ee(n,t.value?ye(t.value):null)}}}function sn(e,t){if(e.type==="JSXFragment")return{kind:"fragment",children:rn(e.children,t)};let{tag:n,component:r}=Ur(e.openingElement.name,t),o=Gr(e.openingElement.attributes,t),s=rn(e.children,t);if(r){let i=qr(e.openingElement.attributes);return{kind:"component",name:n,props:o,children:s,...i?{load:i}:{}}}return{kind:"element",tag:n,svg:Hr.has(n),props:o,children:s,static:!1}}function De(e,t){let n=sn(e,t);return z(n),n}var Hr,Vr,Wr,on,at,ct=b(()=>{"use strict";Q();Pe();he();fe();et();Hr=new Set(["svg","path","circle","rect","line","polygon","polyline","ellipse","g","defs","clipPath","text"]),Vr=/^on[A-Z]/,Wr=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]),on=e=>G(A(e));at=e=>!!e&&typeof ye(e)=="string"});function an(e){return Kr(e,{concise:!0}).code}function Yr(e,t,n){let r=F.types.cloneNode(e,!0),o=F.types.file(F.types.program([F.types.expressionStatement(r)])),s=!1,i=(a,l,c)=>{for(let p of c)t.add(p);a.replaceWith(F.template.expression(l,{placeholderPattern:!1,plugins:["typescript"]})()),a.skip(),s=!0};return(0,F.traverse)(o,{"JSXElement|JSXFragment"(a){let l=a.node,c=ut(l,t,n);n?.(c);let{code:p,imports:d,templates:m}=P.emit(c,{});i(a,ee(p,m),d)},TaggedTemplateExpression(a){let l=a.node.tag;if(!F.types.isIdentifier(l)||l.name!=="html"&&l.name!=="svg")return;let c=Oe(a.node,t,{svg:l.name==="svg",onNested:n});n?.(c);let{code:p,imports:d,templates:m}=P.emit(c,{});i(a,ee(p,m),d)}}),s?o.program.body[0].expression:e}function $e(e,t,n){return an(Yr(e,t,n))}function ot(e){return G(A(e))}function ut(e,t=new Set,n){return De(e,{code:o=>o.type==="JSXMemberExpression"?an(o):$e(o,t,n),used:t})}var F,pt,Kr,st=b(()=>{"use strict";F=require("@babel/core"),pt=J(require("@babel/generator"),1);te();it();ct();Pe();he();Kr=pt.default.default??pt.default});function dn(e){return t=>{W(t,{resolver:e.componentResolver,modules:{controlFlowModule:e.controlFlowModule,coreModule:e.libModule,routerModule:e.routerModule},strategyFor:n=>n.load}),U(t),je(t,e)}}function Zr(e){let t=[u.types.objectProperty(u.types.identifier("kind"),u.types.stringLiteral(e.kind))];return e.kind==="visible"&&e.rootMargin&&t.push(u.types.objectProperty(u.types.identifier("rootMargin"),u.types.stringLiteral(e.rootMargin))),e.kind==="interaction"&&t.push(u.types.objectProperty(u.types.identifier("events"),u.types.arrayExpression(e.events.map(n=>u.types.stringLiteral(n))))),e.kind==="media"&&t.push(u.types.objectProperty(u.types.identifier("query"),u.types.stringLiteral(e.query))),u.types.objectExpression(t)}function mn(e,t,n){if(!t||t.length===0)return e;let r=new Map;for(let o of t){let s=`${o.svg?"svg:":""}${o.html}`,i=n.staticTemplates.get(s);i||(i=`_tmpl$${n.staticTemplates.size}`,n.staticTemplates.set(s,i)),r.set(o.id,i)}return e.replace(/_tmpl\$\d+/g,o=>r.get(o)??o)}function pn(e,t){let n=new Set,r=ut(e,n,dn(t));W(r,{resolver:t.componentResolver,modules:{controlFlowModule:t.controlFlowModule,coreModule:t.libModule,routerModule:t.routerModule},strategyFor:l=>l.load}),U(r);let{code:o,imports:s,templates:i}=P.emit(r,{templateClone:t.templateClone,partialTemplates:t.partialTemplates});for(let l of s)n.add(l);for(let l of n)t.irImports.add(l);je(r,t);let a=mn(o,i,t);return u.template.expression(a,{placeholderPattern:!1,plugins:["typescript"]})()}function Qr(e){let t=new Map,n=[];for(let r of e){let o=r.source.value;if(!r.specifiers.every(a=>u.types.isImportSpecifier(a))){n.push(r);continue}let i=t.get(o);if(!i){let a=new Set(r.specifiers.map(l=>l.local.name));t.set(o,{decl:r,names:a}),n.push(r);continue}for(let a of r.specifiers)i.names.has(a.local.name)||(i.names.add(a.local.name),i.decl.specifiers.push(a))}return n}function eo(e,t){let n=new Set,r=u.types.isIdentifier(e.tag)&&e.tag.name==="svg",o=Oe(e,n,{svg:r,onNested:dn(t)});W(o,{resolver:t.componentResolver,modules:{controlFlowModule:t.controlFlowModule,coreModule:t.libModule,routerModule:t.routerModule},strategyFor:c=>c.load}),U(o);let{code:s,imports:i,templates:a}=P.emit(o,{templateClone:t.templateClone,partialTemplates:t.partialTemplates});for(let c of i)n.add(c);for(let c of n)t.irImports.add(c);je(o,t),t.hasLitIR=!0;let l=u.template.expression(mn(s,a,t),{placeholderPattern:!1,plugins:["typescript"]})();return to(l,e),l}function to(e,t){if(!t.loc)return;let n=new Set,r=o=>{if(!n.has(o)){n.add(o),o.loc||(o.loc=t.loc,o.start=t.start,o.end=t.end);for(let s of u.types.VISITOR_KEYS[o.type]??[]){let i=o[s];if(Array.isArray(i))for(let a of i)a&&typeof a=="object"&&"type"in a&&r(a);else i&&typeof i=="object"&&"type"in i&&r(i)}}};r(e)}function je(e,t){if(e.kind==="component"&&e.source&&(e.source.origin==="builtin"?(t.controlFlowComponents.add(e.name),t.needsControlFlowImport=!0):Z(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)je(n,t)}var un,u,ln,cn,ne,dt=b(()=>{"use strict";un=require("@babel/helper-plugin-utils");se();ce();ke();Q();ae();u=require("@babel/core");st();it();te();ln=new Set(K),cn=new Set(B),ne=(0,un.declare)((e,t={})=>{e.assertVersion(7);let{delegateEvents:n=!0,signalModule:r="@fluixi/dom",controlFlowModule:o="@fluixi/dom",routerModule:s="fluixi/router",reactiveModule:i="@fluixi/reactive/signal",templateClone:a=!0,partialTemplates:l=!0,format:c="both",litTag:p="html",resolve:d=[]}=t,m=X(d),x=c==="lit"||c==="both",y={irImports:new Set,libModule:"fluixi",controlFlowModule:o,routerModule:s,templateClone:a,partialTemplates:l,hasJSX:!1,hasLitHTML:!1,needsControlFlowImport:!1,needsCreateMemo:!1,controlFlowComponents:new Set,resolvedComponents:new Map,deferredComponents:new Map,componentResolver:m,delegatedEvents:new Set,staticTemplates:new Map,staticCounter:0};return{name:"@fluixi/babel-plugin-jsx",manipulateOptions(g,h){h.plugins.push("jsx","typescript")},pre(g){Object.assign(g,y)},visitor:{Program:{enter(g,h){Object.assign(h,{hasJSX:!1,hasLitHTML:!1,hasLitIR:!1,needsControlFlowImport:!1,needsCreateMemo:!1,controlFlowComponents:new Set,resolvedComponents:new Map,deferredComponents:new Map,componentResolver:m,delegatedEvents:new Set,staticTemplates:new Map,staticCounter:0,libModule:"fluixi",controlFlowModule:o,routerModule:s,templateClone:a,partialTemplates:l,irImports:new Set,needsCreateNativeElement:!1,needsInsert:!1,needsSpread:!1,needsCreateComponent:!1,needsMergeProps:!1})},exit(g,h){let E=[];if(h.hasJSX||h.hasLitIR){if(h.irImports.size>0){let R=new Set(["Show","For","Index","Switch","Match","Dynamic","ErrorBoundary","Portal","Suspense"]),S=new Set(["createMemo","createEffect","createRenderEffect","createRoot","createSignal","onCleanup","batch","untrack"]),I=Array.from(h.irImports),T=N=>u.types.importSpecifier(u.types.identifier(N),u.types.identifier(N)),v=N=>!g.scope.hasBinding(N),w=I.filter(N=>S.has(N)&&v(N)),k=I.filter(N=>!R.has(N)&&!S.has(N)&&v(N)),f=I.filter(N=>R.has(N)&&v(N));w.length>0&&E.push(u.types.importDeclaration(w.map(T),u.types.stringLiteral(i))),k.length>0&&E.push(u.types.importDeclaration(k.map(T),u.types.stringLiteral(r))),f.length>0&&E.push(u.types.importDeclaration(f.map(T),u.types.stringLiteral(o)))}if(h.needsCreateMemo&&!g.scope.hasBinding("createMemo")&&E.push(u.types.importDeclaration([u.types.importSpecifier(u.types.identifier("createMemo"),u.types.identifier("createMemo"))],u.types.stringLiteral(i))),h.needsControlFlowImport&&h.controlFlowComponents.size>0){let R=Array.from(h.controlFlowComponents).filter(k=>!g.scope.hasBinding(k)),S=h.libModule??"fluixi",I=R.filter(k=>cn.has(k)),T=R.filter(k=>ln.has(k)),v=R.filter(k=>!ln.has(k)&&!cn.has(k)),w=(k,f)=>u.types.importDeclaration(k.map(N=>u.types.importSpecifier(u.types.identifier(N),u.types.identifier(N))),u.types.stringLiteral(f));v.length>0&&E.push(w(v,o)),T.length>0&&E.push(w(T,S)),I.length>0&&E.push(w(I,s))}let C=[];if(h.deferredComponents.size>0){for(let[R,S]of h.deferredComponents)g.scope.hasBinding(R)||C.push(u.types.variableDeclaration("const",[u.types.variableDeclarator(u.types.identifier(R),u.types.callExpression(u.types.identifier("deferred"),[u.types.arrowFunctionExpression([],u.types.callExpression(u.types.import(),[u.types.stringLiteral(S.module)])),u.types.objectExpression([u.types.objectProperty(u.types.identifier("strategy"),Zr(S.strategy)),u.types.objectProperty(u.types.identifier("export"),u.types.stringLiteral(S.export))])]))]));C.length>0&&!g.scope.hasBinding("deferred")&&E.push(u.types.importDeclaration([u.types.importSpecifier(u.types.identifier("deferred"),u.types.identifier("deferred"))],u.types.stringLiteral(h.libModule??"fluixi")))}if(h.resolvedComponents.size>0){let R=new Map;for(let[S,I]of h.resolvedComponents){if(g.scope.hasBinding(S))continue;let T=R.get(I.module)??[];T.push({local:S,exported:I.export}),R.set(I.module,T)}for(let[S,I]of R)E.push(u.types.importDeclaration(I.map(({local:T,exported:v})=>v==="default"?u.types.importDefaultSpecifier(u.types.identifier(T)):u.types.importSpecifier(u.types.identifier(T),u.types.identifier(v))),u.types.stringLiteral(S)))}if(n&&h.delegatedEvents.size>0){E.push(u.types.importDeclaration([u.types.importSpecifier(u.types.identifier("delegateEvents"),u.types.identifier("delegateEvents"))],u.types.stringLiteral(r)));let R=u.types.arrayExpression(Array.from(h.delegatedEvents).map(I=>u.types.stringLiteral(I))),S=u.types.expressionStatement(u.types.callExpression(u.types.identifier("delegateEvents"),[R]));g.node.body.unshift(S)}if(C.length>0&&g.node.body.unshift(...C),h.staticTemplates.size>0){let R=[];for(let[S,I]of h.staticTemplates){let v=S.startsWith("svg:")?S.slice(4):S;R.push(u.types.variableDeclaration("const",[u.types.variableDeclarator(u.types.identifier(I),u.types.stringLiteral(v))]))}g.node.body.unshift(...R)}}E.length>0&&g.node.body.unshift(...Qr(E))}},JSXElement(g,h){h.hasJSX=!0,g.replaceWith(pn(g.node,h))},JSXFragment(g,h){h.hasJSX=!0,g.replaceWith(pn(g.node,h))},TaggedTemplateExpression(g,h){x&&u.types.isIdentifier(g.node.tag)&&(g.node.tag.name===p||g.node.tag.name==="svg")&&g.replaceWith(eo(g.node,h))}}}})});var fn=b(()=>{"use strict"});var gn={};oe(gn,{babelPluginReactiveJSX:()=>no,createPlugin:()=>ro,createPreset:()=>Le,default:()=>ne,presets:()=>oo});function ro(e){return[ne,e]}function Le(e={}){return{plugins:[[ne,{runtime:"automatic",importSource:"@fluixi/jsx",development:!1,detectReactivity:!0,useLitHTML:!0,hoistStatics:!0,delegateEvents:!0,optimizeControlFlow:!0,sourceMaps:!0,...e}]]}}var no,oo,hn=b(()=>{"use strict";dt();fn();dt();no=ne;oo={production:Le({development:!1,hoistStatics:!0,delegateEvents:!0,optimizeControlFlow:!0}),development:Le({development:!0,hoistStatics:!1,sourceMaps:!0}),minimal:Le({detectReactivity:!1,useLitHTML:!1,hoistStatics:!1,delegateEvents:!1,optimizeControlFlow:!1})}});function yn(e,t,n={}){let r=new Set,o=Te(e,[...t],r,{svg:n.svg});z(o),W(o,{resolver:X(n.resolve??[]),modules:{controlFlowModule:n.controlFlowModule??"@fluixi/dom",coreModule:n.coreModule??"fluixi",routerModule:n.routerModule??"fluixi/router"},strategyFor:l=>l.load}),U(o);let{code:s,imports:i,templates:a}=P.emit(o,{templateClone:n.templateClone,partialTemplates:n.partialTemplates});for(let l of i)r.add(l);return n.hoistTemplates?{code:s,imports:[...r],ir:o,templates:a}:{code:ee(s,a),imports:[...r],ir:o}}var vn=b(()=>{"use strict";fe();ke();te();ce();se();nt()});function q(e,t){if(e)switch(e.type){case"Identifier":t.add(e.name);return;case"ObjectPattern":for(let n of e.properties)n.type==="RestElement"?q(n.argument,t):q(n.value,t);return;case"ArrayPattern":for(let n of e.elements)q(n,t);return;case"AssignmentPattern":q(e.left,t);return;case"RestElement":q(e.argument,t);return}}function xn(e,t){switch(e.type){case"ImportDeclaration":for(let n of e.specifiers)q(n.local,t);return;case"VariableDeclaration":for(let n of e.declarations)q(n.id,t);return;case"FunctionDeclaration":case"ClassDeclaration":q(e.id,t);return;case"ExportNamedDeclaration":case"ExportDefaultDeclaration":e.declaration&&xn(e.declaration,t);return}}function re(e){let t=new Set;for(let n of e.body)xn(n,t);return t}var Ae=b(()=>{"use strict"});function j(e,t){if(e)switch(e.type){case"Identifier":t.add(e.name);return;case"ObjectPattern":for(let n of e.properties)n.type==="RestElement"?j(n.argument,t):j(n.value,t);return;case"ArrayPattern":for(let n of e.elements)j(n,t);return;case"AssignmentPattern":j(e.left,t);return;case"RestElement":j(e.argument,t);return}}function mt(e){switch(e.type){case"StringLiteral":case"NumericLiteral":case"BooleanLiteral":case"NullLiteral":case"BigIntLiteral":case"RegExpLiteral":case"Identifier":return!0;case"Literal":return!0;case"TemplateLiteral":return e.expressions.every(mt);case"UnaryExpression":return mt(e.argument);case"MemberExpression":return!1;default:return!1}}function Fe(e,t){if(!(!e||typeof e!="object")){t(e);for(let n of Object.keys(e)){if(n==="loc"||n==="range"||n==="leadingComments"||n==="trailingComments")continue;let r=e[n];if(Array.isArray(r))for(let o of r)o&&typeof o=="object"&&Fe(o,t);else r&&typeof r=="object"&&typeof r.type=="string"&&Fe(r,t)}}}function so(e){let t=new Set;return Fe(e,n=>{if(n.type==="AssignmentExpression")j(n.left,t);else if(n.type==="UpdateExpression"){let r=n.argument;r?.type==="Identifier"&&t.add(r.name)}}),t}function io(e,t){let n=new Set,r=o=>{let s=new Set;j(o,s);for(let i of s)t.has(i)&&n.add(i)};return Fe(e,o=>{switch(o.type){case"VariableDeclarator":r(o.id);return;case"FunctionDeclaration":case"FunctionExpression":case"ArrowFunctionExpression":r(o.id);for(let s of o.params??[])r(s);return;case"CatchClause":r(o.param);return;case"ClassDeclaration":case"ClassExpression":r(o.id);return}}),n}function bn(e,t,n){for(let r of e.properties??[]){if(r.type==="RestElement"){let p=r.argument;if(p?.type!=="Identifier"||t.length>0){let d=new Set;j(p,d);for(let m of d)n.bails.push({name:m,reason:"rest"});continue}n.rest={name:p.name,keys:[]};continue}if(r.computed){let p=new Set;j(r.value,p);for(let d of p)n.bails.push({name:d,reason:"computed"});continue}let o=r.key,s=o.type==="Identifier"?o.name:o.value,i=r.value,a;i.type==="AssignmentPattern"&&(a=i.right,i=i.left);let l=[...t,s];if(i.type==="Identifier"){if(a&&!mt(a)){n.bails.push({name:i.name,reason:"unsafe-default"});continue}n.reads.push({name:i.name,path:l,...a?{fallback:a}:{}});continue}if(i.type==="ObjectPattern"){if(a){let p=new Set;j(i,p);for(let d of p)n.bails.push({name:d,reason:"unsafe-default"});continue}bn(i,l,n);continue}let c=new Set;j(i,c);for(let p of c)n.bails.push({name:p,reason:"computed"})}}function Je(e,t){let n={reads:[],bails:[]};if(e?.type!=="ObjectPattern"||(bn(e,[],n),n.rest&&(t?.type!=="BlockStatement"?(n.bails.push({name:n.rest.name,reason:"rest"}),delete n.rest):n.rest.keys=(e.properties??[]).filter(a=>a.type!=="RestElement"&&!a.computed).map(a=>{let l=a.key;return l.type==="Identifier"?l.name:l.value})),n.reads.length===0&&!n.rest))return n;let r=new Set(n.reads.map(a=>a.name));n.rest&&r.add(n.rest.name);let o=so(t),s=io(t,r),i=[];for(let a of n.reads)o.has(a.name)?n.bails.push({name:a.name,reason:"reassigned"}):s.has(a.name)?n.bails.push({name:a.name,reason:"shadowed"}):i.push(a);return n.reads=i,n.rest&&o.has(n.rest.name)?(n.bails.push({name:n.rest.name,reason:"reassigned"}),delete n.rest):n.rest&&s.has(n.rest.name)&&(n.bails.push({name:n.rest.name,reason:"shadowed"}),delete n.rest),n}function _e(e){switch(e){case"rest":return"this rest element cannot be served by splitProps, and copying the props into a plain object would lose the getters";case"computed":return"the property is not known until it runs";case"reassigned":return"the binding is assigned to, and props are read-only";case"shadowed":return"an inner scope binds the same name";case"unsafe-default":return"the default would have to run again on every read"}}var ft=b(()=>{"use strict"});function ve(e,t,n=null){if(!(!e||typeof e!="object"||typeof e.type!="string")&&!e.type.startsWith("TS")&&t(e,n)!==!1)for(let r of Object.keys(e)){if(r==="loc"||r==="leadingComments"||r==="trailingComments")continue;let o=e[r];if(Array.isArray(o))for(let s of o)ve(s,t,e);else o&&typeof o=="object"&&ve(o,t,e)}}function Nn(e){return!!e&&e[0]>="A"&&e[0]<="Z"}function ao(e){let t=[];return ve(e,n=>{if(n.type==="FunctionDeclaration"&&Nn(n.id?.name)){t.push(n);return}if(n.type==="VariableDeclarator"&&Nn(n.id?.name)){let r=n.init;r&&(r.type==="ArrowFunctionExpression"||r.type==="FunctionExpression")&&t.push(r)}}),t}function lo(e){let t=new Set;return ve(e,n=>{n.type==="Identifier"&&t.add(n.name)}),t}function co(e,t){if(!t)return!0;switch(t.type){case"MemberExpression":case"OptionalMemberExpression":return!(t.property===e&&!t.computed);case"ObjectProperty":case"ObjectMethod":case"ClassProperty":case"ClassMethod":return!(t.key===e&&!t.computed);case"LabeledStatement":case"BreakStatement":case"ContinueStatement":return t.label!==e;case"ImportSpecifier":case"ExportSpecifier":return!1;default:return!0}}function gt(e,t,n={}){let r=[],o=[],s=new Set;for(let i of ao(e)){let a=i.params?.[0];if(a?.type!=="ObjectPattern")continue;let l=Je(a,i.body);for(let y of l.bails)o.push({name:y.name,reason:y.reason,message:_e(y.reason),start:a.start});if(l.bails.length>0||l.reads.length===0&&!l.rest)continue;let c=lo(i),p=n.parameterName??"props";for(;c.has(p);)p=`_${p}`;let d=new Map;for(let y of l.reads){let g=`${p}.${y.path.join(".")}`,h=y.fallback;d.set(y.name,h?`(${g} === undefined ? ${t.slice(h.start,h.end)} : ${g})`:g)}let m=a.typeAnnotation;if(r.push({start:a.start,end:m?.start??a.end,code:p}),l.rest){let y=l.rest.keys.map(h=>JSON.stringify(h)).join(", "),g=i.body;r.push({start:g.start+1,end:g.start+1,code:`
|
|
1
|
+
"use strict";var Yn=Object.create;var Ne=Object.defineProperty;var Zn=Object.getOwnPropertyDescriptor;var Qn=Object.getOwnPropertyNames;var er=Object.getPrototypeOf,tr=Object.prototype.hasOwnProperty;var b=(e,t)=>()=>(e&&(t=e(e=0)),t);var oe=(e,t)=>{for(var n in t)Ne(e,n,{get:t[n],enumerable:!0})},It=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Qn(t))!tr.call(e,o)&&o!==n&&Ne(e,o,{get:()=>t[o],enumerable:!(r=Zn(t,o))||r.enumerable});return e};var J=(e,t,n)=>(n=e!=null?Yn(er(e)):{},It(t||!e||!e.__esModule?Ne(n,"default",{value:e,enumerable:!0}):n,e)),nr=e=>It(Ne({},"__esModule",{value:!0}),e);function Ct(e,t){return e.replace(/\$(\d+)/g,(n,r)=>t[Number(r)]??n)}function or(e,t){return typeof t=="string"?{module:t,export:e}:t}function X(e=[]){let t=new Map,n=[],r=[];for(let i of e){if(!rr(i)){r.push(i);continue}for(let[a,l]of Object.entries(i.components)){let c=or(a,l),p=t.get(a);if(p&&p.module!==c.module){let d=n.find(m=>m.name===a);d?d.modules.push(c.module):n.push({name:a,modules:[p.module,c.module]});continue}t.set(a,c)}}let o=new Map;return{resolve:i=>{if(o.has(i))return o.get(i);let a=t.get(i);if(!a)for(let l of r){let c=i.match(new RegExp(l.match.source,l.match.flags.replace("g","")));if(c){a={module:Ct(l.module,c),export:l.export?Ct(l.export,c):i};break}}return o.set(i,a),a},names:()=>[...t.keys()],conflicts:()=>n}}var rr,se=b(()=>{"use strict";rr=e=>"components"in e});function Se(e={}){let{controlFlowModule:t="@fluixi/dom",coreModule:n="@fluixi/core",routerModule:r="@fluixi/core/router"}=e,o={};for(let s of ie)o[s]=t;for(let s of K)o[s]=n;for(let s of B)o[s]=r;return o}var ie,K,B,Wo,ze,ae=b(()=>{"use strict";ie=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],K=["Suspense","SuspenseList","Await"],B=["Router","Outlet","Redirect","Link"],Wo=[...ie,...K,...B],ze=new Set([...ie,...K])});function Mt(e){return ir.test(e)}function $t(e){return Object.prototype.hasOwnProperty.call(L,e)}function Ot(e){return sr.includes(e)}var Y,L,Tt,sr,ir,le=b(()=>{"use strict";Y="@fluixi/reactive/signal",L={$signal:{export:"signal",module:Y,returns:"signal-handle"},$memo:{export:"memo",module:Y,returns:"memo-handle"},$effect:{export:"effect",module:Y,returns:"effect"},$store:{export:"store",module:"@fluixi/reactive/store",returns:"store-handle"},$resource:{export:"resource",module:Y,returns:"resource-handle"},$selector:{export:"createSelector",module:Y,returns:"memo-accessor"},$deferred:{export:"createDeferred",module:Y,returns:"memo-accessor"},$untrack:{export:"untrack",module:Y,returns:"plain"},$untrackStore:{export:"untrackStore",module:"@fluixi/reactive/store",returns:"plain"}},Tt={signal:"signal-handle",memo:"memo-handle",effect:"effect",store:"store-handle",createSignal:["signal-accessor","signal-setter"],createMemo:"memo-accessor",createEffect:"effect",createRenderEffect:"effect",createStore:"reactive-object",resource:"resource-handle",createResource:"reactive-object",createSelector:"memo-accessor",createDeferred:"memo-accessor"},sr=["@fluixi/reactive","@fluixi/reactive/signal","@fluixi/reactive/store","@fluixi/core"],ir=new RegExp(`\\$(?:${Object.keys(L).map(e=>e.slice(1)).join("|")})\\s*\\(`)});function qe(e){return e.startsWith("load:")}function Ee(e,t){let n=e.slice(5);if(!At.has(n))throw new V(`Unknown load strategy 'load:${n}'. Expected one of ${[...At].join(", ")}.`);switch(n){case"eager":return Re;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?gr(t):[...fr]};case"media":if(!t)throw new V(`'load:media' needs a query, e.g. load:media="(min-width: 1024px)".`);return{kind:"media",query:t};default:throw new V(`Unhandled load strategy '${n}'.`)}}function gr(e){let t=e.split(/[\s,]+/).map(n=>n.trim()).filter(Boolean);if(t.length===0)throw new V("'load:interaction' was given no event names.");return t}function Z(e){return e.kind!=="eager"&&e.kind!=="never"}var Re,fr,At,V,Q=b(()=>{"use strict";Re={kind:"eager"},fr=["pointerdown","focusin","keydown"],At=new Set(["eager","idle","visible","interaction","media","never"]),V=class extends Error{}});function W(e,t={}){let{resolver:n,isBound:r,modules:o,strategyFor:s}=t,i=Se(o),a=new Map,l=new Set,c=d=>{let{name:m}=d;if(!m||m.includes(".")||r?.(m))return;let x=p(m);if(!x){l.add(m);return}let y=x.origin==="builtin"&&ze.has(m)?Re:s?.(d)??Re;d.source={...x,loading:y},a.set(m,d.source)},p=d=>{if(ze.has(d))return{module:i[d],export:d,origin:"builtin"};let m=n?.resolve(d);if(m)return{module:m.module,export:m.export,origin:"rule"};if(B.includes(d))return{module:i[d],export:d,origin:"builtin"}};return we(e,d=>{d.kind==="component"&&c(d)}),{resolved:a,unresolved:[...l]}}function we(e,t){let n=Array.isArray(e)?e:[e];for(let r of n){t(r);let o=r.children;o&&we(o,t)}}var ce=b(()=>{"use strict";ae();Q()});function U(e){let t=[];we(e,s=>{s.kind==="component"&&s.source&&t.push(s)});let n=new Set,r=new Set;for(let s of t){let{module:i,loading:a}=s.source;a.kind==="eager"&&n.add(i),a.kind==="never"&&r.add(i)}let o=new Map;for(let s of t){let i=s.source;Z(i.loading)&&n.has(i.module)&&(i.loading={kind:"eager"},o.set(i.module,(o.get(i.module)??0)+1))}return{collapsed:o,conflicted:[...r].filter(s=>n.has(s))}}var ke=b(()=>{"use strict";Q();ce()});function Ke(e){return vr.has(e)}function Jt(e){return Ft[e]??e}function pe(e){return e.kind!=="attr"||e.expr!==void 0||e.name.includes(":")?!1:!yr.has(e.name)}function Ye(e){if(!e.static||Ke(e.tag))return!1;for(let t of e.props)if(!pe(t))return!1;for(let t of e.children)if(t.kind!=="text"&&!(t.kind==="element"&&Ye(t)))return!1;return!0}function ue(e){let t=e.props.map(br).filter(Boolean).join(""),n=`<${e.tag}${t}>`;return hr.has(e.tag)?n:`${n}${e.children.map(xr).join("")}</${e.tag}>`}function xr(e){if(e.kind==="text")return Sr(e.value);if(e.kind!=="element")throw new Error(`serializeStatic: unexpected ${e.kind}`);return ue(e)}function br(e){let t=Ft[e.name]??e.name,n=e.literal;return n===!0||n===void 0?` ${t}`:n===!1||n===null?"":` ${t}="${Nr(String(n))}"`}function Nr(e){return e.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function Sr(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}var hr,Ft,yr,vr,Ze=b(()=>{"use strict";hr=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),Ft={className:"class",htmlFor:"for"},yr=new Set(["innerHTML","outerHTML","innerText","textContent","value","checked","selected","muted","defaultValue","defaultChecked","children","ref"]),vr=new Set(["script","style","textarea","title"])});function Ce(e){return e.kind==="expr"||e.kind==="component"||e.kind==="control"}function wr(e){return e.kind==="text"||e.kind==="element"&&_t(e)}function _t(e){return e.svg||Ke(e.tag)||!e.props.every(t=>pe(t))?!1:e.children.every(t=>wr(t)||Ce(t))}function Ie(e){if(Ce(e))return!0;let t=e.children;return t?t.some(Ie):!1}function Xt(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"||Xt(t))}function Bt(e){if(!_t(e)||!Xt(e)||!e.children.some(Ie))return null;let t=[],n=[],r=0,o=i=>{let a=`_n$${r++}`;return t.push({ref:a,expr:i}),a};return s(e,"_el$"),{html:kr(e),tag:e.tag,steps:t,holes:n};function s(i,a){let l=-1;i.children.forEach((p,d)=>{Ie(p)&&(l=d)});let c=null;for(let p=0;p<=l;p++){let d=i.children[p],m=c?`${c}.nextSibling`:`${a}.firstChild`;if(Ce(d)){let y=o(m),g=o(`holeEnd(${y})`);n.push({parentRef:a,startRef:y,endRef:g,node:d}),c=g;continue}let x=o(m);d.kind==="element"&&Ie(d)&&s(d,x),c=x}}}function kr(e){return ue(Ht(e)).split(Vt).join(Rr+Er)}function Ht(e){return{...e,children:e.children.map(t=>Ce(t)?{kind:"text",value:Vt}:t.kind==="element"?Ht(t):t)}}var Rr,Er,Vt,Wt=b(()=>{"use strict";Ze();Rr="<!--fx-->",Er="<!--fx/-->";Vt="\0fx-hole\0"});var Qe,ps,Ut=b(()=>{"use strict";Qe={version:1,module:"@fluixi/dom",symbols:["createNativeElement","insert","spread","setAttribute","delegateEvents","createComponent","createMemo","untrack","Show","For","Index","Switch","Match","Dynamic","ErrorBoundary"]},ps={version:2,module:"@fluixi/dom",symbols:[...Qe.symbols,"template","cloneTemplate","walk"]}});function Cr(e){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e)}function Gt(e){return Cr(e)?e:JSON.stringify(e)}function Tr(e){return e.expr!==void 0?e.reactive?`() => (${e.expr})`:`(${e.expr})`:JSON.stringify(e.literal??!0)}function Mr(e){return e.expr!==void 0?`(${e.expr})`:JSON.stringify(e.literal??!0)}function $r(e,t,n){let r=e.filter(a=>a.kind==="spread"),s=e.filter(a=>a.kind!=="spread").map(a=>`${Gt(a.name)}: ${Tr(a)}`);t!=null&&s.push(`children: ${t}`);let i=`{ ${s.join(", ")} }`;return r.length>0?(n.add("mergeProps"),`mergeProps(${r.map(a=>a.expr).join(", ")}, ${i})`):i}function qt(e,t,n){return e.length===1?de(e[0],t,n):`[${e.map(r=>de(r,t,n)).join(", ")}]`}function zt(e,t,n,r,o){r.add("createMemo"),r.add("createComponent");let s=t.filter(c=>c.kind==="spread"),a=t.filter(c=>c.kind!=="spread").map(c=>`get ${Gt(c.name)}() { return ${Mr(c)}; }`);n.length>0&&a.push(`get children() { return ${qt(n,r,o)}; }`);let l=`{ ${a.join(", ")} }`;return s.length>0&&(r.add("mergeProps"),l=`mergeProps(${s.map(c=>c.expr).join(", ")}, ${l})`),`createMemo(() => createComponent(${e}, ${l}))`}function Or(e,t){let n=Jt(t.name),r=t.literal;return r===!0||r===void 0?`${e}.setAttribute(${JSON.stringify(n)}, "");`:r===!1||r===null?"":`${e}.setAttribute(${JSON.stringify(n)}, ${JSON.stringify(String(r))});`}function de(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":qt(e.children,t,n);case"component":return zt(e.name,e.props,e.children,t,n);case"control":{let r=Ir[e.control]??e.control;return t.add(r),zt(r,e.props,e.children,t,n)}case"element":{if(n&&e.static&&!e.svg&&Ye(e)){t.add("templateNode");let a=`_tmpl$${n.length}`;return n.push({id:a,html:ue(e),tag:e.tag,svg:!1}),`templateNode(${a}, ${JSON.stringify(e.tag)})`}if(n&&Kt){let a=Bt(e);if(a){t.add("templateNode"),t.add("insert"),t.add("holeEnd"),t.add("holeContent"),t.add("holeScope");let l=`_tmpl$${n.length}`;n.push({id:l,html:a.html,tag:a.tag,svg:!1});let c=[`const _el$ = templateNode(${l}, ${JSON.stringify(a.tag)}, true);`];for(let p of a.steps)c.push(`const ${p.ref} = ${p.expr};`);for(let p of a.holes)c.push(`insert(${p.parentRef}, holeScope(${p.startRef}, () => (${de(p.node,t,n)})), ${p.endRef}, holeContent(${p.startRef}, ${p.endRef}));`);return c.push("return _el$;"),`(() => { ${c.join(" ")} })()`}}t.add("createNativeElement");let r=JSON.stringify(e.tag),o="_el$",s=[],i=e.svg?`${r}, true`:r;if(s.push(`const ${o} = createNativeElement(${i});`),e.props.length>0)if(!e.svg&&e.props.every(pe))for(let a of e.props)s.push(Or(o,a));else{t.add("spread");let a=e.svg?", isSVG: true":"";s.push(`spread({ element: ${o}, props: ${$r(e.props,null,t)}${a} });`)}for(let a of e.children){t.add("insert");let l=de(a,t,n),c=a.kind==="expr"&&a.reactive||a.kind==="component"||a.kind==="control";s.push(c?`insert(${o}, ${l}, null);`:`insert(${o}, ${l});`)}return s.push(`return ${o};`),`(() => { ${s.join(" ")} })()`}}}function ee(e,t){if(!t||t.length===0)return e;let n=new Map(t.map(r=>[r.id,JSON.stringify(r.html)]));return e.replace(/_tmpl\$\d+/g,r=>n.get(r)??r)}var Ir,Kt,P,te=b(()=>{"use strict";Wt();Ze();Ut();Ir={show:"Show",for:"For",index:"Index",switch:"Switch",match:"Match",dynamic:"Dynamic",errorBoundary:"ErrorBoundary",suspense:"Suspense"};Kt=!1;P={name:"imperative",contract:Qe,emit(e,t){let n=new Set,r=t?.templateClone!==!1?[]:void 0;return Kt=t?.partialTemplates===!0,{code:de(e,n,r),imports:Array.from(n),templates:r}}}});function me(e){let t=e.split(/\r\n|\n|\r/),n=0;for(let o=0;o<t.length;o++)/[^ \t]/.test(t[o])&&(n=o);let r="";for(let o=0;o<t.length;o++){let s=t[o].replace(/\t/g," ");o!==0&&(s=s.replace(/^ +/,"")),o!==t.length-1&&(s=s.replace(/ +$/,"")),s&&(o!==n&&(s+=" "),r+=s)}return r}var et=b(()=>{"use strict"});function Pr(e){return e.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${")}function Zt(e){return e.charAt(0).toUpperCase()+e.slice(1)}function Te(e,t,n,r={}){let{root:o}=(0,Qt.parseTemplate)(e,{svg:r.svg});return new tt(t,n).lowerRoot(o.children)}var Qt,Yt,tt,nt=b(()=>{"use strict";Qt=require("@fluixi/template-parser");Q();te();et();Yt=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);tt=class{constructor(t,n){this.holes=t;this.used=n}hole(t){return this.holes[t]??{code:"undefined",reactive:!1}}emit(t){let{code:n,imports:r,templates:o}=P.emit(t,{});for(let s of r)this.used.add(s);return ee(n,o)}lowerRoot(t){let n=this.lowerChildren(t);return n.length===1?n[0]:{kind:"fragment",children:n}}lowerChildren(t){let n=[];for(let r=0;r<t.length;r++){let o=t[r];if(o.kind==="Element"||o.kind==="Component"){let i=o.attributes.find(a=>a.kind==="IfDirective");if(i&&i.kind==="IfDirective"){let a=r+1;a<t.length&&this.isBlankText(t[a])&&a++;let l=t[a],c=l&&(l.kind==="Element"||l.kind==="Component")&&l.attributes.some(p=>p.kind==="ElseDirective");n.push(this.lowerIf(o,i.hole,c?l:null)),c&&(r=a);continue}if(o.attributes.some(a=>a.kind==="EachDirective")){n.push(this.lowerEach(o));continue}}let s=this.lowerNode(o);s&&n.push(s)}return n}isBlankText(t){return t.kind==="Text"&&!t.raw&&me(t.value)===""}lowerNode(t){switch(t.kind){case"Text":{if(t.raw)return{kind:"text",value:t.value};let n=me(t.value);return n?{kind:"text",value:n}:null}case"Comment":return null;case"Expression":{let n=this.hole(t.hole);return{kind:"expr",code:n.code,reactive:n.reactive}}case"Fragment":return{kind:"fragment",children:this.lowerChildren(t.children)};case"Element":return this.lowerElement(t);case"Component":return this.lowerComponent(t);default:return null}}lowerElement(t){let n=t.attributes.find(r=>r.kind==="Attribute"&&r.name==="is");if(t.tag==="component"&&n&&n.value&&n.value.kind==="hole"){let r=t.attributes.filter(s=>s!==n),o=this.lowerComponent({...t,kind:"Component",tag:"Dynamic",tagHole:null,attributes:r});return o.props.unshift({name:"component",kind:"attr",expr:`() => (${this.hole(n.value.hole).code})`}),o}return{kind:"element",tag:t.tag,svg:t.namespace==="svg",props:this.lowerAttributes(t.attributes),children:this.lowerChildren(t.children),static:!1}}lowerComponent(t){let n=t.tagHole!=null?this.hole(t.tagHole).code:t.tag,r=this.lowerAttributes(t.attributes),{slots:o,rest:s}=this.partitionSlots(t.children);for(let[l,c]of o){let p=c.length===1?c[0]:{kind:"fragment",children:c},d={name:l,kind:"attr",expr:this.emit(p),jsxElement:!0},m=r.findIndex(x=>x.name===l);m>=0?r[m]=d:r.push(d)}let i=t.attributes.find(l=>l.kind==="LoadDirective"),a=i?Ee(`load:${i.strategy}`,i.modifier):void 0;return{kind:"component",name:n,props:r,children:this.lowerChildren(s),...a?{load:a}:{}}}partitionSlots(t){let n=new Map,r=[];for(let o of t){if(o.kind==="Element"||o.kind==="Component"){let s=o.attributes.find(i=>i.kind==="Attribute"&&i.name==="slot");if(s&&s.value&&s.value.kind==="static"){let i={...o,attributes:o.attributes.filter(c=>c!==s)},a=i.kind==="Element"?this.lowerElement(i):this.lowerComponent(i),l=n.get(s.value.value)??[];l.push(a),n.set(s.value.value,l);continue}}r.push(o)}return{slots:n,rest:r}}lowerIf(t,n,r){let o=this.hole(n),s=[{name:"when",kind:"attr",expr:o.code,reactive:o.reactive}];if(r){let a=this.stripAndLower(r,l=>l.kind==="ElseDirective");s.push({name:"fallback",kind:"attr",expr:this.emit(a),jsxElement:!0})}let i=this.stripAndLower(t,a=>a.kind==="IfDirective");return{kind:"component",name:"Show",props:s,children:[i]}}lowerEach(t){let n=t.attributes.find(l=>l.kind==="EachDirective");if(!n||n.kind!=="EachDirective")return this.lowerNode(t);let r=this.hole(n.hole),o=[{name:"each",kind:"attr",expr:r.code,reactive:r.reactive}];if(n.key){let l="static"in n.key?`(item) => item[${JSON.stringify(n.key.static)}]`:this.hole(n.key.hole).code;o.push({name:"by",kind:"attr",expr:l})}let s=this.itemArrow(t),i;if(s){let l={kind:"expr",code:s.body,reactive:s.bodyReactive},c=this.rebuildWithChildren(t,[l]);i=`(${s.params.join(", ")}) => (${this.emit(c)})`}else{let l=this.stripAndLower(t,c=>c.kind==="EachDirective");i=`() => (${this.emit(l)})`}return{kind:"component",name:"For",props:o,children:[{kind:"expr",code:i,reactive:!1}]}}itemArrow(t){let n=t.children.filter(r=>!this.isBlankText(r));return n.length!==1||n[0].kind!=="Expression"?null:this.hole(n[0].hole).arrow??null}stripAndLower(t,n){let r={...t,attributes:t.attributes.filter(o=>!n(o))};return r.kind==="Element"?this.lowerElement(r):this.lowerComponent(r)}rebuildWithChildren(t,n){let r=this.lowerAttributes(t.attributes.filter(o=>o.kind!=="EachDirective"));return t.kind==="Element"?{kind:"element",tag:t.tag,svg:t.namespace==="svg",props:r,children:n,static:!1}:{kind:"component",name:t.tag,props:r,children:n}}lowerAttributes(t){let n=[],r=[],o=!1,s=[],i=!1,a=[];for(let l of t)switch(l.kind){case"IfDirective":case"EachDirective":case"ElseDirective":break;case"Attribute":n.push(this.plainAttr(l));break;case"PropertyBinding":n.push({name:l.name,kind:"prop",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"EventBinding":n.push(this.eventProp(l));break;case"RefBinding":n.push({name:"ref",kind:"ref",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"Spread":n.push({name:"",kind:"spread",expr:this.hole(l.hole).code});break;case"ClassDirective":{let c=this.hole(l.hole);r.push(`${JSON.stringify(l.name)}: ${c.code}`),o=o||c.reactive;break}case"StyleDirective":{let c=this.hole(l.hole);s.push(`${JSON.stringify(l.name)}: ${c.code}`),i=i||c.reactive;break}case"BindDirective":n.push(...this.bindProps(l.name,this.hole(l.hole).code));break;case"UseDirective":{let c=l.name??(l.hole!=null?this.hole(l.hole).code:null);if(!c)break;a.push(l.name!=null&&l.hole!=null?`[${c}, () => (${this.hole(l.hole).code})]`:`[${c}]`);break}}return r.length>0&&n.push({name:"classList",kind:"attr",expr:`{ ${r.join(", ")} }`,reactive:o}),s.length>0&&n.push({name:"style",kind:"attr",expr:`{ ${s.join(", ")} }`,reactive:i}),a.length>0&&n.push({name:"use",kind:"attr",expr:`[${a.join(", ")}]`}),n}eventProp(t){let n=t.name.toLowerCase(),r=this.hole(t.hole).code;if(!(t.syntax==="colon"||t.modifiers.length>0))return{name:"on"+Zt(t.name),kind:"event",event:{name:n,delegated:Yt.has(n)},expr:r};let s=this.wrapHandler(r,t.modifiers),i=this.eventOptions(t.modifiers),a=i?`[${s}, ${i}]`:s;return{name:"on:"+n,kind:"attr",expr:a}}wrapHandler(t,n){let r=n.includes("self")?"if (e.target !== e.currentTarget) return; ":"",o=[];return n.includes("prevent")&&o.push("e.preventDefault();"),n.includes("stop")&&o.push("e.stopPropagation();"),!r&&o.length===0?t:`(e) => { ${r}${o.join(" ")} return (${t})(e); }`}eventOptions(t){let n=[];return t.includes("capture")&&n.push("capture: true"),t.includes("once")&&n.push("once: true"),t.includes("passive")&&n.push("passive: true"),n.length?`{ ${n.join(", ")} }`:null}bindProps(t,n){let r=t==="checked",o=r?"change":"input",s=r?"checked":"value";this.used.add("bindPair");let i=`bindPair(${n})`;return[{name:t,kind:"attr",expr:`${i}[0]()`,reactive:!0},{name:"on"+Zt(o),kind:"event",event:{name:o,delegated:Yt.has(o)},expr:`(e) => ${i}[1](e.target.${s})`}]}plainAttr(t){let n=t.value,r=t.name;t.name==="class"?r=n&&n.kind==="hole"&&this.hole(n.hole).object?"classList":"className":t.name==="html"&&(r="innerHTML");let s={name:r,kind:"attr"};if(n==null)return s.literal=!0,s;if(n.kind==="static")return s.literal=n.value,s;if(n.kind==="hole"){let l=this.hole(n.hole);return s.expr=l.code,s.reactive=l.reactive,s}let i=!1,a=n.parts.map(l=>{if("text"in l)return Pr(l.text);let c=this.hole(l.hole);return i=i||c.reactive,"${"+c.code+"}"}).join("");return s.expr="`"+a+"`",s.reactive=i,s}}});function jr(e){return Dr(e,{concise:!0}).code}function Lr(e,t,n){let r={code:$e(e,t,n),reactive:ot(e)};if(Me.types.isArrowFunctionExpression(e)&&!Me.types.isBlockStatement(e.body)){let o=e.body;r.arrow={params:e.params.map(s=>jr(s)),body:$e(o,t,n),bodyReactive:ot(o)}}return Me.types.isObjectExpression(e)&&(r.object=!0),r}function en(e,t,n={}){let r=e.quasi,o=r.expressions.map(s=>Lr(s,t,n.onNested));return Te(Ar(r),o,t,n)}function Ar(e){let t=[];return e.quasis.forEach((n,r)=>{let o=n.value.cooked??n.value.raw;if(t.push({kind:"static",text:o,start:n.start??0}),r<e.expressions.length){let s=e.expressions[r];t.push({kind:"hole",index:r,start:s.start??0,end:s.end??0})}}),t}var Me,rt,Dr,tn=b(()=>{"use strict";Me=require("@babel/core"),rt=J(require("@babel/generator"),1);nt();st();Dr=rt.default.default??rt.default});function Fr(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,r=o=>{switch(o.kind){case"text":return!0;case"expr":return!1;case"component":case"control":for(let s of o.children)r(s);return!1;case"fragment":for(let s of o.children)r(s);return!1;case"element":{let s=!0;for(let a of o.children)r(a)||(s=!1);let i;for(let a of o.props)if(i=Fr(a),i)break;return!i&&!s&&(i=Jr(o)),o.static=!i,i?n.set(o,i):t.push(o),o.static}default:return!1}};for(let o of Array.isArray(e)?e:[e])r(o);return{staticElements:t,reasons:n}}function Jr(e){for(let t of e.children){if(t.kind==="expr")return"expression-child";if(t.kind==="component")return"component-child";if(t.kind==="control")return"control-child";if(t.kind==="element"&&!t.static||t.kind==="fragment")return"expression-child"}return"expression-child"}var fe=b(()=>{"use strict"});function Oe(e,t=new Set,n={}){let r=en(e,t,n);return z(r),r}var it=b(()=>{"use strict";tn();fe()});function G(e){switch(e.kind){case"call":return!0;case"member":return e.property!==_r;case"compound":return e.parts.some(G);case"opaque":return!1}}var _r,Pe=b(()=>{"use strict";_r="children"});function A(e){if(!e)return{kind:"opaque"};if(Xr.has(e.type))return{kind:"call"};if(Br.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(ge)}:e.type==="LogicalExpression"||e.type==="BinaryExpression"?{kind:"compound",parts:[e.left,e.right].map(ge)}:e.type==="TemplateLiteral"?{kind:"compound",parts:e.expressions.map(ge)}:e.type==="ObjectExpression"?{kind:"compound",parts:e.properties.filter(n=>(n.type==="ObjectProperty"||n.type==="Property")&&n.computed!==!0).map(n=>ge(n.value))}:e.type==="ArrayExpression"?{kind:"compound",parts:e.elements.filter(n=>n!=null&&n.type!=="SpreadElement").map(ge)}:{kind:"opaque"}}var Xr,Br,ge,he=b(()=>{"use strict";Xr=new Set(["CallExpression","OptionalCallExpression"]),Br=new Set(["MemberExpression","OptionalMemberExpression"]);ge=e=>A(e)});function ye(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}function Ur(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 lt(e){return e.type==="JSXIdentifier"?e.name==="class"?"className":e.name:e.type==="JSXNamespacedName"?`${e.namespace.name}:${e.name.name}`:"unknown"}function zr(e,t){let n=lt(e.name),r=Vr.test(n),o=r||n.startsWith("on:")||n==="ref",i={name:n,kind:r?"event":"attr"};if(r){let l=n.slice(2).toLowerCase();i.event={name:l,delegated:Wr.has(l)}}let a=e.value;if(a==null)return i.literal=!0,i;if(at(a))return i.literal=ye(a),i;if(a.type==="JSXExpressionContainer"&&a.expression?.type!=="JSXEmptyExpression"){let l=a.expression,c=ye(l);return c!==void 0?(i.literal=c,i):(i.expr=t.code(l),i.reactive=o?!1:on(l),(l.type==="JSXElement"||l.type==="JSXFragment")&&(i.jsxElement=!0),i)}return i.literal=!0,i}function nn(e,t){let n=e.value;return n==null?null:at(n)?JSON.stringify(ye(n)):n.type==="JSXExpressionContainer"&&n.expression?.type!=="JSXEmptyExpression"?t.code(n.expression):null}function Gr(e,t){let n=[],r=[];for(let o of e){if(o.type==="JSXSpreadAttribute"){n.push({name:"",kind:"spread",expr:t.code(o.argument)});continue}if(o.type!=="JSXAttribute"||qe(lt(o.name)))continue;let s=o.name.type==="JSXNamespacedName"?o.name.namespace.name:null;if(s==="use"){let i=o.name.name.name;t.used.add(i);let a=nn(o,t);r.push(a!=null?`[${i}, () => (${a})]`:`[${i}]`);continue}if(s==="oncapture"){let i=o.name.name.name.toLowerCase(),a=nn(o,t)??"undefined";n.push({name:"on:"+i,kind:"attr",expr:`[${a}, { capture: true }]`});continue}n.push(zr(o,t))}return r.length>0&&n.push({name:"use",kind:"attr",expr:`[${r.join(", ")}]`}),n}function rn(e,t){let n=[];for(let r of e)if(r.type==="JSXText"){let o=me(r.value);o&&n.push({kind:"text",value:o})}else if(r.type==="JSXExpressionContainer"){if(r.expression?.type!=="JSXEmptyExpression"){let o=r.expression;n.push({kind:"expr",code:t.code(o),reactive:on(o)})}}else r.type==="JSXElement"||r.type==="JSXFragment"?n.push(sn(r,t)):r.type==="JSXSpreadChild"&&n.push({kind:"expr",code:t.code(r.expression),reactive:!1});return n}function qr(e){for(let t of e){if(t.type!=="JSXAttribute")continue;let n=lt(t.name);if(qe(n)){if(t.value&&!at(t.value))throw new V(`'${n}' needs a literal value, not an expression — the strategy is compile-time.`);return Ee(n,t.value?ye(t.value):null)}}}function sn(e,t){if(e.type==="JSXFragment")return{kind:"fragment",children:rn(e.children,t)};let{tag:n,component:r}=Ur(e.openingElement.name,t),o=Gr(e.openingElement.attributes,t),s=rn(e.children,t);if(r){let i=qr(e.openingElement.attributes);return{kind:"component",name:n,props:o,children:s,...i?{load:i}:{}}}return{kind:"element",tag:n,svg:Hr.has(n),props:o,children:s,static:!1}}function De(e,t){let n=sn(e,t);return z(n),n}var Hr,Vr,Wr,on,at,ct=b(()=>{"use strict";Q();Pe();he();fe();et();Hr=new Set(["svg","path","circle","rect","line","polygon","polyline","ellipse","g","defs","clipPath","text"]),Vr=/^on[A-Z]/,Wr=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]),on=e=>G(A(e));at=e=>!!e&&typeof ye(e)=="string"});function an(e){return Kr(e,{concise:!0}).code}function Yr(e,t,n){let r=F.types.cloneNode(e,!0),o=F.types.file(F.types.program([F.types.expressionStatement(r)])),s=!1,i=(a,l,c)=>{for(let p of c)t.add(p);a.replaceWith(F.template.expression(l,{placeholderPattern:!1,plugins:["typescript"]})()),a.skip(),s=!0};return(0,F.traverse)(o,{"JSXElement|JSXFragment"(a){let l=a.node,c=ut(l,t,n);n?.(c);let{code:p,imports:d,templates:m}=P.emit(c,{});i(a,ee(p,m),d)},TaggedTemplateExpression(a){let l=a.node.tag;if(!F.types.isIdentifier(l)||l.name!=="html"&&l.name!=="svg")return;let c=Oe(a.node,t,{svg:l.name==="svg",onNested:n});n?.(c);let{code:p,imports:d,templates:m}=P.emit(c,{});i(a,ee(p,m),d)}}),s?o.program.body[0].expression:e}function $e(e,t,n){return an(Yr(e,t,n))}function ot(e){return G(A(e))}function ut(e,t=new Set,n){return De(e,{code:o=>o.type==="JSXMemberExpression"?an(o):$e(o,t,n),used:t})}var F,pt,Kr,st=b(()=>{"use strict";F=require("@babel/core"),pt=J(require("@babel/generator"),1);te();it();ct();Pe();he();Kr=pt.default.default??pt.default});function dn(e){return t=>{W(t,{resolver:e.componentResolver,modules:{controlFlowModule:e.controlFlowModule,coreModule:e.libModule,routerModule:e.routerModule},strategyFor:n=>n.load}),U(t),je(t,e)}}function Zr(e){let t=[u.types.objectProperty(u.types.identifier("kind"),u.types.stringLiteral(e.kind))];return e.kind==="visible"&&e.rootMargin&&t.push(u.types.objectProperty(u.types.identifier("rootMargin"),u.types.stringLiteral(e.rootMargin))),e.kind==="interaction"&&t.push(u.types.objectProperty(u.types.identifier("events"),u.types.arrayExpression(e.events.map(n=>u.types.stringLiteral(n))))),e.kind==="media"&&t.push(u.types.objectProperty(u.types.identifier("query"),u.types.stringLiteral(e.query))),u.types.objectExpression(t)}function mn(e,t,n){if(!t||t.length===0)return e;let r=new Map;for(let o of t){let s=`${o.svg?"svg:":""}${o.html}`,i=n.staticTemplates.get(s);i||(i=`_tmpl$${n.staticTemplates.size}`,n.staticTemplates.set(s,i)),r.set(o.id,i)}return e.replace(/_tmpl\$\d+/g,o=>r.get(o)??o)}function pn(e,t){let n=new Set,r=ut(e,n,dn(t));W(r,{resolver:t.componentResolver,modules:{controlFlowModule:t.controlFlowModule,coreModule:t.libModule,routerModule:t.routerModule},strategyFor:l=>l.load}),U(r);let{code:o,imports:s,templates:i}=P.emit(r,{templateClone:t.templateClone,partialTemplates:t.partialTemplates});for(let l of s)n.add(l);for(let l of n)t.irImports.add(l);je(r,t);let a=mn(o,i,t);return u.template.expression(a,{placeholderPattern:!1,plugins:["typescript"]})()}function Qr(e){let t=new Map,n=[];for(let r of e){let o=r.source.value;if(!r.specifiers.every(a=>u.types.isImportSpecifier(a))){n.push(r);continue}let i=t.get(o);if(!i){let a=new Set(r.specifiers.map(l=>l.local.name));t.set(o,{decl:r,names:a}),n.push(r);continue}for(let a of r.specifiers)i.names.has(a.local.name)||(i.names.add(a.local.name),i.decl.specifiers.push(a))}return n}function eo(e,t){let n=new Set,r=u.types.isIdentifier(e.tag)&&e.tag.name==="svg",o=Oe(e,n,{svg:r,onNested:dn(t)});W(o,{resolver:t.componentResolver,modules:{controlFlowModule:t.controlFlowModule,coreModule:t.libModule,routerModule:t.routerModule},strategyFor:c=>c.load}),U(o);let{code:s,imports:i,templates:a}=P.emit(o,{templateClone:t.templateClone,partialTemplates:t.partialTemplates});for(let c of i)n.add(c);for(let c of n)t.irImports.add(c);je(o,t),t.hasLitIR=!0;let l=u.template.expression(mn(s,a,t),{placeholderPattern:!1,plugins:["typescript"]})();return to(l,e),l}function to(e,t){if(!t.loc)return;let n=new Set,r=o=>{if(!n.has(o)){n.add(o),o.loc||(o.loc=t.loc,o.start=t.start,o.end=t.end);for(let s of u.types.VISITOR_KEYS[o.type]??[]){let i=o[s];if(Array.isArray(i))for(let a of i)a&&typeof a=="object"&&"type"in a&&r(a);else i&&typeof i=="object"&&"type"in i&&r(i)}}};r(e)}function je(e,t){if(e.kind==="component"&&e.source&&(e.source.origin==="builtin"?(t.controlFlowComponents.add(e.name),t.needsControlFlowImport=!0):Z(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)je(n,t)}var un,u,ln,cn,ne,dt=b(()=>{"use strict";un=require("@babel/helper-plugin-utils");se();ce();ke();Q();ae();u=require("@babel/core");st();it();te();ln=new Set(K),cn=new Set(B),ne=(0,un.declare)((e,t={})=>{e.assertVersion(7);let{delegateEvents:n=!0,signalModule:r="@fluixi/dom",controlFlowModule:o="@fluixi/dom",routerModule:s="@fluixi/core/router",reactiveModule:i="@fluixi/reactive/signal",templateClone:a=!0,partialTemplates:l=!0,format:c="both",litTag:p="html",resolve:d=[]}=t,m=X(d),x=c==="lit"||c==="both",y={irImports:new Set,libModule:"@fluixi/core",controlFlowModule:o,routerModule:s,templateClone:a,partialTemplates:l,hasJSX:!1,hasLitHTML:!1,needsControlFlowImport:!1,needsCreateMemo:!1,controlFlowComponents:new Set,resolvedComponents:new Map,deferredComponents:new Map,componentResolver:m,delegatedEvents:new Set,staticTemplates:new Map,staticCounter:0};return{name:"@fluixi/babel-plugin-jsx",manipulateOptions(g,h){h.plugins.push("jsx","typescript")},pre(g){Object.assign(g,y)},visitor:{Program:{enter(g,h){Object.assign(h,{hasJSX:!1,hasLitHTML:!1,hasLitIR:!1,needsControlFlowImport:!1,needsCreateMemo:!1,controlFlowComponents:new Set,resolvedComponents:new Map,deferredComponents:new Map,componentResolver:m,delegatedEvents:new Set,staticTemplates:new Map,staticCounter:0,libModule:"@fluixi/core",controlFlowModule:o,routerModule:s,templateClone:a,partialTemplates:l,irImports:new Set,needsCreateNativeElement:!1,needsInsert:!1,needsSpread:!1,needsCreateComponent:!1,needsMergeProps:!1})},exit(g,h){let E=[];if(h.hasJSX||h.hasLitIR){if(h.irImports.size>0){let R=new Set(["Show","For","Index","Switch","Match","Dynamic","ErrorBoundary","Portal","Suspense"]),S=new Set(["createMemo","createEffect","createRenderEffect","createRoot","createSignal","onCleanup","batch","untrack"]),I=Array.from(h.irImports),T=N=>u.types.importSpecifier(u.types.identifier(N),u.types.identifier(N)),v=N=>!g.scope.hasBinding(N),w=I.filter(N=>S.has(N)&&v(N)),k=I.filter(N=>!R.has(N)&&!S.has(N)&&v(N)),f=I.filter(N=>R.has(N)&&v(N));w.length>0&&E.push(u.types.importDeclaration(w.map(T),u.types.stringLiteral(i))),k.length>0&&E.push(u.types.importDeclaration(k.map(T),u.types.stringLiteral(r))),f.length>0&&E.push(u.types.importDeclaration(f.map(T),u.types.stringLiteral(o)))}if(h.needsCreateMemo&&!g.scope.hasBinding("createMemo")&&E.push(u.types.importDeclaration([u.types.importSpecifier(u.types.identifier("createMemo"),u.types.identifier("createMemo"))],u.types.stringLiteral(i))),h.needsControlFlowImport&&h.controlFlowComponents.size>0){let R=Array.from(h.controlFlowComponents).filter(k=>!g.scope.hasBinding(k)),S=h.libModule??"@fluixi/core",I=R.filter(k=>cn.has(k)),T=R.filter(k=>ln.has(k)),v=R.filter(k=>!ln.has(k)&&!cn.has(k)),w=(k,f)=>u.types.importDeclaration(k.map(N=>u.types.importSpecifier(u.types.identifier(N),u.types.identifier(N))),u.types.stringLiteral(f));v.length>0&&E.push(w(v,o)),T.length>0&&E.push(w(T,S)),I.length>0&&E.push(w(I,s))}let C=[];if(h.deferredComponents.size>0){for(let[R,S]of h.deferredComponents)g.scope.hasBinding(R)||C.push(u.types.variableDeclaration("const",[u.types.variableDeclarator(u.types.identifier(R),u.types.callExpression(u.types.identifier("deferred"),[u.types.arrowFunctionExpression([],u.types.callExpression(u.types.import(),[u.types.stringLiteral(S.module)])),u.types.objectExpression([u.types.objectProperty(u.types.identifier("strategy"),Zr(S.strategy)),u.types.objectProperty(u.types.identifier("export"),u.types.stringLiteral(S.export))])]))]));C.length>0&&!g.scope.hasBinding("deferred")&&E.push(u.types.importDeclaration([u.types.importSpecifier(u.types.identifier("deferred"),u.types.identifier("deferred"))],u.types.stringLiteral(h.libModule??"@fluixi/core")))}if(h.resolvedComponents.size>0){let R=new Map;for(let[S,I]of h.resolvedComponents){if(g.scope.hasBinding(S))continue;let T=R.get(I.module)??[];T.push({local:S,exported:I.export}),R.set(I.module,T)}for(let[S,I]of R)E.push(u.types.importDeclaration(I.map(({local:T,exported:v})=>v==="default"?u.types.importDefaultSpecifier(u.types.identifier(T)):u.types.importSpecifier(u.types.identifier(T),u.types.identifier(v))),u.types.stringLiteral(S)))}if(n&&h.delegatedEvents.size>0){E.push(u.types.importDeclaration([u.types.importSpecifier(u.types.identifier("delegateEvents"),u.types.identifier("delegateEvents"))],u.types.stringLiteral(r)));let R=u.types.arrayExpression(Array.from(h.delegatedEvents).map(I=>u.types.stringLiteral(I))),S=u.types.expressionStatement(u.types.callExpression(u.types.identifier("delegateEvents"),[R]));g.node.body.unshift(S)}if(C.length>0&&g.node.body.unshift(...C),h.staticTemplates.size>0){let R=[];for(let[S,I]of h.staticTemplates){let v=S.startsWith("svg:")?S.slice(4):S;R.push(u.types.variableDeclaration("const",[u.types.variableDeclarator(u.types.identifier(I),u.types.stringLiteral(v))]))}g.node.body.unshift(...R)}}E.length>0&&g.node.body.unshift(...Qr(E))}},JSXElement(g,h){h.hasJSX=!0,g.replaceWith(pn(g.node,h))},JSXFragment(g,h){h.hasJSX=!0,g.replaceWith(pn(g.node,h))},TaggedTemplateExpression(g,h){x&&u.types.isIdentifier(g.node.tag)&&(g.node.tag.name===p||g.node.tag.name==="svg")&&g.replaceWith(eo(g.node,h))}}}})});var fn=b(()=>{"use strict"});var gn={};oe(gn,{babelPluginReactiveJSX:()=>no,createPlugin:()=>ro,createPreset:()=>Le,default:()=>ne,presets:()=>oo});function ro(e){return[ne,e]}function Le(e={}){return{plugins:[[ne,{runtime:"automatic",importSource:"@fluixi/jsx",development:!1,detectReactivity:!0,useLitHTML:!0,hoistStatics:!0,delegateEvents:!0,optimizeControlFlow:!0,sourceMaps:!0,...e}]]}}var no,oo,hn=b(()=>{"use strict";dt();fn();dt();no=ne;oo={production:Le({development:!1,hoistStatics:!0,delegateEvents:!0,optimizeControlFlow:!0}),development:Le({development:!0,hoistStatics:!1,sourceMaps:!0}),minimal:Le({detectReactivity:!1,useLitHTML:!1,hoistStatics:!1,delegateEvents:!1,optimizeControlFlow:!1})}});function yn(e,t,n={}){let r=new Set,o=Te(e,[...t],r,{svg:n.svg});z(o),W(o,{resolver:X(n.resolve??[]),modules:{controlFlowModule:n.controlFlowModule??"@fluixi/dom",coreModule:n.coreModule??"@fluixi/core",routerModule:n.routerModule??"@fluixi/core/router"},strategyFor:l=>l.load}),U(o);let{code:s,imports:i,templates:a}=P.emit(o,{templateClone:n.templateClone,partialTemplates:n.partialTemplates});for(let l of i)r.add(l);return n.hoistTemplates?{code:s,imports:[...r],ir:o,templates:a}:{code:ee(s,a),imports:[...r],ir:o}}var vn=b(()=>{"use strict";fe();ke();te();ce();se();nt()});function q(e,t){if(e)switch(e.type){case"Identifier":t.add(e.name);return;case"ObjectPattern":for(let n of e.properties)n.type==="RestElement"?q(n.argument,t):q(n.value,t);return;case"ArrayPattern":for(let n of e.elements)q(n,t);return;case"AssignmentPattern":q(e.left,t);return;case"RestElement":q(e.argument,t);return}}function xn(e,t){switch(e.type){case"ImportDeclaration":for(let n of e.specifiers)q(n.local,t);return;case"VariableDeclaration":for(let n of e.declarations)q(n.id,t);return;case"FunctionDeclaration":case"ClassDeclaration":q(e.id,t);return;case"ExportNamedDeclaration":case"ExportDefaultDeclaration":e.declaration&&xn(e.declaration,t);return}}function re(e){let t=new Set;for(let n of e.body)xn(n,t);return t}var Ae=b(()=>{"use strict"});function j(e,t){if(e)switch(e.type){case"Identifier":t.add(e.name);return;case"ObjectPattern":for(let n of e.properties)n.type==="RestElement"?j(n.argument,t):j(n.value,t);return;case"ArrayPattern":for(let n of e.elements)j(n,t);return;case"AssignmentPattern":j(e.left,t);return;case"RestElement":j(e.argument,t);return}}function mt(e){switch(e.type){case"StringLiteral":case"NumericLiteral":case"BooleanLiteral":case"NullLiteral":case"BigIntLiteral":case"RegExpLiteral":case"Identifier":return!0;case"Literal":return!0;case"TemplateLiteral":return e.expressions.every(mt);case"UnaryExpression":return mt(e.argument);case"MemberExpression":return!1;default:return!1}}function Fe(e,t){if(!(!e||typeof e!="object")){t(e);for(let n of Object.keys(e)){if(n==="loc"||n==="range"||n==="leadingComments"||n==="trailingComments")continue;let r=e[n];if(Array.isArray(r))for(let o of r)o&&typeof o=="object"&&Fe(o,t);else r&&typeof r=="object"&&typeof r.type=="string"&&Fe(r,t)}}}function so(e){let t=new Set;return Fe(e,n=>{if(n.type==="AssignmentExpression")j(n.left,t);else if(n.type==="UpdateExpression"){let r=n.argument;r?.type==="Identifier"&&t.add(r.name)}}),t}function io(e,t){let n=new Set,r=o=>{let s=new Set;j(o,s);for(let i of s)t.has(i)&&n.add(i)};return Fe(e,o=>{switch(o.type){case"VariableDeclarator":r(o.id);return;case"FunctionDeclaration":case"FunctionExpression":case"ArrowFunctionExpression":r(o.id);for(let s of o.params??[])r(s);return;case"CatchClause":r(o.param);return;case"ClassDeclaration":case"ClassExpression":r(o.id);return}}),n}function bn(e,t,n){for(let r of e.properties??[]){if(r.type==="RestElement"){let p=r.argument;if(p?.type!=="Identifier"||t.length>0){let d=new Set;j(p,d);for(let m of d)n.bails.push({name:m,reason:"rest"});continue}n.rest={name:p.name,keys:[]};continue}if(r.computed){let p=new Set;j(r.value,p);for(let d of p)n.bails.push({name:d,reason:"computed"});continue}let o=r.key,s=o.type==="Identifier"?o.name:o.value,i=r.value,a;i.type==="AssignmentPattern"&&(a=i.right,i=i.left);let l=[...t,s];if(i.type==="Identifier"){if(a&&!mt(a)){n.bails.push({name:i.name,reason:"unsafe-default"});continue}n.reads.push({name:i.name,path:l,...a?{fallback:a}:{}});continue}if(i.type==="ObjectPattern"){if(a){let p=new Set;j(i,p);for(let d of p)n.bails.push({name:d,reason:"unsafe-default"});continue}bn(i,l,n);continue}let c=new Set;j(i,c);for(let p of c)n.bails.push({name:p,reason:"computed"})}}function Je(e,t){let n={reads:[],bails:[]};if(e?.type!=="ObjectPattern"||(bn(e,[],n),n.rest&&(t?.type!=="BlockStatement"?(n.bails.push({name:n.rest.name,reason:"rest"}),delete n.rest):n.rest.keys=(e.properties??[]).filter(a=>a.type!=="RestElement"&&!a.computed).map(a=>{let l=a.key;return l.type==="Identifier"?l.name:l.value})),n.reads.length===0&&!n.rest))return n;let r=new Set(n.reads.map(a=>a.name));n.rest&&r.add(n.rest.name);let o=so(t),s=io(t,r),i=[];for(let a of n.reads)o.has(a.name)?n.bails.push({name:a.name,reason:"reassigned"}):s.has(a.name)?n.bails.push({name:a.name,reason:"shadowed"}):i.push(a);return n.reads=i,n.rest&&o.has(n.rest.name)?(n.bails.push({name:n.rest.name,reason:"reassigned"}),delete n.rest):n.rest&&s.has(n.rest.name)&&(n.bails.push({name:n.rest.name,reason:"shadowed"}),delete n.rest),n}function _e(e){switch(e){case"rest":return"this rest element cannot be served by splitProps, and copying the props into a plain object would lose the getters";case"computed":return"the property is not known until it runs";case"reassigned":return"the binding is assigned to, and props are read-only";case"shadowed":return"an inner scope binds the same name";case"unsafe-default":return"the default would have to run again on every read"}}var ft=b(()=>{"use strict"});function ve(e,t,n=null){if(!(!e||typeof e!="object"||typeof e.type!="string")&&!e.type.startsWith("TS")&&t(e,n)!==!1)for(let r of Object.keys(e)){if(r==="loc"||r==="leadingComments"||r==="trailingComments")continue;let o=e[r];if(Array.isArray(o))for(let s of o)ve(s,t,e);else o&&typeof o=="object"&&ve(o,t,e)}}function Nn(e){return!!e&&e[0]>="A"&&e[0]<="Z"}function ao(e){let t=[];return ve(e,n=>{if(n.type==="FunctionDeclaration"&&Nn(n.id?.name)){t.push(n);return}if(n.type==="VariableDeclarator"&&Nn(n.id?.name)){let r=n.init;r&&(r.type==="ArrowFunctionExpression"||r.type==="FunctionExpression")&&t.push(r)}}),t}function lo(e){let t=new Set;return ve(e,n=>{n.type==="Identifier"&&t.add(n.name)}),t}function co(e,t){if(!t)return!0;switch(t.type){case"MemberExpression":case"OptionalMemberExpression":return!(t.property===e&&!t.computed);case"ObjectProperty":case"ObjectMethod":case"ClassProperty":case"ClassMethod":return!(t.key===e&&!t.computed);case"LabeledStatement":case"BreakStatement":case"ContinueStatement":return t.label!==e;case"ImportSpecifier":case"ExportSpecifier":return!1;default:return!0}}function gt(e,t,n={}){let r=[],o=[],s=new Set;for(let i of ao(e)){let a=i.params?.[0];if(a?.type!=="ObjectPattern")continue;let l=Je(a,i.body);for(let y of l.bails)o.push({name:y.name,reason:y.reason,message:_e(y.reason),start:a.start});if(l.bails.length>0||l.reads.length===0&&!l.rest)continue;let c=lo(i),p=n.parameterName??"props";for(;c.has(p);)p=`_${p}`;let d=new Map;for(let y of l.reads){let g=`${p}.${y.path.join(".")}`,h=y.fallback;d.set(y.name,h?`(${g} === undefined ? ${t.slice(h.start,h.end)} : ${g})`:g)}let m=a.typeAnnotation;if(r.push({start:a.start,end:m?.start??a.end,code:p}),l.rest){let y=l.rest.keys.map(h=>JSON.stringify(h)).join(", "),g=i.body;r.push({start:g.start+1,end:g.start+1,code:`
|
|
2
2
|
const [, ${l.rest.name}] = splitProps(${p}, [${y}]);`}),s.add("splitProps")}let x=[];ve(i.body,(y,g)=>{if(y.type!=="Identifier")return;let h=d.get(y.name);if(!h)return;let E=g?.type==="ObjectProperty"&&g.shorthand&&g.value===y;if(!E&&!co(y,g))return;let C=l.reads.find(R=>R.name===y.name).path;x.push({node:y,parent:E?g:null,text:h,property:C[C.length-1]})});for(let y of x)y.parent?r.push({start:y.parent.start,end:y.parent.end,code:`${y.node.name}: ${y.text}`}):r.push({start:y.node.start,end:y.node.end,code:y.text}),po(y.node,p,y.property)}return{edits:r,diagnostics:o,used:s}}function po(e,t,n){e.type="MemberExpression",e.computed=!1,e.optional=!1,e.object={type:"Identifier",name:t,start:e.start,end:e.start},e.property={type:"Identifier",name:n,start:e.end,end:e.end},delete e.name}function En(e,t="module.tsx",n={}){let r=(0,Sn.parse)(e,{sourceType:"module",plugins:["typescript","jsx"],errorRecovery:!0}),{edits:o,diagnostics:s,used:i}=gt(r.program,e,n),a=new Rn.default(e);for(let l of o)l.start===l.end?a.appendLeft(l.start,l.code):a.overwrite(l.start,l.end,l.code);return i.has("splitProps")&&!re(r.program).has("splitProps")&&a.prepend(`import { splitProps } from ${JSON.stringify(n.runtimeModule??"@fluixi/dom")};
|
|
3
3
|
`),{code:a.toString(),map:a.generateMap({source:t,includeContent:!0,hires:!0}),diagnostics:s,rewritten:o.filter(l=>l.code!==(n.parameterName??"props")).length}}var Sn,Rn,ht=b(()=>{"use strict";Sn=require("@babel/parser"),Rn=J(require("magic-string"),1);ft();Ae()});function M(e,t){if(e)switch(e.type){case"Identifier":t.add(e.name);return;case"ObjectPattern":for(let n of e.properties??[])n.type==="RestElement"?M(n.argument,t):M(n.value,t);return;case"ArrayPattern":for(let n of e.elements??[])M(n,t);return;case"AssignmentPattern":M(e.left,t);return;case"RestElement":M(e.argument,t);return}}function xe(e,t){if(!(!e||typeof e!="object"||typeof e.type!="string")){t(e);for(let n of Object.keys(e)){if(n==="loc"||n==="leadingComments"||n==="trailingComments")continue;let r=e[n];if(Array.isArray(r))for(let o of r)xe(o,t);else r&&typeof r=="object"&&xe(r,t)}}}function uo(e,t){if(e.type!=="CallExpression")return;let n=e.callee;if(n?.type!=="Identifier")return;let r=n.name,o=t.primitives.get(r);if(o)return o;let s=L[r];if(s&&!t.shadowed.has(r))return s.returns}function mo(e,t,n){if(Array.isArray(t)){e.type==="ArrayPattern"&&e.elements.forEach((r,o)=>{let s=t[o];r?.type==="Identifier"&&s&&n.set(r.name,s)});return}e.type==="Identifier"&&n.set(e.name,t)}function wn(e){let t=new Set;return xe(e,n=>{switch(n.type){case"VariableDeclarator":M(n.id,t);return;case"FunctionDeclaration":case"FunctionExpression":case"ArrowFunctionExpression":M(n.id,t);for(let r of n.params??[])M(r,t);return;case"ClassDeclaration":case"ClassExpression":M(n.id,t);return;case"ImportSpecifier":case"ImportDefaultSpecifier":case"ImportNamespaceSpecifier":M(n.local,t);return;case"CatchClause":M(n.param,t);return}}),t}function kn(e){let t={kinds:new Map,primitives:new Map,shadowed:new Set},n=e;xe(n,r=>{let o=new Set;if(r.type==="VariableDeclarator")M(r.id,o);else if(r.type==="FunctionDeclaration"||r.type==="ClassDeclaration")M(r.id,o);else if(r.type==="ImportDefaultSpecifier"||r.type==="ImportNamespaceSpecifier")M(r.local,o);else if(r.type==="ImportSpecifier")M(r.local,o);else if(r.type==="FunctionExpression"||r.type==="ArrowFunctionExpression"||r.type==="FunctionDeclaration")for(let s of r.params??[])M(s,o);for(let s of o)L[s]&&t.shadowed.add(s)});for(let r of n.body??[])if(r.type==="ImportDeclaration"&&Ot(r.source?.value))for(let o of r.specifiers??[]){if(o.type!=="ImportSpecifier")continue;let s=o.imported,i=s.type==="Identifier"?s.name:s.value,a=Tt[i];a&&t.primitives.set(o.local.name,a)}return xe(n,r=>{if(r.type!=="VariableDeclarator"||!r.init)return;let o=uo(r.init,t);o&&mo(r.id,o,t.kinds)}),t}var yt=b(()=>{"use strict";le()});function vt(e,t){if(!(!e||typeof e!="object"||typeof e.type!="string")){t(e);for(let n of Object.keys(e)){if(n==="loc"||n==="leadingComments"||n==="trailingComments")continue;let r=e[n];if(Array.isArray(r))for(let o of r)vt(o,t);else r&&typeof r=="object"&&vt(r,t)}}}function In(e){let t=[],n=[],r=new Map,o=new Set,{shadowed:s}=kn(e);return vt(e,i=>{if(i.type!=="CallExpression")return;let a=i.callee;if(a?.type!=="Identifier")return;let l=a.name;if(!$t(l))return;if(s.has(l)){o.has(l)||(o.add(l),n.push({name:l,message:`${l} is reserved for the compiler, and this module binds it. The call keeps your binding's meaning; rename it to use the intrinsic.`,start:a.start}));return}let c=L[l];t.push({start:a.start,end:a.end,code:c.export});let p=r.get(c.module)??new Set;p.add(c.export),r.set(c.module,p)}),{edits:t,diagnostics:n,imports:r}}function Cn(e,t){let n=[];for(let[r,o]of[...e.imports].sort(([s],[i])=>s.localeCompare(i))){let s=[...o].filter(i=>!t.has(i)).sort();s.length&&n.push(`import { ${s.join(", ")} } from ${JSON.stringify(r)};`)}return n.length?`${n.join(`
|
|
4
4
|
`)}
|
|
5
5
|
`:""}var Tn=b(()=>{"use strict";le();yt()});function Be(e,t,n=null,r=""){if(!(!e||typeof e!="object")){if(Array.isArray(e)){for(let o of e)Be(o,t,n,r);return}typeof e.type=="string"&&t(e,n,r);for(let o of Object.keys(e))o==="loc"||o==="leadingComments"||o==="trailingComments"||Be(e[o],t,typeof e.type=="string"?e:n,o)}}function vo(e,t,n){return xt(e)?!(t&&xt(t)&&n==="children"):!1}function xo(e,t){return e.type==="TaggedTemplateExpression"&&e.tag?.type==="Identifier"&&(e.tag.name===t||e.tag.name==="svg")}function On(e){return e.filter(t=>!e.some(n=>n!==t&&n.start<=t.start&&n.end>=t.end&&n.end-n.start>t.end-t.start))}function Xe(e,t,n,r){let o=On(r.filter(i=>i.start>=t&&i.end<=n)).sort((i,a)=>a.start-i.start),s=e.slice(t,n);for(let i of o)s=s.slice(0,i.start-t)+i.code+s.slice(i.end-t);return s}function bo(e,t,n){let r={code:Xe(e,t.start,t.end,n),reactive:G(A(t))};return t.type==="ArrowFunctionExpression"&&t.body?.type!=="BlockStatement"&&(r.arrow={params:t.params.map(o=>Xe(e,o.start,o.end,n)),body:Xe(e,t.body.start,t.body.end,n),bodyReactive:G(A(t.body))}),t.type==="ObjectExpression"&&(r.object=!0),r}function Pn(e,t,n){if(!t||t.length===0)return e;let r=new Map;for(let o of t){let s=`${o.svg?"svg:":""}${o.html}`,i=n.get(s);i||(i=`_fxTmpl$${n.size}`,n.set(s,i)),r.set(o.id,i)}return e.replace(/_tmpl\$\d+/g,o=>r.get(o)??o)}function bt(e,t){if(e.kind==="component"&&e.load&&!e.source&&Z(e.load)&&(t.ignoredLoad.has(e.name)||t.ignoredLoad.set(e.name,e.load)),e.kind==="component"&&e.source){let n=e.source;n.origin==="builtin"?t.builtins.add(e.name):Z(n.loading)&&!t.resolved.has(e.name)?t.deferred.set(e.name,n):(t.deferred.delete(e.name),t.resolved.set(e.name,n))}if("props"in e&&e.props)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)bt(n,t)}function No(e,t){for(let n of e.body??[])if(n.type==="ImportDeclaration")for(let r of n.specifiers??[]){if(r.local?.name!==t)continue;if(r.type==="ImportNamespaceSpecifier")return;let o=r.type==="ImportDefaultSpecifier"?"default":r.imported?.name??r.imported?.value;return{module:n.source.value,export:o,declaration:n,specifier:r}}}function So(e,t){for(let n of e.body??[])if(n.type==="ImportDeclaration"){for(let r of n.specifiers??[])if(r.type==="ImportNamespaceSpecifier"&&r.local?.name===t)return!0}return!1}function Ro(e,t,n){let r=!1;return Be(e,o=>{r||o.type!=="Identifier"||o.name!==t||o.start===n.local?.start&&o.end===n.local?.end||(r=!0)}),r}function Eo(e){let t=[`kind: ${JSON.stringify(e.kind)}`];return e.kind==="visible"&&e.rootMargin&&t.push(`rootMargin: ${JSON.stringify(e.rootMargin)}`),e.kind==="interaction"&&t.push(`events: ${JSON.stringify(e.events)}`),e.kind==="media"&&t.push(`query: ${JSON.stringify(e.query)}`),`{ ${t.join(", ")} }`}function wo(e){let t=[];return e.quasi.quasis.forEach((n,r)=>{if(t.push({kind:"static",text:n.value.cooked??n.value.raw,start:n.start}),r<e.quasi.expressions.length){let o=e.quasi.expressions[r];t.push({kind:"hole",index:r,start:o.start,end:o.end})}}),t}function Dn(e,t,n={}){let r=n.litTag??"html",o=n.format??"both",s=o!=="jsx",i=o!=="lit",a=s&&(e.includes(`${r}\``)||e.includes("svg`")),l=n.intrinsics!==!1&&Mt(e);if(!a&&!(i&&e.includes("<"))&&!l)return null;let c=(0,Mn.parse)(e,{sourceType:"module",plugins:["jsx","typescript"],errorRecovery:!0}),p=[];Be(c.program,(f,N,$)=>{(s&&xo(f,r)||i&&vo(f,N,$))&&p.push(f)});let d=n.propsDestructure===!1?{edits:[],diagnostics:[],used:new Set}:gt(c.program,e,{runtimeModule:n.runtimeModule}),m=n.intrinsics===!1?{edits:[],diagnostics:[],imports:new Map}:In(c.program);if(p.length===0&&d.edits.length===0&&m.edits.length===0&&m.diagnostics.length===0&&d.diagnostics.length===0)return null;p.sort((f,N)=>N.start-f.start||f.end-N.end);let y=new Set(d.used),g={builtins:new Set,resolved:new Map,deferred:new Map,delegatedEvents:new Set,ignoredLoad:new Map,unresolved:new Set,declared:wn(c.program)},h=new Map,E=[...d.edits,...m.edits];for(let f of p){let N=p.some(D=>D!==f&&D.start<=f.start&&D.end>=f.end&&D.end-D.start>f.end-f.start);if(xt(f)){E.push({start:f.start,end:f.end,code:ko(e,f,E,N,y,g,h,n)});continue}let $=f.quasi.expressions.map(D=>bo(e,D,E)),_=yn(wo(f),$,{...n,hoistTemplates:!0,templateClone:n.templateClone??!0,partialTemplates:N?!1:n.partialTemplates??!0,svg:f.tag.name==="svg"});for(let D of _.imports)y.add(D);bt(_.ir,g),E.push({start:f.start,end:f.end,code:Pn(_.code,_.templates,h)})}let C=new $n.default(e);for(let f of On(E))f.start===f.end?C.appendLeft(f.start,f.code):C.overwrite(f.start,f.end,f.code);let R=re(c.program),S=new Map;for(let[f]of g.ignoredLoad)R.has(f)||S.set(f,"unsupplied");for(let[f,N]of[...g.ignoredLoad]){if(!R.has(f))continue;let $=No(c.program,f);if(!$){S.set(f,So(c.program,f)?"namespace":"local");continue}if(Ro(c.program,f,$.specifier)){S.set(f,"value");continue}let _=$.declaration.specifiers.filter(be=>be!==$.specifier),D=_.length===0&&e[$.declaration.end]===`
|
|
6
|
-
`?$.declaration.end+1:$.declaration.end;C.overwrite($.declaration.start,D,_.length===0?"":`import { ${_.map(be=>e.slice(be.start,be.end)).join(", ")} } from ${JSON.stringify($.declaration.source.value)};`),g.deferred.set(f,{module:$.module,export:$.export,origin:"rule",loading:N}),R.delete(f),g.ignoredLoad.delete(f)}let I=Io(y,g,h,R,n);I&&C.prepend(I);let T=Cn(m,R);T&&C.prepend(T);let v={value:f=>`${f} is used as a value here, not only as a tag, so its import has to stay — deferring would hand those references a lazy wrapper instead of the component. Defer it at the point it is rendered, or keep it eager.`,namespace:f=>`${f} came in through a namespace import, which has no single export to defer. Import ${f} by name.`,local:f=>`${f} is declared in this file, so there is no module to load separately. Move it to its own file and import it.`,unsupplied:f=>`nothing supplies ${f}, so there is no import to defer. Import it, or add a \`resolve\` rule for it.`},w=[...g.ignoredLoad].map(([f,N])=>({name:f,strategy:N,message:`load:${N.kind} has no effect on <${f}>: ${v[S.get(f)??"unsupplied"](f)}`})),k=[...g.unresolved].map(f=>({name:f,message:`<${f}> is not defined: nothing imports it and no \`resolve\` rule supplies it. This compiles to a reference to a name that does not exist, so the component renders nothing. Import ${f}, or add a \`resolve\` rule for it.`}));return{code:C.toString(),map:C.generateMap({source:t,includeContent:!0,hires:!0}),...w.length?{loadDiagnostics:w}:{},...k.length?{unresolvedDiagnostics:k}:{},...d.diagnostics.length?{propsDiagnostics:d.diagnostics}:{},...m.diagnostics.length?{intrinsicDiagnostics:m.diagnostics}:{}}}function ko(e,t,n,r,o,s,i,a){let l=De(t,{code:d=>Xe(e,d.start,d.end,n),used:o});z(l);let c=W(l,{resolver:X(a.resolve??[]),isBound:d=>s.declared.has(d),modules:{controlFlowModule:a.controlFlowModule??a.runtimeModule??"@fluixi/dom",coreModule:a.coreModule??"fluixi",routerModule:a.routerModule??"fluixi/router"},strategyFor:d=>d.load});for(let d of c.unresolved)s.unresolved.add(d);U(l);let p=P.emit(l,{templateClone:a.templateClone??!0,partialTemplates:r?!1:a.partialTemplates??!0});for(let d of p.imports)o.add(d);return bt(l,s),Pn(p.code,p.templates,i)}function Io(e,t,n,r,o){let s=o.runtimeModule??"@fluixi/dom",i=o.coreModule??"fluixi",a=new Map,l=(m,x)=>a.set(m,[...a.get(m)??[],x]),c=new Set(e);for(let m of t.builtins)c.add(m);t.delegatedEvents.size>0&&c.add("delegateEvents");for(let m of[...c].sort())r.has(m)||(yo.has(m)?l(o.reactiveModule??"@fluixi/reactive/signal",m):ho.has(m)?l(o.routerModule??"fluixi/router",m):go.has(m)?l(i,m):fo.has(m)?l(o.controlFlowModule??s,m):l(s,m));for(let[m,x]of t.resolved)r.has(m)||l(x.module,x.export==="default"?`default as ${m}`:m===x.export?m:`${x.export} as ${m}`);let p=[];for(let[m,x]of a)p.push(`import { ${x.join(", ")} } from ${JSON.stringify(m)};`);let d=[...t.deferred].filter(([m])=>!r.has(m));if(d.length>0){r.has("deferred")||p.push(`import { deferred } from ${JSON.stringify(i)};`);for(let[m,x]of d)p.push(`const ${m} = deferred(() => import(${JSON.stringify(x.module)}), { strategy: ${Eo(x.loading)}, export: ${JSON.stringify(x.export)} });`)}for(let[m,x]of n)p.push(`const ${x} = ${JSON.stringify(m.startsWith("svg:")?m.slice(4):m)};`);return t.delegatedEvents.size>0&&p.push(`delegateEvents(${JSON.stringify([...t.delegatedEvents])});`),p.length>0?p.join(`
|
|
6
|
+
`?$.declaration.end+1:$.declaration.end;C.overwrite($.declaration.start,D,_.length===0?"":`import { ${_.map(be=>e.slice(be.start,be.end)).join(", ")} } from ${JSON.stringify($.declaration.source.value)};`),g.deferred.set(f,{module:$.module,export:$.export,origin:"rule",loading:N}),R.delete(f),g.ignoredLoad.delete(f)}let I=Io(y,g,h,R,n);I&&C.prepend(I);let T=Cn(m,R);T&&C.prepend(T);let v={value:f=>`${f} is used as a value here, not only as a tag, so its import has to stay — deferring would hand those references a lazy wrapper instead of the component. Defer it at the point it is rendered, or keep it eager.`,namespace:f=>`${f} came in through a namespace import, which has no single export to defer. Import ${f} by name.`,local:f=>`${f} is declared in this file, so there is no module to load separately. Move it to its own file and import it.`,unsupplied:f=>`nothing supplies ${f}, so there is no import to defer. Import it, or add a \`resolve\` rule for it.`},w=[...g.ignoredLoad].map(([f,N])=>({name:f,strategy:N,message:`load:${N.kind} has no effect on <${f}>: ${v[S.get(f)??"unsupplied"](f)}`})),k=[...g.unresolved].map(f=>({name:f,message:`<${f}> is not defined: nothing imports it and no \`resolve\` rule supplies it. This compiles to a reference to a name that does not exist, so the component renders nothing. Import ${f}, or add a \`resolve\` rule for it.`}));return{code:C.toString(),map:C.generateMap({source:t,includeContent:!0,hires:!0}),...w.length?{loadDiagnostics:w}:{},...k.length?{unresolvedDiagnostics:k}:{},...d.diagnostics.length?{propsDiagnostics:d.diagnostics}:{},...m.diagnostics.length?{intrinsicDiagnostics:m.diagnostics}:{}}}function ko(e,t,n,r,o,s,i,a){let l=De(t,{code:d=>Xe(e,d.start,d.end,n),used:o});z(l);let c=W(l,{resolver:X(a.resolve??[]),isBound:d=>s.declared.has(d),modules:{controlFlowModule:a.controlFlowModule??a.runtimeModule??"@fluixi/dom",coreModule:a.coreModule??"@fluixi/core",routerModule:a.routerModule??"@fluixi/core/router"},strategyFor:d=>d.load});for(let d of c.unresolved)s.unresolved.add(d);U(l);let p=P.emit(l,{templateClone:a.templateClone??!0,partialTemplates:r?!1:a.partialTemplates??!0});for(let d of p.imports)o.add(d);return bt(l,s),Pn(p.code,p.templates,i)}function Io(e,t,n,r,o){let s=o.runtimeModule??"@fluixi/dom",i=o.coreModule??"@fluixi/core",a=new Map,l=(m,x)=>a.set(m,[...a.get(m)??[],x]),c=new Set(e);for(let m of t.builtins)c.add(m);t.delegatedEvents.size>0&&c.add("delegateEvents");for(let m of[...c].sort())r.has(m)||(yo.has(m)?l(o.reactiveModule??"@fluixi/reactive/signal",m):ho.has(m)?l(o.routerModule??"@fluixi/core/router",m):go.has(m)?l(i,m):fo.has(m)?l(o.controlFlowModule??s,m):l(s,m));for(let[m,x]of t.resolved)r.has(m)||l(x.module,x.export==="default"?`default as ${m}`:m===x.export?m:`${x.export} as ${m}`);let p=[];for(let[m,x]of a)p.push(`import { ${x.join(", ")} } from ${JSON.stringify(m)};`);let d=[...t.deferred].filter(([m])=>!r.has(m));if(d.length>0){r.has("deferred")||p.push(`import { deferred } from ${JSON.stringify(i)};`);for(let[m,x]of d)p.push(`const ${m} = deferred(() => import(${JSON.stringify(x.module)}), { strategy: ${Eo(x.loading)}, export: ${JSON.stringify(x.export)} });`)}for(let[m,x]of n)p.push(`const ${x} = ${JSON.stringify(m.startsWith("svg:")?m.slice(4):m)};`);return t.delegatedEvents.size>0&&p.push(`delegateEvents(${JSON.stringify([...t.delegatedEvents])});`),p.length>0?p.join(`
|
|
7
7
|
`)+`
|
|
8
8
|
`:null}var Mn,$n,fo,go,ho,yo,xt,jn=b(()=>{"use strict";Mn=require("@babel/parser"),$n=J(require("magic-string"),1);vn();Q();Pe();he();ct();fe();ke();ce();se();te();Ae();ht();Tn();le();yt();ae();fo=new Set(ie),go=new Set(K),ho=new Set(B),yo=new Set(["createMemo","createEffect","createRenderEffect","createRoot","createSignal","onCleanup","batch","untrack"]);xt=e=>e.type==="JSXElement"||e.type==="JSXFragment"});var Nt={};oe(Nt,{explainBail:()=>_e,moduleBindings:()=>re,planPropsDestructure:()=>Je,shapeOf:()=>A,transformProps:()=>En,transformTemplates:()=>Dn});var St=b(()=>{"use strict";jn();Ae();he();ht();ft()});function Co(e){let t=5381;for(let n=0;n<e.length;n++)t=t*33^e.charCodeAt(n);return(t>>>0).toString(16)}function He(e,t,n){let r=(e||"unknown").replace(t?t+"/":"","");return`${Co(r)}:${n}`}var Rt=b(()=>{"use strict"});var An={};oe(An,{transformServerFunctions:()=>$o});function Mo({types:e}){return{name:"fluixi-server-functions",visitor:{Program:{enter(t,n){n.fxIndex=0,n.fxUsed=null},exit(t,n){n.fxUsed&&t.unshiftContainer("body",e.importDeclaration([e.importSpecifier(e.identifier(n.fxUsed),e.identifier(n.fxUsed))],e.stringLiteral(n.opts.runtimeModule||To)))}},"FunctionDeclaration|FunctionExpression|ArrowFunctionExpression":(t,n)=>{let r=t.node.body;if(!e.isBlockStatement(r))return;let s=(r.directives||[]).findIndex(p=>p.value.value==="use server");if(s<0)return;r.directives.splice(s,1);let i=He(n.opts.filename||n.filename||"unknown",n.opts.root,n.fxIndex++),a=!!n.opts.ssr,l=a?"$$registerServerFn":"$$createServerReference";n.fxUsed=l;let c=a?e.callExpression(e.identifier(l),[e.stringLiteral(i),t.isFunctionDeclaration()?e.functionExpression(null,t.node.params,r,t.node.generator,t.node.async):t.node]):e.callExpression(e.identifier(l),[e.stringLiteral(i)]);t.isFunctionDeclaration()?t.replaceWith(e.variableDeclaration("const",[e.variableDeclarator(t.node.id,c)])):t.replaceWith(c),t.skip()}}}}function $o(e,t){if(!e.includes("use server"))return null;let n=(0,Ln.transformSync)(e,{filename:t.filename,configFile:!1,babelrc:!1,sourceMaps:!0,parserOpts:{plugins:["typescript","jsx"]},plugins:[[Mo,t]]});return n?.code?{code:n.code,map:n.map}:null}var Ln,To,Fn=b(()=>{"use strict";Ln=require("@babel/core");Rt();To="@fluixi/start/server-fn"});var Xn={};oe(Xn,{transformServerFns:()=>jo});function Do(e){if(!Po.has(e.type))return null;let t=e.body;if(!t||t.type!=="BlockStatement")return null;for(let n of t.directives??[])if(n.value?.value==="use server")return n;return null}function Et(e,t){if(!(!e||typeof e!="object")){if(Array.isArray(e)){for(let n of e)Et(n,t);return}if(typeof e.type=="string"){let n=Do(e);if(n){t.push({fn:e,directive:n});return}}for(let n of Object.keys(e))n==="loc"||n==="leadingComments"||n==="trailingComments"||Et(e[n],t)}}function jo(e,t){if(!e.includes("use server"))return null;let n=(0,Jn.parse)(e,{sourceType:"module",plugins:["jsx","typescript"],errorRecovery:!0}),r=[];if(Et(n.program,r),r.length===0)return null;let o=t.ssr?"$$registerServerFn":"$$createServerReference",s=new _n.default(e);return r.forEach(({fn:i,directive:a},l)=>{let c=He(t.filename,t.root,l),p=i.type==="FunctionDeclaration";if(!t.ssr){let d=`${o}(${JSON.stringify(c)})`;s.overwrite(i.start,i.end,p?`const ${i.id.name} = ${d};`:d);return}s.remove(a.start,a.end),s.appendLeft(i.start,p?`const ${i.id.name} = ${o}(${JSON.stringify(c)}, `:`${o}(${JSON.stringify(c)}, `),s.appendRight(i.end,p?");":")")}),s.prepend(`import { ${o} } from ${JSON.stringify(t.runtimeModule??Oo)};
|
|
9
9
|
`),{code:s.toString(),map:s.generateMap({source:t.filename,includeContent:!0,hires:!0})}}var Jn,_n,Oo,Po,Bn=b(()=>{"use strict";Jn=require("@babel/parser"),_n=J(require("magic-string"),1);Rt();Oo="@fluixi/start/server-fn",Po=new Set(["FunctionDeclaration","FunctionExpression","ArrowFunctionExpression"])});var Bo={};oe(Bo,{createBabelPlugin:()=>Ve,createESBuildPlugin:()=>qn,createRollupPlugin:()=>Gn,createTypeScriptTransformer:()=>Vn,createVitePlugin:()=>Wn,createWebpackLoader:()=>zn,default:()=>Xo,serverFunctionsVitePlugin:()=>_o});module.exports=nr(Bo);var H=require("node:fs"),O=require("node:path");se();ae();le();var ar=new Set(["Text","Image","Option","Audio","Comment","Range","Selection","Notification","Event","Document","Element","Node","Screen","Window","Location","History","Storage","Response","Request","Headers"]);function lr(e){if(e.startsWith(".")||e.startsWith("/")||/^[~@]\//.test(e))return;let t=e.split("/");return e.startsWith("@")?t.slice(0,2).join("/"):t[0]}function Ge(e){return`_${e.replace(/[^A-Za-z0-9]/g,"_")}`}function Pt(e,t={}){let{available:n,builtins:r=!0,intrinsics:o=!0,generator:s="@fluixi/compiler",specifier:i=v=>v}=t,a=[...e];r&&a.push({components:Se()});let l=X(a),c=n?new Set(n):void 0,p=[],d=[],m=[],x=new Map;for(let v of[...l.names()].sort()){let w=l.resolve(v);if(!w)continue;let k=lr(w.module);ar.has(v)?d.push(v):c&&k&&!c.has(k)?m.push(v):(p.push(v),x.set(v,w))}let y=o?[...new Set(Object.values(L).map(v=>v.module))]:[],h=[...new Set([...p.map(v=>x.get(v).module),...y])].sort().map(v=>`import * as ${Ge(v)} from '${i(v)}';`),E=p.map(v=>{let w=x.get(v),k=Ge(w.module);return w.export==="default"?` const ${v}: typeof ${k}.default;`:` export import ${v} = ${k}.${w.export};`}),C=d.length>0?`//
|
package/dist/integrations.d.ts
CHANGED
|
@@ -108,7 +108,7 @@ export interface CompilerOptions {
|
|
|
108
108
|
controlFlowModule?: string;
|
|
109
109
|
/**
|
|
110
110
|
* Module the router components (Router/Outlet/…) are auto-imported from.
|
|
111
|
-
* @default 'fluixi/router'
|
|
111
|
+
* @default '@fluixi/core/router'
|
|
112
112
|
*/
|
|
113
113
|
routerModule?: string;
|
|
114
114
|
/**
|
package/dist/integrations.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as h}from"./chunk-
|
|
1
|
+
import{a as h}from"./chunk-QUIYULS2.mjs";import{a as C,f as M}from"./chunk-YR3SAEO7.mjs";import{a as j}from"./chunk-3SAEGOMQ.mjs";import{mkdirSync as X,readFileSync as w,writeFileSync as U}from"node:fs";import{dirname as D,relative as F,sep as k,resolve as b}from"node:path";var V=new Set(["Text","Image","Option","Audio","Comment","Range","Selection","Notification","Event","Document","Element","Node","Screen","Window","Location","History","Storage","Response","Request","Headers"]);function H(e){if(e.startsWith(".")||e.startsWith("/")||/^[~@]\//.test(e))return;let t=e.split("/");return e.startsWith("@")?t.slice(0,2).join("/"):t[0]}function x(e){return`_${e.replace(/[^A-Za-z0-9]/g,"_")}`}function O(e,t={}){let{available:n,builtins:s=!0,intrinsics:r=!0,generator:i="@fluixi/compiler",specifier:a=o=>o}=t,l=[...e];s&&l.push({components:M()});let c=C(l),d=n?new Set(n):void 0,p=[],f=[],T=[],v=new Map;for(let o of[...c.names()].sort()){let u=c.resolve(o);if(!u)continue;let m=H(u.module);V.has(o)?f.push(o):d&&m&&!d.has(m)?T.push(o):(p.push(o),v.set(o,u))}let L=r?[...new Set(Object.values(h).map(o=>o.module))]:[],R=[...new Set([...p.map(o=>v.get(o).module),...L])].sort().map(o=>`import * as ${x(o)} from '${a(o)}';`),_=p.map(o=>{let u=v.get(o),m=x(u.module);return u.export==="default"?` const ${o}: typeof ${m}.default;`:` export import ${o} = ${m}.${u.export};`}),B=f.length>0?`//
|
|
2
2
|
// Import these explicitly — lib.dom already declares the name, so an ambient
|
|
3
3
|
// declaration cannot win:
|
|
4
4
|
`+f.map(o=>{let u=c.resolve(o)?.module;return`// import { ${o} } from '${u?a(u):""}';
|
|
@@ -19,7 +19,7 @@ declare global {
|
|
|
19
19
|
${[..._,...J].join(`
|
|
20
20
|
`)}
|
|
21
21
|
}
|
|
22
|
-
`,declared:p,shadowedByDom:f,unavailable:T,patternRules:g}}var z="GENERATED by @fluixi/compiler",K="fluixi.d.ts";function Z(e,t){let n;try{let r=w(b(e,"tsconfig.json"),"utf8");n=JSON.parse(r.replace(/^\s*\/\/.*$/gm,""))}catch{return}if(n.extends!==void 0)return;if(!Array.isArray(n.include))return!0;let s=G(e,t);return n.include.some(r=>{if(typeof r!="string")return!1;let i=r.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*\*\//g,"(?:.*/)?").replace(/\*/g,"[^/]*");return new RegExp(`^${i}(?:/.*)?$`).test(s)})}function G(e,t){return F(e,t).split(k).join("/")}function Q(e,t,n){if(!e.startsWith("/"))return e;let s=b(n,e.slice(1)),r=F(t,s).split(k).join("/");return r.startsWith(".")||(r=`./${r}`),r.replace(/\.(tsx|ts|jsx|mts|cts)$/,".js")}function Y(e){try{let t=JSON.parse(w(b(e,"package.json"),"utf8"));return[...Object.keys(t.dependencies??{}),...Object.keys(t.devDependencies??{}),...Object.keys(t.peerDependencies??{})]}catch{return}}function A(e,t){if(e.globals===!1)return{status:"skipped",reason:"disabled"};let n=e.resolve??[],s=b(t,e.globals??K),r;try{r=w(s,"utf8")}catch{r=void 0}if(r!==void 0&&!r.includes(z))return{status:"skipped",reason:"foreign-file",path:s};let{source:i,declared:a}=O(n,{available:Y(t),specifier:l=>Q(l,D(s),t)});return r===i?{status:"unchanged",path:s,declared:a.length,warning:E(t,s)}:(X(D(s),{recursive:!0}),U(s,i),{status:"written",path:s,declared:a.length,warning:E(t,s)})}function E(e,t){if(Z(e,t)!==!1)return;let n=G(e,t);return`[fluixi] ${n} is not covered by "include" in tsconfig.json, so TypeScript will ignore it and every resolved component stays "Cannot find name". Add "${n}" to "include".`}import{readdirSync as ue,readFileSync as ce}from"node:fs";import{join as N}from"node:path";async function $(e={}){let t=null;try{t=await import("./babel-
|
|
22
|
+
`,declared:p,shadowedByDom:f,unavailable:T,patternRules:g}}var z="GENERATED by @fluixi/compiler",K="fluixi.d.ts";function Z(e,t){let n;try{let r=w(b(e,"tsconfig.json"),"utf8");n=JSON.parse(r.replace(/^\s*\/\/.*$/gm,""))}catch{return}if(n.extends!==void 0)return;if(!Array.isArray(n.include))return!0;let s=G(e,t);return n.include.some(r=>{if(typeof r!="string")return!1;let i=r.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*\*\//g,"(?:.*/)?").replace(/\*/g,"[^/]*");return new RegExp(`^${i}(?:/.*)?$`).test(s)})}function G(e,t){return F(e,t).split(k).join("/")}function Q(e,t,n){if(!e.startsWith("/"))return e;let s=b(n,e.slice(1)),r=F(t,s).split(k).join("/");return r.startsWith(".")||(r=`./${r}`),r.replace(/\.(tsx|ts|jsx|mts|cts)$/,".js")}function Y(e){try{let t=JSON.parse(w(b(e,"package.json"),"utf8"));return[...Object.keys(t.dependencies??{}),...Object.keys(t.devDependencies??{}),...Object.keys(t.peerDependencies??{})]}catch{return}}function A(e,t){if(e.globals===!1)return{status:"skipped",reason:"disabled"};let n=e.resolve??[],s=b(t,e.globals??K),r;try{r=w(s,"utf8")}catch{r=void 0}if(r!==void 0&&!r.includes(z))return{status:"skipped",reason:"foreign-file",path:s};let{source:i,declared:a}=O(n,{available:Y(t),specifier:l=>Q(l,D(s),t)});return r===i?{status:"unchanged",path:s,declared:a.length,warning:E(t,s)}:(X(D(s),{recursive:!0}),U(s,i),{status:"written",path:s,declared:a.length,warning:E(t,s)})}function E(e,t){if(Z(e,t)!==!1)return;let n=G(e,t);return`[fluixi] ${n} is not covered by "include" in tsconfig.json, so TypeScript will ignore it and every resolved component stays "Cannot find name". Add "${n}" to "include".`}import{readdirSync as ue,readFileSync as ce}from"node:fs";import{join as N}from"node:path";async function $(e={}){let t=null;try{t=await import("./babel-4JUDAR2G.mjs")}catch(n){console.warn("Could not load the babel front-end:",n)}return{name:"babel-fluixi-jsx",plugin:t?t.default||t:null,getOptions(){return{importSource:e.importSource||"@fluixi/jsx",development:e.development||!1,delegateEvents:e.delegateEvents!==!1,...e.format?{format:e.format}:{},...e.resolve?{resolve:e.resolve}:{},...e.templateClone!==void 0?{templateClone:e.templateClone}:{},...e.partialTemplates!==void 0?{partialTemplates:e.partialTemplates}:{},...e.litTag?{litTag:e.litTag}:{},...e.signalModule?{signalModule:e.signalModule}:{},...e.controlFlowModule?{controlFlowModule:e.controlFlowModule}:{},...e.routerModule?{routerModule:e.routerModule}:{},...e.reactiveModule?{reactiveModule:e.reactiveModule}:{}}}}}function ee(e={}){let t=ne("typescript");return t?n=>{let s=r=>t.isJsxElement(r)||t.isJsxSelfClosingElement(r)?te(r,e,t):t.visitEachChild(r,s,n);return r=>t.visitNode(r,s)}:(console.warn("TypeScript not found, transformer unavailable"),n=>s=>s)}function te(e,t,n){return e}function ne(e){try{return j(e)}catch{return null}}function re(e={}){return{name:"vite-fluixi-jsx",enforce:"pre",config(){return{esbuild:{jsx:"automatic",jsxImportSource:e.importSource||"@fluixi/jsx"}}},configResolved(t){let n=A(e,t?.root??process.cwd());n.warning&&console.warn(n.warning)},async transform(t,n){if(!/\.(jsx|tsx|ts)$/i.test(n))return null;if(!e.babel)return y(t,n,e);let s=await $(e);try{let r=await import("@babel/core").catch(()=>null);if(!r)throw new Error(`[fluixi] @babel/core is required to compile ${n} but could not be loaded. Install it alongside @fluixi/compiler.`);let i=/\.tsx$/.test(n),a=/\.ts$/.test(n),l=[],c=[];if(i||a){let p=await import("@babel/preset-typescript").then(f=>f.default||f).catch(()=>null);p&&l.push([p,{isTSX:i,allExtensions:!0,jsxPragma:"jsx",jsxPragmaFrag:"Fragment",onlyRemoveTypeImports:!0}])}s&&s.plugin?c.push([s.plugin,s.getOptions()]):console.warn("[createVitePlugin] custom babel plugin not found");let d=await r.transformAsync(t,{filename:n,configFile:!1,babelrc:!1,presets:l,plugins:c,sourceMaps:e.sourceMaps!==!1});return{code:d?.code||t,map:d?.map}}catch(r){throw r}}}}function se(e){return{resolve:e.resolve,litTag:e.litTag,templateClone:e.templateClone,partialTemplates:e.partialTemplates,runtimeModule:e.signalModule,controlFlowModule:e.controlFlowModule,routerModule:e.routerModule,reactiveModule:e.reactiveModule,propsDestructure:e.propsDestructure}}async function oe(e,t,n){if(n.propsDestructure===!1)return e;let{transformProps:s}=await import("./transform-5WC4FWJE.mjs"),r=s(e,t);return I({propsDiagnostics:r.diagnostics},t),r.rewritten>0?r.code:e}var P=new Set;function I(e,t){let n=e,s=r=>{let i=`${t}\0${r}`;P.has(i)||(P.add(i),console.warn(`[fluixi] ${t}: ${r}`))};for(let r of n?.unresolvedDiagnostics??[])s(r.message);for(let r of n?.loadDiagnostics??[])s(r.message);for(let r of n?.intrinsicDiagnostics??[])s(r.message);for(let r of n?.propsDiagnostics??[])s(`\`${r.name}\` was left destructured: ${r.message}. It reads once instead of tracking.`)}async function y(e,t,n){if(!n.babel){let{transformTemplates:l}=await import("./transform-5WC4FWJE.mjs"),c=l(e,t,se(n));return I(c,t),c}let s=await oe(e,t,n),r=await import("@babel/core").catch(()=>null),i=await $(n);if(!r||!i.plugin)throw new Error(`[fluixi] babel: true needs @babel/core, which could not be loaded for ${t}. Install it, or drop the option to use the built-in compiler.`);let a=await r.transformAsync(s,{filename:t,configFile:!1,babelrc:!1,plugins:[[i.plugin,i.getOptions()]],sourceMaps:n.sourceMaps!==!1});return a?.code?{code:a.code,map:a.map}:null}function ie(e={}){return async function(t){let n=this.async();y(t,this.resourcePath,e).then(s=>{n(null,s?.code,s?.map)}).catch(s=>{n(s)})}}function ae(e={}){return{name:"rollup-fluixi-jsx",async transform(t,n){return/\.[jt]sx?$/.test(n)?y(t,n,e):null}}}function le(e={}){return{name:"esbuild-fluixi-jsx",setup(t){t.onLoad({filter:/\.[jt]sx?$/},async n=>{let{readFileSync:s}=await import("node:fs"),r=s(n.path,"utf8");try{return{contents:(await y(r,n.path,e))?.code??r,loader:n.path.endsWith("x")?"tsx":"ts"}}catch(i){return{errors:[{text:`Transform error: ${i}`}]}}})}}}var S="virtual:fluixi-server-fns";function W(e,t=[]){let n;try{n=ue(e,{withFileTypes:!0})}catch{return t}for(let s of n){if(s.name==="node_modules"||s.name==="dist"||s.name.startsWith("."))continue;let r=N(e,s.name);if(s.isDirectory())W(r,t);else if(/\.[jt]sx?$/.test(s.name))try{ce(r,"utf8").includes("use server")&&t.push(r)}catch{}}return t}function Te(e={}){let t=process.cwd();return{name:"fluixi-server-functions",enforce:"pre",configResolved(n){t=n.root||t},resolveId(n){return n===S||n==="@fluixi/start/server-fns"?"\0"+S:null},load(n){if(n!=="\0"+S)return null;let s=W(N(t,"src")),r=`import '@fluixi/start/server-fn-setup';
|
|
23
23
|
`,i=s.map(l=>`import ${JSON.stringify(l)};`).join(`
|
|
24
24
|
`);return r+i+`
|
|
25
25
|
export { isServerFnRequest, handleServerFn } from '@fluixi/start/server-fn';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var E=Object.defineProperty;var le=Object.getOwnPropertyDescriptor;var ae=Object.getOwnPropertyNames;var ce=Object.prototype.hasOwnProperty;var pe=(t,e)=>{for(var n in e)E(t,n,{get:e[n],enumerable:!0})},de=(t,e,n,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of ae(e))!ce.call(t,r)&&r!==n&&E(t,r,{get:()=>e[r],enumerable:!(o=le(e,r))||o.enumerable});return t};var ue=t=>de(E({},"__esModule",{value:!0}),t);var Be={};pe(Be,{compilePieces:()=>se,compileTemplate:()=>_e});module.exports=ue(Be);function me(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 L(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=me(s),a)break;return!a&&!i&&(a=fe(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 fe(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 k={kind:"eager"},he=["pointerdown","focusin","keydown"],j=new Set(["eager","idle","visible","interaction","media","never"]),f=class extends Error{};function _(t,e){let n=t.slice(5);if(!j.has(n))throw new f(`Unknown load strategy 'load:${n}'. Expected one of ${[...j].join(", ")}.`);switch(n){case"eager":return k;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?ge(e):[...he]};case"media":if(!e)throw new f(`'load:media' needs a query, e.g. load:media="(min-width: 1024px)".`);return{kind:"media",query:e};default:throw new f(`Unhandled load strategy '${n}'.`)}}function ge(t){let e=t.split(/[\s,]+/).map(n=>n.trim()).filter(Boolean);if(e.length===0)throw new f("'load:interaction' was given no event names.");return e}function B(t){return t.kind!=="eager"&&t.kind!=="never"}var w=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],$=["Suspense","SuspenseList","Await"],x=["Router","Outlet","Redirect","Link"],Je=[...w,...$,...x],T=new Set([...w,...$]);function H(t={}){let{controlFlowModule:e="@fluixi/dom",coreModule:n="fluixi",routerModule:o="fluixi/router"}=t,r={};for(let i of w)r[i]=e;for(let i of $)r[i]=n;for(let i of x)r[i]=o;return r}function F(t,e={}){let{resolver:n,isBound:o,modules:r,strategyFor:i}=e,a=H(r),s=new Map,l=new Set,c=p=>{let{name:u}=p;if(!u||u.includes(".")||o?.(u))return;let m=d(u);if(!m){l.add(u);return}let v=m.origin==="builtin"&&T.has(u)?k:i?.(p)??k;p.source={...m,loading:v},s.set(u,p.source)},d=p=>{if(T.has(p))return{module:a[p],export:p,origin:"builtin"};let u=n?.resolve(p);if(u)return{module:u.module,export:u.export,origin:"rule"};if(x.includes(p))return{module:a[p],export:p,origin:"builtin"}};return N(t,p=>{p.kind==="component"&&c(p)}),{resolved:s,unresolved:[...l]}}function N(t,e){let n=Array.isArray(t)?t:[t];for(let o of n){e(o);let r=o.children;r&&N(r,e)}}function z(t){let e=[];N(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;B(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 Re=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),J={className:"class",htmlFor:"for"},ve=new Set(["innerHTML","outerHTML","innerText","textContent","value","checked","selected","muted","defaultValue","defaultChecked","children","ref"]),ke=new Set(["script","style","textarea","title"]);function S(t){return ke.has(t)}function U(t){return J[t]??t}function h(t){return t.kind!=="attr"||t.expr!==void 0||t.name.includes(":")?!1:!ve.has(t.name)}function P(t){if(!t.static||S(t.tag))return!1;for(let e of t.props)if(!h(e))return!1;for(let e of t.children)if(e.kind!=="text"&&!(e.kind==="element"&&P(e)))return!1;return!0}function g(t){let e=t.props.map(Ne).filter(Boolean).join(""),n=`<${t.tag}${e}>`;return Re.has(t.tag)?n:`${n}${t.children.map(xe).join("")}</${t.tag}>`}function xe(t){if(t.kind==="text")return be(t.value);if(t.kind!=="element")throw new Error(`serializeStatic: unexpected ${t.kind}`);return g(t)}function Ne(t){let e=J[t.name]??t.name,n=t.literal;return n===!0||n===void 0?` ${e}`:n===!1||n===null?"":` ${e}="${Ie(String(n))}"`}function Ie(t){return t.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function be(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}var ye="<!--fx-->",Ce="<!--fx/-->";function b(t){return t.kind==="expr"||t.kind==="component"||t.kind==="control"}function Ee(t){return t.kind==="text"||t.kind==="element"&&V(t)}function V(t){return t.svg||S(t.tag)||!t.props.every(e=>h(e))?!1:t.children.every(e=>Ee(e)||b(e))}function I(t){if(b(t))return!0;let e=t.children;return e?e.some(I):!1}function W(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"||W(e))}function q(t){if(!V(t)||!W(t)||!t.children.some(I))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:we(t),tag:t.tag,steps:e,holes:n};function i(a,s){let l=-1;a.children.forEach((d,p)=>{I(d)&&(l=p)});let c=null;for(let d=0;d<=l;d++){let p=a.children[d],u=c?`${c}.nextSibling`:`${s}.firstChild`;if(b(p)){let v=r(u),D=r(`holeEnd(${v})`);n.push({parentRef:s,startRef:v,endRef:D,node:p}),c=D;continue}let m=r(u);p.kind==="element"&&I(p)&&i(p,m),c=m}}}function we(t){return g(G(t)).split(K).join(ye+Ce)}function G(t){return{...t,children:t.children.map(e=>b(e)?{kind:"text",value:K}:e.kind==="element"?G(e):e)}}var K="\0fx-hole\0";var M={version:1,module:"@fluixi/dom",symbols:["createNativeElement","insert","spread","setAttribute","delegateEvents","createComponent","createMemo","untrack","Show","For","Index","Switch","Match","Dynamic","ErrorBoundary"]},et={version:2,module:"@fluixi/dom",symbols:[...M.symbols,"template","cloneTemplate","walk"]};var $e={show:"Show",for:"For",index:"Index",switch:"Switch",match:"Match",dynamic:"Dynamic",errorBoundary:"ErrorBoundary",suspense:"Suspense"};function Te(t){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(t)}function Z(t){return Te(t)?t:JSON.stringify(t)}function Se(t){return t.expr!==void 0?t.reactive?`() => (${t.expr})`:`(${t.expr})`:JSON.stringify(t.literal??!0)}function Pe(t){return t.expr!==void 0?`(${t.expr})`:JSON.stringify(t.literal??!0)}function Me(t,e,n){let o=t.filter(s=>s.kind==="spread"),i=t.filter(s=>s.kind!=="spread").map(s=>`${Z(s.name)}: ${Se(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 X(t,e,n){return t.length===1?R(t[0],e,n):`[${t.map(o=>R(o,e,n)).join(", ")}]`}function Y(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 ${Z(c.name)}() { return ${Pe(c)}; }`);n.length>0&&s.push(`get children() { return ${X(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 Oe(t,e){let n=U(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 Q=!1;function R(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":X(t.children,e,n);case"component":return Y(t.name,t.props,t.children,e,n);case"control":{let o=$e[t.control]??t.control;return e.add(o),Y(o,t.props,t.children,e,n)}case"element":{if(n&&t.static&&!t.svg&&P(t)){e.add("templateNode");let s=`_tmpl$${n.length}`;return n.push({id:s,html:g(t),tag:t.tag,svg:!1}),`templateNode(${s}, ${JSON.stringify(t.tag)})`}if(n&&Q){let s=q(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}, () => (${R(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(h))for(let s of t.props)i.push(Oe(r,s));else{e.add("spread");let s=t.svg?", isSVG: true":"";i.push(`spread({ element: ${r}, props: ${Me(t.props,null,e)}${s} });`)}for(let s of t.children){e.add("insert");let l=R(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 y(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 C={name:"imperative",contract:M,emit(t,e){let n=new Set,o=e?.templateClone!==!1?[]:void 0;return Q=e?.partialTemplates===!0,{code:R(t,n,o),imports:Array.from(n),templates:o}}};var Ae=t=>"components"in t;function ee(t,e){return t.replace(/\$(\d+)/g,(n,o)=>e[Number(o)]??n)}function De(t,e){return typeof e=="string"?{module:e,export:t}:e}function te(t=[]){let e=new Map,n=[],o=[];for(let a of t){if(!Ae(a)){o.push(a);continue}for(let[s,l]of Object.entries(a.components)){let c=De(s,l),d=e.get(s);if(d&&d.module!==c.module){let p=n.find(u=>u.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:ee(l.module,c),export:l.export?ee(l.export,c):a};break}}return r.set(a,s),s},names:()=>[...e.keys()],conflicts:()=>n}}var oe=require("@fluixi/template-parser");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 ne=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function Le(t){return t.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${")}function re(t){return t.charAt(0).toUpperCase()+t.slice(1)}var A=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}=C.emit(e,{});for(let i of o)this.used.add(i);return y(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},u=o.findIndex(m=>m.name===l);u>=0?o[u]=p:o.push(p)}let a=e.attributes.find(l=>l.kind==="LoadDirective"),s=a?_(`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"+re(e.name),kind:"event",event:{name:n,delegated:ne.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"+re(r),kind:"event",event:{name:r,delegated:ne.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 Le(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 ie(t,e,n,o={}){let{root:r}=(0,oe.parseTemplate)(t,{svg:o.svg});return new A(e,n).lowerRoot(r.children)}function je(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 _e(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 se(je(t),t.holes,e)}function se(t,e,n={}){let o=new Set,r=ie(t,[...e],o,{svg:n.svg});L(r),F(r,{resolver:te(n.resolve??[]),modules:{controlFlowModule:n.controlFlowModule??"@fluixi/dom",coreModule:n.coreModule??"fluixi",routerModule:n.routerModule??"fluixi/router"},strategyFor:l=>l.load}),z(r);let{code:i,imports:a,templates:s}=C.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:y(i,s),imports:[...o],ir:r}}
|
|
1
|
+
"use strict";var E=Object.defineProperty;var le=Object.getOwnPropertyDescriptor;var ae=Object.getOwnPropertyNames;var ce=Object.prototype.hasOwnProperty;var pe=(t,e)=>{for(var n in e)E(t,n,{get:e[n],enumerable:!0})},de=(t,e,n,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of ae(e))!ce.call(t,r)&&r!==n&&E(t,r,{get:()=>e[r],enumerable:!(o=le(e,r))||o.enumerable});return t};var ue=t=>de(E({},"__esModule",{value:!0}),t);var Be={};pe(Be,{compilePieces:()=>se,compileTemplate:()=>_e});module.exports=ue(Be);function me(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 L(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=me(s),a)break;return!a&&!i&&(a=fe(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 fe(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 k={kind:"eager"},he=["pointerdown","focusin","keydown"],j=new Set(["eager","idle","visible","interaction","media","never"]),f=class extends Error{};function _(t,e){let n=t.slice(5);if(!j.has(n))throw new f(`Unknown load strategy 'load:${n}'. Expected one of ${[...j].join(", ")}.`);switch(n){case"eager":return k;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?ge(e):[...he]};case"media":if(!e)throw new f(`'load:media' needs a query, e.g. load:media="(min-width: 1024px)".`);return{kind:"media",query:e};default:throw new f(`Unhandled load strategy '${n}'.`)}}function ge(t){let e=t.split(/[\s,]+/).map(n=>n.trim()).filter(Boolean);if(e.length===0)throw new f("'load:interaction' was given no event names.");return e}function B(t){return t.kind!=="eager"&&t.kind!=="never"}var w=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],T=["Suspense","SuspenseList","Await"],x=["Router","Outlet","Redirect","Link"],Je=[...w,...T,...x],$=new Set([...w,...T]);function H(t={}){let{controlFlowModule:e="@fluixi/dom",coreModule:n="@fluixi/core",routerModule:o="@fluixi/core/router"}=t,r={};for(let i of w)r[i]=e;for(let i of T)r[i]=n;for(let i of x)r[i]=o;return r}function F(t,e={}){let{resolver:n,isBound:o,modules:r,strategyFor:i}=e,a=H(r),s=new Map,l=new Set,c=p=>{let{name:u}=p;if(!u||u.includes(".")||o?.(u))return;let m=d(u);if(!m){l.add(u);return}let v=m.origin==="builtin"&&$.has(u)?k:i?.(p)??k;p.source={...m,loading:v},s.set(u,p.source)},d=p=>{if($.has(p))return{module:a[p],export:p,origin:"builtin"};let u=n?.resolve(p);if(u)return{module:u.module,export:u.export,origin:"rule"};if(x.includes(p))return{module:a[p],export:p,origin:"builtin"}};return N(t,p=>{p.kind==="component"&&c(p)}),{resolved:s,unresolved:[...l]}}function N(t,e){let n=Array.isArray(t)?t:[t];for(let o of n){e(o);let r=o.children;r&&N(r,e)}}function z(t){let e=[];N(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;B(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 Re=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),J={className:"class",htmlFor:"for"},ve=new Set(["innerHTML","outerHTML","innerText","textContent","value","checked","selected","muted","defaultValue","defaultChecked","children","ref"]),ke=new Set(["script","style","textarea","title"]);function S(t){return ke.has(t)}function U(t){return J[t]??t}function h(t){return t.kind!=="attr"||t.expr!==void 0||t.name.includes(":")?!1:!ve.has(t.name)}function P(t){if(!t.static||S(t.tag))return!1;for(let e of t.props)if(!h(e))return!1;for(let e of t.children)if(e.kind!=="text"&&!(e.kind==="element"&&P(e)))return!1;return!0}function g(t){let e=t.props.map(Ne).filter(Boolean).join(""),n=`<${t.tag}${e}>`;return Re.has(t.tag)?n:`${n}${t.children.map(xe).join("")}</${t.tag}>`}function xe(t){if(t.kind==="text")return be(t.value);if(t.kind!=="element")throw new Error(`serializeStatic: unexpected ${t.kind}`);return g(t)}function Ne(t){let e=J[t.name]??t.name,n=t.literal;return n===!0||n===void 0?` ${e}`:n===!1||n===null?"":` ${e}="${Ie(String(n))}"`}function Ie(t){return t.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function be(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}var ye="<!--fx-->",Ce="<!--fx/-->";function b(t){return t.kind==="expr"||t.kind==="component"||t.kind==="control"}function Ee(t){return t.kind==="text"||t.kind==="element"&&V(t)}function V(t){return t.svg||S(t.tag)||!t.props.every(e=>h(e))?!1:t.children.every(e=>Ee(e)||b(e))}function I(t){if(b(t))return!0;let e=t.children;return e?e.some(I):!1}function W(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"||W(e))}function q(t){if(!V(t)||!W(t)||!t.children.some(I))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:we(t),tag:t.tag,steps:e,holes:n};function i(a,s){let l=-1;a.children.forEach((d,p)=>{I(d)&&(l=p)});let c=null;for(let d=0;d<=l;d++){let p=a.children[d],u=c?`${c}.nextSibling`:`${s}.firstChild`;if(b(p)){let v=r(u),D=r(`holeEnd(${v})`);n.push({parentRef:s,startRef:v,endRef:D,node:p}),c=D;continue}let m=r(u);p.kind==="element"&&I(p)&&i(p,m),c=m}}}function we(t){return g(G(t)).split(K).join(ye+Ce)}function G(t){return{...t,children:t.children.map(e=>b(e)?{kind:"text",value:K}:e.kind==="element"?G(e):e)}}var K="\0fx-hole\0";var M={version:1,module:"@fluixi/dom",symbols:["createNativeElement","insert","spread","setAttribute","delegateEvents","createComponent","createMemo","untrack","Show","For","Index","Switch","Match","Dynamic","ErrorBoundary"]},et={version:2,module:"@fluixi/dom",symbols:[...M.symbols,"template","cloneTemplate","walk"]};var Te={show:"Show",for:"For",index:"Index",switch:"Switch",match:"Match",dynamic:"Dynamic",errorBoundary:"ErrorBoundary",suspense:"Suspense"};function $e(t){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(t)}function Z(t){return $e(t)?t:JSON.stringify(t)}function Se(t){return t.expr!==void 0?t.reactive?`() => (${t.expr})`:`(${t.expr})`:JSON.stringify(t.literal??!0)}function Pe(t){return t.expr!==void 0?`(${t.expr})`:JSON.stringify(t.literal??!0)}function Me(t,e,n){let o=t.filter(s=>s.kind==="spread"),i=t.filter(s=>s.kind!=="spread").map(s=>`${Z(s.name)}: ${Se(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 X(t,e,n){return t.length===1?R(t[0],e,n):`[${t.map(o=>R(o,e,n)).join(", ")}]`}function Y(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 ${Z(c.name)}() { return ${Pe(c)}; }`);n.length>0&&s.push(`get children() { return ${X(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 Oe(t,e){let n=U(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 Q=!1;function R(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":X(t.children,e,n);case"component":return Y(t.name,t.props,t.children,e,n);case"control":{let o=Te[t.control]??t.control;return e.add(o),Y(o,t.props,t.children,e,n)}case"element":{if(n&&t.static&&!t.svg&&P(t)){e.add("templateNode");let s=`_tmpl$${n.length}`;return n.push({id:s,html:g(t),tag:t.tag,svg:!1}),`templateNode(${s}, ${JSON.stringify(t.tag)})`}if(n&&Q){let s=q(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}, () => (${R(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(h))for(let s of t.props)i.push(Oe(r,s));else{e.add("spread");let s=t.svg?", isSVG: true":"";i.push(`spread({ element: ${r}, props: ${Me(t.props,null,e)}${s} });`)}for(let s of t.children){e.add("insert");let l=R(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 y(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 C={name:"imperative",contract:M,emit(t,e){let n=new Set,o=e?.templateClone!==!1?[]:void 0;return Q=e?.partialTemplates===!0,{code:R(t,n,o),imports:Array.from(n),templates:o}}};var Ae=t=>"components"in t;function ee(t,e){return t.replace(/\$(\d+)/g,(n,o)=>e[Number(o)]??n)}function De(t,e){return typeof e=="string"?{module:e,export:t}:e}function te(t=[]){let e=new Map,n=[],o=[];for(let a of t){if(!Ae(a)){o.push(a);continue}for(let[s,l]of Object.entries(a.components)){let c=De(s,l),d=e.get(s);if(d&&d.module!==c.module){let p=n.find(u=>u.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:ee(l.module,c),export:l.export?ee(l.export,c):a};break}}return r.set(a,s),s},names:()=>[...e.keys()],conflicts:()=>n}}var oe=require("@fluixi/template-parser");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 ne=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function Le(t){return t.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${")}function re(t){return t.charAt(0).toUpperCase()+t.slice(1)}var A=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}=C.emit(e,{});for(let i of o)this.used.add(i);return y(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},u=o.findIndex(m=>m.name===l);u>=0?o[u]=p:o.push(p)}let a=e.attributes.find(l=>l.kind==="LoadDirective"),s=a?_(`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"+re(e.name),kind:"event",event:{name:n,delegated:ne.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"+re(r),kind:"event",event:{name:r,delegated:ne.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 Le(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 ie(t,e,n,o={}){let{root:r}=(0,oe.parseTemplate)(t,{svg:o.svg});return new A(e,n).lowerRoot(r.children)}function je(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 _e(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 se(je(t),t.holes,e)}function se(t,e,n={}){let o=new Set,r=ie(t,[...e],o,{svg:n.svg});L(r),F(r,{resolver:te(n.resolve??[]),modules:{controlFlowModule:n.controlFlowModule??"@fluixi/dom",coreModule:n.coreModule??"@fluixi/core",routerModule:n.routerModule??"@fluixi/core/router"},strategyFor:l=>l.load}),z(r);let{code:i,imports:a,templates:s}=C.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:y(i,s),imports:[...o],ir:r}}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type ComponentResolverRule } from '../resolve/component-resolver.js';
|
|
2
2
|
import type { IRNode } from '../ir/nodes.js';
|
|
3
3
|
import { type TemplateHole } from './template.js';
|
|
4
|
+
export type { TemplateHole };
|
|
4
5
|
import type { Piece } from '@fluixi/template-parser';
|
|
5
6
|
import type { StaticTemplate } from '../codegen/backend.js';
|
|
6
7
|
export interface TemplateSource {
|
|
@@ -23,9 +24,9 @@ export interface CompileTemplateOptions {
|
|
|
23
24
|
resolve?: readonly ComponentResolverRule[];
|
|
24
25
|
/** Where control-flow components are imported from. @default '@fluixi/dom' */
|
|
25
26
|
controlFlowModule?: string;
|
|
26
|
-
/** Where core-only components (Suspense, Portal) come from. @default 'fluixi' */
|
|
27
|
+
/** Where core-only components (Suspense, Portal) come from. @default '@fluixi/core' */
|
|
27
28
|
coreModule?: string;
|
|
28
|
-
/** Where router components come from. @default 'fluixi/router' */
|
|
29
|
+
/** Where router components come from. @default '@fluixi/core/router' */
|
|
29
30
|
routerModule?: string;
|
|
30
31
|
/**
|
|
31
32
|
* Leave static templates as `_tmpl$N` references and hand them back, for a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile-template.d.ts","sourceRoot":"","sources":["../../src/lower/compile-template.ts"],"names":[],"mappings":"AAcA,OAAO,EAA2B,KAAK,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACvG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,kDAAkD;IAClD,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,sBAAsB;IACrC,4EAA4E;IAC5E,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,yFAAyF;IACzF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,6EAA6E;IAC7E,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iEAAiE;IACjE,OAAO,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAC3C,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,
|
|
1
|
+
{"version":3,"file":"compile-template.d.ts","sourceRoot":"","sources":["../../src/lower/compile-template.ts"],"names":[],"mappings":"AAcA,OAAO,EAA2B,KAAK,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACvG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AACjE,YAAY,EAAE,YAAY,EAAE,CAAC;AAC7B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,kDAAkD;IAClD,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,sBAAsB;IACrC,4EAA4E;IAC5E,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,yFAAyF;IACzF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,6EAA6E;IAC7E,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iEAAiE;IACjE,OAAO,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAC3C,8EAA8E;IAC9E,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uFAAuF;IACvF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,sFAAsF;IACtF,EAAE,EAAE,MAAM,CAAC;IACX;;;;OAIG;IACH,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;CAC9B;AAqBD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,sBAA2B,GACnC,qBAAqB,CASvB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,KAAK,EAAE,EACf,KAAK,EAAE,SAAS,YAAY,EAAE,EAC9B,OAAO,GAAE,sBAA2B,GACnC,qBAAqB,CA0BvB"}
|
|
@@ -54,8 +54,8 @@ export function compilePieces(pieces, holes, options = {}) {
|
|
|
54
54
|
resolver: createComponentResolver(options.resolve ?? []),
|
|
55
55
|
modules: {
|
|
56
56
|
controlFlowModule: options.controlFlowModule ?? '@fluixi/dom',
|
|
57
|
-
coreModule: options.coreModule ?? 'fluixi',
|
|
58
|
-
routerModule: options.routerModule ?? 'fluixi/router',
|
|
57
|
+
coreModule: options.coreModule ?? '@fluixi/core',
|
|
58
|
+
routerModule: options.routerModule ?? '@fluixi/core/router',
|
|
59
59
|
},
|
|
60
60
|
strategyFor: (node) => node.load,
|
|
61
61
|
});
|