@fluixi/compiler 1.0.0-alpha.79 → 1.0.0-alpha.80
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/analyze/intrinsics.cjs +1 -1
- package/dist/analyze/intrinsics.js +1 -1
- package/dist/analyze/intrinsics.mjs +1 -1
- package/dist/analyze/reactive-bindings.cjs +1 -1
- package/dist/analyze/reactive-bindings.mjs +1 -1
- package/dist/babel-4JUDAR2G.mjs +1 -0
- package/dist/{chunk-5DJ424I7.mjs → chunk-PVR2SN3B.mjs} +1 -1
- package/dist/{chunk-SZPI4R7H.mjs → chunk-QUIYULS2.mjs} +1 -1
- package/dist/{chunk-Y7E6OX3A.mjs → chunk-YR3SAEO7.mjs} +1 -1
- package/dist/frontend/babel/index.cjs +1 -1
- package/dist/frontend/babel/index.mjs +1 -1
- package/dist/frontend/babel/plugin.cjs +1 -1
- package/dist/frontend/babel/plugin.d.ts +1 -1
- package/dist/frontend/babel/plugin.js +5 -5
- package/dist/frontend/babel/plugin.mjs +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +1 -1
- package/dist/integrations.cjs +2 -2
- package/dist/integrations.d.ts +1 -1
- package/dist/integrations.mjs +2 -2
- package/dist/lower/compile-template.cjs +1 -1
- package/dist/lower/compile-template.d.ts +3 -2
- package/dist/lower/compile-template.d.ts.map +1 -1
- package/dist/lower/compile-template.js +2 -2
- package/dist/lower/compile-template.mjs +1 -1
- package/dist/resolve/builtins.cjs +1 -1
- package/dist/resolve/builtins.d.ts +3 -3
- package/dist/resolve/builtins.d.ts.map +1 -1
- package/dist/resolve/builtins.js +3 -3
- package/dist/resolve/builtins.mjs +1 -1
- package/dist/resolve/component-globals.cjs +1 -1
- package/dist/resolve/component-globals.mjs +1 -1
- package/dist/resolve/resolve-ir.cjs +1 -1
- package/dist/resolve/resolve-ir.mjs +1 -1
- package/dist/resolve/write-globals.cjs +1 -1
- package/dist/resolve/write-globals.mjs +1 -1
- package/dist/transform/index.cjs +3 -3
- package/dist/transform/index.mjs +5 -5
- package/dist/transform/intrinsics.cjs +1 -1
- package/dist/transform/intrinsics.mjs +1 -1
- package/dist/transform/templates.cjs +3 -3
- package/dist/transform/templates.js +4 -4
- package/dist/transform/templates.mjs +3 -3
- package/dist/transform-5WC4FWJE.mjs +8 -0
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/package.json +9 -3
- package/dist/babel-FPDLKOXR.mjs +0 -1
- package/dist/transform-ERQ6CKFE.mjs +0 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
function oe(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 D(t){let e=[],n=new Map,r=o=>{switch(o.kind){case"text":return!0;case"expr":return!1;case"component":case"control":for(let i of o.children)r(i);return!1;case"fragment":for(let i of o.children)r(i);return!1;case"element":{let i=!0;for(let s of o.children)r(s)||(i=!1);let a;for(let s of o.props)if(a=oe(s),a)break;return!a&&!i&&(a=ie(o)),o.static=!a,a?n.set(o,a):e.push(o),o.static}default:return!1}};for(let o of Array.isArray(t)?t:[t])r(o);return{staticElements:e,reasons:n}}function ie(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"},se=["pointerdown","focusin","keydown"],L=new Set(["eager","idle","visible","interaction","media","never"]),f=class extends Error{};function j(t,e){let n=t.slice(5);if(!L.has(n))throw new f(`Unknown load strategy 'load:${n}'. Expected one of ${[...L].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?le(e):[...se]};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 le(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 _(t){return t.kind!=="eager"&&t.kind!=="never"}var E=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],w=["Suspense","SuspenseList","Await"],x=["Router","Outlet","Redirect","Link"],Oe=[...E,...w,...x],$=new Set([...E,...w]);function B(t={}){let{controlFlowModule:e="@fluixi/dom",coreModule:n="fluixi",routerModule:r="fluixi/router"}=t,o={};for(let i of E)o[i]=e;for(let i of w)o[i]=n;for(let i of x)o[i]=r;return o}function H(t,e={}){let{resolver:n,isBound:r,modules:o,strategyFor:i}=e,a=B(o),s=new Map,l=new Set,c=p=>{let{name:u}=p;if(!u||u.includes(".")||r?.(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 r of n){e(r);let o=r.children;o&&N(o,e)}}function F(t){let e=[];N(t,i=>{i.kind==="component"&&i.source&&e.push(i)});let n=new Set,r=new Set;for(let i of e){let{module:a,loading:s}=i.source;s.kind==="eager"&&n.add(a),s.kind==="never"&&r.add(a)}let o=new Map;for(let i of e){let a=i.source;_(a.loading)&&n.has(a.module)&&(a.loading={kind:"eager"},o.set(a.module,(o.get(a.module)??0)+1))}return{collapsed:o,conflicted:[...r].filter(i=>n.has(i))}}var ae=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),z={className:"class",htmlFor:"for"},ce=new Set(["innerHTML","outerHTML","innerText","textContent","value","checked","selected","muted","defaultValue","defaultChecked","children","ref"]),pe=new Set(["script","style","textarea","title"]);function T(t){return pe.has(t)}function J(t){return z[t]??t}function h(t){return t.kind!=="attr"||t.expr!==void 0||t.name.includes(":")?!1:!ce.has(t.name)}function S(t){if(!t.static||T(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"&&S(e)))return!1;return!0}function g(t){let e=t.props.map(ue).filter(Boolean).join(""),n=`<${t.tag}${e}>`;return ae.has(t.tag)?n:`${n}${t.children.map(de).join("")}</${t.tag}>`}function de(t){if(t.kind==="text")return fe(t.value);if(t.kind!=="element")throw new Error(`serializeStatic: unexpected ${t.kind}`);return g(t)}function ue(t){let e=z[t.name]??t.name,n=t.literal;return n===!0||n===void 0?` ${e}`:n===!1||n===null?"":` ${e}="${me(String(n))}"`}function me(t){return t.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function fe(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}var he="<!--fx-->",ge="<!--fx/-->";function b(t){return t.kind==="expr"||t.kind==="component"||t.kind==="control"}function Re(t){return t.kind==="text"||t.kind==="element"&&U(t)}function U(t){return t.svg||T(t.tag)||!t.props.every(e=>h(e))?!1:t.children.every(e=>Re(e)||b(e))}function I(t){if(b(t))return!0;let e=t.children;return e?e.some(I):!1}function V(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"||V(e))}function W(t){if(!U(t)||!V(t)||!t.children.some(I))return null;let e=[],n=[],r=0,o=a=>{let s=`_n$${r++}`;return e.push({ref:s,expr:a}),s};return i(t,"_el$"),{html:ve(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=o(u),A=o(`holeEnd(${v})`);n.push({parentRef:s,startRef:v,endRef:A,node:p}),c=A;continue}let m=o(u);p.kind==="element"&&I(p)&&i(p,m),c=m}}}function ve(t){return g(q(t)).split(G).join(he+ge)}function q(t){return{...t,children:t.children.map(e=>b(e)?{kind:"text",value:G}:e.kind==="element"?q(e):e)}}var G="\0fx-hole\0";var P={version:1,module:"@fluixi/dom",symbols:["createNativeElement","insert","spread","setAttribute","delegateEvents","createComponent","createMemo","untrack","Show","For","Index","Switch","Match","Dynamic","ErrorBoundary"]},Ue={version:2,module:"@fluixi/dom",symbols:[...P.symbols,"template","cloneTemplate","walk"]};var ke={show:"Show",for:"For",index:"Index",switch:"Switch",match:"Match",dynamic:"Dynamic",errorBoundary:"ErrorBoundary",suspense:"Suspense"};function xe(t){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(t)}function Y(t){return xe(t)?t:JSON.stringify(t)}function Ne(t){return t.expr!==void 0?t.reactive?`() => (${t.expr})`:`(${t.expr})`:JSON.stringify(t.literal??!0)}function Ie(t){return t.expr!==void 0?`(${t.expr})`:JSON.stringify(t.literal??!0)}function be(t,e,n){let r=t.filter(s=>s.kind==="spread"),i=t.filter(s=>s.kind!=="spread").map(s=>`${Y(s.name)}: ${Ne(s)}`);e!=null&&i.push(`children: ${e}`);let a=`{ ${i.join(", ")} }`;return r.length>0?(n.add("mergeProps"),`mergeProps(${r.map(s=>s.expr).join(", ")}, ${a})`):a}function Z(t,e,n){return t.length===1?R(t[0],e,n):`[${t.map(r=>R(r,e,n)).join(", ")}]`}function K(t,e,n,r,o){r.add("createMemo"),r.add("createComponent");let i=e.filter(c=>c.kind==="spread"),s=e.filter(c=>c.kind!=="spread").map(c=>`get ${Y(c.name)}() { return ${Ie(c)}; }`);n.length>0&&s.push(`get children() { return ${Z(n,r,o)}; }`);let l=`{ ${s.join(", ")} }`;return i.length>0&&(r.add("mergeProps"),l=`mergeProps(${i.map(c=>c.expr).join(", ")}, ${l})`),`createMemo(() => createComponent(${t}, ${l}))`}function ye(t,e){let n=J(e.name),r=e.literal;return r===!0||r===void 0?`${t}.setAttribute(${JSON.stringify(n)}, "");`:r===!1||r===null?"":`${t}.setAttribute(${JSON.stringify(n)}, ${JSON.stringify(String(r))});`}var X=!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":Z(t.children,e,n);case"component":return K(t.name,t.props,t.children,e,n);case"control":{let r=ke[t.control]??t.control;return e.add(r),K(r,t.props,t.children,e,n)}case"element":{if(n&&t.static&&!t.svg&&S(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&&X){let s=W(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 r=JSON.stringify(t.tag),o="_el$",i=[],a=t.svg?`${r}, true`:r;if(i.push(`const ${o} = createNativeElement(${a});`),t.props.length>0)if(!t.svg&&t.props.every(h))for(let s of t.props)i.push(ye(o,s));else{e.add("spread");let s=t.svg?", isSVG: true":"";i.push(`spread({ element: ${o}, props: ${be(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(${o}, ${l}, null);`:`insert(${o}, ${l});`)}return i.push(`return ${o};`),`(() => { ${i.join(" ")} })()`}}}function y(t,e){if(!e||e.length===0)return t;let n=new Map(e.map(r=>[r.id,JSON.stringify(r.html)]));return t.replace(/_tmpl\$\d+/g,r=>n.get(r)??r)}var C={name:"imperative",contract:P,emit(t,e){let n=new Set,r=e?.templateClone!==!1?[]:void 0;return X=e?.partialTemplates===!0,{code:R(t,n,r),imports:Array.from(n),templates:r}}};var Ce=t=>"components"in t;function Q(t,e){return t.replace(/\$(\d+)/g,(n,r)=>e[Number(r)]??n)}function Ee(t,e){return typeof e=="string"?{module:e,export:t}:e}function ee(t=[]){let e=new Map,n=[],r=[];for(let a of t){if(!Ce(a)){r.push(a);continue}for(let[s,l]of Object.entries(a.components)){let c=Ee(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 o=new Map;return{resolve:a=>{if(o.has(a))return o.get(a);let s=e.get(a);if(!s)for(let l of r){let c=a.match(new RegExp(l.match.source,l.match.flags.replace("g","")));if(c){s={module:Q(l.module,c),export:l.export?Q(l.export,c):a};break}}return o.set(a,s),s},names:()=>[...e.keys()],conflicts:()=>n}}import{parseTemplate as we}from"@fluixi/template-parser";function M(t){let e=t.split(/\r\n|\n|\r/),n=0;for(let o=0;o<e.length;o++)/[^ \t]/.test(e[o])&&(n=o);let r="";for(let o=0;o<e.length;o++){let i=e[o].replace(/\t/g," ");o!==0&&(i=i.replace(/^ +/,"")),o!==e.length-1&&(i=i.replace(/ +$/,"")),i&&(o!==n&&(i+=" "),r+=i)}return r}var te=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function $e(t){return t.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${")}function ne(t){return t.charAt(0).toUpperCase()+t.slice(1)}var O=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:r,templates:o}=C.emit(e,{});for(let i of r)this.used.add(i);return y(n,o)}lowerRoot(e){let n=this.lowerChildren(e);return n.length===1?n[0]:{kind:"fragment",children:n}}lowerChildren(e){let n=[];for(let r=0;r<e.length;r++){let o=e[r];if(o.kind==="Element"||o.kind==="Component"){let a=o.attributes.find(s=>s.kind==="IfDirective");if(a&&a.kind==="IfDirective"){let s=r+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(o,a.hole,c?l:null)),c&&(r=s);continue}if(o.attributes.some(s=>s.kind==="EachDirective")){n.push(this.lowerEach(o));continue}}let i=this.lowerNode(o);i&&n.push(i)}return n}isBlankText(e){return e.kind==="Text"&&!e.raw&&M(e.value)===""}lowerNode(e){switch(e.kind){case"Text":{if(e.raw)return{kind:"text",value:e.value};let n=M(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(r=>r.kind==="Attribute"&&r.name==="is");if(e.tag==="component"&&n&&n.value&&n.value.kind==="hole"){let r=e.attributes.filter(i=>i!==n),o=this.lowerComponent({...e,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: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,r=this.lowerAttributes(e.attributes),{slots:o,rest:i}=this.partitionSlots(e.children);for(let[l,c]of o){let d=c.length===1?c[0]:{kind:"fragment",children:c},p={name:l,kind:"attr",expr:this.emit(d),jsxElement:!0},u=r.findIndex(m=>m.name===l);u>=0?r[u]=p:r.push(p)}let a=e.attributes.find(l=>l.kind==="LoadDirective"),s=a?j(`load:${a.strategy}`,a.modifier):void 0;return{kind:"component",name:n,props:r,children:this.lowerChildren(i),...s?{load:s}:{}}}partitionSlots(e){let n=new Map,r=[];for(let o of e){if(o.kind==="Element"||o.kind==="Component"){let i=o.attributes.find(a=>a.kind==="Attribute"&&a.name==="slot");if(i&&i.value&&i.value.kind==="static"){let a={...o,attributes:o.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}}r.push(o)}return{slots:n,rest:r}}lowerIf(e,n,r){let o=this.hole(n),i=[{name:"when",kind:"attr",expr:o.code,reactive:o.reactive}];if(r){let s=this.stripAndLower(r,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 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 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:o,children:[{kind:"expr",code:a,reactive:!1}]}}itemArrow(e){let n=e.children.filter(r=>!this.isBlankText(r));return n.length!==1||n[0].kind!=="Expression"?null:this.hole(n[0].hole).arrow??null}stripAndLower(e,n){let r={...e,attributes:e.attributes.filter(o=>!n(o))};return r.kind==="Element"?this.lowerElement(r):this.lowerComponent(r)}rebuildWithChildren(e,n){let r=this.lowerAttributes(e.attributes.filter(o=>o.kind!=="EachDirective"));return e.kind==="Element"?{kind:"element",tag:e.tag,svg:e.namespace==="svg",props:r,children:n,static:!1}:{kind:"component",name:e.tag,props:r,children:n}}lowerAttributes(e){let n=[],r=[],o=!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);r.push(`${JSON.stringify(l.name)}: ${c.code}`),o=o||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 r.length>0&&n.push({name:"classList",kind:"attr",expr:`{ ${r.join(", ")} }`,reactive:o}),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(),r=this.hole(e.hole).code;if(!(e.syntax==="colon"||e.modifiers.length>0))return{name:"on"+ne(e.name),kind:"event",event:{name:n,delegated:te.has(n)},expr:r};let i=this.wrapHandler(r,e.modifiers),a=this.eventOptions(e.modifiers),s=a?`[${i}, ${a}]`:i;return{name:"on:"+n,kind:"attr",expr:s}}wrapHandler(e,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?e:`(e) => { ${r}${o.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 r=e==="checked",o=r?"change":"input",i=r?"checked":"value";this.used.add("bindPair");let a=`bindPair(${n})`;return[{name:e,kind:"attr",expr:`${a}[0]()`,reactive:!0},{name:"on"+ne(o),kind:"event",event:{name:o,delegated:te.has(o)},expr:`(e) => ${a}[1](e.target.${i})`}]}plainAttr(e){let n=e.value,r=e.name;e.name==="class"?r=n&&n.kind==="hole"&&this.hole(n.hole).object?"classList":"className":e.name==="html"&&(r="innerHTML");let i={name:r,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 $e(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 re(t,e,n,r={}){let{root:o}=we(t,{svg:r.svg});return new O(e,n).lowerRoot(o.children)}function Te(t){let e=[],n=0;return t.statics.forEach((r,o)=>{if(e.push({kind:"static",text:r,start:n}),n+=r.length,o<t.holes.length){let i=n+t.holes[o].code.length;e.push({kind:"hole",index:o,start:n,end:i}),n=i}}),e}function ct(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(Te(t),t.holes,e)}function Se(t,e,n={}){let r=new Set,o=re(t,[...e],r,{svg:n.svg});D(o),H(o,{resolver:ee(n.resolve??[]),modules:{controlFlowModule:n.controlFlowModule??"@fluixi/dom",coreModule:n.coreModule??"fluixi",routerModule:n.routerModule??"fluixi/router"},strategyFor:l=>l.load}),F(o);let{code:i,imports:a,templates:s}=C.emit(o,{templateClone:n.templateClone,partialTemplates:n.partialTemplates});for(let l of a)r.add(l);return n.hoistTemplates?{code:i,imports:[...r],ir:o,templates:s}:{code:y(i,s),imports:[...r],ir:o}}export{Se as compilePieces,ct as compileTemplate};
|
|
1
|
+
function oe(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 D(t){let e=[],n=new Map,r=o=>{switch(o.kind){case"text":return!0;case"expr":return!1;case"component":case"control":for(let i of o.children)r(i);return!1;case"fragment":for(let i of o.children)r(i);return!1;case"element":{let i=!0;for(let s of o.children)r(s)||(i=!1);let a;for(let s of o.props)if(a=oe(s),a)break;return!a&&!i&&(a=ie(o)),o.static=!a,a?n.set(o,a):e.push(o),o.static}default:return!1}};for(let o of Array.isArray(t)?t:[t])r(o);return{staticElements:e,reasons:n}}function ie(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"},se=["pointerdown","focusin","keydown"],L=new Set(["eager","idle","visible","interaction","media","never"]),f=class extends Error{};function j(t,e){let n=t.slice(5);if(!L.has(n))throw new f(`Unknown load strategy 'load:${n}'. Expected one of ${[...L].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?le(e):[...se]};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 le(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 _(t){return t.kind!=="eager"&&t.kind!=="never"}var E=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],w=["Suspense","SuspenseList","Await"],x=["Router","Outlet","Redirect","Link"],Oe=[...E,...w,...x],T=new Set([...E,...w]);function B(t={}){let{controlFlowModule:e="@fluixi/dom",coreModule:n="@fluixi/core",routerModule:r="@fluixi/core/router"}=t,o={};for(let i of E)o[i]=e;for(let i of w)o[i]=n;for(let i of x)o[i]=r;return o}function H(t,e={}){let{resolver:n,isBound:r,modules:o,strategyFor:i}=e,a=B(o),s=new Map,l=new Set,c=p=>{let{name:u}=p;if(!u||u.includes(".")||r?.(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 r of n){e(r);let o=r.children;o&&N(o,e)}}function F(t){let e=[];N(t,i=>{i.kind==="component"&&i.source&&e.push(i)});let n=new Set,r=new Set;for(let i of e){let{module:a,loading:s}=i.source;s.kind==="eager"&&n.add(a),s.kind==="never"&&r.add(a)}let o=new Map;for(let i of e){let a=i.source;_(a.loading)&&n.has(a.module)&&(a.loading={kind:"eager"},o.set(a.module,(o.get(a.module)??0)+1))}return{collapsed:o,conflicted:[...r].filter(i=>n.has(i))}}var ae=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),z={className:"class",htmlFor:"for"},ce=new Set(["innerHTML","outerHTML","innerText","textContent","value","checked","selected","muted","defaultValue","defaultChecked","children","ref"]),pe=new Set(["script","style","textarea","title"]);function $(t){return pe.has(t)}function J(t){return z[t]??t}function h(t){return t.kind!=="attr"||t.expr!==void 0||t.name.includes(":")?!1:!ce.has(t.name)}function S(t){if(!t.static||$(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"&&S(e)))return!1;return!0}function g(t){let e=t.props.map(ue).filter(Boolean).join(""),n=`<${t.tag}${e}>`;return ae.has(t.tag)?n:`${n}${t.children.map(de).join("")}</${t.tag}>`}function de(t){if(t.kind==="text")return fe(t.value);if(t.kind!=="element")throw new Error(`serializeStatic: unexpected ${t.kind}`);return g(t)}function ue(t){let e=z[t.name]??t.name,n=t.literal;return n===!0||n===void 0?` ${e}`:n===!1||n===null?"":` ${e}="${me(String(n))}"`}function me(t){return t.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function fe(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}var he="<!--fx-->",ge="<!--fx/-->";function b(t){return t.kind==="expr"||t.kind==="component"||t.kind==="control"}function Re(t){return t.kind==="text"||t.kind==="element"&&U(t)}function U(t){return t.svg||$(t.tag)||!t.props.every(e=>h(e))?!1:t.children.every(e=>Re(e)||b(e))}function I(t){if(b(t))return!0;let e=t.children;return e?e.some(I):!1}function V(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"||V(e))}function W(t){if(!U(t)||!V(t)||!t.children.some(I))return null;let e=[],n=[],r=0,o=a=>{let s=`_n$${r++}`;return e.push({ref:s,expr:a}),s};return i(t,"_el$"),{html:ve(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=o(u),A=o(`holeEnd(${v})`);n.push({parentRef:s,startRef:v,endRef:A,node:p}),c=A;continue}let m=o(u);p.kind==="element"&&I(p)&&i(p,m),c=m}}}function ve(t){return g(q(t)).split(G).join(he+ge)}function q(t){return{...t,children:t.children.map(e=>b(e)?{kind:"text",value:G}:e.kind==="element"?q(e):e)}}var G="\0fx-hole\0";var P={version:1,module:"@fluixi/dom",symbols:["createNativeElement","insert","spread","setAttribute","delegateEvents","createComponent","createMemo","untrack","Show","For","Index","Switch","Match","Dynamic","ErrorBoundary"]},Ue={version:2,module:"@fluixi/dom",symbols:[...P.symbols,"template","cloneTemplate","walk"]};var ke={show:"Show",for:"For",index:"Index",switch:"Switch",match:"Match",dynamic:"Dynamic",errorBoundary:"ErrorBoundary",suspense:"Suspense"};function xe(t){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(t)}function Y(t){return xe(t)?t:JSON.stringify(t)}function Ne(t){return t.expr!==void 0?t.reactive?`() => (${t.expr})`:`(${t.expr})`:JSON.stringify(t.literal??!0)}function Ie(t){return t.expr!==void 0?`(${t.expr})`:JSON.stringify(t.literal??!0)}function be(t,e,n){let r=t.filter(s=>s.kind==="spread"),i=t.filter(s=>s.kind!=="spread").map(s=>`${Y(s.name)}: ${Ne(s)}`);e!=null&&i.push(`children: ${e}`);let a=`{ ${i.join(", ")} }`;return r.length>0?(n.add("mergeProps"),`mergeProps(${r.map(s=>s.expr).join(", ")}, ${a})`):a}function Z(t,e,n){return t.length===1?R(t[0],e,n):`[${t.map(r=>R(r,e,n)).join(", ")}]`}function K(t,e,n,r,o){r.add("createMemo"),r.add("createComponent");let i=e.filter(c=>c.kind==="spread"),s=e.filter(c=>c.kind!=="spread").map(c=>`get ${Y(c.name)}() { return ${Ie(c)}; }`);n.length>0&&s.push(`get children() { return ${Z(n,r,o)}; }`);let l=`{ ${s.join(", ")} }`;return i.length>0&&(r.add("mergeProps"),l=`mergeProps(${i.map(c=>c.expr).join(", ")}, ${l})`),`createMemo(() => createComponent(${t}, ${l}))`}function ye(t,e){let n=J(e.name),r=e.literal;return r===!0||r===void 0?`${t}.setAttribute(${JSON.stringify(n)}, "");`:r===!1||r===null?"":`${t}.setAttribute(${JSON.stringify(n)}, ${JSON.stringify(String(r))});`}var X=!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":Z(t.children,e,n);case"component":return K(t.name,t.props,t.children,e,n);case"control":{let r=ke[t.control]??t.control;return e.add(r),K(r,t.props,t.children,e,n)}case"element":{if(n&&t.static&&!t.svg&&S(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&&X){let s=W(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 r=JSON.stringify(t.tag),o="_el$",i=[],a=t.svg?`${r}, true`:r;if(i.push(`const ${o} = createNativeElement(${a});`),t.props.length>0)if(!t.svg&&t.props.every(h))for(let s of t.props)i.push(ye(o,s));else{e.add("spread");let s=t.svg?", isSVG: true":"";i.push(`spread({ element: ${o}, props: ${be(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(${o}, ${l}, null);`:`insert(${o}, ${l});`)}return i.push(`return ${o};`),`(() => { ${i.join(" ")} })()`}}}function y(t,e){if(!e||e.length===0)return t;let n=new Map(e.map(r=>[r.id,JSON.stringify(r.html)]));return t.replace(/_tmpl\$\d+/g,r=>n.get(r)??r)}var C={name:"imperative",contract:P,emit(t,e){let n=new Set,r=e?.templateClone!==!1?[]:void 0;return X=e?.partialTemplates===!0,{code:R(t,n,r),imports:Array.from(n),templates:r}}};var Ce=t=>"components"in t;function Q(t,e){return t.replace(/\$(\d+)/g,(n,r)=>e[Number(r)]??n)}function Ee(t,e){return typeof e=="string"?{module:e,export:t}:e}function ee(t=[]){let e=new Map,n=[],r=[];for(let a of t){if(!Ce(a)){r.push(a);continue}for(let[s,l]of Object.entries(a.components)){let c=Ee(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 o=new Map;return{resolve:a=>{if(o.has(a))return o.get(a);let s=e.get(a);if(!s)for(let l of r){let c=a.match(new RegExp(l.match.source,l.match.flags.replace("g","")));if(c){s={module:Q(l.module,c),export:l.export?Q(l.export,c):a};break}}return o.set(a,s),s},names:()=>[...e.keys()],conflicts:()=>n}}import{parseTemplate as we}from"@fluixi/template-parser";function M(t){let e=t.split(/\r\n|\n|\r/),n=0;for(let o=0;o<e.length;o++)/[^ \t]/.test(e[o])&&(n=o);let r="";for(let o=0;o<e.length;o++){let i=e[o].replace(/\t/g," ");o!==0&&(i=i.replace(/^ +/,"")),o!==e.length-1&&(i=i.replace(/ +$/,"")),i&&(o!==n&&(i+=" "),r+=i)}return r}var te=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function Te(t){return t.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${")}function ne(t){return t.charAt(0).toUpperCase()+t.slice(1)}var O=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:r,templates:o}=C.emit(e,{});for(let i of r)this.used.add(i);return y(n,o)}lowerRoot(e){let n=this.lowerChildren(e);return n.length===1?n[0]:{kind:"fragment",children:n}}lowerChildren(e){let n=[];for(let r=0;r<e.length;r++){let o=e[r];if(o.kind==="Element"||o.kind==="Component"){let a=o.attributes.find(s=>s.kind==="IfDirective");if(a&&a.kind==="IfDirective"){let s=r+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(o,a.hole,c?l:null)),c&&(r=s);continue}if(o.attributes.some(s=>s.kind==="EachDirective")){n.push(this.lowerEach(o));continue}}let i=this.lowerNode(o);i&&n.push(i)}return n}isBlankText(e){return e.kind==="Text"&&!e.raw&&M(e.value)===""}lowerNode(e){switch(e.kind){case"Text":{if(e.raw)return{kind:"text",value:e.value};let n=M(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(r=>r.kind==="Attribute"&&r.name==="is");if(e.tag==="component"&&n&&n.value&&n.value.kind==="hole"){let r=e.attributes.filter(i=>i!==n),o=this.lowerComponent({...e,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: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,r=this.lowerAttributes(e.attributes),{slots:o,rest:i}=this.partitionSlots(e.children);for(let[l,c]of o){let d=c.length===1?c[0]:{kind:"fragment",children:c},p={name:l,kind:"attr",expr:this.emit(d),jsxElement:!0},u=r.findIndex(m=>m.name===l);u>=0?r[u]=p:r.push(p)}let a=e.attributes.find(l=>l.kind==="LoadDirective"),s=a?j(`load:${a.strategy}`,a.modifier):void 0;return{kind:"component",name:n,props:r,children:this.lowerChildren(i),...s?{load:s}:{}}}partitionSlots(e){let n=new Map,r=[];for(let o of e){if(o.kind==="Element"||o.kind==="Component"){let i=o.attributes.find(a=>a.kind==="Attribute"&&a.name==="slot");if(i&&i.value&&i.value.kind==="static"){let a={...o,attributes:o.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}}r.push(o)}return{slots:n,rest:r}}lowerIf(e,n,r){let o=this.hole(n),i=[{name:"when",kind:"attr",expr:o.code,reactive:o.reactive}];if(r){let s=this.stripAndLower(r,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 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 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:o,children:[{kind:"expr",code:a,reactive:!1}]}}itemArrow(e){let n=e.children.filter(r=>!this.isBlankText(r));return n.length!==1||n[0].kind!=="Expression"?null:this.hole(n[0].hole).arrow??null}stripAndLower(e,n){let r={...e,attributes:e.attributes.filter(o=>!n(o))};return r.kind==="Element"?this.lowerElement(r):this.lowerComponent(r)}rebuildWithChildren(e,n){let r=this.lowerAttributes(e.attributes.filter(o=>o.kind!=="EachDirective"));return e.kind==="Element"?{kind:"element",tag:e.tag,svg:e.namespace==="svg",props:r,children:n,static:!1}:{kind:"component",name:e.tag,props:r,children:n}}lowerAttributes(e){let n=[],r=[],o=!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);r.push(`${JSON.stringify(l.name)}: ${c.code}`),o=o||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 r.length>0&&n.push({name:"classList",kind:"attr",expr:`{ ${r.join(", ")} }`,reactive:o}),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(),r=this.hole(e.hole).code;if(!(e.syntax==="colon"||e.modifiers.length>0))return{name:"on"+ne(e.name),kind:"event",event:{name:n,delegated:te.has(n)},expr:r};let i=this.wrapHandler(r,e.modifiers),a=this.eventOptions(e.modifiers),s=a?`[${i}, ${a}]`:i;return{name:"on:"+n,kind:"attr",expr:s}}wrapHandler(e,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?e:`(e) => { ${r}${o.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 r=e==="checked",o=r?"change":"input",i=r?"checked":"value";this.used.add("bindPair");let a=`bindPair(${n})`;return[{name:e,kind:"attr",expr:`${a}[0]()`,reactive:!0},{name:"on"+ne(o),kind:"event",event:{name:o,delegated:te.has(o)},expr:`(e) => ${a}[1](e.target.${i})`}]}plainAttr(e){let n=e.value,r=e.name;e.name==="class"?r=n&&n.kind==="hole"&&this.hole(n.hole).object?"classList":"className":e.name==="html"&&(r="innerHTML");let i={name:r,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 Te(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 re(t,e,n,r={}){let{root:o}=we(t,{svg:r.svg});return new O(e,n).lowerRoot(o.children)}function $e(t){let e=[],n=0;return t.statics.forEach((r,o)=>{if(e.push({kind:"static",text:r,start:n}),n+=r.length,o<t.holes.length){let i=n+t.holes[o].code.length;e.push({kind:"hole",index:o,start:n,end:i}),n=i}}),e}function ct(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($e(t),t.holes,e)}function Se(t,e,n={}){let r=new Set,o=re(t,[...e],r,{svg:n.svg});D(o),H(o,{resolver:ee(n.resolve??[]),modules:{controlFlowModule:n.controlFlowModule??"@fluixi/dom",coreModule:n.coreModule??"@fluixi/core",routerModule:n.routerModule??"@fluixi/core/router"},strategyFor:l=>l.load}),F(o);let{code:i,imports:a,templates:s}=C.emit(o,{templateClone:n.templateClone,partialTemplates:n.partialTemplates});for(let l of a)r.add(l);return n.hoistTemplates?{code:i,imports:[...r],ir:o,templates:s}:{code:y(i,s),imports:[...r],ir:o}}export{Se as compilePieces,ct as compileTemplate};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var l=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var M=(o,t)=>{for(var e in t)l(o,e,{get:t[e],enumerable:!0})},O=(o,t,e,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of m(t))!d.call(o,n)&&n!==e&&l(o,n,{get:()=>t[n],enumerable:!(s=a(t,n))||s.enumerable});return o};var f=o=>O(l({},"__esModule",{value:!0}),o);var E={};M(E,{BUILTIN_COMPONENTS:()=>R,CORE_CONTROL_FLOW:()=>u,DOM_CONTROL_FLOW:()=>i,RESERVED_COMPONENTS:()=>x,ROUTER_COMPONENTS:()=>c,builtinComponentMap:()=>p,builtinComponents:()=>C,routerComponents:()=>g});module.exports=f(E);var i=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],u=["Suspense","SuspenseList","Await"],c=["Router","Outlet","Redirect","Link"],R=[...i,...u,...c],x=new Set([...i,...u]);function p(o={}){let{controlFlowModule:t="@fluixi/dom",coreModule:e="fluixi",routerModule:s="fluixi/router"}=o,n={};for(let r of i)n[r]=t;for(let r of u)n[r]=e;for(let r of c)n[r]=s;return n}function C(o={}){return{components:p(o)}}function g(o){let t=o??"fluixi/router";return{components:Object.fromEntries(c.map(e=>[e,t]))}}
|
|
1
|
+
"use strict";var l=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var M=(o,t)=>{for(var e in t)l(o,e,{get:t[e],enumerable:!0})},O=(o,t,e,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of m(t))!d.call(o,n)&&n!==e&&l(o,n,{get:()=>t[n],enumerable:!(s=a(t,n))||s.enumerable});return o};var f=o=>O(l({},"__esModule",{value:!0}),o);var E={};M(E,{BUILTIN_COMPONENTS:()=>R,CORE_CONTROL_FLOW:()=>u,DOM_CONTROL_FLOW:()=>i,RESERVED_COMPONENTS:()=>x,ROUTER_COMPONENTS:()=>c,builtinComponentMap:()=>p,builtinComponents:()=>C,routerComponents:()=>g});module.exports=f(E);var i=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],u=["Suspense","SuspenseList","Await"],c=["Router","Outlet","Redirect","Link"],R=[...i,...u,...c],x=new Set([...i,...u]);function p(o={}){let{controlFlowModule:t="@fluixi/dom",coreModule:e="@fluixi/core",routerModule:s="@fluixi/core/router"}=o,n={};for(let r of i)n[r]=t;for(let r of u)n[r]=e;for(let r of c)n[r]=s;return n}function C(o={}){return{components:p(o)}}function g(o){let t=o??"@fluixi/core/router";return{components:Object.fromEntries(c.map(e=>[e,t]))}}
|
|
@@ -28,14 +28,14 @@ import type { ComponentMapRule } from './component-resolver.js';
|
|
|
28
28
|
export interface BuiltinModules {
|
|
29
29
|
/** Control flow that lives in the DOM package. Default `@fluixi/dom`. */
|
|
30
30
|
controlFlowModule?: string;
|
|
31
|
-
/** Control flow that only exists in core. Default
|
|
31
|
+
/** Control flow that only exists in core. Default `@fluixi/core`. */
|
|
32
32
|
coreModule?: string;
|
|
33
|
-
/** Router components. Default
|
|
33
|
+
/** Router components. Default `@fluixi/core/router`. */
|
|
34
34
|
routerModule?: string;
|
|
35
35
|
}
|
|
36
36
|
/** Control flow lowered against the DOM runtime. */
|
|
37
37
|
export declare const DOM_CONTROL_FLOW: readonly ["Show", "For", "Index", "Switch", "Match", "Portal", "Dynamic", "ErrorBoundary"];
|
|
38
|
-
/** Control flow that only
|
|
38
|
+
/** Control flow that only `@fluixi/core` exports — importing it from dom resolves to nothing. */
|
|
39
39
|
export declare const CORE_CONTROL_FLOW: readonly ["Suspense", "SuspenseList", "Await"];
|
|
40
40
|
/**
|
|
41
41
|
* Router components.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../src/resolve/builtins.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,sFAAsF;AACtF,MAAM,WAAW,cAAc;IAC7B,yEAAyE;IACzE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B
|
|
1
|
+
{"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../src/resolve/builtins.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,sFAAsF;AACtF,MAAM,WAAW,cAAc;IAC7B,yEAAyE;IACzE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,oDAAoD;AACpD,eAAO,MAAM,gBAAgB,4FASnB,CAAC;AAEX,iGAAiG;AACjG,eAAO,MAAM,iBAAiB,gDAAiD,CAAC;AAEhF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,mDAAoD,CAAC;AAEnF,0DAA0D;AAC1D,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAI/C,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,MAAM,CAGlD,CAAC;AAEH,yEAAyE;AACzE,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,cAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYxF;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,cAAmB,GAAG,gBAAgB,CAEhF;AAED,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAGxE"}
|
package/dist/resolve/builtins.js
CHANGED
|
@@ -9,7 +9,7 @@ export const DOM_CONTROL_FLOW = [
|
|
|
9
9
|
'Dynamic',
|
|
10
10
|
'ErrorBoundary',
|
|
11
11
|
];
|
|
12
|
-
/** Control flow that only
|
|
12
|
+
/** Control flow that only `@fluixi/core` exports — importing it from dom resolves to nothing. */
|
|
13
13
|
export const CORE_CONTROL_FLOW = ['Suspense', 'SuspenseList', 'Await'];
|
|
14
14
|
/**
|
|
15
15
|
* Router components.
|
|
@@ -37,7 +37,7 @@ export const RESERVED_COMPONENTS = new Set([
|
|
|
37
37
|
]);
|
|
38
38
|
/** Name → module for every built-in, honouring host module overrides. */
|
|
39
39
|
export function builtinComponentMap(modules = {}) {
|
|
40
|
-
const { controlFlowModule = '@fluixi/dom', coreModule = 'fluixi', routerModule = 'fluixi/router', } = modules;
|
|
40
|
+
const { controlFlowModule = '@fluixi/dom', coreModule = '@fluixi/core', routerModule = '@fluixi/core/router', } = modules;
|
|
41
41
|
const map = {};
|
|
42
42
|
for (const name of DOM_CONTROL_FLOW)
|
|
43
43
|
map[name] = controlFlowModule;
|
|
@@ -59,6 +59,6 @@ export function builtinComponents(modules = {}) {
|
|
|
59
59
|
}
|
|
60
60
|
/** Just the router group as a rule — the one group that is purely an import. */
|
|
61
61
|
export function routerComponents(routerModule) {
|
|
62
|
-
const module = routerModule ?? 'fluixi/router';
|
|
62
|
+
const module = routerModule ?? '@fluixi/core/router';
|
|
63
63
|
return { components: Object.fromEntries(ROUTER_COMPONENTS.map((n) => [n, module])) };
|
|
64
64
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var s=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],i=["Suspense","SuspenseList","Await"],u=["Router","Outlet","Redirect","Link"],p=[...s,...i,...u],a=new Set([...s,...i]);function l(o={}){let{controlFlowModule:e="@fluixi/dom",coreModule:r="fluixi",routerModule:c="fluixi/router"}=o,n={};for(let t of s)n[t]=e;for(let t of i)n[t]=r;for(let t of u)n[t]=c;return n}function m(o={}){return{components:l(o)}}function d(o){let e=o??"fluixi/router";return{components:Object.fromEntries(u.map(r=>[r,e]))}}export{p as BUILTIN_COMPONENTS,i as CORE_CONTROL_FLOW,s as DOM_CONTROL_FLOW,a as RESERVED_COMPONENTS,u as ROUTER_COMPONENTS,l as builtinComponentMap,m as builtinComponents,d as routerComponents};
|
|
1
|
+
var s=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],i=["Suspense","SuspenseList","Await"],u=["Router","Outlet","Redirect","Link"],p=[...s,...i,...u],a=new Set([...s,...i]);function l(o={}){let{controlFlowModule:e="@fluixi/dom",coreModule:r="@fluixi/core",routerModule:c="@fluixi/core/router"}=o,n={};for(let t of s)n[t]=e;for(let t of i)n[t]=r;for(let t of u)n[t]=c;return n}function m(o={}){return{components:l(o)}}function d(o){let e=o??"@fluixi/core/router";return{components:Object.fromEntries(u.map(r=>[r,e]))}}export{p as BUILTIN_COMPONENTS,i as CORE_CONTROL_FLOW,s as DOM_CONTROL_FLOW,a as RESERVED_COMPONENTS,u as ROUTER_COMPONENTS,l as builtinComponentMap,m as builtinComponents,d as routerComponents};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var C=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var D=Object.getOwnPropertyNames;var P=Object.prototype.hasOwnProperty;var k=(e,t)=>{for(var r in t)C(e,r,{get:t[r],enumerable:!0})},A=(e,t,r,c)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of D(t))!P.call(e,n)&&n!==r&&C(e,n,{get:()=>t[n],enumerable:!(c=_(t,n))||c.enumerable});return e};var B=e=>A(C({},"__esModule",{value:!0}),e);var H={};k(H,{componentGlobals:()=>V});module.exports=B(H);var G=e=>"components"in e;function S(e,t){return e.replace(/\$(\d+)/g,(r,c)=>t[Number(c)]??r)}function W(e,t){return typeof t=="string"?{module:t,export:e}:t}function $(e=[]){let t=new Map,r=[],c=[];for(let s of e){if(!G(s)){c.push(s);continue}for(let[i,a]of Object.entries(s.components)){let u=W(i,a),m=t.get(i);if(m&&m.module!==u.module){let d=r.find(R=>R.name===i);d?d.modules.push(u.module):r.push({name:i,modules:[m.module,u.module]});continue}t.set(i,u)}}let n=new Map;return{resolve:s=>{if(n.has(s))return n.get(s);let i=t.get(s);if(!i)for(let a of c){let u=s.match(new RegExp(a.match.source,a.match.flags.replace("g","")));if(u){i={module:S(a.module,u),export:a.export?S(a.export,u):s};break}}return n.set(s,i),i},names:()=>[...t.keys()],conflicts:()=>r}}var b=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],M=["Suspense","SuspenseList","Await"],E=["Router","Outlet","Redirect","Link"],J=[...b,...M,...E],Q=new Set([...b,...M]);function I(e={}){let{controlFlowModule:t="@fluixi/dom",coreModule:r="fluixi",routerModule:c="fluixi/router"}=e,n={};for(let p of b)n[p]=t;for(let p of M)n[p]=r;for(let p of E)n[p]=c;return n}var f="@fluixi/reactive/signal",h={$signal:{export:"signal",module:f,returns:"signal-handle"},$memo:{export:"memo",module:f,returns:"memo-handle"},$effect:{export:"effect",module:f,returns:"effect"},$store:{export:"store",module:"@fluixi/reactive/store",returns:"store-handle"},$resource:{export:"resource",module:f,returns:"resource-handle"},$selector:{export:"createSelector",module:f,returns:"memo-accessor"},$deferred:{export:"createDeferred",module:f,returns:"memo-accessor"},$untrack:{export:"untrack",module:f,returns:"plain"},$untrackStore:{export:"untrackStore",module:"@fluixi/reactive/store",returns:"plain"}};var Y=new RegExp(`\\$(?:${Object.keys(h).map(e=>e.slice(1)).join("|")})\\s*\\(`);var F=new Set(["Text","Image","Option","Audio","Comment","Range","Selection","Notification","Event","Document","Element","Node","Screen","Window","Location","History","Storage","Response","Request","Headers"]);function U(e){if(e.startsWith(".")||e.startsWith("/")||/^[~@]\//.test(e))return;let t=e.split("/");return e.startsWith("@")?t.slice(0,2).join("/"):t[0]}function y(e){return`_${e.replace(/[^A-Za-z0-9]/g,"_")}`}function V(e,t={}){let{available:r,builtins:c=!0,intrinsics:n=!0,generator:p="@fluixi/compiler",specifier:s=o=>o}=t,i=[...e];c&&i.push({components:I()});let a=$(i),u=r?new Set(r):void 0,m=[],d=[],R=[],v=new Map;for(let o of[...a.names()].sort()){let l=a.resolve(o);if(!l)continue;let g=U(l.module);F.has(o)?d.push(o):u&&g&&!u.has(g)?R.push(o):(m.push(o),v.set(o,l))}let w=n?[...new Set(Object.values(h).map(o=>o.module))]:[],O=[...new Set([...m.map(o=>v.get(o).module),...w])].sort().map(o=>`import * as ${y(o)} from '${s(o)}';`),N=m.map(o=>{let l=v.get(o),g=y(l.module);return l.export==="default"?` const ${o}: typeof ${g}.default;`:` export import ${o} = ${g}.${l.export};`}),T=d.length>0?`//
|
|
1
|
+
"use strict";var C=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var D=Object.getOwnPropertyNames;var P=Object.prototype.hasOwnProperty;var k=(e,t)=>{for(var r in t)C(e,r,{get:t[r],enumerable:!0})},A=(e,t,r,c)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of D(t))!P.call(e,n)&&n!==r&&C(e,n,{get:()=>t[n],enumerable:!(c=_(t,n))||c.enumerable});return e};var B=e=>A(C({},"__esModule",{value:!0}),e);var H={};k(H,{componentGlobals:()=>V});module.exports=B(H);var G=e=>"components"in e;function S(e,t){return e.replace(/\$(\d+)/g,(r,c)=>t[Number(c)]??r)}function W(e,t){return typeof t=="string"?{module:t,export:e}:t}function $(e=[]){let t=new Map,r=[],c=[];for(let s of e){if(!G(s)){c.push(s);continue}for(let[i,a]of Object.entries(s.components)){let u=W(i,a),m=t.get(i);if(m&&m.module!==u.module){let d=r.find(R=>R.name===i);d?d.modules.push(u.module):r.push({name:i,modules:[m.module,u.module]});continue}t.set(i,u)}}let n=new Map;return{resolve:s=>{if(n.has(s))return n.get(s);let i=t.get(s);if(!i)for(let a of c){let u=s.match(new RegExp(a.match.source,a.match.flags.replace("g","")));if(u){i={module:S(a.module,u),export:a.export?S(a.export,u):s};break}}return n.set(s,i),i},names:()=>[...t.keys()],conflicts:()=>r}}var b=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],M=["Suspense","SuspenseList","Await"],E=["Router","Outlet","Redirect","Link"],J=[...b,...M,...E],Q=new Set([...b,...M]);function I(e={}){let{controlFlowModule:t="@fluixi/dom",coreModule:r="@fluixi/core",routerModule:c="@fluixi/core/router"}=e,n={};for(let p of b)n[p]=t;for(let p of M)n[p]=r;for(let p of E)n[p]=c;return n}var f="@fluixi/reactive/signal",h={$signal:{export:"signal",module:f,returns:"signal-handle"},$memo:{export:"memo",module:f,returns:"memo-handle"},$effect:{export:"effect",module:f,returns:"effect"},$store:{export:"store",module:"@fluixi/reactive/store",returns:"store-handle"},$resource:{export:"resource",module:f,returns:"resource-handle"},$selector:{export:"createSelector",module:f,returns:"memo-accessor"},$deferred:{export:"createDeferred",module:f,returns:"memo-accessor"},$untrack:{export:"untrack",module:f,returns:"plain"},$untrackStore:{export:"untrackStore",module:"@fluixi/reactive/store",returns:"plain"}};var Y=new RegExp(`\\$(?:${Object.keys(h).map(e=>e.slice(1)).join("|")})\\s*\\(`);var F=new Set(["Text","Image","Option","Audio","Comment","Range","Selection","Notification","Event","Document","Element","Node","Screen","Window","Location","History","Storage","Response","Request","Headers"]);function U(e){if(e.startsWith(".")||e.startsWith("/")||/^[~@]\//.test(e))return;let t=e.split("/");return e.startsWith("@")?t.slice(0,2).join("/"):t[0]}function y(e){return`_${e.replace(/[^A-Za-z0-9]/g,"_")}`}function V(e,t={}){let{available:r,builtins:c=!0,intrinsics:n=!0,generator:p="@fluixi/compiler",specifier:s=o=>o}=t,i=[...e];c&&i.push({components:I()});let a=$(i),u=r?new Set(r):void 0,m=[],d=[],R=[],v=new Map;for(let o of[...a.names()].sort()){let l=a.resolve(o);if(!l)continue;let g=U(l.module);F.has(o)?d.push(o):u&&g&&!u.has(g)?R.push(o):(m.push(o),v.set(o,l))}let w=n?[...new Set(Object.values(h).map(o=>o.module))]:[],O=[...new Set([...m.map(o=>v.get(o).module),...w])].sort().map(o=>`import * as ${y(o)} from '${s(o)}';`),N=m.map(o=>{let l=v.get(o),g=y(l.module);return l.export==="default"?` const ${o}: typeof ${g}.default;`:` export import ${o} = ${g}.${l.export};`}),T=d.length>0?`//
|
|
2
2
|
// Import these explicitly — lib.dom already declares the name, so an ambient
|
|
3
3
|
// declaration cannot win:
|
|
4
4
|
`+d.map(o=>{let l=a.resolve(o)?.module;return`// import { ${o} } from '${l?s(l):""}';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var j=t=>"components"in t;function O(t,o){return t.replace(/\$(\d+)/g,(a,u)=>o[Number(u)]??a)}function _(t,o){return typeof o=="string"?{module:o,export:t}:o}function S(t=[]){let o=new Map,a=[],u=[];for(let n of t){if(!j(n)){u.push(n);continue}for(let[r,l]of Object.entries(n.components)){let c=_(r,l),m=o.get(r);if(m&&m.module!==c.module){let d=a.find(R=>R.name===r);d?d.modules.push(c.module):a.push({name:r,modules:[m.module,c.module]});continue}o.set(r,c)}}let i=new Map;return{resolve:n=>{if(i.has(n))return i.get(n);let r=o.get(n);if(!r)for(let l of u){let c=n.match(new RegExp(l.match.source,l.match.flags.replace("g","")));if(c){r={module:O(l.module,c),export:l.export?O(l.export,c):n};break}}return i.set(n,r),r},names:()=>[...o.keys()],conflicts:()=>a}}var C=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],b=["Suspense","SuspenseList","Await"],$=["Router","Outlet","Redirect","Link"],G=[...C,...b,...$],W=new Set([...C,...b]);function E(t={}){let{controlFlowModule:o="@fluixi/dom",coreModule:a="fluixi",routerModule:u="fluixi/router"}=t,i={};for(let p of C)i[p]=o;for(let p of b)i[p]=a;for(let p of $)i[p]=u;return i}var f="@fluixi/reactive/signal",h={$signal:{export:"signal",module:f,returns:"signal-handle"},$memo:{export:"memo",module:f,returns:"memo-handle"},$effect:{export:"effect",module:f,returns:"effect"},$store:{export:"store",module:"@fluixi/reactive/store",returns:"store-handle"},$resource:{export:"resource",module:f,returns:"resource-handle"},$selector:{export:"createSelector",module:f,returns:"memo-accessor"},$deferred:{export:"createDeferred",module:f,returns:"memo-accessor"},$untrack:{export:"untrack",module:f,returns:"plain"},$untrackStore:{export:"untrackStore",module:"@fluixi/reactive/store",returns:"plain"}};var U=new RegExp(`\\$(?:${Object.keys(h).map(t=>t.slice(1)).join("|")})\\s*\\(`);var D=new Set(["Text","Image","Option","Audio","Comment","Range","Selection","Notification","Event","Document","Element","Node","Screen","Window","Location","History","Storage","Response","Request","Headers"]);function P(t){if(t.startsWith(".")||t.startsWith("/")||/^[~@]\//.test(t))return;let o=t.split("/");return t.startsWith("@")?o.slice(0,2).join("/"):o[0]}function M(t){return`_${t.replace(/[^A-Za-z0-9]/g,"_")}`}function z(t,o={}){let{available:a,builtins:u=!0,intrinsics:i=!0,generator:p="@fluixi/compiler",specifier:n=e=>e}=o,r=[...t];u&&r.push({components:E()});let l=S(r),c=a?new Set(a):void 0,m=[],d=[],R=[],v=new Map;for(let e of[...l.names()].sort()){let s=l.resolve(e);if(!s)continue;let g=P(s.module);D.has(e)?d.push(e):c&&g&&!c.has(g)?R.push(e):(m.push(e),v.set(e,s))}let I=i?[...new Set(Object.values(h).map(e=>e.module))]:[],y=[...new Set([...m.map(e=>v.get(e).module),...I])].sort().map(e=>`import * as ${M(e)} from '${n(e)}';`),w=m.map(e=>{let s=v.get(e),g=M(s.module);return s.export==="default"?` const ${e}: typeof ${g}.default;`:` export import ${e} = ${g}.${s.export};`}),N=d.length>0?`//
|
|
1
|
+
var j=t=>"components"in t;function O(t,o){return t.replace(/\$(\d+)/g,(a,u)=>o[Number(u)]??a)}function _(t,o){return typeof o=="string"?{module:o,export:t}:o}function S(t=[]){let o=new Map,a=[],u=[];for(let n of t){if(!j(n)){u.push(n);continue}for(let[r,l]of Object.entries(n.components)){let c=_(r,l),m=o.get(r);if(m&&m.module!==c.module){let d=a.find(R=>R.name===r);d?d.modules.push(c.module):a.push({name:r,modules:[m.module,c.module]});continue}o.set(r,c)}}let i=new Map;return{resolve:n=>{if(i.has(n))return i.get(n);let r=o.get(n);if(!r)for(let l of u){let c=n.match(new RegExp(l.match.source,l.match.flags.replace("g","")));if(c){r={module:O(l.module,c),export:l.export?O(l.export,c):n};break}}return i.set(n,r),r},names:()=>[...o.keys()],conflicts:()=>a}}var C=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],b=["Suspense","SuspenseList","Await"],$=["Router","Outlet","Redirect","Link"],G=[...C,...b,...$],W=new Set([...C,...b]);function E(t={}){let{controlFlowModule:o="@fluixi/dom",coreModule:a="@fluixi/core",routerModule:u="@fluixi/core/router"}=t,i={};for(let p of C)i[p]=o;for(let p of b)i[p]=a;for(let p of $)i[p]=u;return i}var f="@fluixi/reactive/signal",h={$signal:{export:"signal",module:f,returns:"signal-handle"},$memo:{export:"memo",module:f,returns:"memo-handle"},$effect:{export:"effect",module:f,returns:"effect"},$store:{export:"store",module:"@fluixi/reactive/store",returns:"store-handle"},$resource:{export:"resource",module:f,returns:"resource-handle"},$selector:{export:"createSelector",module:f,returns:"memo-accessor"},$deferred:{export:"createDeferred",module:f,returns:"memo-accessor"},$untrack:{export:"untrack",module:f,returns:"plain"},$untrackStore:{export:"untrackStore",module:"@fluixi/reactive/store",returns:"plain"}};var U=new RegExp(`\\$(?:${Object.keys(h).map(t=>t.slice(1)).join("|")})\\s*\\(`);var D=new Set(["Text","Image","Option","Audio","Comment","Range","Selection","Notification","Event","Document","Element","Node","Screen","Window","Location","History","Storage","Response","Request","Headers"]);function P(t){if(t.startsWith(".")||t.startsWith("/")||/^[~@]\//.test(t))return;let o=t.split("/");return t.startsWith("@")?o.slice(0,2).join("/"):o[0]}function M(t){return`_${t.replace(/[^A-Za-z0-9]/g,"_")}`}function z(t,o={}){let{available:a,builtins:u=!0,intrinsics:i=!0,generator:p="@fluixi/compiler",specifier:n=e=>e}=o,r=[...t];u&&r.push({components:E()});let l=S(r),c=a?new Set(a):void 0,m=[],d=[],R=[],v=new Map;for(let e of[...l.names()].sort()){let s=l.resolve(e);if(!s)continue;let g=P(s.module);D.has(e)?d.push(e):c&&g&&!c.has(g)?R.push(e):(m.push(e),v.set(e,s))}let I=i?[...new Set(Object.values(h).map(e=>e.module))]:[],y=[...new Set([...m.map(e=>v.get(e).module),...I])].sort().map(e=>`import * as ${M(e)} from '${n(e)}';`),w=m.map(e=>{let s=v.get(e),g=M(s.module);return s.export==="default"?` const ${e}: typeof ${g}.default;`:` export import ${e} = ${g}.${s.export};`}),N=d.length>0?`//
|
|
2
2
|
// Import these explicitly — lib.dom already declares the name, so an ambient
|
|
3
3
|
// declaration cannot win:
|
|
4
4
|
`+d.map(e=>{let s=l.resolve(e)?.module;return`// import { ${e} } from '${s?n(s):""}';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var c=Object.defineProperty;var M=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var w=(n,e)=>{for(var i in e)c(n,i,{get:e[i],enumerable:!0})},N=(n,e,i,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of y(e))!I.call(n,o)&&o!==i&&c(n,o,{get:()=>e[o],enumerable:!(s=M(e,o))||s.enumerable});return n};var k=n=>N(c({},"__esModule",{value:!0}),n);var h={};w(h,{resolveComponentSources:()=>b,walk:()=>f});module.exports=k(h);var l=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],p=["Suspense","SuspenseList","Await"],a=["Router","Outlet","Redirect","Link"],L=[...l,...p,...a],m=new Set([...l,...p]);function S(n={}){let{controlFlowModule:e="@fluixi/dom",coreModule:i="fluixi",routerModule:s="fluixi/router"}=n,o={};for(let d of l)o[d]=e;for(let d of p)o[d]=i;for(let d of a)o[d]=s;return o}var R={kind:"eager"};function b(n,e={}){let{resolver:i,isBound:s,modules:o,strategyFor:d}=e,g=S(o),v=new Map,x=new Set,E=t=>{let{name:r}=t;if(!r||r.includes(".")||s?.(r))return;let u=O(r);if(!u){x.add(r);return}let C=u.origin==="builtin"&&m.has(r)?R:d?.(t)??R;t.source={...u,loading:C},v.set(r,t.source)},O=t=>{if(m.has(t))return{module:g[t],export:t,origin:"builtin"};let r=i?.resolve(t);if(r)return{module:r.module,export:r.export,origin:"rule"};if(a.includes(t))return{module:g[t],export:t,origin:"builtin"}};return f(n,t=>{t.kind==="component"&&E(t)}),{resolved:v,unresolved:[...x]}}function f(n,e){let i=Array.isArray(n)?n:[n];for(let s of i){e(s);let o=s.children;o&&f(o,e)}}
|
|
1
|
+
"use strict";var c=Object.defineProperty;var M=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var w=(n,e)=>{for(var i in e)c(n,i,{get:e[i],enumerable:!0})},N=(n,e,i,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of y(e))!I.call(n,o)&&o!==i&&c(n,o,{get:()=>e[o],enumerable:!(s=M(e,o))||s.enumerable});return n};var k=n=>N(c({},"__esModule",{value:!0}),n);var h={};w(h,{resolveComponentSources:()=>b,walk:()=>f});module.exports=k(h);var l=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],p=["Suspense","SuspenseList","Await"],a=["Router","Outlet","Redirect","Link"],L=[...l,...p,...a],m=new Set([...l,...p]);function S(n={}){let{controlFlowModule:e="@fluixi/dom",coreModule:i="@fluixi/core",routerModule:s="@fluixi/core/router"}=n,o={};for(let d of l)o[d]=e;for(let d of p)o[d]=i;for(let d of a)o[d]=s;return o}var R={kind:"eager"};function b(n,e={}){let{resolver:i,isBound:s,modules:o,strategyFor:d}=e,g=S(o),v=new Map,x=new Set,E=t=>{let{name:r}=t;if(!r||r.includes(".")||s?.(r))return;let u=O(r);if(!u){x.add(r);return}let C=u.origin==="builtin"&&m.has(r)?R:d?.(t)??R;t.source={...u,loading:C},v.set(r,t.source)},O=t=>{if(m.has(t))return{module:g[t],export:t,origin:"builtin"};let r=i?.resolve(t);if(r)return{module:r.module,export:r.export,origin:"rule"};if(a.includes(t))return{module:g[t],export:t,origin:"builtin"}};return f(n,t=>{t.kind==="component"&&E(t)}),{resolved:v,unresolved:[...x]}}function f(n,e){let i=Array.isArray(n)?n:[n];for(let s of i){e(s);let o=s.children;o&&f(o,e)}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var c=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],l=["Suspense","SuspenseList","Await"],a=["Router","Outlet","Redirect","Link"],C=[...c,...l,...a],p=new Set([...c,...l]);function v(t={}){let{controlFlowModule:i="@fluixi/dom",coreModule:d="fluixi",routerModule:s="fluixi/router"}=t,o={};for(let r of c)o[r]=i;for(let r of l)o[r]=d;for(let r of a)o[r]=s;return o}var m={kind:"eager"};function N(t,i={}){let{resolver:d,isBound:s,modules:o,strategyFor:r}=i,R=v(o),f=new Map,g=new Set,S=e=>{let{name:n}=e;if(!n||n.includes(".")||s?.(n))return;let u=E(n);if(!u){g.add(n);return}let O=u.origin==="builtin"&&p.has(n)?m:r?.(e)??m;e.source={...u,loading:O},f.set(n,e.source)},E=e=>{if(p.has(e))return{module:R[e],export:e,origin:"builtin"};let n=d?.resolve(e);if(n)return{module:n.module,export:n.export,origin:"rule"};if(a.includes(e))return{module:R[e],export:e,origin:"builtin"}};return x(t,e=>{e.kind==="component"&&S(e)}),{resolved:f,unresolved:[...g]}}function x(t,i){let d=Array.isArray(t)?t:[t];for(let s of d){i(s);let o=s.children;o&&x(o,i)}}export{N as resolveComponentSources,x as walk};
|
|
1
|
+
var c=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],l=["Suspense","SuspenseList","Await"],a=["Router","Outlet","Redirect","Link"],C=[...c,...l,...a],p=new Set([...c,...l]);function v(t={}){let{controlFlowModule:i="@fluixi/dom",coreModule:d="@fluixi/core",routerModule:s="@fluixi/core/router"}=t,o={};for(let r of c)o[r]=i;for(let r of l)o[r]=d;for(let r of a)o[r]=s;return o}var m={kind:"eager"};function N(t,i={}){let{resolver:d,isBound:s,modules:o,strategyFor:r}=i,R=v(o),f=new Map,g=new Set,S=e=>{let{name:n}=e;if(!n||n.includes(".")||s?.(n))return;let u=E(n);if(!u){g.add(n);return}let O=u.origin==="builtin"&&p.has(n)?m:r?.(e)??m;e.source={...u,loading:O},f.set(n,e.source)},E=e=>{if(p.has(e))return{module:R[e],export:e,origin:"builtin"};let n=d?.resolve(e);if(n)return{module:n.module,export:n.export,origin:"rule"};if(a.includes(e))return{module:R[e],export:e,origin:"builtin"}};return x(t,e=>{e.kind==="component"&&S(e)}),{resolved:f,unresolved:[...g]}}function x(t,i){let d=Array.isArray(t)?t:[t];for(let s of d){i(s);let o=s.children;o&&x(o,i)}}export{N as resolveComponentSources,x as walk};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var y=Object.defineProperty;var W=Object.getOwnPropertyDescriptor;var B=Object.getOwnPropertyNames;var F=Object.prototype.hasOwnProperty;var U=(e,t)=>{for(var o in t)y(e,o,{get:t[o],enumerable:!0})},H=(e,t,o,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of B(t))!F.call(e,n)&&n!==o&&y(e,n,{get:()=>t[n],enumerable:!(s=W(t,n))||s.enumerable});return e};var K=e=>H(y({},"__esModule",{value:!0}),e);var te={};U(te,{DEFAULT_GLOBALS_PATH:()=>k,writeComponentGlobals:()=>ee});module.exports=K(te);var f=require("node:fs"),c=require("node:path");var V=e=>"components"in e;function M(e,t){return e.replace(/\$(\d+)/g,(o,s)=>t[Number(s)]??o)}function J(e,t){return typeof t=="string"?{module:t,export:e}:t}function w(e=[]){let t=new Map,o=[],s=[];for(let i of e){if(!V(i)){s.push(i);continue}for(let[l,p]of Object.entries(i.components)){let d=J(l,p),m=t.get(l);if(m&&m.module!==d.module){let g=o.find(v=>v.name===l);g?g.modules.push(d.module):o.push({name:l,modules:[m.module,d.module]});continue}t.set(l,d)}}let n=new Map;return{resolve:i=>{if(n.has(i))return n.get(i);let l=t.get(i);if(!l)for(let p of s){let d=i.match(new RegExp(p.match.source,p.match.flags.replace("g","")));if(d){l={module:M(p.module,d),export:p.export?M(p.export,d):i};break}}return n.set(i,l),l},names:()=>[...t.keys()],conflicts:()=>o}}var O=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],S=["Suspense","SuspenseList","Await"],I=["Router","Outlet","Redirect","Link"],ie=[...O,...S,...I],le=new Set([...O,...S]);function j(e={}){let{controlFlowModule:t="@fluixi/dom",coreModule:o="fluixi",routerModule:s="fluixi/router"}=e,n={};for(let a of O)n[a]=t;for(let a of S)n[a]=o;for(let a of I)n[a]=s;return n}var R="@fluixi/reactive/signal",b={$signal:{export:"signal",module:R,returns:"signal-handle"},$memo:{export:"memo",module:R,returns:"memo-handle"},$effect:{export:"effect",module:R,returns:"effect"},$store:{export:"store",module:"@fluixi/reactive/store",returns:"store-handle"},$resource:{export:"resource",module:R,returns:"resource-handle"},$selector:{export:"createSelector",module:R,returns:"memo-accessor"},$deferred:{export:"createDeferred",module:R,returns:"memo-accessor"},$untrack:{export:"untrack",module:R,returns:"plain"},$untrackStore:{export:"untrackStore",module:"@fluixi/reactive/store",returns:"plain"}};var ae=new RegExp(`\\$(?:${Object.keys(b).map(e=>e.slice(1)).join("|")})\\s*\\(`);var q=new Set(["Text","Image","Option","Audio","Comment","Range","Selection","Notification","Event","Document","Element","Node","Screen","Window","Location","History","Storage","Response","Request","Headers"]);function z(e){if(e.startsWith(".")||e.startsWith("/")||/^[~@]\//.test(e))return;let t=e.split("/");return e.startsWith("@")?t.slice(0,2).join("/"):t[0]}function $(e){return`_${e.replace(/[^A-Za-z0-9]/g,"_")}`}function N(e,t={}){let{available:o,builtins:s=!0,intrinsics:n=!0,generator:a="@fluixi/compiler",specifier:i=r=>r}=t,l=[...e];s&&l.push({components:j()});let p=w(l),d=o?new Set(o):void 0,m=[],g=[],v=[],C=new Map;for(let r of[...p.names()].sort()){let u=p.resolve(r);if(!u)continue;let x=z(u.module);q.has(r)?g.push(r):d&&x&&!d.has(x)?v.push(r):(m.push(r),C.set(r,u))}let A=n?[...new Set(Object.values(b).map(r=>r.module))]:[],E=[...new Set([...m.map(r=>C.get(r).module),...A])].sort().map(r=>`import * as ${$(r)} from '${i(r)}';`),D=m.map(r=>{let u=C.get(r),x=$(u.module);return u.export==="default"?` const ${r}: typeof ${x}.default;`:` export import ${r} = ${x}.${u.export};`}),_=g.length>0?`//
|
|
1
|
+
"use strict";var y=Object.defineProperty;var W=Object.getOwnPropertyDescriptor;var B=Object.getOwnPropertyNames;var F=Object.prototype.hasOwnProperty;var U=(e,t)=>{for(var o in t)y(e,o,{get:t[o],enumerable:!0})},H=(e,t,o,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of B(t))!F.call(e,n)&&n!==o&&y(e,n,{get:()=>t[n],enumerable:!(s=W(t,n))||s.enumerable});return e};var K=e=>H(y({},"__esModule",{value:!0}),e);var te={};U(te,{DEFAULT_GLOBALS_PATH:()=>k,writeComponentGlobals:()=>ee});module.exports=K(te);var f=require("node:fs"),c=require("node:path");var V=e=>"components"in e;function M(e,t){return e.replace(/\$(\d+)/g,(o,s)=>t[Number(s)]??o)}function J(e,t){return typeof t=="string"?{module:t,export:e}:t}function w(e=[]){let t=new Map,o=[],s=[];for(let i of e){if(!V(i)){s.push(i);continue}for(let[l,p]of Object.entries(i.components)){let d=J(l,p),m=t.get(l);if(m&&m.module!==d.module){let g=o.find(v=>v.name===l);g?g.modules.push(d.module):o.push({name:l,modules:[m.module,d.module]});continue}t.set(l,d)}}let n=new Map;return{resolve:i=>{if(n.has(i))return n.get(i);let l=t.get(i);if(!l)for(let p of s){let d=i.match(new RegExp(p.match.source,p.match.flags.replace("g","")));if(d){l={module:M(p.module,d),export:p.export?M(p.export,d):i};break}}return n.set(i,l),l},names:()=>[...t.keys()],conflicts:()=>o}}var O=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],S=["Suspense","SuspenseList","Await"],I=["Router","Outlet","Redirect","Link"],ie=[...O,...S,...I],le=new Set([...O,...S]);function j(e={}){let{controlFlowModule:t="@fluixi/dom",coreModule:o="@fluixi/core",routerModule:s="@fluixi/core/router"}=e,n={};for(let a of O)n[a]=t;for(let a of S)n[a]=o;for(let a of I)n[a]=s;return n}var R="@fluixi/reactive/signal",b={$signal:{export:"signal",module:R,returns:"signal-handle"},$memo:{export:"memo",module:R,returns:"memo-handle"},$effect:{export:"effect",module:R,returns:"effect"},$store:{export:"store",module:"@fluixi/reactive/store",returns:"store-handle"},$resource:{export:"resource",module:R,returns:"resource-handle"},$selector:{export:"createSelector",module:R,returns:"memo-accessor"},$deferred:{export:"createDeferred",module:R,returns:"memo-accessor"},$untrack:{export:"untrack",module:R,returns:"plain"},$untrackStore:{export:"untrackStore",module:"@fluixi/reactive/store",returns:"plain"}};var ae=new RegExp(`\\$(?:${Object.keys(b).map(e=>e.slice(1)).join("|")})\\s*\\(`);var q=new Set(["Text","Image","Option","Audio","Comment","Range","Selection","Notification","Event","Document","Element","Node","Screen","Window","Location","History","Storage","Response","Request","Headers"]);function z(e){if(e.startsWith(".")||e.startsWith("/")||/^[~@]\//.test(e))return;let t=e.split("/");return e.startsWith("@")?t.slice(0,2).join("/"):t[0]}function $(e){return`_${e.replace(/[^A-Za-z0-9]/g,"_")}`}function N(e,t={}){let{available:o,builtins:s=!0,intrinsics:n=!0,generator:a="@fluixi/compiler",specifier:i=r=>r}=t,l=[...e];s&&l.push({components:j()});let p=w(l),d=o?new Set(o):void 0,m=[],g=[],v=[],C=new Map;for(let r of[...p.names()].sort()){let u=p.resolve(r);if(!u)continue;let x=z(u.module);q.has(r)?g.push(r):d&&x&&!d.has(x)?v.push(r):(m.push(r),C.set(r,u))}let A=n?[...new Set(Object.values(b).map(r=>r.module))]:[],E=[...new Set([...m.map(r=>C.get(r).module),...A])].sort().map(r=>`import * as ${$(r)} from '${i(r)}';`),D=m.map(r=>{let u=C.get(r),x=$(u.module);return u.export==="default"?` const ${r}: typeof ${x}.default;`:` export import ${r} = ${x}.${u.export};`}),_=g.length>0?`//
|
|
2
2
|
// Import these explicitly — lib.dom already declares the name, so an ambient
|
|
3
3
|
// declaration cannot win:
|
|
4
4
|
`+g.map(r=>{let u=p.resolve(r)?.module;return`// import { ${r} } from '${u?i(u):""}';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{mkdirSync as K,readFileSync as S,writeFileSync as V}from"node:fs";import{dirname as N,relative as k,sep as L,resolve as h}from"node:path";var B=e=>"components"in e;function E(e,t){return e.replace(/\$(\d+)/g,(r,s)=>t[Number(s)]??r)}function F(e,t){return typeof t=="string"?{module:t,export:e}:t}function M(e=[]){let t=new Map,r=[],s=[];for(let i of e){if(!B(i)){s.push(i);continue}for(let[l,u]of Object.entries(i.components)){let p=F(l,u),d=t.get(l);if(d&&d.module!==p.module){let m=r.find(R=>R.name===l);m?m.modules.push(p.module):r.push({name:l,modules:[d.module,p.module]});continue}t.set(l,p)}}let n=new Map;return{resolve:i=>{if(n.has(i))return n.get(i);let l=t.get(i);if(!l)for(let u of s){let p=i.match(new RegExp(u.match.source,u.match.flags.replace("g","")));if(p){l={module:E(u.module,p),export:u.export?E(u.export,p):i};break}}return n.set(i,l),l},names:()=>[...t.keys()],conflicts:()=>r}}var C=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],y=["Suspense","SuspenseList","Await"],w=["Router","Outlet","Redirect","Link"],te=[...C,...y,...w],ne=new Set([...C,...y]);function I(e={}){let{controlFlowModule:t="@fluixi/dom",coreModule:r="fluixi",routerModule:s="fluixi/router"}=e,n={};for(let c of C)n[c]=t;for(let c of y)n[c]=r;for(let c of w)n[c]=s;return n}var f="@fluixi/reactive/signal",v={$signal:{export:"signal",module:f,returns:"signal-handle"},$memo:{export:"memo",module:f,returns:"memo-handle"},$effect:{export:"effect",module:f,returns:"effect"},$store:{export:"store",module:"@fluixi/reactive/store",returns:"store-handle"},$resource:{export:"resource",module:f,returns:"resource-handle"},$selector:{export:"createSelector",module:f,returns:"memo-accessor"},$deferred:{export:"createDeferred",module:f,returns:"memo-accessor"},$untrack:{export:"untrack",module:f,returns:"plain"},$untrackStore:{export:"untrackStore",module:"@fluixi/reactive/store",returns:"plain"}};var re=new RegExp(`\\$(?:${Object.keys(v).map(e=>e.slice(1)).join("|")})\\s*\\(`);var U=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 O(e){return`_${e.replace(/[^A-Za-z0-9]/g,"_")}`}function j(e,t={}){let{available:r,builtins:s=!0,intrinsics:n=!0,generator:c="@fluixi/compiler",specifier:i=o=>o}=t,l=[...e];s&&l.push({components:I()});let u=M(l),p=r?new Set(r):void 0,d=[],m=[],R=[],b=new Map;for(let o of[...u.names()].sort()){let a=u.resolve(o);if(!a)continue;let g=H(a.module);U.has(o)?m.push(o):p&&g&&!p.has(g)?R.push(o):(d.push(o),b.set(o,a))}let D=n?[...new Set(Object.values(v).map(o=>o.module))]:[],$=[...new Set([...d.map(o=>b.get(o).module),...D])].sort().map(o=>`import * as ${O(o)} from '${i(o)}';`),_=d.map(o=>{let a=b.get(o),g=O(a.module);return a.export==="default"?` const ${o}: typeof ${g}.default;`:` export import ${o} = ${g}.${a.export};`}),G=m.length>0?`//
|
|
1
|
+
import{mkdirSync as K,readFileSync as S,writeFileSync as V}from"node:fs";import{dirname as N,relative as k,sep as L,resolve as h}from"node:path";var B=e=>"components"in e;function E(e,t){return e.replace(/\$(\d+)/g,(r,s)=>t[Number(s)]??r)}function F(e,t){return typeof t=="string"?{module:t,export:e}:t}function M(e=[]){let t=new Map,r=[],s=[];for(let i of e){if(!B(i)){s.push(i);continue}for(let[l,u]of Object.entries(i.components)){let p=F(l,u),d=t.get(l);if(d&&d.module!==p.module){let m=r.find(R=>R.name===l);m?m.modules.push(p.module):r.push({name:l,modules:[d.module,p.module]});continue}t.set(l,p)}}let n=new Map;return{resolve:i=>{if(n.has(i))return n.get(i);let l=t.get(i);if(!l)for(let u of s){let p=i.match(new RegExp(u.match.source,u.match.flags.replace("g","")));if(p){l={module:E(u.module,p),export:u.export?E(u.export,p):i};break}}return n.set(i,l),l},names:()=>[...t.keys()],conflicts:()=>r}}var C=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],y=["Suspense","SuspenseList","Await"],w=["Router","Outlet","Redirect","Link"],te=[...C,...y,...w],ne=new Set([...C,...y]);function I(e={}){let{controlFlowModule:t="@fluixi/dom",coreModule:r="@fluixi/core",routerModule:s="@fluixi/core/router"}=e,n={};for(let c of C)n[c]=t;for(let c of y)n[c]=r;for(let c of w)n[c]=s;return n}var f="@fluixi/reactive/signal",v={$signal:{export:"signal",module:f,returns:"signal-handle"},$memo:{export:"memo",module:f,returns:"memo-handle"},$effect:{export:"effect",module:f,returns:"effect"},$store:{export:"store",module:"@fluixi/reactive/store",returns:"store-handle"},$resource:{export:"resource",module:f,returns:"resource-handle"},$selector:{export:"createSelector",module:f,returns:"memo-accessor"},$deferred:{export:"createDeferred",module:f,returns:"memo-accessor"},$untrack:{export:"untrack",module:f,returns:"plain"},$untrackStore:{export:"untrackStore",module:"@fluixi/reactive/store",returns:"plain"}};var re=new RegExp(`\\$(?:${Object.keys(v).map(e=>e.slice(1)).join("|")})\\s*\\(`);var U=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 O(e){return`_${e.replace(/[^A-Za-z0-9]/g,"_")}`}function j(e,t={}){let{available:r,builtins:s=!0,intrinsics:n=!0,generator:c="@fluixi/compiler",specifier:i=o=>o}=t,l=[...e];s&&l.push({components:I()});let u=M(l),p=r?new Set(r):void 0,d=[],m=[],R=[],b=new Map;for(let o of[...u.names()].sort()){let a=u.resolve(o);if(!a)continue;let g=H(a.module);U.has(o)?m.push(o):p&&g&&!p.has(g)?R.push(o):(d.push(o),b.set(o,a))}let D=n?[...new Set(Object.values(v).map(o=>o.module))]:[],$=[...new Set([...d.map(o=>b.get(o).module),...D])].sort().map(o=>`import * as ${O(o)} from '${i(o)}';`),_=d.map(o=>{let a=b.get(o),g=O(a.module);return a.export==="default"?` const ${o}: typeof ${g}.default;`:` export import ${o} = ${g}.${a.export};`}),G=m.length>0?`//
|
|
2
2
|
// Import these explicitly — lib.dom already declares the name, so an ambient
|
|
3
3
|
// declaration cannot win:
|
|
4
4
|
`+m.map(o=>{let a=u.resolve(o)?.module;return`// import { ${o} } from '${a?i(a):""}';
|
package/dist/transform/index.cjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
"use strict";var xt=Object.create;var G=Object.defineProperty;var Rt=Object.getOwnPropertyDescriptor;var kt=Object.getOwnPropertyNames;var bt=Object.getPrototypeOf,St=Object.prototype.hasOwnProperty;var Et=(e,t)=>{for(var n in t)G(e,n,{get:t[n],enumerable:!0})},Ce=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of kt(t))!St.call(e,o)&&o!==n&&G(e,o,{get:()=>t[o],enumerable:!(r=Rt(t,o))||r.enumerable});return e};var $e=(e,t,n)=>(n=e!=null?xt(bt(e)):{},Ce(t||!e||!e.__esModule?G(n,"default",{value:e,enumerable:!0}):n,e)),It=e=>Ce(G({},"__esModule",{value:!0}),e);var Mn={};Et(Mn,{explainBail:()=>le,moduleBindings:()=>L,planPropsDestructure:()=>ae,shapeOf:()=>w,transformProps:()=>st,transformTemplates:()=>Nt});module.exports=It(Mn);var mt=require("@babel/parser"),gt=$e(require("magic-string"),1);function wt(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 M(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 i of o.children)r(i)||(s=!1);let a;for(let i of o.props)if(a=wt(i),a)break;return!a&&!s&&(a=Ct(o)),o.static=!a,a?n.set(o,a):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 Ct(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 Z={kind:"eager"},$t=["pointerdown","focusin","keydown"],Te=new Set(["eager","idle","visible","interaction","media","never"]),I=class extends Error{};function de(e){return e.startsWith("load:")}function Y(e,t){let n=e.slice(5);if(!Te.has(n))throw new I(`Unknown load strategy 'load:${n}'. Expected one of ${[...Te].join(", ")}.`);switch(n){case"eager":return Z;case"idle":return{kind:"idle"};case"never":return{kind:"never"};case"visible":return t?{kind:"visible",rootMargin:t}:{kind:"visible"};case"interaction":return{kind:"interaction",events:t?Tt(t):[...$t]};case"media":if(!t)throw new I(`'load:media' needs a query, e.g. load:media="(min-width: 1024px)".`);return{kind:"media",query:t};default:throw new I(`Unhandled load strategy '${n}'.`)}}function Tt(e){let t=e.split(/[\s,]+/).map(n=>n.trim()).filter(Boolean);if(t.length===0)throw new I("'load:interaction' was given no event names.");return t}function j(e){return e.kind!=="eager"&&e.kind!=="never"}var J=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],B=["Suspense","SuspenseList","Await"],O=["Router","Outlet","Redirect","Link"],Ln=[...J,...B,...O],ue=new Set([...J,...B]);function Pe(e={}){let{controlFlowModule:t="@fluixi/dom",coreModule:n="fluixi",routerModule:r="fluixi/router"}=e,o={};for(let s of J)o[s]=t;for(let s of B)o[s]=n;for(let s of O)o[s]=r;return o}function Q(e,t={}){let{resolver:n,isBound:r,modules:o,strategyFor:s}=t,a=Pe(o),i=new Map,l=new Set,c=f=>{let{name:d}=f;if(!d||d.includes(".")||r?.(d))return;let g=p(d);if(!g){l.add(d);return}let m=g.origin==="builtin"&&ue.has(d)?Z:s?.(f)??Z;f.source={...g,loading:m},i.set(d,f.source)},p=f=>{if(ue.has(f))return{module:a[f],export:f,origin:"builtin"};let d=n?.resolve(f);if(d)return{module:d.module,export:d.export,origin:"rule"};if(O.includes(f))return{module:a[f],export:f,origin:"builtin"}};return ee(e,f=>{f.kind==="component"&&c(f)}),{resolved:i,unresolved:[...l]}}function ee(e,t){let n=Array.isArray(e)?e:[e];for(let r of n){t(r);let o=r.children;o&&ee(o,t)}}function te(e){let t=[];ee(e,s=>{s.kind==="component"&&s.source&&t.push(s)});let n=new Set,r=new Set;for(let s of t){let{module:a,loading:i}=s.source;i.kind==="eager"&&n.add(a),i.kind==="never"&&r.add(a)}let o=new Map;for(let s of t){let a=s.source;j(a.loading)&&n.has(a.module)&&(a.loading={kind:"eager"},o.set(a.module,(o.get(a.module)??0)+1))}return{collapsed:o,conflicted:[...r].filter(s=>n.has(s))}}var Pt=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),Me={className:"class",htmlFor:"for"},Mt=new Set(["innerHTML","outerHTML","innerText","textContent","value","checked","selected","muted","defaultValue","defaultChecked","children","ref"]),Ot=new Set(["script","style","textarea","title"]);function fe(e){return Ot.has(e)}function Oe(e){return Me[e]??e}function _(e){return e.kind!=="attr"||e.expr!==void 0||e.name.includes(":")?!1:!Mt.has(e.name)}function me(e){if(!e.static||fe(e.tag))return!1;for(let t of e.props)if(!_(t))return!1;for(let t of e.children)if(t.kind!=="text"&&!(t.kind==="element"&&me(t)))return!1;return!0}function F(e){let t=e.props.map(At).filter(Boolean).join(""),n=`<${e.tag}${t}>`;return Pt.has(e.tag)?n:`${n}${e.children.map(Dt).join("")}</${e.tag}>`}function Dt(e){if(e.kind==="text")return jt(e.value);if(e.kind!=="element")throw new Error(`serializeStatic: unexpected ${e.kind}`);return F(e)}function At(e){let t=Me[e.name]??e.name,n=e.literal;return n===!0||n===void 0?` ${t}`:n===!1||n===null?"":` ${t}="${Lt(String(n))}"`}function Lt(e){return e.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function jt(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}var Jt="<!--fx-->",Bt="<!--fx/-->";function re(e){return e.kind==="expr"||e.kind==="component"||e.kind==="control"}function _t(e){return e.kind==="text"||e.kind==="element"&&De(e)}function De(e){return e.svg||fe(e.tag)||!e.props.every(t=>_(t))?!1:e.children.every(t=>_t(t)||re(t))}function ne(e){if(re(e))return!0;let t=e.children;return t?t.some(ne):!1}function Ae(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"||Ae(t))}function Le(e){if(!De(e)||!Ae(e)||!e.children.some(ne))return null;let t=[],n=[],r=0,o=a=>{let i=`_n$${r++}`;return t.push({ref:i,expr:a}),i};return s(e,"_el$"),{html:Ft(e),tag:e.tag,steps:t,holes:n};function s(a,i){let l=-1;a.children.forEach((p,f)=>{ne(p)&&(l=f)});let c=null;for(let p=0;p<=l;p++){let f=a.children[p],d=c?`${c}.nextSibling`:`${i}.firstChild`;if(re(f)){let m=o(d),h=o(`holeEnd(${m})`);n.push({parentRef:i,startRef:m,endRef:h,node:f}),c=h;continue}let g=o(d);f.kind==="element"&&ne(f)&&s(f,g),c=g}}}function Ft(e){return F(je(e)).split(Je).join(Jt+Bt)}function je(e){return{...e,children:e.children.map(t=>re(t)?{kind:"text",value:Je}:t.kind==="element"?je(t):t)}}var Je="\0fx-hole\0";var ge={version:1,module:"@fluixi/dom",symbols:["createNativeElement","insert","spread","setAttribute","delegateEvents","createComponent","createMemo","untrack","Show","For","Index","Switch","Match","Dynamic","ErrorBoundary"]},Wn={version:2,module:"@fluixi/dom",symbols:[...ge.symbols,"template","cloneTemplate","walk"]};var Ht={show:"Show",for:"For",index:"Index",switch:"Switch",match:"Match",dynamic:"Dynamic",errorBoundary:"ErrorBoundary",suspense:"Suspense"};function Vt(e){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e)}function _e(e){return Vt(e)?e:JSON.stringify(e)}function Xt(e){return e.expr!==void 0?e.reactive?`() => (${e.expr})`:`(${e.expr})`:JSON.stringify(e.literal??!0)}function zt(e){return e.expr!==void 0?`(${e.expr})`:JSON.stringify(e.literal??!0)}function Ut(e,t,n){let r=e.filter(i=>i.kind==="spread"),s=e.filter(i=>i.kind!=="spread").map(i=>`${_e(i.name)}: ${Xt(i)}`);t!=null&&s.push(`children: ${t}`);let a=`{ ${s.join(", ")} }`;return r.length>0?(n.add("mergeProps"),`mergeProps(${r.map(i=>i.expr).join(", ")}, ${a})`):a}function Fe(e,t,n){return e.length===1?H(e[0],t,n):`[${e.map(r=>H(r,t,n)).join(", ")}]`}function Be(e,t,n,r,o){r.add("createMemo"),r.add("createComponent");let s=t.filter(c=>c.kind==="spread"),i=t.filter(c=>c.kind!=="spread").map(c=>`get ${_e(c.name)}() { return ${zt(c)}; }`);n.length>0&&i.push(`get children() { return ${Fe(n,r,o)}; }`);let l=`{ ${i.join(", ")} }`;return s.length>0&&(r.add("mergeProps"),l=`mergeProps(${s.map(c=>c.expr).join(", ")}, ${l})`),`createMemo(() => createComponent(${e}, ${l}))`}function Wt(e,t){let n=Oe(t.name),r=t.literal;return r===!0||r===void 0?`${e}.setAttribute(${JSON.stringify(n)}, "");`:r===!1||r===null?"":`${e}.setAttribute(${JSON.stringify(n)}, ${JSON.stringify(String(r))});`}var He=!1;function H(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":Fe(e.children,t,n);case"component":return Be(e.name,e.props,e.children,t,n);case"control":{let r=Ht[e.control]??e.control;return t.add(r),Be(r,e.props,e.children,t,n)}case"element":{if(n&&e.static&&!e.svg&&me(e)){t.add("templateNode");let i=`_tmpl$${n.length}`;return n.push({id:i,html:F(e),tag:e.tag,svg:!1}),`templateNode(${i}, ${JSON.stringify(e.tag)})`}if(n&&He){let i=Le(e);if(i){t.add("templateNode"),t.add("insert"),t.add("holeEnd"),t.add("holeContent"),t.add("holeScope");let l=`_tmpl$${n.length}`;n.push({id:l,html:i.html,tag:i.tag,svg:!1});let c=[`const _el$ = templateNode(${l}, ${JSON.stringify(i.tag)}, true);`];for(let p of i.steps)c.push(`const ${p.ref} = ${p.expr};`);for(let p of i.holes)c.push(`insert(${p.parentRef}, holeScope(${p.startRef}, () => (${H(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=[],a=e.svg?`${r}, true`:r;if(s.push(`const ${o} = createNativeElement(${a});`),e.props.length>0)if(!e.svg&&e.props.every(_))for(let i of e.props)s.push(Wt(o,i));else{t.add("spread");let i=e.svg?", isSVG: true":"";s.push(`spread({ element: ${o}, props: ${Ut(e.props,null,t)}${i} });`)}for(let i of e.children){t.add("insert");let l=H(i,t,n),c=i.kind==="expr"&&i.reactive||i.kind==="component"||i.kind==="control";s.push(c?`insert(${o}, ${l}, null);`:`insert(${o}, ${l});`)}return s.push(`return ${o};`),`(() => { ${s.join(" ")} })()`}}}function oe(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 D={name:"imperative",contract:ge,emit(e,t){let n=new Set,r=t?.templateClone!==!1?[]:void 0;return He=t?.partialTemplates===!0,{code:H(e,n,r),imports:Array.from(n),templates:r}}};var qt=e=>"components"in e;function Ve(e,t){return e.replace(/\$(\d+)/g,(n,r)=>t[Number(r)]??n)}function Kt(e,t){return typeof t=="string"?{module:t,export:e}:t}function se(e=[]){let t=new Map,n=[],r=[];for(let a of e){if(!qt(a)){r.push(a);continue}for(let[i,l]of Object.entries(a.components)){let c=Kt(i,l),p=t.get(i);if(p&&p.module!==c.module){let f=n.find(d=>d.name===i);f?f.modules.push(c.module):n.push({name:i,modules:[p.module,c.module]});continue}t.set(i,c)}}let o=new Map;return{resolve:a=>{if(o.has(a))return o.get(a);let i=t.get(a);if(!i)for(let l of r){let c=a.match(new RegExp(l.match.source,l.match.flags.replace("g","")));if(c){i={module:Ve(l.module,c),export:l.export?Ve(l.export,c):a};break}}return o.set(a,i),i},names:()=>[...t.keys()],conflicts:()=>n}}var Ue=require("@fluixi/template-parser");function V(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 Xe=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function Gt(e){return e.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${")}function ze(e){return e.charAt(0).toUpperCase()+e.slice(1)}var he=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}=D.emit(t,{});for(let s of r)this.used.add(s);return oe(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 a=o.attributes.find(i=>i.kind==="IfDirective");if(a&&a.kind==="IfDirective"){let i=r+1;i<t.length&&this.isBlankText(t[i])&&i++;let l=t[i],c=l&&(l.kind==="Element"||l.kind==="Component")&&l.attributes.some(p=>p.kind==="ElseDirective");n.push(this.lowerIf(o,a.hole,c?l:null)),c&&(r=i);continue}if(o.attributes.some(i=>i.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&&V(t.value)===""}lowerNode(t){switch(t.kind){case"Text":{if(t.raw)return{kind:"text",value:t.value};let n=V(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},f={name:l,kind:"attr",expr:this.emit(p),jsxElement:!0},d=r.findIndex(g=>g.name===l);d>=0?r[d]=f:r.push(f)}let a=t.attributes.find(l=>l.kind==="LoadDirective"),i=a?Y(`load:${a.strategy}`,a.modifier):void 0;return{kind:"component",name:n,props:r,children:this.lowerChildren(s),...i?{load:i}:{}}}partitionSlots(t){let n=new Map,r=[];for(let o of t){if(o.kind==="Element"||o.kind==="Component"){let s=o.attributes.find(a=>a.kind==="Attribute"&&a.name==="slot");if(s&&s.value&&s.value.kind==="static"){let a={...o,attributes:o.attributes.filter(c=>c!==s)},i=a.kind==="Element"?this.lowerElement(a):this.lowerComponent(a),l=n.get(s.value.value)??[];l.push(i),n.set(s.value.value,l);continue}}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 i=this.stripAndLower(r,l=>l.kind==="ElseDirective");s.push({name:"fallback",kind:"attr",expr:this.emit(i),jsxElement:!0})}let a=this.stripAndLower(t,i=>i.kind==="IfDirective");return{kind:"component",name:"Show",props:s,children:[a]}}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),a;if(s){let l={kind:"expr",code:s.body,reactive:s.bodyReactive},c=this.rebuildWithChildren(t,[l]);a=`(${s.params.join(", ")}) => (${this.emit(c)})`}else{let l=this.stripAndLower(t,c=>c.kind==="EachDirective");a=`() => (${this.emit(l)})`}return{kind:"component",name:"For",props:o,children:[{kind:"expr",code:a,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=[],a=!1,i=[];for(let l of t)switch(l.kind){case"IfDirective":case"EachDirective":case"ElseDirective":break;case"Attribute":n.push(this.plainAttr(l));break;case"PropertyBinding":n.push({name:l.name,kind:"prop",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"EventBinding":n.push(this.eventProp(l));break;case"RefBinding":n.push({name:"ref",kind:"ref",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"Spread":n.push({name:"",kind:"spread",expr:this.hole(l.hole).code});break;case"ClassDirective":{let 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}`),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;i.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:a}),i.length>0&&n.push({name:"use",kind:"attr",expr:`[${i.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"+ze(t.name),kind:"event",event:{name:n,delegated:Xe.has(n)},expr:r};let s=this.wrapHandler(r,t.modifiers),a=this.eventOptions(t.modifiers),i=a?`[${s}, ${a}]`:s;return{name:"on:"+n,kind:"attr",expr:i}}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 a=`bindPair(${n})`;return[{name:t,kind:"attr",expr:`${a}[0]()`,reactive:!0},{name:"on"+ze(o),kind:"event",event:{name:o,delegated:Xe.has(o)},expr:`(e) => ${a}[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 a=!1,i=n.parts.map(l=>{if("text"in l)return Gt(l.text);let c=this.hole(l.hole);return a=a||c.reactive,"${"+c.code+"}"}).join("");return s.expr="`"+i+"`",s.reactive=a,s}};function We(e,t,n,r={}){let{root:o}=(0,Ue.parseTemplate)(e,{svg:r.svg});return new he(t,n).lowerRoot(o.children)}function qe(e,t,n={}){let r=new Set,o=We(e,[...t],r,{svg:n.svg});M(o),Q(o,{resolver:se(n.resolve??[]),modules:{controlFlowModule:n.controlFlowModule??"@fluixi/dom",coreModule:n.coreModule??"fluixi",routerModule:n.routerModule??"fluixi/router"},strategyFor:l=>l.load}),te(o);let{code:s,imports:a,templates:i}=D.emit(o,{templateClone:n.templateClone,partialTemplates:n.partialTemplates});for(let l of a)r.add(l);return n.hoistTemplates?{code:s,imports:[...r],ir:o,templates:i}:{code:oe(s,i),imports:[...r],ir:o}}var Zt="children";function A(e){switch(e.kind){case"call":return!0;case"member":return e.property!==Zt;case"compound":return e.parts.some(A);case"opaque":return!1}}var Yt=new Set(["CallExpression","OptionalCallExpression"]),Qt=new Set(["MemberExpression","OptionalMemberExpression"]);function w(e){if(!e)return{kind:"opaque"};if(Yt.has(e.type))return{kind:"call"};if(Qt.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(X)}:e.type==="LogicalExpression"||e.type==="BinaryExpression"?{kind:"compound",parts:[e.left,e.right].map(X)}:e.type==="TemplateLiteral"?{kind:"compound",parts:e.expressions.map(X)}:e.type==="ObjectExpression"?{kind:"compound",parts:e.properties.filter(n=>(n.type==="ObjectProperty"||n.type==="Property")&&n.computed!==!0).map(n=>X(n.value))}:e.type==="ArrayExpression"?{kind:"compound",parts:e.elements.filter(n=>n!=null&&n.type!=="SpreadElement").map(X)}:{kind:"opaque"}}var X=e=>w(e);var en=new Set(["svg","path","circle","rect","line","polygon","polyline","ellipse","g","defs","clipPath","text"]),tn=/^on[A-Z]/,nn=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]),Ze=e=>A(w(e));function z(e){if(e.type==="StringLiteral"||e.type==="NumericLiteral"||e.type==="BooleanLiteral"||e.type==="Literal"&&(typeof e.value=="string"||typeof e.value=="number"||typeof e.value=="boolean"))return e.value}var ye=e=>!!e&&typeof z(e)=="string";function rn(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 Ne(e){return e.type==="JSXIdentifier"?e.name==="class"?"className":e.name:e.type==="JSXNamespacedName"?`${e.namespace.name}:${e.name.name}`:"unknown"}function on(e,t){let n=Ne(e.name),r=tn.test(n),o=r||n.startsWith("on:")||n==="ref",a={name:n,kind:r?"event":"attr"};if(r){let l=n.slice(2).toLowerCase();a.event={name:l,delegated:nn.has(l)}}let i=e.value;if(i==null)return a.literal=!0,a;if(ye(i))return a.literal=z(i),a;if(i.type==="JSXExpressionContainer"&&i.expression?.type!=="JSXEmptyExpression"){let l=i.expression,c=z(l);return c!==void 0?(a.literal=c,a):(a.expr=t.code(l),a.reactive=o?!1:Ze(l),(l.type==="JSXElement"||l.type==="JSXFragment")&&(a.jsxElement=!0),a)}return a.literal=!0,a}function Ke(e,t){let n=e.value;return n==null?null:ye(n)?JSON.stringify(z(n)):n.type==="JSXExpressionContainer"&&n.expression?.type!=="JSXEmptyExpression"?t.code(n.expression):null}function sn(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"||de(Ne(o.name)))continue;let s=o.name.type==="JSXNamespacedName"?o.name.namespace.name:null;if(s==="use"){let a=o.name.name.name;t.used.add(a);let i=Ke(o,t);r.push(i!=null?`[${a}, () => (${i})]`:`[${a}]`);continue}if(s==="oncapture"){let a=o.name.name.name.toLowerCase(),i=Ke(o,t)??"undefined";n.push({name:"on:"+a,kind:"attr",expr:`[${i}, { capture: true }]`});continue}n.push(on(o,t))}return r.length>0&&n.push({name:"use",kind:"attr",expr:`[${r.join(", ")}]`}),n}function Ge(e,t){let n=[];for(let r of e)if(r.type==="JSXText"){let o=V(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:Ze(o)})}}else r.type==="JSXElement"||r.type==="JSXFragment"?n.push(Ye(r,t)):r.type==="JSXSpreadChild"&&n.push({kind:"expr",code:t.code(r.expression),reactive:!1});return n}function an(e){for(let t of e){if(t.type!=="JSXAttribute")continue;let n=Ne(t.name);if(de(n)){if(t.value&&!ye(t.value))throw new I(`'${n}' needs a literal value, not an expression — the strategy is compile-time.`);return Y(n,t.value?z(t.value):null)}}}function Ye(e,t){if(e.type==="JSXFragment")return{kind:"fragment",children:Ge(e.children,t)};let{tag:n,component:r}=rn(e.openingElement.name,t),o=sn(e.openingElement.attributes,t),s=Ge(e.children,t);if(r){let a=an(e.openingElement.attributes);return{kind:"component",name:n,props:o,children:s,...a?{load:a}:{}}}return{kind:"element",tag:n,svg:en.has(n),props:o,children:s,static:!1}}function Qe(e,t){let n=Ye(e,t);return M(n),n}function C(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"?C(n.argument,t):C(n.value,t);return;case"ArrayPattern":for(let n of e.elements)C(n,t);return;case"AssignmentPattern":C(e.left,t);return;case"RestElement":C(e.argument,t);return}}function et(e,t){switch(e.type){case"ImportDeclaration":for(let n of e.specifiers)C(n.local,t);return;case"VariableDeclaration":for(let n of e.declarations)C(n.id,t);return;case"FunctionDeclaration":case"ClassDeclaration":C(e.id,t);return;case"ExportNamedDeclaration":case"ExportDefaultDeclaration":e.declaration&&et(e.declaration,t);return}}function L(e){let t=new Set;for(let n of e.body)et(n,t);return t}var rt=require("@babel/parser"),ot=$e(require("magic-string"),1);function k(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"?k(n.argument,t):k(n.value,t);return;case"ArrayPattern":for(let n of e.elements)k(n,t);return;case"AssignmentPattern":k(e.left,t);return;case"RestElement":k(e.argument,t);return}}function ve(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(ve);case"UnaryExpression":return ve(e.argument);case"MemberExpression":return!1;default:return!1}}function ie(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"&&ie(o,t);else r&&typeof r=="object"&&typeof r.type=="string"&&ie(r,t)}}}function ln(e){let t=new Set;return ie(e,n=>{if(n.type==="AssignmentExpression")k(n.left,t);else if(n.type==="UpdateExpression"){let r=n.argument;r?.type==="Identifier"&&t.add(r.name)}}),t}function cn(e,t){let n=new Set,r=o=>{let s=new Set;k(o,s);for(let a of s)t.has(a)&&n.add(a)};return ie(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 tt(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 f=new Set;k(p,f);for(let d of f)n.bails.push({name:d,reason:"rest"});continue}n.rest={name:p.name,keys:[]};continue}if(r.computed){let p=new Set;k(r.value,p);for(let f of p)n.bails.push({name:f,reason:"computed"});continue}let o=r.key,s=o.type==="Identifier"?o.name:o.value,a=r.value,i;a.type==="AssignmentPattern"&&(i=a.right,a=a.left);let l=[...t,s];if(a.type==="Identifier"){if(i&&!ve(i)){n.bails.push({name:a.name,reason:"unsafe-default"});continue}n.reads.push({name:a.name,path:l,...i?{fallback:i}:{}});continue}if(a.type==="ObjectPattern"){if(i){let p=new Set;k(a,p);for(let f of p)n.bails.push({name:f,reason:"unsafe-default"});continue}tt(a,l,n);continue}let c=new Set;k(a,c);for(let p of c)n.bails.push({name:p,reason:"computed"})}}function ae(e,t){let n={reads:[],bails:[]};if(e?.type!=="ObjectPattern"||(tt(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(i=>i.type!=="RestElement"&&!i.computed).map(i=>{let l=i.key;return l.type==="Identifier"?l.name:l.value})),n.reads.length===0&&!n.rest))return n;let r=new Set(n.reads.map(i=>i.name));n.rest&&r.add(n.rest.name);let o=ln(t),s=cn(t,r),a=[];for(let i of n.reads)o.has(i.name)?n.bails.push({name:i.name,reason:"reassigned"}):s.has(i.name)?n.bails.push({name:i.name,reason:"shadowed"}):a.push(i);return n.reads=a,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 le(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"}}function U(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)U(s,t,e);else o&&typeof o=="object"&&U(o,t,e)}}function nt(e){return!!e&&e[0]>="A"&&e[0]<="Z"}function pn(e){let t=[];return U(e,n=>{if(n.type==="FunctionDeclaration"&&nt(n.id?.name)){t.push(n);return}if(n.type==="VariableDeclarator"&&nt(n.id?.name)){let r=n.init;r&&(r.type==="ArrowFunctionExpression"||r.type==="FunctionExpression")&&t.push(r)}}),t}function dn(e){let t=new Set;return U(e,n=>{n.type==="Identifier"&&t.add(n.name)}),t}function un(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 xe(e,t,n={}){let r=[],o=[],s=new Set;for(let a of pn(e)){let i=a.params?.[0];if(i?.type!=="ObjectPattern")continue;let l=ae(i,a.body);for(let m of l.bails)o.push({name:m.name,reason:m.reason,message:le(m.reason),start:i.start});if(l.bails.length>0||l.reads.length===0&&!l.rest)continue;let c=dn(a),p=n.parameterName??"props";for(;c.has(p);)p=`_${p}`;let f=new Map;for(let m of l.reads){let h=`${p}.${m.path.join(".")}`,v=m.fallback;f.set(m.name,v?`(${h} === undefined ? ${t.slice(v.start,v.end)} : ${h})`:h)}let d=i.typeAnnotation;if(r.push({start:i.start,end:d?.start??i.end,code:p}),l.rest){let m=l.rest.keys.map(v=>JSON.stringify(v)).join(", "),h=a.body;r.push({start:h.start+1,end:h.start+1,code:`
|
|
1
|
+
"use strict";var xt=Object.create;var G=Object.defineProperty;var Rt=Object.getOwnPropertyDescriptor;var kt=Object.getOwnPropertyNames;var bt=Object.getPrototypeOf,St=Object.prototype.hasOwnProperty;var Et=(e,t)=>{for(var n in t)G(e,n,{get:t[n],enumerable:!0})},Ce=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of kt(t))!St.call(e,o)&&o!==n&&G(e,o,{get:()=>t[o],enumerable:!(r=Rt(t,o))||r.enumerable});return e};var $e=(e,t,n)=>(n=e!=null?xt(bt(e)):{},Ce(t||!e||!e.__esModule?G(n,"default",{value:e,enumerable:!0}):n,e)),It=e=>Ce(G({},"__esModule",{value:!0}),e);var Mn={};Et(Mn,{explainBail:()=>le,moduleBindings:()=>L,planPropsDestructure:()=>ae,shapeOf:()=>w,transformProps:()=>st,transformTemplates:()=>Nt});module.exports=It(Mn);var mt=require("@babel/parser"),gt=$e(require("magic-string"),1);function wt(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 M(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 i of o.children)r(i)||(s=!1);let a;for(let i of o.props)if(a=wt(i),a)break;return!a&&!s&&(a=Ct(o)),o.static=!a,a?n.set(o,a):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 Ct(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 Z={kind:"eager"},$t=["pointerdown","focusin","keydown"],Te=new Set(["eager","idle","visible","interaction","media","never"]),I=class extends Error{};function de(e){return e.startsWith("load:")}function Y(e,t){let n=e.slice(5);if(!Te.has(n))throw new I(`Unknown load strategy 'load:${n}'. Expected one of ${[...Te].join(", ")}.`);switch(n){case"eager":return Z;case"idle":return{kind:"idle"};case"never":return{kind:"never"};case"visible":return t?{kind:"visible",rootMargin:t}:{kind:"visible"};case"interaction":return{kind:"interaction",events:t?Tt(t):[...$t]};case"media":if(!t)throw new I(`'load:media' needs a query, e.g. load:media="(min-width: 1024px)".`);return{kind:"media",query:t};default:throw new I(`Unhandled load strategy '${n}'.`)}}function Tt(e){let t=e.split(/[\s,]+/).map(n=>n.trim()).filter(Boolean);if(t.length===0)throw new I("'load:interaction' was given no event names.");return t}function j(e){return e.kind!=="eager"&&e.kind!=="never"}var J=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],B=["Suspense","SuspenseList","Await"],O=["Router","Outlet","Redirect","Link"],Ln=[...J,...B,...O],ue=new Set([...J,...B]);function Pe(e={}){let{controlFlowModule:t="@fluixi/dom",coreModule:n="@fluixi/core",routerModule:r="@fluixi/core/router"}=e,o={};for(let s of J)o[s]=t;for(let s of B)o[s]=n;for(let s of O)o[s]=r;return o}function Q(e,t={}){let{resolver:n,isBound:r,modules:o,strategyFor:s}=t,a=Pe(o),i=new Map,l=new Set,c=f=>{let{name:d}=f;if(!d||d.includes(".")||r?.(d))return;let g=p(d);if(!g){l.add(d);return}let m=g.origin==="builtin"&&ue.has(d)?Z:s?.(f)??Z;f.source={...g,loading:m},i.set(d,f.source)},p=f=>{if(ue.has(f))return{module:a[f],export:f,origin:"builtin"};let d=n?.resolve(f);if(d)return{module:d.module,export:d.export,origin:"rule"};if(O.includes(f))return{module:a[f],export:f,origin:"builtin"}};return ee(e,f=>{f.kind==="component"&&c(f)}),{resolved:i,unresolved:[...l]}}function ee(e,t){let n=Array.isArray(e)?e:[e];for(let r of n){t(r);let o=r.children;o&&ee(o,t)}}function te(e){let t=[];ee(e,s=>{s.kind==="component"&&s.source&&t.push(s)});let n=new Set,r=new Set;for(let s of t){let{module:a,loading:i}=s.source;i.kind==="eager"&&n.add(a),i.kind==="never"&&r.add(a)}let o=new Map;for(let s of t){let a=s.source;j(a.loading)&&n.has(a.module)&&(a.loading={kind:"eager"},o.set(a.module,(o.get(a.module)??0)+1))}return{collapsed:o,conflicted:[...r].filter(s=>n.has(s))}}var Pt=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),Me={className:"class",htmlFor:"for"},Mt=new Set(["innerHTML","outerHTML","innerText","textContent","value","checked","selected","muted","defaultValue","defaultChecked","children","ref"]),Ot=new Set(["script","style","textarea","title"]);function fe(e){return Ot.has(e)}function Oe(e){return Me[e]??e}function _(e){return e.kind!=="attr"||e.expr!==void 0||e.name.includes(":")?!1:!Mt.has(e.name)}function me(e){if(!e.static||fe(e.tag))return!1;for(let t of e.props)if(!_(t))return!1;for(let t of e.children)if(t.kind!=="text"&&!(t.kind==="element"&&me(t)))return!1;return!0}function F(e){let t=e.props.map(At).filter(Boolean).join(""),n=`<${e.tag}${t}>`;return Pt.has(e.tag)?n:`${n}${e.children.map(Dt).join("")}</${e.tag}>`}function Dt(e){if(e.kind==="text")return jt(e.value);if(e.kind!=="element")throw new Error(`serializeStatic: unexpected ${e.kind}`);return F(e)}function At(e){let t=Me[e.name]??e.name,n=e.literal;return n===!0||n===void 0?` ${t}`:n===!1||n===null?"":` ${t}="${Lt(String(n))}"`}function Lt(e){return e.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function jt(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}var Jt="<!--fx-->",Bt="<!--fx/-->";function re(e){return e.kind==="expr"||e.kind==="component"||e.kind==="control"}function _t(e){return e.kind==="text"||e.kind==="element"&&De(e)}function De(e){return e.svg||fe(e.tag)||!e.props.every(t=>_(t))?!1:e.children.every(t=>_t(t)||re(t))}function ne(e){if(re(e))return!0;let t=e.children;return t?t.some(ne):!1}function Ae(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"||Ae(t))}function Le(e){if(!De(e)||!Ae(e)||!e.children.some(ne))return null;let t=[],n=[],r=0,o=a=>{let i=`_n$${r++}`;return t.push({ref:i,expr:a}),i};return s(e,"_el$"),{html:Ft(e),tag:e.tag,steps:t,holes:n};function s(a,i){let l=-1;a.children.forEach((p,f)=>{ne(p)&&(l=f)});let c=null;for(let p=0;p<=l;p++){let f=a.children[p],d=c?`${c}.nextSibling`:`${i}.firstChild`;if(re(f)){let m=o(d),h=o(`holeEnd(${m})`);n.push({parentRef:i,startRef:m,endRef:h,node:f}),c=h;continue}let g=o(d);f.kind==="element"&&ne(f)&&s(f,g),c=g}}}function Ft(e){return F(je(e)).split(Je).join(Jt+Bt)}function je(e){return{...e,children:e.children.map(t=>re(t)?{kind:"text",value:Je}:t.kind==="element"?je(t):t)}}var Je="\0fx-hole\0";var ge={version:1,module:"@fluixi/dom",symbols:["createNativeElement","insert","spread","setAttribute","delegateEvents","createComponent","createMemo","untrack","Show","For","Index","Switch","Match","Dynamic","ErrorBoundary"]},Wn={version:2,module:"@fluixi/dom",symbols:[...ge.symbols,"template","cloneTemplate","walk"]};var Ht={show:"Show",for:"For",index:"Index",switch:"Switch",match:"Match",dynamic:"Dynamic",errorBoundary:"ErrorBoundary",suspense:"Suspense"};function Vt(e){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e)}function _e(e){return Vt(e)?e:JSON.stringify(e)}function Xt(e){return e.expr!==void 0?e.reactive?`() => (${e.expr})`:`(${e.expr})`:JSON.stringify(e.literal??!0)}function zt(e){return e.expr!==void 0?`(${e.expr})`:JSON.stringify(e.literal??!0)}function Ut(e,t,n){let r=e.filter(i=>i.kind==="spread"),s=e.filter(i=>i.kind!=="spread").map(i=>`${_e(i.name)}: ${Xt(i)}`);t!=null&&s.push(`children: ${t}`);let a=`{ ${s.join(", ")} }`;return r.length>0?(n.add("mergeProps"),`mergeProps(${r.map(i=>i.expr).join(", ")}, ${a})`):a}function Fe(e,t,n){return e.length===1?H(e[0],t,n):`[${e.map(r=>H(r,t,n)).join(", ")}]`}function Be(e,t,n,r,o){r.add("createMemo"),r.add("createComponent");let s=t.filter(c=>c.kind==="spread"),i=t.filter(c=>c.kind!=="spread").map(c=>`get ${_e(c.name)}() { return ${zt(c)}; }`);n.length>0&&i.push(`get children() { return ${Fe(n,r,o)}; }`);let l=`{ ${i.join(", ")} }`;return s.length>0&&(r.add("mergeProps"),l=`mergeProps(${s.map(c=>c.expr).join(", ")}, ${l})`),`createMemo(() => createComponent(${e}, ${l}))`}function Wt(e,t){let n=Oe(t.name),r=t.literal;return r===!0||r===void 0?`${e}.setAttribute(${JSON.stringify(n)}, "");`:r===!1||r===null?"":`${e}.setAttribute(${JSON.stringify(n)}, ${JSON.stringify(String(r))});`}var He=!1;function H(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":Fe(e.children,t,n);case"component":return Be(e.name,e.props,e.children,t,n);case"control":{let r=Ht[e.control]??e.control;return t.add(r),Be(r,e.props,e.children,t,n)}case"element":{if(n&&e.static&&!e.svg&&me(e)){t.add("templateNode");let i=`_tmpl$${n.length}`;return n.push({id:i,html:F(e),tag:e.tag,svg:!1}),`templateNode(${i}, ${JSON.stringify(e.tag)})`}if(n&&He){let i=Le(e);if(i){t.add("templateNode"),t.add("insert"),t.add("holeEnd"),t.add("holeContent"),t.add("holeScope");let l=`_tmpl$${n.length}`;n.push({id:l,html:i.html,tag:i.tag,svg:!1});let c=[`const _el$ = templateNode(${l}, ${JSON.stringify(i.tag)}, true);`];for(let p of i.steps)c.push(`const ${p.ref} = ${p.expr};`);for(let p of i.holes)c.push(`insert(${p.parentRef}, holeScope(${p.startRef}, () => (${H(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=[],a=e.svg?`${r}, true`:r;if(s.push(`const ${o} = createNativeElement(${a});`),e.props.length>0)if(!e.svg&&e.props.every(_))for(let i of e.props)s.push(Wt(o,i));else{t.add("spread");let i=e.svg?", isSVG: true":"";s.push(`spread({ element: ${o}, props: ${Ut(e.props,null,t)}${i} });`)}for(let i of e.children){t.add("insert");let l=H(i,t,n),c=i.kind==="expr"&&i.reactive||i.kind==="component"||i.kind==="control";s.push(c?`insert(${o}, ${l}, null);`:`insert(${o}, ${l});`)}return s.push(`return ${o};`),`(() => { ${s.join(" ")} })()`}}}function oe(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 D={name:"imperative",contract:ge,emit(e,t){let n=new Set,r=t?.templateClone!==!1?[]:void 0;return He=t?.partialTemplates===!0,{code:H(e,n,r),imports:Array.from(n),templates:r}}};var qt=e=>"components"in e;function Ve(e,t){return e.replace(/\$(\d+)/g,(n,r)=>t[Number(r)]??n)}function Kt(e,t){return typeof t=="string"?{module:t,export:e}:t}function se(e=[]){let t=new Map,n=[],r=[];for(let a of e){if(!qt(a)){r.push(a);continue}for(let[i,l]of Object.entries(a.components)){let c=Kt(i,l),p=t.get(i);if(p&&p.module!==c.module){let f=n.find(d=>d.name===i);f?f.modules.push(c.module):n.push({name:i,modules:[p.module,c.module]});continue}t.set(i,c)}}let o=new Map;return{resolve:a=>{if(o.has(a))return o.get(a);let i=t.get(a);if(!i)for(let l of r){let c=a.match(new RegExp(l.match.source,l.match.flags.replace("g","")));if(c){i={module:Ve(l.module,c),export:l.export?Ve(l.export,c):a};break}}return o.set(a,i),i},names:()=>[...t.keys()],conflicts:()=>n}}var Ue=require("@fluixi/template-parser");function V(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 Xe=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function Gt(e){return e.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${")}function ze(e){return e.charAt(0).toUpperCase()+e.slice(1)}var he=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}=D.emit(t,{});for(let s of r)this.used.add(s);return oe(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 a=o.attributes.find(i=>i.kind==="IfDirective");if(a&&a.kind==="IfDirective"){let i=r+1;i<t.length&&this.isBlankText(t[i])&&i++;let l=t[i],c=l&&(l.kind==="Element"||l.kind==="Component")&&l.attributes.some(p=>p.kind==="ElseDirective");n.push(this.lowerIf(o,a.hole,c?l:null)),c&&(r=i);continue}if(o.attributes.some(i=>i.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&&V(t.value)===""}lowerNode(t){switch(t.kind){case"Text":{if(t.raw)return{kind:"text",value:t.value};let n=V(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},f={name:l,kind:"attr",expr:this.emit(p),jsxElement:!0},d=r.findIndex(g=>g.name===l);d>=0?r[d]=f:r.push(f)}let a=t.attributes.find(l=>l.kind==="LoadDirective"),i=a?Y(`load:${a.strategy}`,a.modifier):void 0;return{kind:"component",name:n,props:r,children:this.lowerChildren(s),...i?{load:i}:{}}}partitionSlots(t){let n=new Map,r=[];for(let o of t){if(o.kind==="Element"||o.kind==="Component"){let s=o.attributes.find(a=>a.kind==="Attribute"&&a.name==="slot");if(s&&s.value&&s.value.kind==="static"){let a={...o,attributes:o.attributes.filter(c=>c!==s)},i=a.kind==="Element"?this.lowerElement(a):this.lowerComponent(a),l=n.get(s.value.value)??[];l.push(i),n.set(s.value.value,l);continue}}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 i=this.stripAndLower(r,l=>l.kind==="ElseDirective");s.push({name:"fallback",kind:"attr",expr:this.emit(i),jsxElement:!0})}let a=this.stripAndLower(t,i=>i.kind==="IfDirective");return{kind:"component",name:"Show",props:s,children:[a]}}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),a;if(s){let l={kind:"expr",code:s.body,reactive:s.bodyReactive},c=this.rebuildWithChildren(t,[l]);a=`(${s.params.join(", ")}) => (${this.emit(c)})`}else{let l=this.stripAndLower(t,c=>c.kind==="EachDirective");a=`() => (${this.emit(l)})`}return{kind:"component",name:"For",props:o,children:[{kind:"expr",code:a,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=[],a=!1,i=[];for(let l of t)switch(l.kind){case"IfDirective":case"EachDirective":case"ElseDirective":break;case"Attribute":n.push(this.plainAttr(l));break;case"PropertyBinding":n.push({name:l.name,kind:"prop",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"EventBinding":n.push(this.eventProp(l));break;case"RefBinding":n.push({name:"ref",kind:"ref",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"Spread":n.push({name:"",kind:"spread",expr:this.hole(l.hole).code});break;case"ClassDirective":{let 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}`),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;i.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:a}),i.length>0&&n.push({name:"use",kind:"attr",expr:`[${i.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"+ze(t.name),kind:"event",event:{name:n,delegated:Xe.has(n)},expr:r};let s=this.wrapHandler(r,t.modifiers),a=this.eventOptions(t.modifiers),i=a?`[${s}, ${a}]`:s;return{name:"on:"+n,kind:"attr",expr:i}}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 a=`bindPair(${n})`;return[{name:t,kind:"attr",expr:`${a}[0]()`,reactive:!0},{name:"on"+ze(o),kind:"event",event:{name:o,delegated:Xe.has(o)},expr:`(e) => ${a}[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 a=!1,i=n.parts.map(l=>{if("text"in l)return Gt(l.text);let c=this.hole(l.hole);return a=a||c.reactive,"${"+c.code+"}"}).join("");return s.expr="`"+i+"`",s.reactive=a,s}};function We(e,t,n,r={}){let{root:o}=(0,Ue.parseTemplate)(e,{svg:r.svg});return new he(t,n).lowerRoot(o.children)}function qe(e,t,n={}){let r=new Set,o=We(e,[...t],r,{svg:n.svg});M(o),Q(o,{resolver:se(n.resolve??[]),modules:{controlFlowModule:n.controlFlowModule??"@fluixi/dom",coreModule:n.coreModule??"@fluixi/core",routerModule:n.routerModule??"@fluixi/core/router"},strategyFor:l=>l.load}),te(o);let{code:s,imports:a,templates:i}=D.emit(o,{templateClone:n.templateClone,partialTemplates:n.partialTemplates});for(let l of a)r.add(l);return n.hoistTemplates?{code:s,imports:[...r],ir:o,templates:i}:{code:oe(s,i),imports:[...r],ir:o}}var Zt="children";function A(e){switch(e.kind){case"call":return!0;case"member":return e.property!==Zt;case"compound":return e.parts.some(A);case"opaque":return!1}}var Yt=new Set(["CallExpression","OptionalCallExpression"]),Qt=new Set(["MemberExpression","OptionalMemberExpression"]);function w(e){if(!e)return{kind:"opaque"};if(Yt.has(e.type))return{kind:"call"};if(Qt.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(X)}:e.type==="LogicalExpression"||e.type==="BinaryExpression"?{kind:"compound",parts:[e.left,e.right].map(X)}:e.type==="TemplateLiteral"?{kind:"compound",parts:e.expressions.map(X)}:e.type==="ObjectExpression"?{kind:"compound",parts:e.properties.filter(n=>(n.type==="ObjectProperty"||n.type==="Property")&&n.computed!==!0).map(n=>X(n.value))}:e.type==="ArrayExpression"?{kind:"compound",parts:e.elements.filter(n=>n!=null&&n.type!=="SpreadElement").map(X)}:{kind:"opaque"}}var X=e=>w(e);var en=new Set(["svg","path","circle","rect","line","polygon","polyline","ellipse","g","defs","clipPath","text"]),tn=/^on[A-Z]/,nn=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]),Ze=e=>A(w(e));function z(e){if(e.type==="StringLiteral"||e.type==="NumericLiteral"||e.type==="BooleanLiteral"||e.type==="Literal"&&(typeof e.value=="string"||typeof e.value=="number"||typeof e.value=="boolean"))return e.value}var ye=e=>!!e&&typeof z(e)=="string";function rn(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 Ne(e){return e.type==="JSXIdentifier"?e.name==="class"?"className":e.name:e.type==="JSXNamespacedName"?`${e.namespace.name}:${e.name.name}`:"unknown"}function on(e,t){let n=Ne(e.name),r=tn.test(n),o=r||n.startsWith("on:")||n==="ref",a={name:n,kind:r?"event":"attr"};if(r){let l=n.slice(2).toLowerCase();a.event={name:l,delegated:nn.has(l)}}let i=e.value;if(i==null)return a.literal=!0,a;if(ye(i))return a.literal=z(i),a;if(i.type==="JSXExpressionContainer"&&i.expression?.type!=="JSXEmptyExpression"){let l=i.expression,c=z(l);return c!==void 0?(a.literal=c,a):(a.expr=t.code(l),a.reactive=o?!1:Ze(l),(l.type==="JSXElement"||l.type==="JSXFragment")&&(a.jsxElement=!0),a)}return a.literal=!0,a}function Ke(e,t){let n=e.value;return n==null?null:ye(n)?JSON.stringify(z(n)):n.type==="JSXExpressionContainer"&&n.expression?.type!=="JSXEmptyExpression"?t.code(n.expression):null}function sn(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"||de(Ne(o.name)))continue;let s=o.name.type==="JSXNamespacedName"?o.name.namespace.name:null;if(s==="use"){let a=o.name.name.name;t.used.add(a);let i=Ke(o,t);r.push(i!=null?`[${a}, () => (${i})]`:`[${a}]`);continue}if(s==="oncapture"){let a=o.name.name.name.toLowerCase(),i=Ke(o,t)??"undefined";n.push({name:"on:"+a,kind:"attr",expr:`[${i}, { capture: true }]`});continue}n.push(on(o,t))}return r.length>0&&n.push({name:"use",kind:"attr",expr:`[${r.join(", ")}]`}),n}function Ge(e,t){let n=[];for(let r of e)if(r.type==="JSXText"){let o=V(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:Ze(o)})}}else r.type==="JSXElement"||r.type==="JSXFragment"?n.push(Ye(r,t)):r.type==="JSXSpreadChild"&&n.push({kind:"expr",code:t.code(r.expression),reactive:!1});return n}function an(e){for(let t of e){if(t.type!=="JSXAttribute")continue;let n=Ne(t.name);if(de(n)){if(t.value&&!ye(t.value))throw new I(`'${n}' needs a literal value, not an expression — the strategy is compile-time.`);return Y(n,t.value?z(t.value):null)}}}function Ye(e,t){if(e.type==="JSXFragment")return{kind:"fragment",children:Ge(e.children,t)};let{tag:n,component:r}=rn(e.openingElement.name,t),o=sn(e.openingElement.attributes,t),s=Ge(e.children,t);if(r){let a=an(e.openingElement.attributes);return{kind:"component",name:n,props:o,children:s,...a?{load:a}:{}}}return{kind:"element",tag:n,svg:en.has(n),props:o,children:s,static:!1}}function Qe(e,t){let n=Ye(e,t);return M(n),n}function C(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"?C(n.argument,t):C(n.value,t);return;case"ArrayPattern":for(let n of e.elements)C(n,t);return;case"AssignmentPattern":C(e.left,t);return;case"RestElement":C(e.argument,t);return}}function et(e,t){switch(e.type){case"ImportDeclaration":for(let n of e.specifiers)C(n.local,t);return;case"VariableDeclaration":for(let n of e.declarations)C(n.id,t);return;case"FunctionDeclaration":case"ClassDeclaration":C(e.id,t);return;case"ExportNamedDeclaration":case"ExportDefaultDeclaration":e.declaration&&et(e.declaration,t);return}}function L(e){let t=new Set;for(let n of e.body)et(n,t);return t}var rt=require("@babel/parser"),ot=$e(require("magic-string"),1);function k(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"?k(n.argument,t):k(n.value,t);return;case"ArrayPattern":for(let n of e.elements)k(n,t);return;case"AssignmentPattern":k(e.left,t);return;case"RestElement":k(e.argument,t);return}}function ve(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(ve);case"UnaryExpression":return ve(e.argument);case"MemberExpression":return!1;default:return!1}}function ie(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"&&ie(o,t);else r&&typeof r=="object"&&typeof r.type=="string"&&ie(r,t)}}}function ln(e){let t=new Set;return ie(e,n=>{if(n.type==="AssignmentExpression")k(n.left,t);else if(n.type==="UpdateExpression"){let r=n.argument;r?.type==="Identifier"&&t.add(r.name)}}),t}function cn(e,t){let n=new Set,r=o=>{let s=new Set;k(o,s);for(let a of s)t.has(a)&&n.add(a)};return ie(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 tt(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 f=new Set;k(p,f);for(let d of f)n.bails.push({name:d,reason:"rest"});continue}n.rest={name:p.name,keys:[]};continue}if(r.computed){let p=new Set;k(r.value,p);for(let f of p)n.bails.push({name:f,reason:"computed"});continue}let o=r.key,s=o.type==="Identifier"?o.name:o.value,a=r.value,i;a.type==="AssignmentPattern"&&(i=a.right,a=a.left);let l=[...t,s];if(a.type==="Identifier"){if(i&&!ve(i)){n.bails.push({name:a.name,reason:"unsafe-default"});continue}n.reads.push({name:a.name,path:l,...i?{fallback:i}:{}});continue}if(a.type==="ObjectPattern"){if(i){let p=new Set;k(a,p);for(let f of p)n.bails.push({name:f,reason:"unsafe-default"});continue}tt(a,l,n);continue}let c=new Set;k(a,c);for(let p of c)n.bails.push({name:p,reason:"computed"})}}function ae(e,t){let n={reads:[],bails:[]};if(e?.type!=="ObjectPattern"||(tt(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(i=>i.type!=="RestElement"&&!i.computed).map(i=>{let l=i.key;return l.type==="Identifier"?l.name:l.value})),n.reads.length===0&&!n.rest))return n;let r=new Set(n.reads.map(i=>i.name));n.rest&&r.add(n.rest.name);let o=ln(t),s=cn(t,r),a=[];for(let i of n.reads)o.has(i.name)?n.bails.push({name:i.name,reason:"reassigned"}):s.has(i.name)?n.bails.push({name:i.name,reason:"shadowed"}):a.push(i);return n.reads=a,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 le(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"}}function U(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)U(s,t,e);else o&&typeof o=="object"&&U(o,t,e)}}function nt(e){return!!e&&e[0]>="A"&&e[0]<="Z"}function pn(e){let t=[];return U(e,n=>{if(n.type==="FunctionDeclaration"&&nt(n.id?.name)){t.push(n);return}if(n.type==="VariableDeclarator"&&nt(n.id?.name)){let r=n.init;r&&(r.type==="ArrowFunctionExpression"||r.type==="FunctionExpression")&&t.push(r)}}),t}function dn(e){let t=new Set;return U(e,n=>{n.type==="Identifier"&&t.add(n.name)}),t}function un(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 xe(e,t,n={}){let r=[],o=[],s=new Set;for(let a of pn(e)){let i=a.params?.[0];if(i?.type!=="ObjectPattern")continue;let l=ae(i,a.body);for(let m of l.bails)o.push({name:m.name,reason:m.reason,message:le(m.reason),start:i.start});if(l.bails.length>0||l.reads.length===0&&!l.rest)continue;let c=dn(a),p=n.parameterName??"props";for(;c.has(p);)p=`_${p}`;let f=new Map;for(let m of l.reads){let h=`${p}.${m.path.join(".")}`,v=m.fallback;f.set(m.name,v?`(${h} === undefined ? ${t.slice(v.start,v.end)} : ${h})`:h)}let d=i.typeAnnotation;if(r.push({start:i.start,end:d?.start??i.end,code:p}),l.rest){let m=l.rest.keys.map(v=>JSON.stringify(v)).join(", "),h=a.body;r.push({start:h.start+1,end:h.start+1,code:`
|
|
2
2
|
const [, ${l.rest.name}] = splitProps(${p}, [${m}]);`}),s.add("splitProps")}let g=[];U(a.body,(m,h)=>{if(m.type!=="Identifier")return;let v=f.get(m.name);if(!v)return;let S=h?.type==="ObjectProperty"&&h.shorthand&&h.value===m;if(!S&&!un(m,h))return;let b=l.reads.find($=>$.name===m.name).path;g.push({node:m,parent:S?h:null,text:v,property:b[b.length-1]})});for(let m of g)m.parent?r.push({start:m.parent.start,end:m.parent.end,code:`${m.node.name}: ${m.text}`}):r.push({start:m.node.start,end:m.node.end,code:m.text}),fn(m.node,p,m.property)}return{edits:r,diagnostics:o,used:s}}function fn(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 st(e,t="module.tsx",n={}){let r=(0,rt.parse)(e,{sourceType:"module",plugins:["typescript","jsx"],errorRecovery:!0}),{edits:o,diagnostics:s,used:a}=xe(r.program,e,n),i=new ot.default(e);for(let l of o)l.start===l.end?i.appendLeft(l.start,l.code):i.overwrite(l.start,l.end,l.code);return a.has("splitProps")&&!L(r.program).has("splitProps")&&i.prepend(`import { splitProps } from ${JSON.stringify(n.runtimeModule??"@fluixi/dom")};
|
|
3
|
-
`),{code:i.toString(),map:i.generateMap({source:t,includeContent:!0,hires:!0}),diagnostics:s,rewritten:o.filter(l=>l.code!==(n.parameterName??"props")).length}}var T="@fluixi/reactive/signal",P={$signal:{export:"signal",module:T,returns:"signal-handle"},$memo:{export:"memo",module:T,returns:"memo-handle"},$effect:{export:"effect",module:T,returns:"effect"},$store:{export:"store",module:"@fluixi/reactive/store",returns:"store-handle"},$resource:{export:"resource",module:T,returns:"resource-handle"},$selector:{export:"createSelector",module:T,returns:"memo-accessor"},$deferred:{export:"createDeferred",module:T,returns:"memo-accessor"},$untrack:{export:"untrack",module:T,returns:"plain"},$untrackStore:{export:"untrackStore",module:"@fluixi/reactive/store",returns:"plain"}},it={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"},mn=["@fluixi/reactive","@fluixi/reactive/signal","@fluixi/reactive/store","fluixi"],gn=new RegExp(`\\$(?:${Object.keys(P).map(e=>e.slice(1)).join("|")})\\s*\\(`);function at(e){return gn.test(e)}function lt(e){return Object.prototype.hasOwnProperty.call(P,e)}function ct(e){return mn.includes(e)}function y(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"?y(n.argument,t):y(n.value,t);return;case"ArrayPattern":for(let n of e.elements??[])y(n,t);return;case"AssignmentPattern":y(e.left,t);return;case"RestElement":y(e.argument,t);return}}function W(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)W(o,t);else r&&typeof r=="object"&&W(r,t)}}}function hn(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=P[r];if(s&&!t.shadowed.has(r))return s.returns}function yn(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 pt(e){let t=new Set;return W(e,n=>{switch(n.type){case"VariableDeclarator":y(n.id,t);return;case"FunctionDeclaration":case"FunctionExpression":case"ArrowFunctionExpression":y(n.id,t);for(let r of n.params??[])y(r,t);return;case"ClassDeclaration":case"ClassExpression":y(n.id,t);return;case"ImportSpecifier":case"ImportDefaultSpecifier":case"ImportNamespaceSpecifier":y(n.local,t);return;case"CatchClause":y(n.param,t);return}}),t}function dt(e){let t={kinds:new Map,primitives:new Map,shadowed:new Set},n=e;W(n,r=>{let o=new Set;if(r.type==="VariableDeclarator")y(r.id,o);else if(r.type==="FunctionDeclaration"||r.type==="ClassDeclaration")y(r.id,o);else if(r.type==="ImportDefaultSpecifier"||r.type==="ImportNamespaceSpecifier")y(r.local,o);else if(r.type==="ImportSpecifier")y(r.local,o);else if(r.type==="FunctionExpression"||r.type==="ArrowFunctionExpression"||r.type==="FunctionDeclaration")for(let s of r.params??[])y(s,o);for(let s of o)P[s]&&t.shadowed.add(s)});for(let r of n.body??[])if(r.type==="ImportDeclaration"&&ct(r.source?.value))for(let o of r.specifiers??[]){if(o.type!=="ImportSpecifier")continue;let s=o.imported,a=s.type==="Identifier"?s.name:s.value,i=it[a];i&&t.primitives.set(o.local.name,i)}return W(n,r=>{if(r.type!=="VariableDeclarator"||!r.init)return;let o=hn(r.init,t);o&&yn(r.id,o,t.kinds)}),t}function Re(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)Re(o,t);else r&&typeof r=="object"&&Re(r,t)}}}function ut(e){let t=[],n=[],r=new Map,o=new Set,{shadowed:s}=dt(e);return Re(e,a=>{if(a.type!=="CallExpression")return;let i=a.callee;if(i?.type!=="Identifier")return;let l=i.name;if(!lt(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:i.start}));return}let c=P[l];t.push({start:i.start,end:i.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 ft(e,t){let n=[];for(let[r,o]of[...e.imports].sort(([s],[a])=>s.localeCompare(a))){let s=[...o].filter(a=>!t.has(a)).sort();s.length&&n.push(`import { ${s.join(", ")} } from ${JSON.stringify(r)};`)}return n.length?`${n.join(`
|
|
3
|
+
`),{code:i.toString(),map:i.generateMap({source:t,includeContent:!0,hires:!0}),diagnostics:s,rewritten:o.filter(l=>l.code!==(n.parameterName??"props")).length}}var T="@fluixi/reactive/signal",P={$signal:{export:"signal",module:T,returns:"signal-handle"},$memo:{export:"memo",module:T,returns:"memo-handle"},$effect:{export:"effect",module:T,returns:"effect"},$store:{export:"store",module:"@fluixi/reactive/store",returns:"store-handle"},$resource:{export:"resource",module:T,returns:"resource-handle"},$selector:{export:"createSelector",module:T,returns:"memo-accessor"},$deferred:{export:"createDeferred",module:T,returns:"memo-accessor"},$untrack:{export:"untrack",module:T,returns:"plain"},$untrackStore:{export:"untrackStore",module:"@fluixi/reactive/store",returns:"plain"}},it={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"},mn=["@fluixi/reactive","@fluixi/reactive/signal","@fluixi/reactive/store","@fluixi/core"],gn=new RegExp(`\\$(?:${Object.keys(P).map(e=>e.slice(1)).join("|")})\\s*\\(`);function at(e){return gn.test(e)}function lt(e){return Object.prototype.hasOwnProperty.call(P,e)}function ct(e){return mn.includes(e)}function y(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"?y(n.argument,t):y(n.value,t);return;case"ArrayPattern":for(let n of e.elements??[])y(n,t);return;case"AssignmentPattern":y(e.left,t);return;case"RestElement":y(e.argument,t);return}}function W(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)W(o,t);else r&&typeof r=="object"&&W(r,t)}}}function hn(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=P[r];if(s&&!t.shadowed.has(r))return s.returns}function yn(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 pt(e){let t=new Set;return W(e,n=>{switch(n.type){case"VariableDeclarator":y(n.id,t);return;case"FunctionDeclaration":case"FunctionExpression":case"ArrowFunctionExpression":y(n.id,t);for(let r of n.params??[])y(r,t);return;case"ClassDeclaration":case"ClassExpression":y(n.id,t);return;case"ImportSpecifier":case"ImportDefaultSpecifier":case"ImportNamespaceSpecifier":y(n.local,t);return;case"CatchClause":y(n.param,t);return}}),t}function dt(e){let t={kinds:new Map,primitives:new Map,shadowed:new Set},n=e;W(n,r=>{let o=new Set;if(r.type==="VariableDeclarator")y(r.id,o);else if(r.type==="FunctionDeclaration"||r.type==="ClassDeclaration")y(r.id,o);else if(r.type==="ImportDefaultSpecifier"||r.type==="ImportNamespaceSpecifier")y(r.local,o);else if(r.type==="ImportSpecifier")y(r.local,o);else if(r.type==="FunctionExpression"||r.type==="ArrowFunctionExpression"||r.type==="FunctionDeclaration")for(let s of r.params??[])y(s,o);for(let s of o)P[s]&&t.shadowed.add(s)});for(let r of n.body??[])if(r.type==="ImportDeclaration"&&ct(r.source?.value))for(let o of r.specifiers??[]){if(o.type!=="ImportSpecifier")continue;let s=o.imported,a=s.type==="Identifier"?s.name:s.value,i=it[a];i&&t.primitives.set(o.local.name,i)}return W(n,r=>{if(r.type!=="VariableDeclarator"||!r.init)return;let o=hn(r.init,t);o&&yn(r.id,o,t.kinds)}),t}function Re(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)Re(o,t);else r&&typeof r=="object"&&Re(r,t)}}}function ut(e){let t=[],n=[],r=new Map,o=new Set,{shadowed:s}=dt(e);return Re(e,a=>{if(a.type!=="CallExpression")return;let i=a.callee;if(i?.type!=="Identifier")return;let l=i.name;if(!lt(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:i.start}));return}let c=P[l];t.push({start:i.start,end:i.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 ft(e,t){let n=[];for(let[r,o]of[...e.imports].sort(([s],[a])=>s.localeCompare(a))){let s=[...o].filter(a=>!t.has(a)).sort();s.length&&n.push(`import { ${s.join(", ")} } from ${JSON.stringify(r)};`)}return n.length?`${n.join(`
|
|
4
4
|
`)}
|
|
5
5
|
`:""}var Nn=new Set(J),vn=new Set(B),xn=new Set(O),Rn=new Set(["createMemo","createEffect","createRenderEffect","createRoot","createSignal","onCleanup","batch","untrack"]);function pe(e,t,n=null,r=""){if(!(!e||typeof e!="object")){if(Array.isArray(e)){for(let o of e)pe(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"||pe(e[o],t,typeof e.type=="string"?e:n,o)}}var ke=e=>e.type==="JSXElement"||e.type==="JSXFragment";function kn(e,t,n){return ke(e)?!(t&&ke(t)&&n==="children"):!1}function bn(e,t){return e.type==="TaggedTemplateExpression"&&e.tag?.type==="Identifier"&&(e.tag.name===t||e.tag.name==="svg")}function ht(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 ce(e,t,n,r){let o=ht(r.filter(a=>a.start>=t&&a.end<=n)).sort((a,i)=>i.start-a.start),s=e.slice(t,n);for(let a of o)s=s.slice(0,a.start-t)+a.code+s.slice(a.end-t);return s}function Sn(e,t,n){let r={code:ce(e,t.start,t.end,n),reactive:A(w(t))};return t.type==="ArrowFunctionExpression"&&t.body?.type!=="BlockStatement"&&(r.arrow={params:t.params.map(o=>ce(e,o.start,o.end,n)),body:ce(e,t.body.start,t.body.end,n),bodyReactive:A(w(t.body))}),t.type==="ObjectExpression"&&(r.object=!0),r}function yt(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}`,a=n.get(s);a||(a=`_fxTmpl$${n.size}`,n.set(s,a)),r.set(o.id,a)}return e.replace(/_tmpl\$\d+/g,o=>r.get(o)??o)}function be(e,t){if(e.kind==="component"&&e.load&&!e.source&&j(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):j(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)be(n,t)}function En(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 In(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 wn(e,t,n){let r=!1;return pe(e,o=>{r||o.type!=="Identifier"||o.name!==t||o.start===n.local?.start&&o.end===n.local?.end||(r=!0)}),r}function Cn(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 $n(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 Nt(e,t,n={}){let r=n.litTag??"html",o=n.format??"both",s=o!=="jsx",a=o!=="lit",i=s&&(e.includes(`${r}\``)||e.includes("svg`")),l=n.intrinsics!==!1&&at(e);if(!i&&!(a&&e.includes("<"))&&!l)return null;let c=(0,mt.parse)(e,{sourceType:"module",plugins:["jsx","typescript"],errorRecovery:!0}),p=[];pe(c.program,(u,x,N)=>{(s&&bn(u,r)||a&&kn(u,x,N))&&p.push(u)});let f=n.propsDestructure===!1?{edits:[],diagnostics:[],used:new Set}:xe(c.program,e,{runtimeModule:n.runtimeModule}),d=n.intrinsics===!1?{edits:[],diagnostics:[],imports:new Map}:ut(c.program);if(p.length===0&&f.edits.length===0&&d.edits.length===0&&d.diagnostics.length===0&&f.diagnostics.length===0)return null;p.sort((u,x)=>x.start-u.start||u.end-x.end);let m=new Set(f.used),h={builtins:new Set,resolved:new Map,deferred:new Map,delegatedEvents:new Set,ignoredLoad:new Map,unresolved:new Set,declared:pt(c.program)},v=new Map,S=[...f.edits,...d.edits];for(let u of p){let x=p.some(R=>R!==u&&R.start<=u.start&&R.end>=u.end&&R.end-R.start>u.end-u.start);if(ke(u)){S.push({start:u.start,end:u.end,code:Tn(e,u,S,x,m,h,v,n)});continue}let N=u.quasi.expressions.map(R=>Sn(e,R,S)),E=qe($n(u),N,{...n,hoistTemplates:!0,templateClone:n.templateClone??!0,partialTemplates:x?!1:n.partialTemplates??!0,svg:u.tag.name==="svg"});for(let R of E.imports)m.add(R);be(E.ir,h),S.push({start:u.start,end:u.end,code:yt(E.code,E.templates,v)})}let b=new gt.default(e);for(let u of ht(S))u.start===u.end?b.appendLeft(u.start,u.code):b.overwrite(u.start,u.end,u.code);let $=L(c.program),q=new Map;for(let[u]of h.ignoredLoad)$.has(u)||q.set(u,"unsupplied");for(let[u,x]of[...h.ignoredLoad]){if(!$.has(u))continue;let N=En(c.program,u);if(!N){q.set(u,In(c.program,u)?"namespace":"local");continue}if(wn(c.program,u,N.specifier)){q.set(u,"value");continue}let E=N.declaration.specifiers.filter(K=>K!==N.specifier),R=E.length===0&&e[N.declaration.end]===`
|
|
6
|
-
`?N.declaration.end+1:N.declaration.end;b.overwrite(N.declaration.start,R,E.length===0?"":`import { ${E.map(K=>e.slice(K.start,K.end)).join(", ")} } from ${JSON.stringify(N.declaration.source.value)};`),h.deferred.set(u,{module:N.module,export:N.export,origin:"rule",loading:x}),$.delete(u),h.ignoredLoad.delete(u)}let Se=Pn(m,h,v,$,n);Se&&b.prepend(Se);let Ee=ft(d,$);Ee&&b.prepend(Ee);let vt={value:u=>`${u} 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:u=>`${u} came in through a namespace import, which has no single export to defer. Import ${u} by name.`,local:u=>`${u} is declared in this file, so there is no module to load separately. Move it to its own file and import it.`,unsupplied:u=>`nothing supplies ${u}, so there is no import to defer. Import it, or add a \`resolve\` rule for it.`},Ie=[...h.ignoredLoad].map(([u,x])=>({name:u,strategy:x,message:`load:${x.kind} has no effect on <${u}>: ${vt[q.get(u)??"unsupplied"](u)}`})),we=[...h.unresolved].map(u=>({name:u,message:`<${u}> 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 ${u}, or add a \`resolve\` rule for it.`}));return{code:b.toString(),map:b.generateMap({source:t,includeContent:!0,hires:!0}),...Ie.length?{loadDiagnostics:Ie}:{},...we.length?{unresolvedDiagnostics:we}:{},...f.diagnostics.length?{propsDiagnostics:f.diagnostics}:{},...d.diagnostics.length?{intrinsicDiagnostics:d.diagnostics}:{}}}function Tn(e,t,n,r,o,s,a,i){let l=Qe(t,{code:f=>ce(e,f.start,f.end,n),used:o});M(l);let c=Q(l,{resolver:se(i.resolve??[]),isBound:f=>s.declared.has(f),modules:{controlFlowModule:i.controlFlowModule??i.runtimeModule??"@fluixi/dom",coreModule:i.coreModule??"fluixi",routerModule:i.routerModule??"fluixi/router"},strategyFor:f=>f.load});for(let f of c.unresolved)s.unresolved.add(f);te(l);let p=D.emit(l,{templateClone:i.templateClone??!0,partialTemplates:r?!1:i.partialTemplates??!0});for(let f of p.imports)o.add(f);return be(l,s),yt(p.code,p.templates,a)}function Pn(e,t,n,r,o){let s=o.runtimeModule??"@fluixi/dom",a=o.coreModule??"fluixi",i=new Map,l=(d,g)=>i.set(d,[...i.get(d)??[],g]),c=new Set(e);for(let d of t.builtins)c.add(d);t.delegatedEvents.size>0&&c.add("delegateEvents");for(let d of[...c].sort())r.has(d)||(Rn.has(d)?l(o.reactiveModule??"@fluixi/reactive/signal",d):xn.has(d)?l(o.routerModule??"fluixi/router",d):vn.has(d)?l(a,d):Nn.has(d)?l(o.controlFlowModule??s,d):l(s,d));for(let[d,g]of t.resolved)r.has(d)||l(g.module,g.export==="default"?`default as ${d}`:d===g.export?d:`${g.export} as ${d}`);let p=[];for(let[d,g]of i)p.push(`import { ${g.join(", ")} } from ${JSON.stringify(d)};`);let f=[...t.deferred].filter(([d])=>!r.has(d));if(f.length>0){r.has("deferred")||p.push(`import { deferred } from ${JSON.stringify(a)};`);for(let[d,g]of f)p.push(`const ${d} = deferred(() => import(${JSON.stringify(g.module)}), { strategy: ${Cn(g.loading)}, export: ${JSON.stringify(g.export)} });`)}for(let[d,g]of n)p.push(`const ${g} = ${JSON.stringify(d.startsWith("svg:")?d.slice(4):d)};`);return t.delegatedEvents.size>0&&p.push(`delegateEvents(${JSON.stringify([...t.delegatedEvents])});`),p.length>0?p.join(`
|
|
6
|
+
`?N.declaration.end+1:N.declaration.end;b.overwrite(N.declaration.start,R,E.length===0?"":`import { ${E.map(K=>e.slice(K.start,K.end)).join(", ")} } from ${JSON.stringify(N.declaration.source.value)};`),h.deferred.set(u,{module:N.module,export:N.export,origin:"rule",loading:x}),$.delete(u),h.ignoredLoad.delete(u)}let Se=Pn(m,h,v,$,n);Se&&b.prepend(Se);let Ee=ft(d,$);Ee&&b.prepend(Ee);let vt={value:u=>`${u} 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:u=>`${u} came in through a namespace import, which has no single export to defer. Import ${u} by name.`,local:u=>`${u} is declared in this file, so there is no module to load separately. Move it to its own file and import it.`,unsupplied:u=>`nothing supplies ${u}, so there is no import to defer. Import it, or add a \`resolve\` rule for it.`},Ie=[...h.ignoredLoad].map(([u,x])=>({name:u,strategy:x,message:`load:${x.kind} has no effect on <${u}>: ${vt[q.get(u)??"unsupplied"](u)}`})),we=[...h.unresolved].map(u=>({name:u,message:`<${u}> 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 ${u}, or add a \`resolve\` rule for it.`}));return{code:b.toString(),map:b.generateMap({source:t,includeContent:!0,hires:!0}),...Ie.length?{loadDiagnostics:Ie}:{},...we.length?{unresolvedDiagnostics:we}:{},...f.diagnostics.length?{propsDiagnostics:f.diagnostics}:{},...d.diagnostics.length?{intrinsicDiagnostics:d.diagnostics}:{}}}function Tn(e,t,n,r,o,s,a,i){let l=Qe(t,{code:f=>ce(e,f.start,f.end,n),used:o});M(l);let c=Q(l,{resolver:se(i.resolve??[]),isBound:f=>s.declared.has(f),modules:{controlFlowModule:i.controlFlowModule??i.runtimeModule??"@fluixi/dom",coreModule:i.coreModule??"@fluixi/core",routerModule:i.routerModule??"@fluixi/core/router"},strategyFor:f=>f.load});for(let f of c.unresolved)s.unresolved.add(f);te(l);let p=D.emit(l,{templateClone:i.templateClone??!0,partialTemplates:r?!1:i.partialTemplates??!0});for(let f of p.imports)o.add(f);return be(l,s),yt(p.code,p.templates,a)}function Pn(e,t,n,r,o){let s=o.runtimeModule??"@fluixi/dom",a=o.coreModule??"@fluixi/core",i=new Map,l=(d,g)=>i.set(d,[...i.get(d)??[],g]),c=new Set(e);for(let d of t.builtins)c.add(d);t.delegatedEvents.size>0&&c.add("delegateEvents");for(let d of[...c].sort())r.has(d)||(Rn.has(d)?l(o.reactiveModule??"@fluixi/reactive/signal",d):xn.has(d)?l(o.routerModule??"@fluixi/core/router",d):vn.has(d)?l(a,d):Nn.has(d)?l(o.controlFlowModule??s,d):l(s,d));for(let[d,g]of t.resolved)r.has(d)||l(g.module,g.export==="default"?`default as ${d}`:d===g.export?d:`${g.export} as ${d}`);let p=[];for(let[d,g]of i)p.push(`import { ${g.join(", ")} } from ${JSON.stringify(d)};`);let f=[...t.deferred].filter(([d])=>!r.has(d));if(f.length>0){r.has("deferred")||p.push(`import { deferred } from ${JSON.stringify(a)};`);for(let[d,g]of f)p.push(`const ${d} = deferred(() => import(${JSON.stringify(g.module)}), { strategy: ${Cn(g.loading)}, export: ${JSON.stringify(g.export)} });`)}for(let[d,g]of n)p.push(`const ${g} = ${JSON.stringify(d.startsWith("svg:")?d.slice(4):d)};`);return t.delegatedEvents.size>0&&p.push(`delegateEvents(${JSON.stringify([...t.delegatedEvents])});`),p.length>0?p.join(`
|
|
7
7
|
`)+`
|
|
8
8
|
`:null}
|