@fluixi/compiler 1.0.0-alpha.73 → 1.0.0-alpha.75
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/README.md +41 -16
- package/dist/analyze/expr-shape.cjs +1 -0
- package/dist/analyze/expr-shape.d.ts +15 -0
- package/dist/analyze/expr-shape.d.ts.map +1 -0
- package/dist/analyze/expr-shape.js +37 -0
- package/dist/analyze/expr-shape.mjs +1 -0
- package/dist/analyze/reactive-expr.cjs +1 -0
- package/dist/analyze/reactive-expr.d.ts +39 -0
- package/dist/analyze/reactive-expr.d.ts.map +1 -0
- package/dist/analyze/reactive-expr.js +31 -0
- package/dist/analyze/reactive-expr.mjs +1 -0
- package/dist/babel-GXO3KAVI.mjs +1 -0
- package/dist/chunk-3SAEGOMQ.mjs +1 -0
- package/dist/chunk-E2PW2OZU.mjs +1 -0
- package/dist/chunk-IBRM4W7I.mjs +10 -0
- package/dist/chunk-OHHZCYIQ.mjs +1 -0
- package/dist/chunk-TIE4XNAM.mjs +1 -0
- package/dist/frontend/babel/build-ir-lit.cjs +1 -1
- package/dist/frontend/babel/build-ir-lit.d.ts +1 -0
- package/dist/frontend/babel/build-ir-lit.d.ts.map +1 -1
- package/dist/frontend/babel/build-ir-lit.mjs +1 -1
- package/dist/frontend/babel/build-ir.cjs +1 -1
- package/dist/frontend/babel/build-ir.d.ts +13 -11
- package/dist/frontend/babel/build-ir.d.ts.map +1 -1
- package/dist/frontend/babel/build-ir.js +27 -217
- package/dist/frontend/babel/build-ir.mjs +1 -1
- package/dist/frontend/babel/index.cjs +1 -2
- package/dist/frontend/babel/index.mjs +1 -2
- package/dist/frontend/babel/lower-template.cjs +1 -1
- package/dist/frontend/babel/lower-template.d.ts +12 -9
- package/dist/frontend/babel/lower-template.d.ts.map +1 -1
- package/dist/frontend/babel/lower-template.js +33 -445
- package/dist/frontend/babel/lower-template.mjs +1 -1
- package/dist/frontend/babel/plugin.cjs +1 -2
- package/dist/frontend/babel/plugin.d.ts +24 -85
- package/dist/frontend/babel/plugin.d.ts.map +1 -1
- package/dist/frontend/babel/plugin.js +52 -1285
- package/dist/frontend/babel/plugin.mjs +1 -2
- package/dist/frontend/babel/server-functions.cjs +1 -1
- package/dist/frontend/babel/server-functions.d.ts.map +1 -1
- package/dist/frontend/babel/server-functions.js +2 -9
- package/dist/frontend/babel/server-functions.mjs +1 -1
- package/dist/index.cjs +8 -8
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.mjs +9 -9
- package/dist/integrations.cjs +15 -19
- package/dist/integrations.d.ts +39 -151
- package/dist/integrations.d.ts.map +1 -1
- package/dist/integrations.js +79 -491
- package/dist/integrations.mjs +11 -17
- package/dist/lower/compile-template.cjs +1 -0
- package/dist/lower/compile-template.d.ts +57 -0
- package/dist/lower/compile-template.d.ts.map +1 -0
- package/dist/lower/compile-template.js +72 -0
- package/dist/lower/compile-template.mjs +1 -0
- package/dist/lower/jsx.cjs +1 -0
- package/dist/lower/jsx.d.ts +24 -0
- package/dist/lower/jsx.d.ts.map +1 -0
- package/dist/lower/jsx.js +193 -0
- package/dist/lower/jsx.mjs +1 -0
- package/dist/lower/template.cjs +1 -0
- package/dist/lower/template.d.ts +41 -0
- package/dist/lower/template.d.ts.map +1 -0
- package/dist/lower/template.js +445 -0
- package/dist/lower/template.mjs +1 -0
- package/dist/lower/text.cjs +1 -0
- package/dist/lower/text.d.ts +11 -0
- package/dist/lower/text.d.ts.map +1 -0
- package/dist/lower/text.js +31 -0
- package/dist/lower/text.mjs +1 -0
- package/dist/options.cjs +1 -1
- package/dist/options.d.ts +0 -2
- package/dist/options.d.ts.map +1 -1
- package/dist/options.js +0 -1
- package/dist/options.mjs +1 -1
- package/dist/server-fns-6QM243HC.mjs +2 -0
- package/dist/server-functions-E3LKCZ4R.mjs +1 -0
- package/dist/transform/bindings.cjs +1 -0
- package/dist/transform/bindings.d.ts +17 -0
- package/dist/transform/bindings.d.ts.map +1 -0
- package/dist/transform/bindings.js +69 -0
- package/dist/transform/bindings.mjs +1 -0
- package/dist/transform/index.cjs +3 -0
- package/dist/transform/index.d.ts +12 -0
- package/dist/transform/index.d.ts.map +1 -0
- package/dist/transform/index.js +10 -0
- package/dist/transform/index.mjs +12 -0
- package/dist/transform/server-fn-id.cjs +1 -0
- package/dist/transform/server-fn-id.d.ts +10 -0
- package/dist/transform/server-fn-id.d.ts.map +1 -0
- package/dist/transform/server-fn-id.js +18 -0
- package/dist/transform/server-fn-id.mjs +1 -0
- package/dist/transform/server-fns.cjs +2 -0
- package/dist/transform/server-fns.d.ts +13 -0
- package/dist/transform/server-fns.d.ts.map +1 -0
- package/dist/transform/server-fns.js +94 -0
- package/dist/transform/server-fns.mjs +11 -0
- package/dist/transform/templates.cjs +3 -0
- package/dist/transform/templates.d.ts +26 -0
- package/dist/transform/templates.d.ts.map +1 -0
- package/dist/transform/templates.js +347 -0
- package/dist/transform/templates.mjs +12 -0
- package/dist/transform-PJX2GNSV.mjs +3 -0
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/package.json +30 -8
- package/dist/babel-E7EQLX36.mjs +0 -2
- package/dist/chunk-EF6V4GTD.mjs +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{types as p,traverse as Pe,template as Je}from"@babel/core";import te from"@babel/generator";var se=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),O={className:"class",htmlFor:"for"},oe=new Set(["innerHTML","outerHTML","innerText","textContent","value","checked","selected","muted","defaultValue","defaultChecked","children","ref"]),ae=new Set(["script","style","textarea","title"]);function T(t){return ae.has(t)}function _(t){return O[t]??t}function v(t){return t.kind!=="attr"||t.expr!==void 0||t.name.includes(":")?!1:!oe.has(t.name)}function C(t){if(!t.static||T(t.tag))return!1;for(let e of t.props)if(!v(e))return!1;for(let e of t.children)if(e.kind!=="text"&&!(e.kind==="element"&&C(e)))return!1;return!0}function x(t){let e=t.props.map(ce).filter(Boolean).join(""),n=`<${t.tag}${e}>`;return se.has(t.tag)?n:`${n}${t.children.map(le).join("")}</${t.tag}>`}function le(t){if(t.kind==="text")return ue(t.value);if(t.kind!=="element")throw new Error(`serializeStatic: unexpected ${t.kind}`);return x(t)}function ce(t){let e=O[t.name]??t.name,n=t.literal;return n===!0||n===void 0?` ${e}`:n===!1||n===null?"":` ${e}="${pe(String(n))}"`}function pe(t){return t.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function ue(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}var de="<!--fx-->",me="<!--fx/-->";function b(t){return t.kind==="expr"||t.kind==="component"||t.kind==="control"}function fe(t){return t.kind==="text"||t.kind==="element"&&M(t)}function M(t){return t.svg||T(t.tag)||!t.props.every(e=>v(e))?!1:t.children.every(e=>fe(e)||b(e))}function S(t){if(b(t))return!0;let e=t.children;return e?e.some(S):!1}function B(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"||B(e))}function H(t){if(!M(t)||!B(t)||!t.children.some(S))return null;let e=[],n=[],r=0,i=a=>{let s=`_n$${r++}`;return e.push({ref:s,expr:a}),s};return o(t,"_el$"),{html:he(t),tag:t.tag,steps:e,holes:n};function o(a,s){let l=-1;a.children.forEach((u,d)=>{S(u)&&(l=d)});let c=null;for(let u=0;u<=l;u++){let d=a.children[u],g=c?`${c}.nextSibling`:`${s}.firstChild`;if(b(d)){let D=i(g),j=i(`holeEnd(${D})`);n.push({parentRef:s,startRef:D,endRef:j,node:d}),c=j;continue}let N=i(g);d.kind==="element"&&S(d)&&o(d,N),c=N}}}function he(t){return x(F(t)).split(z).join(de+me)}function F(t){return{...t,children:t.children.map(e=>b(e)?{kind:"text",value:z}:e.kind==="element"?F(e):e)}}var z="\0fx-hole\0";var A={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:[...A.symbols,"template","cloneTemplate","walk"]};var ge={show:"Show",for:"For",index:"Index",switch:"Switch",match:"Match",dynamic:"Dynamic",errorBoundary:"ErrorBoundary",suspense:"Suspense"};function ve(t){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(t)}function W(t){return ve(t)?t:JSON.stringify(t)}function xe(t){return t.expr!==void 0?t.reactive?`() => (${t.expr})`:`(${t.expr})`:JSON.stringify(t.literal??!0)}function ke(t){return t.expr!==void 0?`(${t.expr})`:JSON.stringify(t.literal??!0)}function Ee(t,e,n){let r=t.filter(s=>s.kind==="spread"),o=t.filter(s=>s.kind!=="spread").map(s=>`${W(s.name)}: ${xe(s)}`);e!=null&&o.push(`children: ${e}`);let a=`{ ${o.join(", ")} }`;return r.length>0?(n.add("mergeProps"),`mergeProps(${r.map(s=>s.expr).join(", ")}, ${a})`):a}function U(t,e,n){return t.length===1?k(t[0],e,n):`[${t.map(r=>k(r,e,n)).join(", ")}]`}function V(t,e,n,r,i){r.add("createMemo"),r.add("createComponent");let o=e.filter(c=>c.kind==="spread"),s=e.filter(c=>c.kind!=="spread").map(c=>`get ${W(c.name)}() { return ${ke(c)}; }`);n.length>0&&s.push(`get children() { return ${U(n,r,i)}; }`);let l=`{ ${s.join(", ")} }`;return o.length>0&&(r.add("mergeProps"),l=`mergeProps(${o.map(c=>c.expr).join(", ")}, ${l})`),`createMemo(() => createComponent(${t}, ${l}))`}function Re(t,e){let n=_(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 G=!1;function k(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":U(t.children,e,n);case"component":return V(t.name,t.props,t.children,e,n);case"control":{let r=ge[t.control]??t.control;return e.add(r),V(r,t.props,t.children,e,n)}case"element":{if(n&&t.static&&!t.svg&&C(t)){e.add("templateNode");let s=`_tmpl$${n.length}`;return n.push({id:s,html:x(t),tag:t.tag,svg:!1}),`templateNode(${s}, ${JSON.stringify(t.tag)})`}if(n&&G){let s=H(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 u of s.steps)c.push(`const ${u.ref} = ${u.expr};`);for(let u of s.holes)c.push(`insert(${u.parentRef}, holeScope(${u.startRef}, () => (${k(u.node,e,n)})), ${u.endRef}, holeContent(${u.startRef}, ${u.endRef}));`);return c.push("return _el$;"),`(() => { ${c.join(" ")} })()`}}e.add("createNativeElement");let r=JSON.stringify(t.tag),i="_el$",o=[],a=t.svg?`${r}, true`:r;if(o.push(`const ${i} = createNativeElement(${a});`),t.props.length>0)if(!t.svg&&t.props.every(v))for(let s of t.props)o.push(Re(i,s));else{e.add("spread");let s=t.svg?", isSVG: true":"";o.push(`spread({ element: ${i}, props: ${Ee(t.props,null,e)}${s} });`)}for(let s of t.children){e.add("insert");let l=k(s,e,n),c=s.kind==="expr"&&s.reactive||s.kind==="component"||s.kind==="control";o.push(c?`insert(${i}, ${l}, null);`:`insert(${i}, ${l});`)}return o.push(`return ${i};`),`(() => { ${o.join(" ")} })()`}}}function E(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 R={name:"imperative",contract:A,emit(t,e){let n=new Set,r=e?.templateClone!==!1?[]:void 0;return G=e?.partialTemplates===!0,{code:k(t,n,r),imports:Array.from(n),templates:r}}};import{types as I}from"@babel/core";import q from"@babel/generator";import{parseTemplate as ye}from"@fluixi/template-parser";var Ne={kind:"eager"},Se=["pointerdown","focusin","keydown"],K=new Set(["eager","idle","visible","interaction","media","never"]),f=class extends Error{};function P(t){return t.startsWith("load:")}function y(t,e){let n=t.slice(5);if(!K.has(n))throw new f(`Unknown load strategy 'load:${n}'. Expected one of ${[...K].join(", ")}.`);switch(n){case"eager":return Ne;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?be(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 be(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}var Ie=q.default??q;function $e(t){return Ie(t,{concise:!0}).code}var Z=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function we(t){return t.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${")}function Y(t){return t.charAt(0).toUpperCase()+t.slice(1)}var J=class{constructor(e,n){this.holes=e;this.used=n}hole(e){return this.holes[e]??{node:I.identifier("undefined"),code:"undefined",reactive:!1}}emit(e){let{code:n,imports:r,templates:i}=R.emit(e,{});for(let o of r)this.used.add(o);return E(n,i)}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 i=e[r];if(i.kind==="Element"||i.kind==="Component"){let a=i.attributes.find(s=>s.kind==="IfDirective");if(a&&a.kind==="IfDirective"){let s=r+1;s<e.length&&this.isBlankText(e[s])&&s++;let l=e[s],c=l&&(l.kind==="Element"||l.kind==="Component")&&l.attributes.some(u=>u.kind==="ElseDirective");n.push(this.lowerIf(i,a.hole,c?l:null)),c&&(r=s);continue}if(i.attributes.some(s=>s.kind==="EachDirective")){n.push(this.lowerEach(i));continue}}let o=this.lowerNode(i);o&&n.push(o)}return n}isBlankText(e){return e.kind==="Text"&&!e.raw&&$(e.value)===""}lowerNode(e){switch(e.kind){case"Text":{if(e.raw)return{kind:"text",value:e.value};let n=$(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(o=>o!==n),i=this.lowerComponent({...e,kind:"Component",tag:"Dynamic",tagHole:null,attributes:r});return i.props.unshift({name:"component",kind:"attr",expr:`() => (${this.hole(n.value.hole).code})`}),i}return{kind:"element",tag: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:i,rest:o}=this.partitionSlots(e.children);for(let[l,c]of i){let u=c.length===1?c[0]:{kind:"fragment",children:c},d={name:l,kind:"attr",expr:this.emit(u),jsxElement:!0},g=r.findIndex(N=>N.name===l);g>=0?r[g]=d:r.push(d)}let a=e.attributes.find(l=>l.kind==="LoadDirective"),s=a?y(`load:${a.strategy}`,a.modifier):void 0;return{kind:"component",name:n,props:r,children:this.lowerChildren(o),...s?{load:s}:{}}}partitionSlots(e){let n=new Map,r=[];for(let i of e){if(i.kind==="Element"||i.kind==="Component"){let o=i.attributes.find(a=>a.kind==="Attribute"&&a.name==="slot");if(o&&o.value&&o.value.kind==="static"){let a={...i,attributes:i.attributes.filter(c=>c!==o)},s=a.kind==="Element"?this.lowerElement(a):this.lowerComponent(a),l=n.get(o.value.value)??[];l.push(s),n.set(o.value.value,l);continue}}r.push(i)}return{slots:n,rest:r}}lowerIf(e,n,r){let i=this.hole(n),o=[{name:"when",kind:"attr",expr:i.code,reactive:i.reactive}];if(r){let s=this.stripAndLower(r,l=>l.kind==="ElseDirective");o.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:o,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),i=[{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;i.push({name:"by",kind:"attr",expr:l})}let o=this.itemArrow(e),a;if(o){let l=o.body,c={kind:"expr",code:h(l,this.used),reactive:m(l)},u=this.rebuildWithChildren(e,[c]);a=`(${o.params.map(d=>$e(d)).join(", ")}) => (${this.emit(u)})`}else{let l=this.stripAndLower(e,c=>c.kind==="EachDirective");a=`() => (${this.emit(l)})`}return{kind:"component",name:"For",props:i,children:[{kind:"expr",code:a,reactive:!1}]}}itemArrow(e){let n=e.children.filter(i=>!this.isBlankText(i));if(n.length!==1||n[0].kind!=="Expression")return null;let r=this.hole(n[0].hole).node;return I.isArrowFunctionExpression(r)&&!I.isBlockStatement(r.body)?r:null}stripAndLower(e,n){let r={...e,attributes:e.attributes.filter(i=>!n(i))};return r.kind==="Element"?this.lowerElement(r):this.lowerComponent(r)}rebuildWithChildren(e,n){let r=this.lowerAttributes(e.attributes.filter(i=>i.kind!=="EachDirective"));return e.kind==="Element"?{kind:"element",tag:e.tag,svg:e.namespace==="svg",props:r,children:n,static:!1}:{kind:"component",name:e.tag,props:r,children:n}}lowerAttributes(e){let n=[],r=[],i=!1,o=[],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}`),i=i||c.reactive;break}case"StyleDirective":{let c=this.hole(l.hole);o.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:i}),o.length>0&&n.push({name:"style",kind:"attr",expr:`{ ${o.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"+Y(e.name),kind:"event",event:{name:n,delegated:Z.has(n)},expr:r};let o=this.wrapHandler(r,e.modifiers),a=this.eventOptions(e.modifiers),s=a?`[${o}, ${a}]`:o;return{name:"on:"+n,kind:"attr",expr:s}}wrapHandler(e,n){let r=n.includes("self")?"if (e.target !== e.currentTarget) return; ":"",i=[];return n.includes("prevent")&&i.push("e.preventDefault();"),n.includes("stop")&&i.push("e.stopPropagation();"),!r&&i.length===0?e:`(e) => { ${r}${i.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",i=r?"change":"input",o=r?"checked":"value",a=`(${n})`;return[{name:e,kind:"attr",expr:`${a}[0]()`,reactive:!0},{name:"on"+Y(i),kind:"event",event:{name:i,delegated:Z.has(i)},expr:`(e) => ${a}[1](e.target.${o})`}]}plainAttr(e){let n=e.value,r=e.name;e.name==="class"?r=n&&n.kind==="hole"&&I.isObjectExpression(this.hole(n.hole).node)?"classList":"className":e.name==="html"&&(r="innerHTML");let o={name:r,kind:"attr"};if(n==null)return o.literal=!0,o;if(n.kind==="static")return o.literal=n.value,o;if(n.kind==="hole"){let l=this.hole(n.hole);return o.expr=l.code,o.reactive=l.reactive,o}let a=!1,s=n.parts.map(l=>{if("text"in l)return we(l.text);let c=this.hole(l.hole);return a=a||c.reactive,"${"+c.code+"}"}).join("");return o.expr="`"+s+"`",o.reactive=a,o}};function Q(t,e,n={}){let r=t.quasi,i=r.expressions.map(s=>{let l=s;return{node:l,code:h(l,e),reactive:m(l)}}),o=Te(r),{root:a}=ye(o,{svg:n.svg});return new J(i,e).lowerRoot(a.children)}function Te(t){let e=[];return t.quasis.forEach((n,r)=>{let i=n.value.cooked??n.value.raw;if(e.push({kind:"static",text:i,start:n.start??0}),r<t.expressions.length){let o=t.expressions[r];e.push({kind:"hole",index:r,start:o.start??0,end:o.end??0})}}),e}function Ce(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 w(t){let e=[],n=new Map,r=i=>{switch(i.kind){case"text":return!0;case"expr":return!1;case"component":case"control":for(let o of i.children)r(o);return!1;case"fragment":for(let o of i.children)r(o);return!1;case"element":{let o=!0;for(let s of i.children)r(s)||(o=!1);let a;for(let s of i.props)if(a=Ce(s),a)break;return!a&&!o&&(a=Ae(i)),i.static=!a,a?n.set(i,a):e.push(i),i.static}default:return!1}};for(let i of Array.isArray(t)?t:[t])r(i);return{staticElements:e,reasons:n}}function Ae(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"}function ee(t,e=new Set,n={}){let r=Q(t,e,n);return w(r),r}var Le=te.default??te;function ie(t){return Le(t,{concise:!0}).code}function Xe(t,e){let n=p.cloneNode(t,!0),r=p.file(p.program([p.expressionStatement(n)])),i=!1,o=(a,s,l)=>{for(let c of l)e.add(c);a.replaceWith(Je.expression(s,{placeholderPattern:!1,plugins:["typescript"]})()),a.skip(),i=!0};return Pe(r,{"JSXElement|JSXFragment"(a){let s=a.node,{code:l,imports:c,templates:u}=R.emit(He(s,e),{});o(a,E(l,u),c)},TaggedTemplateExpression(a){let s=a.node.tag;if(!p.isIdentifier(s)||s.name!=="html"&&s.name!=="svg")return;let l=ee(a.node,e,{svg:s.name==="svg"}),{code:c,imports:u,templates:d}=R.emit(l,{});o(a,E(c,d),u)}}),i?r.program.body[0].expression:t}function h(t,e){return ie(Xe(t,e))}var De=new Set(["svg","path","circle","rect","line","polygon","polyline","ellipse","g","defs","clipPath","text"]),je=/^on[A-Z]/,Oe=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function _e(t){if(p.isJSXIdentifier(t)){let e=t.name[0]!==t.name[0].toLowerCase();return{tag:t.name,component:e}}return p.isJSXMemberExpression(t)?{tag:ie(t),component:!0}:p.isJSXNamespacedName(t)?{tag:`${t.namespace.name}:${t.name.name}`,component:!1}:{tag:"div",component:!1}}function X(t){return p.isJSXIdentifier(t)?t.name==="class"?"className":t.name:p.isJSXNamespacedName(t)?`${t.namespace.name}:${t.name.name}`:"unknown"}function m(t){return p.isCallExpression(t)||p.isOptionalCallExpression(t)?!0:p.isMemberExpression(t)||p.isOptionalMemberExpression(t)?!(!t.computed&&p.isIdentifier(t.property,{name:"children"})):p.isConditionalExpression(t)?m(t.test)||m(t.consequent)||m(t.alternate):p.isLogicalExpression(t)||p.isBinaryExpression(t)?m(t.left)||m(t.right):p.isTemplateLiteral(t)?t.expressions.some(e=>m(e)):p.isObjectExpression(t)?t.properties.some(e=>p.isObjectProperty(e)&&!e.computed&&m(e.value)):p.isArrayExpression(t)?t.elements.some(e=>e!=null&&!p.isSpreadElement(e)&&m(e)):!1}function Me(t,e){let n=X(t.name),r=je.test(n),i=r||n.startsWith("on:")||n==="ref",a={name:n,kind:r?"event":"attr"};r&&(a.event={name:n.slice(2).toLowerCase(),delegated:Oe.has(n.slice(2).toLowerCase())});let s=t.value;if(s==null)return a.literal=!0,a;if(p.isStringLiteral(s))return a.literal=s.value,a;if(p.isJSXExpressionContainer(s)&&!p.isJSXEmptyExpression(s.expression)){let l=s.expression;return p.isStringLiteral(l)||p.isNumericLiteral(l)||p.isBooleanLiteral(l)?(a.literal=l.value,a):(a.expr=h(l,e),a.reactive=i?!1:m(l),(p.isJSXElement(l)||p.isJSXFragment(l))&&(a.jsxElement=!0),a)}return a.literal=!0,a}function ne(t,e){let n=t.value;return n==null?null:p.isStringLiteral(n)?JSON.stringify(n.value):p.isJSXExpressionContainer(n)&&!p.isJSXEmptyExpression(n.expression)?h(n.expression,e):null}function Be(t,e){let n=[],r=[];for(let i of t){if(p.isJSXSpreadAttribute(i)){n.push({name:"",kind:"spread",expr:h(i.argument,e)});continue}if(!p.isJSXAttribute(i)||P(X(i.name)))continue;let o=p.isJSXNamespacedName(i.name)?i.name.namespace.name:null;if(o==="use"){let a=i.name.name.name;e.add(a);let s=ne(i,e);r.push(s!=null?`[${a}, () => (${s})]`:`[${a}]`);continue}if(o==="oncapture"){let a=i.name.name.name.toLowerCase(),s=ne(i,e)??"undefined";n.push({name:"on:"+a,kind:"attr",expr:`[${s}, { capture: true }]`});continue}n.push(Me(i,e))}return r.length>0&&n.push({name:"use",kind:"attr",expr:`[${r.join(", ")}]`}),n}function $(t){let e=t.split(/\r\n|\n|\r/),n=0;for(let i=0;i<e.length;i++)/[^ \t]/.test(e[i])&&(n=i);let r="";for(let i=0;i<e.length;i++){let o=e[i].replace(/\t/g," ");i!==0&&(o=o.replace(/^ +/,"")),i!==e.length-1&&(o=o.replace(/ +$/,"")),o&&(i!==n&&(o+=" "),r+=o)}return r}function re(t,e){let n=[];for(let r of t)if(p.isJSXText(r)){let i=$(r.value);i&&n.push({kind:"text",value:i})}else if(p.isJSXExpressionContainer(r)){if(!p.isJSXEmptyExpression(r.expression)){let i=r.expression;n.push({kind:"expr",code:h(i,e),reactive:m(i)})}}else p.isJSXElement(r)||p.isJSXFragment(r)?n.push(L(r,e)):p.isJSXSpreadChild(r)&&n.push({kind:"expr",code:h(r.expression,e),reactive:!1});return n}function He(t,e=new Set){let n=L(t,e);return w(n),n}function L(t,e){if(p.isJSXFragment(t))return{kind:"fragment",children:re(t.children,e)};let{tag:n,component:r}=_e(t.openingElement.name),i=Be(t.openingElement.attributes,e),o=re(t.children,e);if(r){let a=Fe(t.openingElement.attributes);return{kind:"component",name:n,props:i,children:o,...a?{load:a}:{}}}return{kind:"element",tag:n,svg:De.has(n),props:i,children:o,static:!1}}function Fe(t){for(let e of t){if(!p.isJSXAttribute(e))continue;let n=X(e.name);if(P(n)){if(e.value&&!p.isStringLiteral(e.value))throw new f(`'${n}' needs a literal value, not an expression — the strategy is compile-time.`);return y(n,e.value?e.value.value:null)}}}export{De as SVG_TAGS,He as buildIR,$ as cleanJSXText,h as genExpr,m as isReactiveExpr};
|
|
1
|
+
import{types as b,traverse as Ze,template as Ye}from"@babel/core";import de from"@babel/generator";var me=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),B={className:"class",htmlFor:"for"},fe=new Set(["innerHTML","outerHTML","innerText","textContent","value","checked","selected","muted","defaultValue","defaultChecked","children","ref"]),he=new Set(["script","style","textarea","title"]);function P(e){return he.has(e)}function F(e){return B[e]??e}function f(e){return e.kind!=="attr"||e.expr!==void 0||e.name.includes(":")?!1:!fe.has(e.name)}function A(e){if(!e.static||P(e.tag))return!1;for(let t of e.props)if(!f(t))return!1;for(let t of e.children)if(t.kind!=="text"&&!(t.kind==="element"&&A(t)))return!1;return!0}function h(e){let t=e.props.map(ve).filter(Boolean).join(""),n=`<${e.tag}${t}>`;return me.has(e.tag)?n:`${n}${e.children.map(ge).join("")}</${e.tag}>`}function ge(e){if(e.kind==="text")return xe(e.value);if(e.kind!=="element")throw new Error(`serializeStatic: unexpected ${e.kind}`);return h(e)}function ve(e){let t=B[e.name]??e.name,n=e.literal;return n===!0||n===void 0?` ${t}`:n===!1||n===null?"":` ${t}="${ke(String(n))}"`}function ke(e){return e.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function xe(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}var ye="<!--fx-->",Ne="<!--fx/-->";function $(e){return e.kind==="expr"||e.kind==="component"||e.kind==="control"}function Ee(e){return e.kind==="text"||e.kind==="element"&&z(e)}function z(e){return e.svg||P(e.tag)||!e.props.every(t=>f(t))?!1:e.children.every(t=>Ee(t)||$(t))}function I(e){if($(e))return!0;let t=e.children;return t?t.some(I):!1}function V(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"||V(t))}function G(e){if(!z(e)||!V(e)||!e.children.some(I))return null;let t=[],n=[],r=0,i=l=>{let s=`_n$${r++}`;return t.push({ref:s,expr:l}),s};return o(e,"_el$"),{html:Re(e),tag:e.tag,steps:t,holes:n};function o(l,s){let a=-1;l.children.forEach((p,d)=>{I(p)&&(a=d)});let c=null;for(let p=0;p<=a;p++){let d=l.children[p],u=c?`${c}.nextSibling`:`${s}.firstChild`;if($(d)){let H=i(u),_=i(`holeEnd(${H})`);n.push({parentRef:s,startRef:H,endRef:_,node:d}),c=_;continue}let S=i(u);d.kind==="element"&&I(d)&&o(d,S),c=S}}}function Re(e){return h(W(e)).split(q).join(ye+Ne)}function W(e){return{...e,children:e.children.map(t=>$(t)?{kind:"text",value:q}:t.kind==="element"?W(t):t)}}var q="\0fx-hole\0";var J={version:1,module:"@fluixi/dom",symbols:["createNativeElement","insert","spread","setAttribute","delegateEvents","createComponent","createMemo","untrack","Show","For","Index","Switch","Match","Dynamic","ErrorBoundary"]},ot={version:2,module:"@fluixi/dom",symbols:[...J.symbols,"template","cloneTemplate","walk"]};var be={show:"Show",for:"For",index:"Index",switch:"Switch",match:"Match",dynamic:"Dynamic",errorBoundary:"ErrorBoundary",suspense:"Suspense"};function Se(e){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e)}function K(e){return Se(e)?e:JSON.stringify(e)}function Ie(e){return e.expr!==void 0?e.reactive?`() => (${e.expr})`:`(${e.expr})`:JSON.stringify(e.literal??!0)}function $e(e){return e.expr!==void 0?`(${e.expr})`:JSON.stringify(e.literal??!0)}function we(e,t,n){let r=e.filter(s=>s.kind==="spread"),o=e.filter(s=>s.kind!=="spread").map(s=>`${K(s.name)}: ${Ie(s)}`);t!=null&&o.push(`children: ${t}`);let l=`{ ${o.join(", ")} }`;return r.length>0?(n.add("mergeProps"),`mergeProps(${r.map(s=>s.expr).join(", ")}, ${l})`):l}function Z(e,t,n){return e.length===1?g(e[0],t,n):`[${e.map(r=>g(r,t,n)).join(", ")}]`}function U(e,t,n,r,i){r.add("createMemo"),r.add("createComponent");let o=t.filter(c=>c.kind==="spread"),s=t.filter(c=>c.kind!=="spread").map(c=>`get ${K(c.name)}() { return ${$e(c)}; }`);n.length>0&&s.push(`get children() { return ${Z(n,r,i)}; }`);let a=`{ ${s.join(", ")} }`;return o.length>0&&(r.add("mergeProps"),a=`mergeProps(${o.map(c=>c.expr).join(", ")}, ${a})`),`createMemo(() => createComponent(${e}, ${a}))`}function Te(e,t){let n=F(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 Y=!1;function g(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":Z(e.children,t,n);case"component":return U(e.name,e.props,e.children,t,n);case"control":{let r=be[e.control]??e.control;return t.add(r),U(r,e.props,e.children,t,n)}case"element":{if(n&&e.static&&!e.svg&&A(e)){t.add("templateNode");let s=`_tmpl$${n.length}`;return n.push({id:s,html:h(e),tag:e.tag,svg:!1}),`templateNode(${s}, ${JSON.stringify(e.tag)})`}if(n&&Y){let s=G(e);if(s){t.add("templateNode"),t.add("insert"),t.add("holeEnd"),t.add("holeContent"),t.add("holeScope");let a=`_tmpl$${n.length}`;n.push({id:a,html:s.html,tag:s.tag,svg:!1});let c=[`const _el$ = templateNode(${a}, ${JSON.stringify(s.tag)}, true);`];for(let p of s.steps)c.push(`const ${p.ref} = ${p.expr};`);for(let p of s.holes)c.push(`insert(${p.parentRef}, holeScope(${p.startRef}, () => (${g(p.node,t,n)})), ${p.endRef}, holeContent(${p.startRef}, ${p.endRef}));`);return c.push("return _el$;"),`(() => { ${c.join(" ")} })()`}}t.add("createNativeElement");let r=JSON.stringify(e.tag),i="_el$",o=[],l=e.svg?`${r}, true`:r;if(o.push(`const ${i} = createNativeElement(${l});`),e.props.length>0)if(!e.svg&&e.props.every(f))for(let s of e.props)o.push(Te(i,s));else{t.add("spread");let s=e.svg?", isSVG: true":"";o.push(`spread({ element: ${i}, props: ${we(e.props,null,t)}${s} });`)}for(let s of e.children){t.add("insert");let a=g(s,t,n),c=s.kind==="expr"&&s.reactive||s.kind==="component"||s.kind==="control";o.push(c?`insert(${i}, ${a}, null);`:`insert(${i}, ${a});`)}return o.push(`return ${i};`),`(() => { ${o.join(" ")} })()`}}}function v(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 k={name:"imperative",contract:J,emit(e,t){let n=new Set,r=t?.templateClone!==!1?[]:void 0;return Y=t?.partialTemplates===!0,{code:g(e,n,r),imports:Array.from(n),templates:r}}};import{types as j}from"@babel/core";import re from"@babel/generator";import{parseTemplate as Je}from"@fluixi/template-parser";var Ce={kind:"eager"},Pe=["pointerdown","focusin","keydown"],Q=new Set(["eager","idle","visible","interaction","media","never"]),m=class extends Error{};function L(e){return e.startsWith("load:")}function w(e,t){let n=e.slice(5);if(!Q.has(n))throw new m(`Unknown load strategy 'load:${n}'. Expected one of ${[...Q].join(", ")}.`);switch(n){case"eager":return Ce;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?Ae(t):[...Pe]};case"media":if(!t)throw new m(`'load:media' needs a query, e.g. load:media="(min-width: 1024px)".`);return{kind:"media",query:t};default:throw new m(`Unhandled load strategy '${n}'.`)}}function Ae(e){let t=e.split(/[\s,]+/).map(n=>n.trim()).filter(Boolean);if(t.length===0)throw new m("'load:interaction' was given no event names.");return t}function x(e){let t=e.split(/\r\n|\n|\r/),n=0;for(let i=0;i<t.length;i++)/[^ \t]/.test(t[i])&&(n=i);let r="";for(let i=0;i<t.length;i++){let o=t[i].replace(/\t/g," ");i!==0&&(o=o.replace(/^ +/,"")),i!==t.length-1&&(o=o.replace(/ +$/,"")),o&&(i!==n&&(o+=" "),r+=o)}return r}var ee=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function Le(e){return e.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${")}function te(e){return e.charAt(0).toUpperCase()+e.slice(1)}var D=class{constructor(t,n){this.holes=t;this.used=n}hole(t){return this.holes[t]??{code:"undefined",reactive:!1}}emit(t){let{code:n,imports:r,templates:i}=k.emit(t,{});for(let o of r)this.used.add(o);return v(n,i)}lowerRoot(t){let n=this.lowerChildren(t);return n.length===1?n[0]:{kind:"fragment",children:n}}lowerChildren(t){let n=[];for(let r=0;r<t.length;r++){let i=t[r];if(i.kind==="Element"||i.kind==="Component"){let l=i.attributes.find(s=>s.kind==="IfDirective");if(l&&l.kind==="IfDirective"){let s=r+1;s<t.length&&this.isBlankText(t[s])&&s++;let a=t[s],c=a&&(a.kind==="Element"||a.kind==="Component")&&a.attributes.some(p=>p.kind==="ElseDirective");n.push(this.lowerIf(i,l.hole,c?a:null)),c&&(r=s);continue}if(i.attributes.some(s=>s.kind==="EachDirective")){n.push(this.lowerEach(i));continue}}let o=this.lowerNode(i);o&&n.push(o)}return n}isBlankText(t){return t.kind==="Text"&&!t.raw&&x(t.value)===""}lowerNode(t){switch(t.kind){case"Text":{if(t.raw)return{kind:"text",value:t.value};let n=x(t.value);return n?{kind:"text",value:n}:null}case"Comment":return null;case"Expression":{let n=this.hole(t.hole);return{kind:"expr",code:n.code,reactive:n.reactive}}case"Fragment":return{kind:"fragment",children:this.lowerChildren(t.children)};case"Element":return this.lowerElement(t);case"Component":return this.lowerComponent(t);default:return null}}lowerElement(t){let n=t.attributes.find(r=>r.kind==="Attribute"&&r.name==="is");if(t.tag==="component"&&n&&n.value&&n.value.kind==="hole"){let r=t.attributes.filter(o=>o!==n),i=this.lowerComponent({...t,kind:"Component",tag:"Dynamic",tagHole:null,attributes:r});return i.props.unshift({name:"component",kind:"attr",expr:`() => (${this.hole(n.value.hole).code})`}),i}return{kind:"element",tag:t.tag,svg:t.namespace==="svg",props:this.lowerAttributes(t.attributes),children:this.lowerChildren(t.children),static:!1}}lowerComponent(t){let n=t.tagHole!=null?this.hole(t.tagHole).code:t.tag,r=this.lowerAttributes(t.attributes),{slots:i,rest:o}=this.partitionSlots(t.children);for(let[a,c]of i){let p=c.length===1?c[0]:{kind:"fragment",children:c},d={name:a,kind:"attr",expr:this.emit(p),jsxElement:!0},u=r.findIndex(S=>S.name===a);u>=0?r[u]=d:r.push(d)}let l=t.attributes.find(a=>a.kind==="LoadDirective"),s=l?w(`load:${l.strategy}`,l.modifier):void 0;return{kind:"component",name:n,props:r,children:this.lowerChildren(o),...s?{load:s}:{}}}partitionSlots(t){let n=new Map,r=[];for(let i of t){if(i.kind==="Element"||i.kind==="Component"){let o=i.attributes.find(l=>l.kind==="Attribute"&&l.name==="slot");if(o&&o.value&&o.value.kind==="static"){let l={...i,attributes:i.attributes.filter(c=>c!==o)},s=l.kind==="Element"?this.lowerElement(l):this.lowerComponent(l),a=n.get(o.value.value)??[];a.push(s),n.set(o.value.value,a);continue}}r.push(i)}return{slots:n,rest:r}}lowerIf(t,n,r){let i=this.hole(n),o=[{name:"when",kind:"attr",expr:i.code,reactive:i.reactive}];if(r){let s=this.stripAndLower(r,a=>a.kind==="ElseDirective");o.push({name:"fallback",kind:"attr",expr:this.emit(s),jsxElement:!0})}let l=this.stripAndLower(t,s=>s.kind==="IfDirective");return{kind:"component",name:"Show",props:o,children:[l]}}lowerEach(t){let n=t.attributes.find(a=>a.kind==="EachDirective");if(!n||n.kind!=="EachDirective")return this.lowerNode(t);let r=this.hole(n.hole),i=[{name:"each",kind:"attr",expr:r.code,reactive:r.reactive}];if(n.key){let a="static"in n.key?`(item) => item[${JSON.stringify(n.key.static)}]`:this.hole(n.key.hole).code;i.push({name:"by",kind:"attr",expr:a})}let o=this.itemArrow(t),l;if(o){let a={kind:"expr",code:o.body,reactive:o.bodyReactive},c=this.rebuildWithChildren(t,[a]);l=`(${o.params.join(", ")}) => (${this.emit(c)})`}else{let a=this.stripAndLower(t,c=>c.kind==="EachDirective");l=`() => (${this.emit(a)})`}return{kind:"component",name:"For",props:i,children:[{kind:"expr",code:l,reactive:!1}]}}itemArrow(t){let n=t.children.filter(r=>!this.isBlankText(r));return n.length!==1||n[0].kind!=="Expression"?null:this.hole(n[0].hole).arrow??null}stripAndLower(t,n){let r={...t,attributes:t.attributes.filter(i=>!n(i))};return r.kind==="Element"?this.lowerElement(r):this.lowerComponent(r)}rebuildWithChildren(t,n){let r=this.lowerAttributes(t.attributes.filter(i=>i.kind!=="EachDirective"));return t.kind==="Element"?{kind:"element",tag:t.tag,svg:t.namespace==="svg",props:r,children:n,static:!1}:{kind:"component",name:t.tag,props:r,children:n}}lowerAttributes(t){let n=[],r=[],i=!1,o=[],l=!1,s=[];for(let a of t)switch(a.kind){case"IfDirective":case"EachDirective":case"ElseDirective":break;case"Attribute":n.push(this.plainAttr(a));break;case"PropertyBinding":n.push({name:a.name,kind:"prop",expr:this.hole(a.hole).code,reactive:this.hole(a.hole).reactive});break;case"EventBinding":n.push(this.eventProp(a));break;case"RefBinding":n.push({name:"ref",kind:"ref",expr:this.hole(a.hole).code,reactive:this.hole(a.hole).reactive});break;case"Spread":n.push({name:"",kind:"spread",expr:this.hole(a.hole).code});break;case"ClassDirective":{let c=this.hole(a.hole);r.push(`${JSON.stringify(a.name)}: ${c.code}`),i=i||c.reactive;break}case"StyleDirective":{let c=this.hole(a.hole);o.push(`${JSON.stringify(a.name)}: ${c.code}`),l=l||c.reactive;break}case"BindDirective":n.push(...this.bindProps(a.name,this.hole(a.hole).code));break;case"UseDirective":{let c=a.name??(a.hole!=null?this.hole(a.hole).code:null);if(!c)break;s.push(a.name!=null&&a.hole!=null?`[${c}, () => (${this.hole(a.hole).code})]`:`[${c}]`);break}}return r.length>0&&n.push({name:"classList",kind:"attr",expr:`{ ${r.join(", ")} }`,reactive:i}),o.length>0&&n.push({name:"style",kind:"attr",expr:`{ ${o.join(", ")} }`,reactive:l}),s.length>0&&n.push({name:"use",kind:"attr",expr:`[${s.join(", ")}]`}),n}eventProp(t){let n=t.name.toLowerCase(),r=this.hole(t.hole).code;if(!(t.syntax==="colon"||t.modifiers.length>0))return{name:"on"+te(t.name),kind:"event",event:{name:n,delegated:ee.has(n)},expr:r};let o=this.wrapHandler(r,t.modifiers),l=this.eventOptions(t.modifiers),s=l?`[${o}, ${l}]`:o;return{name:"on:"+n,kind:"attr",expr:s}}wrapHandler(t,n){let r=n.includes("self")?"if (e.target !== e.currentTarget) return; ":"",i=[];return n.includes("prevent")&&i.push("e.preventDefault();"),n.includes("stop")&&i.push("e.stopPropagation();"),!r&&i.length===0?t:`(e) => { ${r}${i.join(" ")} return (${t})(e); }`}eventOptions(t){let n=[];return t.includes("capture")&&n.push("capture: true"),t.includes("once")&&n.push("once: true"),t.includes("passive")&&n.push("passive: true"),n.length?`{ ${n.join(", ")} }`:null}bindProps(t,n){let r=t==="checked",i=r?"change":"input",o=r?"checked":"value",l=`(${n})`;return[{name:t,kind:"attr",expr:`${l}[0]()`,reactive:!0},{name:"on"+te(i),kind:"event",event:{name:i,delegated:ee.has(i)},expr:`(e) => ${l}[1](e.target.${o})`}]}plainAttr(t){let n=t.value,r=t.name;t.name==="class"?r=n&&n.kind==="hole"&&this.hole(n.hole).object?"classList":"className":t.name==="html"&&(r="innerHTML");let o={name:r,kind:"attr"};if(n==null)return o.literal=!0,o;if(n.kind==="static")return o.literal=n.value,o;if(n.kind==="hole"){let a=this.hole(n.hole);return o.expr=a.code,o.reactive=a.reactive,o}let l=!1,s=n.parts.map(a=>{if("text"in a)return Le(a.text);let c=this.hole(a.hole);return l=l||c.reactive,"${"+c.code+"}"}).join("");return o.expr="`"+s+"`",o.reactive=l,o}};function ne(e,t,n,r={}){let{root:i}=Je(e,{svg:r.svg});return new D(t,n).lowerRoot(i.children)}var De=re.default??re;function je(e){return De(e,{concise:!0}).code}function Oe(e,t,n){let r={code:T(e,t,n),reactive:O(e)};if(j.isArrowFunctionExpression(e)&&!j.isBlockStatement(e.body)){let i=e.body;r.arrow={params:e.params.map(o=>je(o)),body:T(i,t,n),bodyReactive:O(i)}}return j.isObjectExpression(e)&&(r.object=!0),r}function ie(e,t,n={}){let r=e.quasi,i=r.expressions.map(o=>Oe(o,t,n.onNested));return ne(Xe(r),i,t,n)}function Xe(e){let t=[];return e.quasis.forEach((n,r)=>{let i=n.value.cooked??n.value.raw;if(t.push({kind:"static",text:i,start:n.start??0}),r<e.expressions.length){let o=e.expressions[r];t.push({kind:"hole",index:r,start:o.start??0,end:o.end??0})}}),t}function Me(e){switch(e.kind){case"event":return"event";case"ref":return"ref";case"spread":return"spread";case"class":case"style":return"class-or-style-directive";case"attr":case"prop":return e.reactive?"reactive-prop":e.expr!==void 0?"expression-prop":void 0;default:return"expression-prop"}}function C(e){let t=[],n=new Map,r=i=>{switch(i.kind){case"text":return!0;case"expr":return!1;case"component":case"control":for(let o of i.children)r(o);return!1;case"fragment":for(let o of i.children)r(o);return!1;case"element":{let o=!0;for(let s of i.children)r(s)||(o=!1);let l;for(let s of i.props)if(l=Me(s),l)break;return!l&&!o&&(l=He(i)),i.static=!l,l?n.set(i,l):t.push(i),i.static}default:return!1}};for(let i of Array.isArray(e)?e:[e])r(i);return{staticElements:t,reasons:n}}function He(e){for(let t of e.children){if(t.kind==="expr")return"expression-child";if(t.kind==="component")return"component-child";if(t.kind==="control")return"control-child";if(t.kind==="element"&&!t.static||t.kind==="fragment")return"expression-child"}return"expression-child"}function oe(e,t=new Set,n={}){let r=ie(e,t,n);return C(r),r}var _e="children";function y(e){switch(e.kind){case"call":return!0;case"member":return e.property!==_e;case"compound":return e.parts.some(y);case"opaque":return!1}}var Be=new Set(["CallExpression","OptionalCallExpression"]),Fe=new Set(["MemberExpression","OptionalMemberExpression"]);function E(e){if(!e)return{kind:"opaque"};if(Be.has(e.type))return{kind:"call"};if(Fe.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(N)}:e.type==="LogicalExpression"||e.type==="BinaryExpression"?{kind:"compound",parts:[e.left,e.right].map(N)}:e.type==="TemplateLiteral"?{kind:"compound",parts:e.expressions.map(N)}:e.type==="ObjectExpression"?{kind:"compound",parts:e.properties.filter(n=>(n.type==="ObjectProperty"||n.type==="Property")&&n.computed!==!0).map(n=>N(n.value))}:e.type==="ArrayExpression"?{kind:"compound",parts:e.elements.filter(n=>n!=null&&n.type!=="SpreadElement").map(N)}:{kind:"opaque"}}var N=e=>E(e);var ze=new Set(["svg","path","circle","rect","line","polygon","polyline","ellipse","g","defs","clipPath","text"]),Ve=/^on[A-Z]/,Ge=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]),le=e=>y(E(e));function R(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 X=e=>!!e&&typeof R(e)=="string";function We(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 M(e){return e.type==="JSXIdentifier"?e.name==="class"?"className":e.name:e.type==="JSXNamespacedName"?`${e.namespace.name}:${e.name.name}`:"unknown"}function qe(e,t){let n=M(e.name),r=Ve.test(n),i=r||n.startsWith("on:")||n==="ref",l={name:n,kind:r?"event":"attr"};if(r){let a=n.slice(2).toLowerCase();l.event={name:a,delegated:Ge.has(a)}}let s=e.value;if(s==null)return l.literal=!0,l;if(X(s))return l.literal=R(s),l;if(s.type==="JSXExpressionContainer"&&s.expression?.type!=="JSXEmptyExpression"){let a=s.expression,c=R(a);return c!==void 0?(l.literal=c,l):(l.expr=t.code(a),l.reactive=i?!1:le(a),(a.type==="JSXElement"||a.type==="JSXFragment")&&(l.jsxElement=!0),l)}return l.literal=!0,l}function se(e,t){let n=e.value;return n==null?null:X(n)?JSON.stringify(R(n)):n.type==="JSXExpressionContainer"&&n.expression?.type!=="JSXEmptyExpression"?t.code(n.expression):null}function Ue(e,t){let n=[],r=[];for(let i of e){if(i.type==="JSXSpreadAttribute"){n.push({name:"",kind:"spread",expr:t.code(i.argument)});continue}if(i.type!=="JSXAttribute"||L(M(i.name)))continue;let o=i.name.type==="JSXNamespacedName"?i.name.namespace.name:null;if(o==="use"){let l=i.name.name.name;t.used.add(l);let s=se(i,t);r.push(s!=null?`[${l}, () => (${s})]`:`[${l}]`);continue}if(o==="oncapture"){let l=i.name.name.name.toLowerCase(),s=se(i,t)??"undefined";n.push({name:"on:"+l,kind:"attr",expr:`[${s}, { capture: true }]`});continue}n.push(qe(i,t))}return r.length>0&&n.push({name:"use",kind:"attr",expr:`[${r.join(", ")}]`}),n}function ae(e,t){let n=[];for(let r of e)if(r.type==="JSXText"){let i=x(r.value);i&&n.push({kind:"text",value:i})}else if(r.type==="JSXExpressionContainer"){if(r.expression?.type!=="JSXEmptyExpression"){let i=r.expression;n.push({kind:"expr",code:t.code(i),reactive:le(i)})}}else r.type==="JSXElement"||r.type==="JSXFragment"?n.push(ce(r,t)):r.type==="JSXSpreadChild"&&n.push({kind:"expr",code:t.code(r.expression),reactive:!1});return n}function Ke(e){for(let t of e){if(t.type!=="JSXAttribute")continue;let n=M(t.name);if(L(n)){if(t.value&&!X(t.value))throw new m(`'${n}' needs a literal value, not an expression — the strategy is compile-time.`);return w(n,t.value?R(t.value):null)}}}function ce(e,t){if(e.type==="JSXFragment")return{kind:"fragment",children:ae(e.children,t)};let{tag:n,component:r}=We(e.openingElement.name,t),i=Ue(e.openingElement.attributes,t),o=ae(e.children,t);if(r){let l=Ke(e.openingElement.attributes);return{kind:"component",name:n,props:i,children:o,...l?{load:l}:{}}}return{kind:"element",tag:n,svg:ze.has(n),props:i,children:o,static:!1}}function pe(e,t){let n=ce(e,t);return C(n),n}var Qe=de.default??de;function ue(e){return Qe(e,{concise:!0}).code}function et(e,t,n){let r=b.cloneNode(e,!0),i=b.file(b.program([b.expressionStatement(r)])),o=!1,l=(s,a,c)=>{for(let p of c)t.add(p);s.replaceWith(Ye.expression(a,{placeholderPattern:!1,plugins:["typescript"]})()),s.skip(),o=!0};return Ze(i,{"JSXElement|JSXFragment"(s){let a=s.node,c=tt(a,t,n);n?.(c);let{code:p,imports:d,templates:u}=k.emit(c,{});l(s,v(p,u),d)},TaggedTemplateExpression(s){let a=s.node.tag;if(!b.isIdentifier(a)||a.name!=="html"&&a.name!=="svg")return;let c=oe(s.node,t,{svg:a.name==="svg",onNested:n});n?.(c);let{code:p,imports:d,templates:u}=k.emit(c,{});l(s,v(p,u),d)}}),o?i.program.body[0].expression:e}function T(e,t,n){return ue(et(e,t,n))}var Bt=new Set(["svg","path","circle","rect","line","polygon","polyline","ellipse","g","defs","clipPath","text"]);function O(e){return y(E(e))}function tt(e,t=new Set,n){return pe(e,{code:i=>i.type==="JSXMemberExpression"?ue(i):T(i,t,n),used:t})}export{Bt as SVG_TAGS,tt as buildIR,T as genExpr,O as isReactiveExpr};
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
"use strict";var It=Object.create;var re=Object.defineProperty;var wt=Object.getOwnPropertyDescriptor;var Nt=Object.getOwnPropertyNames;var kt=Object.getPrototypeOf,Lt=Object.prototype.hasOwnProperty;var Mt=(e,t)=>{for(var n in t)re(e,n,{get:t[n],enumerable:!0})},Xe=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Nt(t))!Lt.call(e,i)&&i!==n&&re(e,i,{get:()=>t[i],enumerable:!(o=wt(t,i))||o.enumerable});return e};var $e=(e,t,n)=>(n=e!=null?It(kt(e)):{},Xe(t||!e||!e.__esModule?re(n,"default",{value:e,enumerable:!0}):n,e)),Jt=e=>Xe(re({},"__esModule",{value:!0}),e);var Bn={};Mt(Bn,{babelPluginReactiveJSX:()=>Fn,createPlugin:()=>Dn,createPreset:()=>me,default:()=>z,presets:()=>_n});module.exports=Jt(Bn);var ct=require("@babel/helper-plugin-utils");var Tt=e=>"components"in e;function Ae(e,t){return e.replace(/\$(\d+)/g,(n,o)=>t[Number(o)]??n)}function Pt(e,t){return typeof t=="string"?{module:t,export:e}:t}function je(e=[]){let t=new Map,n=[],o=[];for(let a of e){if(!Tt(a)){o.push(a);continue}for(let[l,c]of Object.entries(a.components)){let p=Pt(l,c),f=t.get(l);if(f&&f.module!==p.module){let u=n.find(h=>h.name===l);u?u.modules.push(p.module):n.push({name:l,modules:[f.module,p.module]});continue}t.set(l,p)}}let i=new Map;return{resolve:a=>{if(i.has(a))return i.get(a);let l=t.get(a);if(!l)for(let c of o){let p=a.match(new RegExp(c.match.source,c.match.flags.replace("g","")));if(p){l={module:Ae(c.module,p),export:c.export?Ae(c.export,p):a};break}}return i.set(a,l),l},names:()=>[...t.keys()],conflicts:()=>n}}var U=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],D=["Suspense","SuspenseList","Await"],_=["Router","Outlet","Redirect","Link"],Wn=[...U,...D,..._],fe=new Set([...U,...D]);function Oe(e={}){let{controlFlowModule:t="@fluixi/dom",coreModule:n="@fluixi/core",routerModule:o="@fluixi/core/router-next"}=e,i={};for(let s of U)i[s]=t;for(let s of D)i[s]=n;for(let s of _)i[s]=o;return i}var j={kind:"eager"},Xt=["pointerdown","focusin","keydown"],Fe=new Set(["eager","idle","visible","interaction","media","never"]),J=class extends Error{};function q(e){return e.startsWith("load:")}function B(e,t){let n=e.slice(5);if(!Fe.has(n))throw new J(`Unknown load strategy 'load:${n}'. Expected one of ${[...Fe].join(", ")}.`);switch(n){case"eager":return j;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?$t(t):[...Xt]};case"media":if(!t)throw new J(`'load:media' needs a query, e.g. load:media="(min-width: 1024px)".`);return{kind:"media",query:t};default:throw new J(`Unhandled load strategy '${n}'.`)}}function $t(e){let t=e.split(/[\s,]+/).map(n=>n.trim()).filter(Boolean);if(t.length===0)throw new J("'load:interaction' was given no event names.");return t}function X(e){return e.kind!=="eager"&&e.kind!=="never"}function ge(e,t={}){let{resolver:n,isBound:o,modules:i,strategyFor:s}=t,a=Oe(i),l=new Map,c=new Set,p=u=>{let{name:h}=u;if(!h||h.includes(".")||o?.(h))return;let y=f(h);if(!y){c.add(h);return}let C=y.origin==="builtin"&&fe.has(h)?j:s?.(u)??j;u.source={...y,loading:C},l.set(h,u.source)},f=u=>{if(fe.has(u))return{module:a[u],export:u,origin:"builtin"};let h=n?.resolve(u);if(h)return{module:h.module,export:h.export,origin:"rule"};if(_.includes(u))return{module:a[u],export:u,origin:"builtin"}};return ie(e,u=>{u.kind==="component"&&p(u)}),{resolved:l,unresolved:[...c]}}function ie(e,t){let n=Array.isArray(e)?e:[e];for(let o of n){t(o);let i=o.children;i&&ie(i,t)}}function he(e){let t=[];ie(e,s=>{s.kind==="component"&&s.source&&t.push(s)});let n=new Set,o=new Set;for(let s of t){let{module:a,loading:l}=s.source;l.kind==="eager"&&n.add(a),l.kind==="never"&&o.add(a)}let i=new Map;for(let s of t){let a=s.source;X(a.loading)&&n.has(a.module)&&(a.loading={kind:"eager"},i.set(a.module,(i.get(a.module)??0)+1))}return{collapsed:i,conflicted:[...o].filter(s=>n.has(s))}}var r=require("@babel/core");var m=require("@babel/core"),ye=$e(require("@babel/generator"),1);var At=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),De={className:"class",htmlFor:"for"},jt=new Set(["innerHTML","outerHTML","innerText","textContent","value","checked","selected","muted","defaultValue","defaultChecked","children","ref"]),Ot=new Set(["script","style","textarea","title"]);function Ee(e){return Ot.has(e)}function _e(e){return De[e]??e}function G(e){return e.kind!=="attr"||e.expr!==void 0||e.name.includes(":")?!1:!jt.has(e.name)}function xe(e){if(!e.static||Ee(e.tag))return!1;for(let t of e.props)if(!G(t))return!1;for(let t of e.children)if(t.kind!=="text"&&!(t.kind==="element"&&xe(t)))return!1;return!0}function K(e){let t=e.props.map(Dt).filter(Boolean).join(""),n=`<${e.tag}${t}>`;return At.has(e.tag)?n:`${n}${e.children.map(Ft).join("")}</${e.tag}>`}function Ft(e){if(e.kind==="text")return Bt(e.value);if(e.kind!=="element")throw new Error(`serializeStatic: unexpected ${e.kind}`);return K(e)}function Dt(e){let t=De[e.name]??e.name,n=e.literal;return n===!0||n===void 0?` ${t}`:n===!1||n===null?"":` ${t}="${_t(String(n))}"`}function _t(e){return e.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function Bt(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}var zt="<!--fx-->",Vt="<!--fx/-->";function se(e){return e.kind==="expr"||e.kind==="component"||e.kind==="control"}function Wt(e){return e.kind==="text"||e.kind==="element"&&Be(e)}function Be(e){return e.svg||Ee(e.tag)||!e.props.every(t=>G(t))?!1:e.children.every(t=>Wt(t)||se(t))}function oe(e){if(se(e))return!0;let t=e.children;return t?t.some(oe):!1}function ze(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"||ze(t))}function Ve(e){if(!Be(e)||!ze(e)||!e.children.some(oe))return null;let t=[],n=[],o=0,i=a=>{let l=`_n$${o++}`;return t.push({ref:l,expr:a}),l};return s(e,"_el$"),{html:Ht(e),tag:e.tag,steps:t,holes:n};function s(a,l){let c=-1;a.children.forEach((f,u)=>{oe(f)&&(c=u)});let p=null;for(let f=0;f<=c;f++){let u=a.children[f],h=p?`${p}.nextSibling`:`${l}.firstChild`;if(se(u)){let C=i(h),I=i(`holeEnd(${C})`);n.push({parentRef:l,startRef:C,endRef:I,node:u}),p=I;continue}let y=i(h);u.kind==="element"&&oe(u)&&s(u,y),p=y}}}function Ht(e){return K(We(e)).split(He).join(zt+Vt)}function We(e){return{...e,children:e.children.map(t=>se(t)?{kind:"text",value:He}:t.kind==="element"?We(t):t)}}var He="\0fx-hole\0";var Se={version:1,module:"@fluixi/dom",symbols:["createNativeElement","insert","spread","setAttribute","delegateEvents","createComponent","createMemo","untrack","Show","For","Index","Switch","Match","Dynamic","ErrorBoundary"]},rr={version:2,module:"@fluixi/dom",symbols:[...Se.symbols,"template","cloneTemplate","walk"]};var Ut={show:"Show",for:"For",index:"Index",switch:"Switch",match:"Match",dynamic:"Dynamic",errorBoundary:"ErrorBoundary",suspense:"Suspense"};function qt(e){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e)}function qe(e){return qt(e)?e:JSON.stringify(e)}function Gt(e){return e.expr!==void 0?e.reactive?`() => (${e.expr})`:`(${e.expr})`:JSON.stringify(e.literal??!0)}function Kt(e){return e.expr!==void 0?`(${e.expr})`:JSON.stringify(e.literal??!0)}function Zt(e,t,n){let o=e.filter(l=>l.kind==="spread"),s=e.filter(l=>l.kind!=="spread").map(l=>`${qe(l.name)}: ${Gt(l)}`);t!=null&&s.push(`children: ${t}`);let a=`{ ${s.join(", ")} }`;return o.length>0?(n.add("mergeProps"),`mergeProps(${o.map(l=>l.expr).join(", ")}, ${a})`):a}function Ge(e,t,n){return e.length===1?Z(e[0],t,n):`[${e.map(o=>Z(o,t,n)).join(", ")}]`}function Ue(e,t,n,o,i){o.add("createMemo"),o.add("createComponent");let s=t.filter(p=>p.kind==="spread"),l=t.filter(p=>p.kind!=="spread").map(p=>`get ${qe(p.name)}() { return ${Kt(p)}; }`);n.length>0&&l.push(`get children() { return ${Ge(n,o,i)}; }`);let c=`{ ${l.join(", ")} }`;return s.length>0&&(o.add("mergeProps"),c=`mergeProps(${s.map(p=>p.expr).join(", ")}, ${c})`),`createMemo(() => createComponent(${e}, ${c}))`}function Yt(e,t){let n=_e(t.name),o=t.literal;return o===!0||o===void 0?`${e}.setAttribute(${JSON.stringify(n)}, "");`:o===!1||o===null?"":`${e}.setAttribute(${JSON.stringify(n)}, ${JSON.stringify(String(o))});`}var Ke=!1;function Z(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":Ge(e.children,t,n);case"component":return Ue(e.name,e.props,e.children,t,n);case"control":{let o=Ut[e.control]??e.control;return t.add(o),Ue(o,e.props,e.children,t,n)}case"element":{if(n&&e.static&&!e.svg&&xe(e)){t.add("templateNode");let l=`_tmpl$${n.length}`;return n.push({id:l,html:K(e),tag:e.tag,svg:!1}),`templateNode(${l}, ${JSON.stringify(e.tag)})`}if(n&&Ke){let l=Ve(e);if(l){t.add("templateNode"),t.add("insert"),t.add("holeEnd"),t.add("holeContent"),t.add("holeScope");let c=`_tmpl$${n.length}`;n.push({id:c,html:l.html,tag:l.tag,svg:!1});let p=[`const _el$ = templateNode(${c}, ${JSON.stringify(l.tag)}, true);`];for(let f of l.steps)p.push(`const ${f.ref} = ${f.expr};`);for(let f of l.holes)p.push(`insert(${f.parentRef}, holeScope(${f.startRef}, () => (${Z(f.node,t,n)})), ${f.endRef}, holeContent(${f.startRef}, ${f.endRef}));`);return p.push("return _el$;"),`(() => { ${p.join(" ")} })()`}}t.add("createNativeElement");let o=JSON.stringify(e.tag),i="_el$",s=[],a=e.svg?`${o}, true`:o;if(s.push(`const ${i} = createNativeElement(${a});`),e.props.length>0)if(!e.svg&&e.props.every(G))for(let l of e.props)s.push(Yt(i,l));else{t.add("spread");let l=e.svg?", isSVG: true":"";s.push(`spread({ element: ${i}, props: ${Zt(e.props,null,t)}${l} });`)}for(let l of e.children){t.add("insert");let c=Z(l,t,n),p=l.kind==="expr"&&l.reactive||l.kind==="component"||l.kind==="control";s.push(p?`insert(${i}, ${c}, null);`:`insert(${i}, ${c});`)}return s.push(`return ${i};`),`(() => { ${s.join(" ")} })()`}}}function Y(e,t){if(!t||t.length===0)return e;let n=new Map(t.map(o=>[o.id,JSON.stringify(o.html)]));return e.replace(/_tmpl\$\d+/g,o=>n.get(o)??o)}var $={name:"imperative",contract:Se,emit(e,t){let n=new Set,o=t?.templateClone!==!1?[]:void 0;return Ke=t?.partialTemplates===!0,{code:Z(e,n,o),imports:Array.from(n),templates:o}}};var Q=require("@babel/core"),ve=$e(require("@babel/generator"),1),Qe=require("@fluixi/template-parser");var Qt=ve.default.default??ve.default;function en(e){return Qt(e,{concise:!0}).code}var Ze=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function tn(e){return e.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${")}function Ye(e){return e.charAt(0).toUpperCase()+e.slice(1)}var be=class{constructor(t,n){this.holes=t;this.used=n}hole(t){return this.holes[t]??{node:Q.types.identifier("undefined"),code:"undefined",reactive:!1}}emit(t){let{code:n,imports:o,templates:i}=$.emit(t,{});for(let s of o)this.used.add(s);return Y(n,i)}lowerRoot(t){let n=this.lowerChildren(t);return n.length===1?n[0]:{kind:"fragment",children:n}}lowerChildren(t){let n=[];for(let o=0;o<t.length;o++){let i=t[o];if(i.kind==="Element"||i.kind==="Component"){let a=i.attributes.find(l=>l.kind==="IfDirective");if(a&&a.kind==="IfDirective"){let l=o+1;l<t.length&&this.isBlankText(t[l])&&l++;let c=t[l],p=c&&(c.kind==="Element"||c.kind==="Component")&&c.attributes.some(f=>f.kind==="ElseDirective");n.push(this.lowerIf(i,a.hole,p?c:null)),p&&(o=l);continue}if(i.attributes.some(l=>l.kind==="EachDirective")){n.push(this.lowerEach(i));continue}}let s=this.lowerNode(i);s&&n.push(s)}return n}isBlankText(t){return t.kind==="Text"&&!t.raw&&ae(t.value)===""}lowerNode(t){switch(t.kind){case"Text":{if(t.raw)return{kind:"text",value:t.value};let n=ae(t.value);return n?{kind:"text",value:n}:null}case"Comment":return null;case"Expression":{let n=this.hole(t.hole);return{kind:"expr",code:n.code,reactive:n.reactive}}case"Fragment":return{kind:"fragment",children:this.lowerChildren(t.children)};case"Element":return this.lowerElement(t);case"Component":return this.lowerComponent(t);default:return null}}lowerElement(t){let n=t.attributes.find(o=>o.kind==="Attribute"&&o.name==="is");if(t.tag==="component"&&n&&n.value&&n.value.kind==="hole"){let o=t.attributes.filter(s=>s!==n),i=this.lowerComponent({...t,kind:"Component",tag:"Dynamic",tagHole:null,attributes:o});return i.props.unshift({name:"component",kind:"attr",expr:`() => (${this.hole(n.value.hole).code})`}),i}return{kind:"element",tag:t.tag,svg:t.namespace==="svg",props:this.lowerAttributes(t.attributes),children:this.lowerChildren(t.children),static:!1}}lowerComponent(t){let n=t.tagHole!=null?this.hole(t.tagHole).code:t.tag,o=this.lowerAttributes(t.attributes),{slots:i,rest:s}=this.partitionSlots(t.children);for(let[c,p]of i){let f=p.length===1?p[0]:{kind:"fragment",children:p},u={name:c,kind:"attr",expr:this.emit(f),jsxElement:!0},h=o.findIndex(y=>y.name===c);h>=0?o[h]=u:o.push(u)}let a=t.attributes.find(c=>c.kind==="LoadDirective"),l=a?B(`load:${a.strategy}`,a.modifier):void 0;return{kind:"component",name:n,props:o,children:this.lowerChildren(s),...l?{load:l}:{}}}partitionSlots(t){let n=new Map,o=[];for(let i of t){if(i.kind==="Element"||i.kind==="Component"){let s=i.attributes.find(a=>a.kind==="Attribute"&&a.name==="slot");if(s&&s.value&&s.value.kind==="static"){let a={...i,attributes:i.attributes.filter(p=>p!==s)},l=a.kind==="Element"?this.lowerElement(a):this.lowerComponent(a),c=n.get(s.value.value)??[];c.push(l),n.set(s.value.value,c);continue}}o.push(i)}return{slots:n,rest:o}}lowerIf(t,n,o){let i=this.hole(n),s=[{name:"when",kind:"attr",expr:i.code,reactive:i.reactive}];if(o){let l=this.stripAndLower(o,c=>c.kind==="ElseDirective");s.push({name:"fallback",kind:"attr",expr:this.emit(l),jsxElement:!0})}let a=this.stripAndLower(t,l=>l.kind==="IfDirective");return{kind:"component",name:"Show",props:s,children:[a]}}lowerEach(t){let n=t.attributes.find(c=>c.kind==="EachDirective");if(!n||n.kind!=="EachDirective")return this.lowerNode(t);let o=this.hole(n.hole),i=[{name:"each",kind:"attr",expr:o.code,reactive:o.reactive}];if(n.key){let c="static"in n.key?`(item) => item[${JSON.stringify(n.key.static)}]`:this.hole(n.key.hole).code;i.push({name:"by",kind:"attr",expr:c})}let s=this.itemArrow(t),a;if(s){let c=s.body,p={kind:"expr",code:A(c,this.used),reactive:N(c)},f=this.rebuildWithChildren(t,[p]);a=`(${s.params.map(u=>en(u)).join(", ")}) => (${this.emit(f)})`}else{let c=this.stripAndLower(t,p=>p.kind==="EachDirective");a=`() => (${this.emit(c)})`}return{kind:"component",name:"For",props:i,children:[{kind:"expr",code:a,reactive:!1}]}}itemArrow(t){let n=t.children.filter(i=>!this.isBlankText(i));if(n.length!==1||n[0].kind!=="Expression")return null;let o=this.hole(n[0].hole).node;return Q.types.isArrowFunctionExpression(o)&&!Q.types.isBlockStatement(o.body)?o:null}stripAndLower(t,n){let o={...t,attributes:t.attributes.filter(i=>!n(i))};return o.kind==="Element"?this.lowerElement(o):this.lowerComponent(o)}rebuildWithChildren(t,n){let o=this.lowerAttributes(t.attributes.filter(i=>i.kind!=="EachDirective"));return t.kind==="Element"?{kind:"element",tag:t.tag,svg:t.namespace==="svg",props:o,children:n,static:!1}:{kind:"component",name:t.tag,props:o,children:n}}lowerAttributes(t){let n=[],o=[],i=!1,s=[],a=!1,l=[];for(let c of t)switch(c.kind){case"IfDirective":case"EachDirective":case"ElseDirective":break;case"Attribute":n.push(this.plainAttr(c));break;case"PropertyBinding":n.push({name:c.name,kind:"prop",expr:this.hole(c.hole).code,reactive:this.hole(c.hole).reactive});break;case"EventBinding":n.push(this.eventProp(c));break;case"RefBinding":n.push({name:"ref",kind:"ref",expr:this.hole(c.hole).code,reactive:this.hole(c.hole).reactive});break;case"Spread":n.push({name:"",kind:"spread",expr:this.hole(c.hole).code});break;case"ClassDirective":{let p=this.hole(c.hole);o.push(`${JSON.stringify(c.name)}: ${p.code}`),i=i||p.reactive;break}case"StyleDirective":{let p=this.hole(c.hole);s.push(`${JSON.stringify(c.name)}: ${p.code}`),a=a||p.reactive;break}case"BindDirective":n.push(...this.bindProps(c.name,this.hole(c.hole).code));break;case"UseDirective":{let p=c.name??(c.hole!=null?this.hole(c.hole).code:null);if(!p)break;l.push(c.name!=null&&c.hole!=null?`[${p}, () => (${this.hole(c.hole).code})]`:`[${p}]`);break}}return o.length>0&&n.push({name:"classList",kind:"attr",expr:`{ ${o.join(", ")} }`,reactive:i}),s.length>0&&n.push({name:"style",kind:"attr",expr:`{ ${s.join(", ")} }`,reactive:a}),l.length>0&&n.push({name:"use",kind:"attr",expr:`[${l.join(", ")}]`}),n}eventProp(t){let n=t.name.toLowerCase(),o=this.hole(t.hole).code;if(!(t.syntax==="colon"||t.modifiers.length>0))return{name:"on"+Ye(t.name),kind:"event",event:{name:n,delegated:Ze.has(n)},expr:o};let s=this.wrapHandler(o,t.modifiers),a=this.eventOptions(t.modifiers),l=a?`[${s}, ${a}]`:s;return{name:"on:"+n,kind:"attr",expr:l}}wrapHandler(t,n){let o=n.includes("self")?"if (e.target !== e.currentTarget) return; ":"",i=[];return n.includes("prevent")&&i.push("e.preventDefault();"),n.includes("stop")&&i.push("e.stopPropagation();"),!o&&i.length===0?t:`(e) => { ${o}${i.join(" ")} return (${t})(e); }`}eventOptions(t){let n=[];return t.includes("capture")&&n.push("capture: true"),t.includes("once")&&n.push("once: true"),t.includes("passive")&&n.push("passive: true"),n.length?`{ ${n.join(", ")} }`:null}bindProps(t,n){let o=t==="checked",i=o?"change":"input",s=o?"checked":"value",a=`(${n})`;return[{name:t,kind:"attr",expr:`${a}[0]()`,reactive:!0},{name:"on"+Ye(i),kind:"event",event:{name:i,delegated:Ze.has(i)},expr:`(e) => ${a}[1](e.target.${s})`}]}plainAttr(t){let n=t.value,o=t.name;t.name==="class"?o=n&&n.kind==="hole"&&Q.types.isObjectExpression(this.hole(n.hole).node)?"classList":"className":t.name==="html"&&(o="innerHTML");let s={name:o,kind:"attr"};if(n==null)return s.literal=!0,s;if(n.kind==="static")return s.literal=n.value,s;if(n.kind==="hole"){let c=this.hole(n.hole);return s.expr=c.code,s.reactive=c.reactive,s}let a=!1,l=n.parts.map(c=>{if("text"in c)return tn(c.text);let p=this.hole(c.hole);return a=a||p.reactive,"${"+p.code+"}"}).join("");return s.expr="`"+l+"`",s.reactive=a,s}};function et(e,t,n={}){let o=e.quasi,i=o.expressions.map(l=>{let c=l;return{node:c,code:A(c,t),reactive:N(c)}}),s=nn(o),{root:a}=(0,Qe.parseTemplate)(s,{svg:n.svg});return new be(i,t).lowerRoot(a.children)}function nn(e){let t=[];return e.quasis.forEach((n,o)=>{let i=n.value.cooked??n.value.raw;if(t.push({kind:"static",text:i,start:n.start??0}),o<e.expressions.length){let s=e.expressions[o];t.push({kind:"hole",index:o,start:s.start??0,end:s.end??0})}}),t}function rn(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 le(e){let t=[],n=new Map,o=i=>{switch(i.kind){case"text":return!0;case"expr":return!1;case"component":case"control":for(let s of i.children)o(s);return!1;case"fragment":for(let s of i.children)o(s);return!1;case"element":{let s=!0;for(let l of i.children)o(l)||(s=!1);let a;for(let l of i.props)if(a=rn(l),a)break;return!a&&!s&&(a=on(i)),i.static=!a,a?n.set(i,a):t.push(i),i.static}default:return!1}};for(let i of Array.isArray(e)?e:[e])o(i);return{staticElements:t,reasons:n}}function on(e){for(let t of e.children){if(t.kind==="expr")return"expression-child";if(t.kind==="component")return"component-child";if(t.kind==="control")return"control-child";if(t.kind==="element"&&!t.static||t.kind==="fragment")return"expression-child"}return"expression-child"}function ce(e,t=new Set,n={}){let o=et(e,t,n);return le(o),o}var sn=ye.default.default??ye.default;function rt(e){return sn(e,{concise:!0}).code}function an(e,t){let n=m.types.cloneNode(e,!0),o=m.types.file(m.types.program([m.types.expressionStatement(n)])),i=!1,s=(a,l,c)=>{for(let p of c)t.add(p);a.replaceWith(m.template.expression(l,{placeholderPattern:!1,plugins:["typescript"]})()),a.skip(),i=!0};return(0,m.traverse)(o,{"JSXElement|JSXFragment"(a){let l=a.node,{code:c,imports:p,templates:f}=$.emit(Ie(l,t),{});s(a,Y(c,f),p)},TaggedTemplateExpression(a){let l=a.node.tag;if(!m.types.isIdentifier(l)||l.name!=="html"&&l.name!=="svg")return;let c=ce(a.node,t,{svg:l.name==="svg"}),{code:p,imports:f,templates:u}=$.emit(c,{});s(a,Y(p,u),f)}}),i?o.program.body[0].expression:e}function A(e,t){return rt(an(e,t))}var ln=new Set(["svg","path","circle","rect","line","polygon","polyline","ellipse","g","defs","clipPath","text"]),cn=/^on[A-Z]/,pn=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function un(e){if(m.types.isJSXIdentifier(e)){let t=e.name[0]!==e.name[0].toLowerCase();return{tag:e.name,component:t}}return m.types.isJSXMemberExpression(e)?{tag:rt(e),component:!0}:m.types.isJSXNamespacedName(e)?{tag:`${e.namespace.name}:${e.name.name}`,component:!1}:{tag:"div",component:!1}}function Ce(e){return m.types.isJSXIdentifier(e)?e.name==="class"?"className":e.name:m.types.isJSXNamespacedName(e)?`${e.namespace.name}:${e.name.name}`:"unknown"}function N(e){return m.types.isCallExpression(e)||m.types.isOptionalCallExpression(e)?!0:m.types.isMemberExpression(e)||m.types.isOptionalMemberExpression(e)?!(!e.computed&&m.types.isIdentifier(e.property,{name:"children"})):m.types.isConditionalExpression(e)?N(e.test)||N(e.consequent)||N(e.alternate):m.types.isLogicalExpression(e)||m.types.isBinaryExpression(e)?N(e.left)||N(e.right):m.types.isTemplateLiteral(e)?e.expressions.some(t=>N(t)):m.types.isObjectExpression(e)?e.properties.some(t=>m.types.isObjectProperty(t)&&!t.computed&&N(t.value)):m.types.isArrayExpression(e)?e.elements.some(t=>t!=null&&!m.types.isSpreadElement(t)&&N(t)):!1}function dn(e,t){let n=Ce(e.name),o=cn.test(n),i=o||n.startsWith("on:")||n==="ref",a={name:n,kind:o?"event":"attr"};o&&(a.event={name:n.slice(2).toLowerCase(),delegated:pn.has(n.slice(2).toLowerCase())});let l=e.value;if(l==null)return a.literal=!0,a;if(m.types.isStringLiteral(l))return a.literal=l.value,a;if(m.types.isJSXExpressionContainer(l)&&!m.types.isJSXEmptyExpression(l.expression)){let c=l.expression;return m.types.isStringLiteral(c)||m.types.isNumericLiteral(c)||m.types.isBooleanLiteral(c)?(a.literal=c.value,a):(a.expr=A(c,t),a.reactive=i?!1:N(c),(m.types.isJSXElement(c)||m.types.isJSXFragment(c))&&(a.jsxElement=!0),a)}return a.literal=!0,a}function tt(e,t){let n=e.value;return n==null?null:m.types.isStringLiteral(n)?JSON.stringify(n.value):m.types.isJSXExpressionContainer(n)&&!m.types.isJSXEmptyExpression(n.expression)?A(n.expression,t):null}function mn(e,t){let n=[],o=[];for(let i of e){if(m.types.isJSXSpreadAttribute(i)){n.push({name:"",kind:"spread",expr:A(i.argument,t)});continue}if(!m.types.isJSXAttribute(i)||q(Ce(i.name)))continue;let s=m.types.isJSXNamespacedName(i.name)?i.name.namespace.name:null;if(s==="use"){let a=i.name.name.name;t.add(a);let l=tt(i,t);o.push(l!=null?`[${a}, () => (${l})]`:`[${a}]`);continue}if(s==="oncapture"){let a=i.name.name.name.toLowerCase(),l=tt(i,t)??"undefined";n.push({name:"on:"+a,kind:"attr",expr:`[${l}, { capture: true }]`});continue}n.push(dn(i,t))}return o.length>0&&n.push({name:"use",kind:"attr",expr:`[${o.join(", ")}]`}),n}function ae(e){let t=e.split(/\r\n|\n|\r/),n=0;for(let i=0;i<t.length;i++)/[^ \t]/.test(t[i])&&(n=i);let o="";for(let i=0;i<t.length;i++){let s=t[i].replace(/\t/g," ");i!==0&&(s=s.replace(/^ +/,"")),i!==t.length-1&&(s=s.replace(/ +$/,"")),s&&(i!==n&&(s+=" "),o+=s)}return o}function nt(e,t){let n=[];for(let o of e)if(m.types.isJSXText(o)){let i=ae(o.value);i&&n.push({kind:"text",value:i})}else if(m.types.isJSXExpressionContainer(o)){if(!m.types.isJSXEmptyExpression(o.expression)){let i=o.expression;n.push({kind:"expr",code:A(i,t),reactive:N(i)})}}else m.types.isJSXElement(o)||m.types.isJSXFragment(o)?n.push(Re(o,t)):m.types.isJSXSpreadChild(o)&&n.push({kind:"expr",code:A(o.expression,t),reactive:!1});return n}function Ie(e,t=new Set){let n=Re(e,t);return le(n),n}function Re(e,t){if(m.types.isJSXFragment(e))return{kind:"fragment",children:nt(e.children,t)};let{tag:n,component:o}=un(e.openingElement.name),i=mn(e.openingElement.attributes,t),s=nt(e.children,t);if(o){let a=fn(e.openingElement.attributes);return{kind:"component",name:n,props:i,children:s,...a?{load:a}:{}}}return{kind:"element",tag:n,svg:ln.has(n),props:i,children:s,static:!1}}function fn(e){for(let t of e){if(!m.types.isJSXAttribute(t))continue;let n=Ce(t.name);if(q(n)){if(t.value&&!m.types.isStringLiteral(t.value))throw new J(`'${n}' needs a literal value, not an expression — the strategy is compile-time.`);return B(n,t.value?t.value.value:null)}}}var ue=new Set([...U,...D]),it=new Set(D),pe=new Set(_),gn={Show:"when",For:"each",Index:"each",Match:"when"};var pt=/^on[A-Z]/,ut=["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup","mouseover","mouseout","mouseenter","mouseleave"],z=(0,ct.declare)((e,t={})=>{e.assertVersion(7);let{runtime:n="automatic",importSource:o="@fluixi/jsx",pragma:i="jsx",pragmaFrag:s="Fragment",development:a=!1,detectReactivity:l=!0,useLitHTML:c=!0,hoistStatics:p=!0,delegateEvents:f=!0,delegatedEvents:u=ut,optimizeControlFlow:h=!0,sourceMaps:y=!0,signalModule:C="@fluixi/dom",controlFlowModule:I="@fluixi/dom",routerModule:V="@fluixi/core/router-next",reactiveModule:P="@fluixi/reactive/signal",autoShowTransform:W=!1,backend:M="imperative",codegen:H="ir",templateClone:Me=!0,partialTemplates:Je=!0,format:Te="both",litTag:bt="html",resolve:yt=[]}=t,Pe=je(yt),Rt=Te==="lit"||Te==="both",Ct={backend:M,codegen:H,irImports:new Set,libModule:"@fluixi/core",controlFlowModule:I,routerModule:V,templateClone:Me,partialTemplates:Je,hasJSX:!1,hasReactivity:!1,hasLitHTML:!1,needsSignalImport:!1,needsControlFlowImport:!1,needsCreateMemo:!1,controlFlowComponents:new Set,resolvedComponents:new Map,deferredComponents:new Map,componentResolver:Pe,delegatedEvents:new Set,staticElements:new Map,staticTemplates:new Map,staticCounter:0};return{name:"@fluixi/babel-plugin-jsx",manipulateOptions(g,d){d.plugins.push("jsx","typescript")},pre(g){Object.assign(g,Ct)},visitor:{ImportDeclaration(g,d){g.node.source.value==="@fluixi/core/rx"&&(g.node.source=r.types.stringLiteral("@fluixi/reactive"))},Program:{enter(g,d){Object.assign(d,{hasJSX:!1,hasReactivity:!1,hasLitHTML:!1,hasLitIR:!1,needsSignalImport:!1,needsControlFlowImport:!1,needsCreateMemo:!1,controlFlowComponents:new Set,resolvedComponents:new Map,deferredComponents:new Map,componentResolver:Pe,delegatedEvents:new Set,staticElements:new Map,staticTemplates:new Map,autoShow:W,staticCounter:0,libModule:"@fluixi/core",controlFlowModule:I,routerModule:V,templateClone:Me,partialTemplates:Je,backend:M,codegen:H,irImports:new Set,needsCreateNativeElement:!1,needsInsert:!1,needsSpread:!1,needsCreateComponent:!1,needsMergeProps:!1})},exit(g,d){let E=[];if(d.hasJSX||d.needsSignalImport&&E.push(r.types.importDeclaration([r.types.importSpecifier(r.types.identifier("signal"),r.types.identifier("signal"))],r.types.stringLiteral(C))),d.hasJSX||d.hasLitIR){if(d.irImports.size>0){let S=new Set(["Show","For","Index","Switch","Match","Dynamic","ErrorBoundary","Portal","Suspense"]),x=new Set(["createMemo","createEffect","createRenderEffect","createRoot","createSignal","onCleanup","batch","untrack"]),v=Array.from(d.irImports),R=b=>r.types.importSpecifier(r.types.identifier(b),r.types.identifier(b)),L=b=>!g.scope.hasBinding(b),F=v.filter(b=>x.has(b)&&L(b)),w=v.filter(b=>!S.has(b)&&!x.has(b)&&L(b)),ne=v.filter(b=>S.has(b)&&L(b));F.length>0&&E.push(r.types.importDeclaration(F.map(R),r.types.stringLiteral(P))),w.length>0&&E.push(r.types.importDeclaration(w.map(R),r.types.stringLiteral(C))),ne.length>0&&E.push(r.types.importDeclaration(ne.map(R),r.types.stringLiteral(I)))}if(d.hasJSX&&M==="imperative"&&H!=="ir"){let x=[[!!d.needsCreateNativeElement,"createNativeElement"],[!!d.needsSpread,"spread"],[!!d.needsInsert,"insert"],[!!d.needsCreateComponent,"createComponent"],[!!d.needsMergeProps,"mergeProps"]].filter(([v,R])=>v&&!g.scope.hasBinding(R)).map(([,v])=>r.types.importSpecifier(r.types.identifier(v),r.types.identifier(v)));x.length>0&&E.push(r.types.importDeclaration(x,r.types.stringLiteral(C)))}else if(d.hasJSX&&n==="automatic"&&M!=="imperative"){let S=[r.types.importSpecifier(r.types.identifier("jsx"),r.types.identifier("jsx")),r.types.importSpecifier(r.types.identifier("jsxs"),r.types.identifier("jsxs")),r.types.importSpecifier(r.types.identifier("Fragment"),r.types.identifier("Fragment"))];a&&S.push(r.types.importSpecifier(r.types.identifier("jsxDEV"),r.types.identifier("jsxDEV"))),d.needsMergeProps&&S.push(r.types.importSpecifier(r.types.identifier("mergeProps"),r.types.identifier("mergeProps"))),E.push(r.types.importDeclaration(S,r.types.stringLiteral(o)))}if(d.needsCreateMemo&&!g.scope.hasBinding("createMemo")&&E.push(r.types.importDeclaration([r.types.importSpecifier(r.types.identifier("createMemo"),r.types.identifier("createMemo"))],r.types.stringLiteral(M==="imperative"?P:d.libModule??"@fluixi/core"))),d.needsControlFlowImport&&d.controlFlowComponents.size>0){let S=Array.from(d.controlFlowComponents).filter(w=>!g.scope.hasBinding(w)),x=d.libModule??"@fluixi/core",v=S.filter(w=>pe.has(w)),R=S.filter(w=>it.has(w)),L=S.filter(w=>!it.has(w)&&!pe.has(w)),F=(w,ne)=>r.types.importDeclaration(w.map(b=>r.types.importSpecifier(r.types.identifier(b),r.types.identifier(b))),r.types.stringLiteral(ne));L.length>0&&E.push(F(L,I)),R.length>0&&E.push(F(R,x)),v.length>0&&E.push(F(v,V))}let k=[];if(d.deferredComponents.size>0){for(let[S,x]of d.deferredComponents)g.scope.hasBinding(S)||k.push(r.types.variableDeclaration("const",[r.types.variableDeclarator(r.types.identifier(S),r.types.callExpression(r.types.identifier("deferred"),[r.types.arrowFunctionExpression([],r.types.callExpression(r.types.import(),[r.types.stringLiteral(x.module)])),r.types.objectExpression([r.types.objectProperty(r.types.identifier("strategy"),vn(x.strategy)),r.types.objectProperty(r.types.identifier("export"),r.types.stringLiteral(x.export))])]))]));k.length>0&&!g.scope.hasBinding("deferred")&&E.push(r.types.importDeclaration([r.types.importSpecifier(r.types.identifier("deferred"),r.types.identifier("deferred"))],r.types.stringLiteral(d.libModule??"@fluixi/core")))}if(d.resolvedComponents.size>0){let S=new Map;for(let[x,v]of d.resolvedComponents){if(g.scope.hasBinding(x))continue;let R=S.get(v.module)??[];R.push({local:x,exported:v.export}),S.set(v.module,R)}for(let[x,v]of S)E.push(r.types.importDeclaration(v.map(({local:R,exported:L})=>L==="default"?r.types.importDefaultSpecifier(r.types.identifier(R)):r.types.importSpecifier(r.types.identifier(R),r.types.identifier(L))),r.types.stringLiteral(x)))}if(f&&d.delegatedEvents.size>0){E.push(r.types.importDeclaration([r.types.importSpecifier(r.types.identifier("delegateEvents"),r.types.identifier("delegateEvents"))],r.types.stringLiteral(M==="imperative"?C:"@fluixi/jsx")));let S=r.types.arrayExpression(Array.from(d.delegatedEvents).map(v=>r.types.stringLiteral(v))),x=r.types.expressionStatement(r.types.callExpression(r.types.identifier("delegateEvents"),[S]));g.node.body.unshift(x)}if(p&&d.staticElements.size>0){let S=[];d.staticElements.forEach((x,v)=>{S.push(r.types.variableDeclaration("const",[r.types.variableDeclarator(r.types.identifier(v),x)]))}),g.node.body.unshift(...S)}if(k.length>0&&g.node.body.unshift(...k),d.staticTemplates.size>0){let S=[];for(let[x,v]of d.staticTemplates){let L=x.startsWith("svg:")?x.slice(4):x;S.push(r.types.variableDeclaration("const",[r.types.variableDeclarator(r.types.identifier(v),r.types.stringLiteral(L))]))}g.node.body.unshift(...S)}}E.length>0&&g.node.body.unshift(...yn(E))}},JSXElement(g,d){if(d.hasJSX=!0,M==="imperative"&&H==="ir"){g.replaceWith(st(g.node,d));return}let E=g.node,k=E.openingElement;if(r.types.isJSXIdentifier(k.name)&&pe.has(k.name.name)&&!d.componentResolver?.resolve(k.name.name)&&(d.controlFlowComponents.add(k.name.name),d.needsControlFlowImport=!0),r.types.isJSXIdentifier(k.name)&&ue.has(k.name.name)&&(d.controlFlowComponents.add(k.name.name),h)){let x=An(E,d);if(x){g.replaceWith(x);return}}if(p&&M!=="imperative"&&vt(E,d)){let x=$n(E,d);if(x){g.replaceWith(x);return}}let S=hn(E,d,{runtime:n,pragma:i,development:a,detectReactivity:l,useLitHTML:c,autoShow:W});g.replaceWith(S)},JSXFragment(g,d){if(d.hasJSX=!0,M==="imperative"&&H==="ir"){g.replaceWith(st(g.node,d));return}let E=de(g.node,d,{runtime:n,pragmaFrag:s,development:a});g.replaceWith(E)},CallExpression(g,d){if(!l)return;let E=g.node.callee;E.name,r.types.isIdentifier(E)&&(E.name==="createSignal"||E.name==="createStore"||E.name==="useContext"||E.name==="useLocation")&&(d.hasReactivity=!0)},JSXExpressionContainer(g){},TaggedTemplateExpression(g,d){if(Rt&&M==="imperative"&&r.types.isIdentifier(g.node.tag)&&(g.node.tag.name===bt||g.node.tag.name==="svg")){g.replaceWith(Rn(g.node,d));return}}}}});function hn(e,t,n){let{runtime:o,pragma:i,development:s,autoShow:a=!0}=n;return o==="automatic"?te(e,t,s,a):wn(e,t,i)}var En=new Set(["svg","path","circle","rect","line","polygon","polyline","ellipse","g","defs","clipPath","text"]);function ot(e,t,n){return t.length>0?(n.needsMergeProps=!0,r.types.callExpression(r.types.identifier("mergeProps"),[...t,r.types.objectExpression(e)])):r.types.objectExpression(e)}function dt(e){return e.length===1?e[0]:r.types.arrayExpression(e)}function xn(e,t,n,o,i,s){if(!t){let u=[...n];return i.length>0&&u.push(r.types.objectMethod("get",r.types.identifier("children"),[],r.types.blockStatement([r.types.returnStatement(dt(i))]))),mt(e,ot(u,o,s),s)}let a=e.value,l=En.has(a),c=r.types.identifier("_el$"),p=[];s.needsCreateNativeElement=!0;let f=[e];if(l&&f.push(r.types.booleanLiteral(!0)),p.push(r.types.variableDeclaration("const",[r.types.variableDeclarator(c,r.types.callExpression(r.types.identifier("createNativeElement"),f))])),n.length>0||o.length>0){s.needsSpread=!0;let u=[r.types.objectProperty(r.types.identifier("element"),c),r.types.objectProperty(r.types.identifier("props"),ot(n,o,s))];l&&u.push(r.types.objectProperty(r.types.identifier("isSVG"),r.types.booleanLiteral(!0))),p.push(r.types.expressionStatement(r.types.callExpression(r.types.identifier("spread"),[r.types.objectExpression(u)])))}if(i.length>0){s.needsInsert=!0;for(let u of i){let y=r.types.isArrowFunctionExpression(u)||r.types.isFunctionExpression(u)||r.types.isCallExpression(u)&&r.types.isIdentifier(u.callee)&&u.callee.name==="createMemo"?[r.types.cloneNode(c),u,r.types.nullLiteral()]:[r.types.cloneNode(c),u];p.push(r.types.expressionStatement(r.types.callExpression(r.types.identifier("insert"),y)))}}return p.push(r.types.returnStatement(c)),r.types.callExpression(r.types.arrowFunctionExpression([],r.types.blockStatement(p)),[])}function Sn(e,t){let n=null;if(t.value)if(r.types.isStringLiteral(t.value))n=t.value.value;else throw new J(`'${e}' needs a literal value, not an expression — the strategy is compile-time.`);return B(e,n)}function vn(e){let t=[r.types.objectProperty(r.types.identifier("kind"),r.types.stringLiteral(e.kind))];return e.kind==="visible"&&e.rootMargin&&t.push(r.types.objectProperty(r.types.identifier("rootMargin"),r.types.stringLiteral(e.rootMargin))),e.kind==="interaction"&&t.push(r.types.objectProperty(r.types.identifier("events"),r.types.arrayExpression(e.events.map(n=>r.types.stringLiteral(n))))),e.kind==="media"&&t.push(r.types.objectProperty(r.types.identifier("query"),r.types.stringLiteral(e.query))),r.types.objectExpression(t)}function bn(e,t){return!X(e)||!X(t)?j:e}function mt(e,t,n){r.types.isIdentifier(e)&&ue.has(e.name)&&(n.controlFlowComponents.add(e.name),n.needsControlFlowImport=!0);let o=!1;if(r.types.isIdentifier(e)&&!ue.has(e.name)&&n.componentResolver){let i=n.componentResolver.resolve(e.name);if(i){let s=n.pendingLoad??j,a=n.resolvedComponents.has(e.name);if(X(s)&&!a){let l=n.deferredComponents.get(e.name),c=l?bn(l.strategy,s):s;X(c)?n.deferredComponents.set(e.name,{...i,strategy:c}):(n.deferredComponents.delete(e.name),n.resolvedComponents.set(e.name,i))}else n.deferredComponents.delete(e.name),n.resolvedComponents.set(e.name,i);o=!0}}return n.pendingLoad=void 0,!o&&r.types.isIdentifier(e)&&pe.has(e.name)&&(n.controlFlowComponents.add(e.name),n.needsControlFlowImport=!0),n.backend==="imperative"?(n.needsCreateComponent=!0,n.needsCreateMemo=!0,r.types.callExpression(r.types.identifier("createMemo"),[r.types.arrowFunctionExpression([],r.types.callExpression(r.types.identifier("createComponent"),[e,t]))])):r.types.callExpression(r.types.identifier("jsx"),[e,t])}function ft(e,t,n){if(!t||t.length===0)return e;let o=new Map;for(let i of t){let s=`${i.svg?"svg:":""}${i.html}`,a=n.staticTemplates.get(s);a||(a=`_tmpl$${n.staticTemplates.size}`,n.staticTemplates.set(s,a)),o.set(i.id,a)}return e.replace(/_tmpl\$\d+/g,i=>o.get(i)??i)}function st(e,t){let n=new Set,o=Ie(e,n);ge(o,{resolver:t.componentResolver,modules:{controlFlowModule:t.controlFlowModule,coreModule:t.libModule,routerModule:t.routerModule},strategyFor:c=>c.load}),he(o);let{code:i,imports:s,templates:a}=$.emit(o,{templateClone:t.templateClone,partialTemplates:t.partialTemplates});for(let c of s)n.add(c);for(let c of n)t.irImports.add(c);Ne(o,t);let l=ft(i,a,t);return r.template.expression(l,{placeholderPattern:!1,plugins:["typescript"]})()}function yn(e){let t=new Map,n=[];for(let o of e){let i=o.source.value;if(!o.specifiers.every(l=>r.types.isImportSpecifier(l))){n.push(o);continue}let a=t.get(i);if(!a){let l=new Set(o.specifiers.map(c=>c.local.name));t.set(i,{decl:o,names:l}),n.push(o);continue}for(let l of o.specifiers)a.names.has(l.local.name)||(a.names.add(l.local.name),a.decl.specifiers.push(l))}return n}function Rn(e,t){let n=new Set,o=r.types.isIdentifier(e.tag)&&e.tag.name==="svg",i=ce(e,n,{svg:o});ge(i,{resolver:t.componentResolver,modules:{controlFlowModule:t.controlFlowModule,coreModule:t.libModule,routerModule:t.routerModule},strategyFor:p=>p.load}),he(i);let{code:s,imports:a,templates:l}=$.emit(i,{templateClone:t.templateClone,partialTemplates:t.partialTemplates});for(let p of a)n.add(p);for(let p of n)t.irImports.add(p);Ne(i,t),t.hasLitIR=!0;let c=r.template.expression(ft(s,l,t),{placeholderPattern:!1,plugins:["typescript"]})();return Cn(c,e),c}function Cn(e,t){if(!t.loc)return;let n=new Set,o=i=>{if(!n.has(i)){n.add(i),i.loc||(i.loc=t.loc,i.start=t.start,i.end=t.end);for(let s of r.types.VISITOR_KEYS[i.type]??[]){let a=i[s];if(Array.isArray(a))for(let l of a)l&&typeof l=="object"&&"type"in l&&o(l);else a&&typeof a=="object"&&"type"in a&&o(a)}}};o(e)}function Ne(e,t){if(e.kind==="component"&&e.source&&(e.source.origin==="builtin"?(t.controlFlowComponents.add(e.name),t.needsControlFlowImport=!0):X(e.source.loading)&&!t.resolvedComponents.has(e.name)?t.deferredComponents.set(e.name,{module:e.source.module,export:e.source.export,strategy:e.source.loading}):(t.deferredComponents.delete(e.name),t.resolvedComponents.set(e.name,{module:e.source.module,export:e.source.export}))),(e.kind==="element"||e.kind==="component"||e.kind==="control")&&"props"in e)for(let n of e.props)n.kind==="event"&&n.event?.delegated&&t.delegatedEvents.add(n.event.name);if("children"in e&&e.children)for(let n of e.children)Ne(n,t)}function In(e){return e.map(t=>{if(r.types.isObjectProperty(t)){let n=t.key,o=t.computed,i=t.value;return r.types.objectMethod("get",n,[],r.types.blockStatement([r.types.returnStatement(i)]),o)}return t})}function te(e,t,n,o=!0){let i=e.openingElement,s=e.children,a=gt(i.name),l=r.types.isJSXIdentifier(i.name)&&/^[a-z]/.test(i.name.name),c=Et(i.attributes,t,l,r.types.isJSXIdentifier(i.name)?i.name.name:""),p=c.props,f=c.spreads;l||(p=In(p));let u=ke(s,t,o);if(t.backend==="imperative")return xn(a,l,p,f,u,t);if(u.length>0){let I=u.length===1?u[0]:r.types.arrayExpression(u);p.push(r.types.objectProperty(r.types.identifier("children"),I))}let h;if(f.length>0){let I=p.length>0?r.types.objectExpression(p):r.types.objectExpression([]);t.needsMergeProps=!0,h=r.types.callExpression(r.types.identifier("mergeProps"),[...f,I])}else h=r.types.objectExpression(p);let y=n?"jsxDEV":u.length>1?"jsxs":"jsx",C=[a,h];return n&&C.push(r.types.identifier("undefined"),r.types.booleanLiteral(!1),r.types.identifier("undefined"),r.types.identifier("undefined")),r.types.callExpression(r.types.identifier(y),C)}function wn(e,t,n){let o=e.openingElement,i=e.children,s=gt(o.name),a=r.types.isJSXIdentifier(o.name)&&/^[a-z]/.test(o.name.name),{props:l,spreads:c}=Et(o.attributes,t,a,r.types.isJSXIdentifier(o.name)?o.name.name:""),p=ke(i,t,t.autoShow??!0),f;if(c.length>0){let h=l.length>0?r.types.objectExpression(l):r.types.objectExpression([]);t.needsMergeProps=!0,f=r.types.callExpression(r.types.identifier("mergeProps"),[...c,h])}else f=l.length>0?r.types.objectExpression(l):r.types.nullLiteral();let u=[s,f,...p];return r.types.callExpression(r.types.identifier(n),u)}function de(e,t,n){let{runtime:o,pragmaFrag:i,development:s}=n,a=ke(e.children,t,t.autoShow??!0);if(t.backend==="imperative")return a.length===0?r.types.nullLiteral():dt(a);if(o==="automatic"){let l=s?"jsxDEV":a.length>1?"jsxs":"jsx",c=r.types.objectExpression([r.types.objectProperty(r.types.identifier("children"),a.length===1?a[0]:r.types.arrayExpression(a))]),p=[r.types.identifier("Fragment"),c];return s&&p.push(r.types.identifier("undefined"),r.types.booleanLiteral(!1),r.types.identifier("undefined"),r.types.identifier("undefined")),r.types.callExpression(r.types.identifier(l),p)}else return r.types.callExpression(r.types.identifier(i),a)}function gt(e){if(r.types.isJSXIdentifier(e)){let t=e.name;return t[0]===t[0].toLowerCase()?r.types.stringLiteral(t):r.types.identifier(t)}return r.types.isJSXMemberExpression(e)?ht(e):r.types.isJSXNamespacedName(e)?r.types.stringLiteral(`${e.namespace.name}:${e.name.name}`):r.types.stringLiteral("div")}function ht(e){let t;return r.types.isJSXIdentifier(e.object)?t=r.types.identifier(e.object.name):t=ht(e.object),r.types.memberExpression(t,r.types.identifier(e.property.name))}function Nn(e){return/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(e)}function Et(e,t,n=!0,o=""){let i=[],s=[],a=gn[o],l=[];t.pendingLoad=void 0;for(let c of e)if(r.types.isJSXSpreadAttribute(c))s.push(c.argument);else if(r.types.isJSXAttribute(c)){let p=kn(c.name);if(q(p)){t.pendingLoad=Sn(p,c);continue}if(r.types.isJSXNamespacedName(c.name)&&c.name.namespace.name==="use"){let P=r.types.identifier(c.name.name.name),W=c.value===null?null:at(c.value,t,p,n);l.push(r.types.arrayExpression(W?[P,r.types.arrowFunctionExpression([],W)]:[P]));continue}let f=at(c.value,t,p,n);if(pt.test(p)){let P=p.slice(2).toLowerCase();ut.includes(P)&&t.delegatedEvents.add(P)}let u=Nn(p)?r.types.identifier(p):r.types.stringLiteral(p),h=c.value,y=r.types.isJSXElement(h)||r.types.isJSXFragment(h)||r.types.isJSXExpressionContainer(h)&&(r.types.isJSXElement(h.expression)||r.types.isJSXFragment(h.expression)),C=!n&&p===a,I=r.types.isJSXExpressionContainer(h)&&!r.types.isJSXEmptyExpression(h.expression)?h.expression:null,V=!n&&!!I&&xt(I,p);!n&&y||C||V?i.push(r.types.objectMethod("get",u,[],r.types.blockStatement([r.types.returnStatement(f)]))):i.push(r.types.objectProperty(u,f))}return l.length>0&&i.push(r.types.objectProperty(r.types.identifier("use"),r.types.arrayExpression(l))),{props:i,spreads:s}}function kn(e){return r.types.isJSXIdentifier(e)?e.name==="class"?"className":e.name:r.types.isJSXNamespacedName(e)?`${e.namespace.name}:${e.name.name}`:"unknown"}function at(e,t,n="",o=!0){if(e===null)return r.types.booleanLiteral(!0);if(r.types.isStringLiteral(e))return e.value.includes(`
|
|
2
|
-
`)?r.types.stringLiteral(e.value.replace(/\s+/g," ").trim()):e;if(r.types.isJSXExpressionContainer(e)){if(r.types.isJSXEmptyExpression(e.expression))return r.types.booleanLiteral(!0);let i=e.expression;return o&&xt(i,n)?r.types.arrowFunctionExpression([],i):i}return r.types.isJSXElement(e)?te(e,t,!1,t.autoShow??!0):r.types.isJSXFragment(e)?de(e,t,{runtime:"automatic",pragmaFrag:"Fragment",development:!1}):r.types.booleanLiteral(!0)}function xt(e,t){return pt.test(t)||t.startsWith("on:")||t==="ref"||t.startsWith("use:")||r.types.isArrowFunctionExpression(e)||r.types.isFunctionExpression(e)||r.types.isIdentifier(e)||r.types.isStringLiteral(e)||r.types.isNumericLiteral(e)||r.types.isBooleanLiteral(e)||r.types.isNullLiteral(e)?!1:!!(r.types.isCallExpression(e)||r.types.isOptionalCallExpression(e)||r.types.isMemberExpression(e)||r.types.isOptionalMemberExpression(e)||r.types.isLogicalExpression(e)||r.types.isConditionalExpression(e)||r.types.isBinaryExpression(e)||r.types.isUnaryExpression(e)||r.types.isTemplateLiteral(e)||r.types.isObjectExpression(e)||r.types.isArrayExpression(e))}function Ln(e){let t=e.split(/\r\n|\n|\r/),n=0;for(let i=0;i<t.length;i++)/[^ \t]/.test(t[i])&&(n=i);let o="";for(let i=0;i<t.length;i++){let s=t[i].replace(/\t/g," ");i!==0&&(s=s.replace(/^ +/,"")),i!==t.length-1&&(s=s.replace(/ +$/,"")),s&&(i!==n&&(s+=" "),o+=s)}return o}function ke(e,t,n=!0){let o=[];for(let i of e)if(r.types.isJSXText(i)){let s=Ln(i.value);s&&o.push(r.types.stringLiteral(s))}else if(r.types.isJSXExpressionContainer(i)){if(!r.types.isJSXEmptyExpression(i.expression)){let s=i.expression;if(n){let a=Mn(s,t)??Jn(s,t);if(a){o.push(a);continue}}else{let a=Tn(s,t);if(a){o.push(a);continue}}Xn(s)?o.push(r.types.arrowFunctionExpression([],s)):o.push(s)}}else r.types.isJSXElement(i)?o.push(te(i,t,!1,t.autoShow??!0)):r.types.isJSXFragment(i)?o.push(de(i,t,{runtime:"automatic",pragmaFrag:"Fragment",development:!1})):r.types.isJSXSpreadChild(i)&&o.push(i.expression);return o}function Mn(e,t){if(!r.types.isArrowFunctionExpression(e)||e.params.length!==0||e.async)return null;let n=e.body;if(r.types.isLogicalExpression(n)&&n.operator==="&&"){let o=T(n.right);if(o)return ee(O(n.left),o,null,t)}if(r.types.isConditionalExpression(n)){let o=T(n.consequent);if(o){let i=Le(n.alternate,t);return ee(O(n.test),o,i,t,!0)}}return null}function Jn(e,t){if(r.types.isLogicalExpression(e)&&e.operator==="&&"){let n=T(e.right);if(n)return ee(O(e.left),n,null,t)}if(r.types.isConditionalExpression(e)){let n=T(e.consequent);if(n){let o=Le(e.alternate,t);return ee(O(e.test),n,o,t)}}return null}function Tn(e,t){let n=r.types.isArrowFunctionExpression(e)&&e.params.length===0&&!e.async&&r.types.isExpression(e.body)?e.body:e;if(r.types.isConditionalExpression(n)){let o=O(n.test),s=T(n.consequent)??n.consequent,l=T(n.alternate)??n.alternate,c=r.types.conditionalExpression(o,s,l);return we(n.consequent)||we(n.alternate)?null:(t.needsCreateMemo=!0,r.types.callExpression(r.types.identifier("createMemo"),[r.types.arrowFunctionExpression([],c)]))}if(r.types.isLogicalExpression(n)&&n.operator==="&&"){let o=O(n.left),s=T(n.right)??n.right,a=r.types.logicalExpression("&&",o,s);return we(n.right)?null:(t.needsCreateMemo=!0,r.types.callExpression(r.types.identifier("createMemo"),[r.types.arrowFunctionExpression([],a)]))}return null}function Le(e,t){if(Pn(e))return null;let n=T(e);if(n)return St(n,t);if(r.types.isConditionalExpression(e)){let o=e,i=T(o.consequent);if(i){let s=Le(o.alternate,t);return ee(O(o.test),i,s,t)}}return e}function lt(e){return r.types.isJSXElement(e)||r.types.isJSXFragment(e)}function we(e){let t=T(e);if(!t||!r.types.isJSXElement(t))return!1;let n=t.openingElement.name;return r.types.isJSXIdentifier(n)&&ue.has(n.name)}function T(e){return lt(e)?e:r.types.isArrowFunctionExpression(e)&&e.params.length===0&&!e.async&<(e.body)?e.body:null}function O(e){return r.types.isArrowFunctionExpression(e)&&e.params.length===0&&!e.async&&r.types.isExpression(e.body)?e.body:e}function Pn(e){return r.types.isNullLiteral(e)||r.types.isIdentifier(e)&&e.name==="undefined"||r.types.isBooleanLiteral(e)&&e.value===!1}function St(e,t){return r.types.isJSXElement(e)?te(e,t,!1,t.autoShow??!0):de(e,t,{runtime:"automatic",pragmaFrag:"Fragment",development:!1})}function ee(e,t,n,o,i=!1){o.controlFlowComponents.add("Show"),o.needsControlFlowImport=!0;let s=St(t,o),a=[r.types.objectProperty(r.types.identifier("when"),r.types.arrowFunctionExpression([],e)),r.types.objectProperty(r.types.identifier("children"),s)];return n&&a.push(r.types.objectProperty(r.types.identifier("fallback"),n)),mt(r.types.identifier("Show"),r.types.objectExpression(a),o)}function Xn(e){return r.types.isMemberExpression(e)||r.types.isOptionalMemberExpression(e)?!(!e.computed&&r.types.isIdentifier(e.property,{name:"children"})):r.types.isCallExpression(e)||r.types.isOptionalCallExpression(e)?!0:r.types.isIdentifier(e)?!1:!!(r.types.isLogicalExpression(e)||r.types.isConditionalExpression(e)||r.types.isBinaryExpression(e)||r.types.isUnaryExpression(e)||r.types.isTemplateLiteral(e))}function vt(e,t){let n=e.openingElement;if(!r.types.isJSXIdentifier(n.name))return!1;let o=n.name.name;if(o[0]!==o[0].toLowerCase())return!1;for(let i of n.attributes){if(r.types.isJSXSpreadAttribute(i))return!1;if(r.types.isJSXAttribute(i)){let s=i.value;if(r.types.isJSXExpressionContainer(s)&&!r.types.isStringLiteral(s.expression)&&!r.types.isNumericLiteral(s.expression))return!1}}for(let i of e.children)if(r.types.isJSXElement(i)&&!vt(i,t)||r.types.isJSXExpressionContainer(i))return!1;return!0}function $n(e,t){let n=`_$static${t.staticCounter++}`,o=te(e,t,!1);return t.staticElements.set(n,o),r.types.identifier(n)}function An(e,t){let n=e.openingElement.name.name;return n==="Show"?jn(e,t):n==="For"?On(e,t):null}function jn(e,t){return null}function On(e,t){return null}var Fn=z;function Dn(e){return[z,e]}function me(e={}){return{plugins:[[z,{runtime:"automatic",importSource:"@fluixi/jsx",development:!1,detectReactivity:!0,useLitHTML:!0,hoistStatics:!0,delegateEvents:!0,optimizeControlFlow:!0,sourceMaps:!0,...e}]]}}var _n={production:me({development:!1,hoistStatics:!0,delegateEvents:!0,optimizeControlFlow:!0}),development:me({development:!0,hoistStatics:!1,sourceMaps:!0}),minimal:me({detectReactivity:!1,useLitHTML:!1,hoistStatics:!1,delegateEvents:!1,optimizeControlFlow:!1})};
|
|
1
|
+
"use strict";var Ze=Object.create;var z=Object.defineProperty;var Qe=Object.getOwnPropertyDescriptor;var et=Object.getOwnPropertyNames;var tt=Object.getPrototypeOf,nt=Object.prototype.hasOwnProperty;var rt=(e,t)=>{for(var n in t)z(e,n,{get:t[n],enumerable:!0})},xe=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of et(t))!nt.call(e,r)&&r!==n&&z(e,r,{get:()=>t[r],enumerable:!(o=Qe(t,r))||o.enumerable});return e};var Re=(e,t,n)=>(n=e!=null?Ze(tt(e)):{},xe(t||!e||!e.__esModule?z(n,"default",{value:e,enumerable:!0}):n,e)),ot=e=>xe(z({},"__esModule",{value:!0}),e);var Zt={};rt(Zt,{babelPluginReactiveJSX:()=>Gt,createPlugin:()=>Kt,createPreset:()=>oe,default:()=>$,presets:()=>Yt});module.exports=ot(Zt);var Ge=require("@babel/helper-plugin-utils");var it=e=>"components"in e;function ye(e,t){return e.replace(/\$(\d+)/g,(n,o)=>t[Number(o)]??n)}function st(e,t){return typeof t=="string"?{module:t,export:e}:t}function Ee(e=[]){let t=new Map,n=[],o=[];for(let s of e){if(!it(s)){o.push(s);continue}for(let[i,l]of Object.entries(s.components)){let p=st(i,l),u=t.get(i);if(u&&u.module!==p.module){let d=n.find(g=>g.name===i);d?d.modules.push(p.module):n.push({name:i,modules:[u.module,p.module]});continue}t.set(i,p)}}let r=new Map;return{resolve:s=>{if(r.has(s))return r.get(s);let i=t.get(s);if(!i)for(let l of o){let p=s.match(new RegExp(l.match.source,l.match.flags.replace("g","")));if(p){i={module:ye(l.module,p),export:l.export?ye(l.export,p):s};break}}return r.set(s,i),i},names:()=>[...t.keys()],conflicts:()=>n}}var ie=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],L=["Suspense","SuspenseList","Await"],M=["Router","Outlet","Redirect","Link"],tn=[...ie,...L,...M],se=new Set([...ie,...L]);function Ne(e={}){let{controlFlowModule:t="@fluixi/dom",coreModule:n="@fluixi/core",routerModule:o="@fluixi/core/router-next"}=e,r={};for(let a of ie)r[a]=t;for(let a of L)r[a]=n;for(let a of M)r[a]=o;return r}var V={kind:"eager"},at=["pointerdown","focusin","keydown"],be=new Set(["eager","idle","visible","interaction","media","never"]),I=class extends Error{};function ae(e){return e.startsWith("load:")}function W(e,t){let n=e.slice(5);if(!be.has(n))throw new I(`Unknown load strategy 'load:${n}'. Expected one of ${[...be].join(", ")}.`);switch(n){case"eager":return V;case"idle":return{kind:"idle"};case"never":return{kind:"never"};case"visible":return t?{kind:"visible",rootMargin:t}:{kind:"visible"};case"interaction":return{kind:"interaction",events:t?lt(t):[...at]};case"media":if(!t)throw new I(`'load:media' needs a query, e.g. load:media="(min-width: 1024px)".`);return{kind:"media",query:t};default:throw new I(`Unhandled load strategy '${n}'.`)}}function lt(e){let t=e.split(/[\s,]+/).map(n=>n.trim()).filter(Boolean);if(t.length===0)throw new I("'load:interaction' was given no event names.");return t}function U(e){return e.kind!=="eager"&&e.kind!=="never"}function q(e,t={}){let{resolver:n,isBound:o,modules:r,strategyFor:a}=t,s=Ne(r),i=new Map,l=new Set,p=d=>{let{name:g}=d;if(!g||g.includes(".")||o?.(g))return;let k=u(g);if(!k){l.add(g);return}let w=k.origin==="builtin"&&se.has(g)?V:a?.(d)??V;d.source={...k,loading:w},i.set(g,d.source)},u=d=>{if(se.has(d))return{module:s[d],export:d,origin:"builtin"};let g=n?.resolve(d);if(g)return{module:g.module,export:g.export,origin:"rule"};if(M.includes(d))return{module:s[d],export:d,origin:"builtin"}};return G(e,d=>{d.kind==="component"&&p(d)}),{resolved:i,unresolved:[...l]}}function G(e,t){let n=Array.isArray(e)?e:[e];for(let o of n){t(o);let r=o.children;r&&G(r,t)}}function K(e){let t=[];G(e,a=>{a.kind==="component"&&a.source&&t.push(a)});let n=new Set,o=new Set;for(let a of t){let{module:s,loading:i}=a.source;i.kind==="eager"&&n.add(s),i.kind==="never"&&o.add(s)}let r=new Map;for(let a of t){let s=a.source;U(s.loading)&&n.has(s.module)&&(s.loading={kind:"eager"},r.set(s.module,(r.get(s.module)??0)+1))}return{collapsed:r,conflicted:[...o].filter(a=>n.has(a))}}var c=require("@babel/core");var S=require("@babel/core"),he=Re(require("@babel/generator"),1);var ct=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),ke={className:"class",htmlFor:"for"},pt=new Set(["innerHTML","outerHTML","innerText","textContent","value","checked","selected","muted","defaultValue","defaultChecked","children","ref"]),dt=new Set(["script","style","textarea","title"]);function le(e){return dt.has(e)}function Se(e){return ke[e]??e}function P(e){return e.kind!=="attr"||e.expr!==void 0||e.name.includes(":")?!1:!pt.has(e.name)}function ce(e){if(!e.static||le(e.tag))return!1;for(let t of e.props)if(!P(t))return!1;for(let t of e.children)if(t.kind!=="text"&&!(t.kind==="element"&&ce(t)))return!1;return!0}function O(e){let t=e.props.map(mt).filter(Boolean).join(""),n=`<${e.tag}${t}>`;return ct.has(e.tag)?n:`${n}${e.children.map(ut).join("")}</${e.tag}>`}function ut(e){if(e.kind==="text")return gt(e.value);if(e.kind!=="element")throw new Error(`serializeStatic: unexpected ${e.kind}`);return O(e)}function mt(e){let t=ke[e.name]??e.name,n=e.literal;return n===!0||n===void 0?` ${t}`:n===!1||n===null?"":` ${t}="${ft(String(n))}"`}function ft(e){return e.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function gt(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}var ht="<!--fx-->",vt="<!--fx/-->";function Z(e){return e.kind==="expr"||e.kind==="component"||e.kind==="control"}function xt(e){return e.kind==="text"||e.kind==="element"&&Ie(e)}function Ie(e){return e.svg||le(e.tag)||!e.props.every(t=>P(t))?!1:e.children.every(t=>xt(t)||Z(t))}function Y(e){if(Z(e))return!0;let t=e.children;return t?t.some(Y):!1}function Ce(e){for(let t=0;t<e.children.length;t++){let n=e.children[t];if(n.kind==="text"&&(n.value===""||e.children[t+1]?.kind==="text"))return!1}return e.children.every(t=>t.kind!=="element"||Ce(t))}function we(e){if(!Ie(e)||!Ce(e)||!e.children.some(Y))return null;let t=[],n=[],o=0,r=s=>{let i=`_n$${o++}`;return t.push({ref:i,expr:s}),i};return a(e,"_el$"),{html:Rt(e),tag:e.tag,steps:t,holes:n};function a(s,i){let l=-1;s.children.forEach((u,d)=>{Y(u)&&(l=d)});let p=null;for(let u=0;u<=l;u++){let d=s.children[u],g=p?`${p}.nextSibling`:`${i}.firstChild`;if(Z(d)){let w=r(g),m=r(`holeEnd(${w})`);n.push({parentRef:i,startRef:w,endRef:m,node:d}),p=m;continue}let k=r(g);d.kind==="element"&&Y(d)&&a(d,k),p=k}}}function Rt(e){return O(Te(e)).split(Me).join(ht+vt)}function Te(e){return{...e,children:e.children.map(t=>Z(t)?{kind:"text",value:Me}:t.kind==="element"?Te(t):t)}}var Me="\0fx-hole\0";var pe={version:1,module:"@fluixi/dom",symbols:["createNativeElement","insert","spread","setAttribute","delegateEvents","createComponent","createMemo","untrack","Show","For","Index","Switch","Match","Dynamic","ErrorBoundary"]},fn={version:2,module:"@fluixi/dom",symbols:[...pe.symbols,"template","cloneTemplate","walk"]};var yt={show:"Show",for:"For",index:"Index",switch:"Switch",match:"Match",dynamic:"Dynamic",errorBoundary:"ErrorBoundary",suspense:"Suspense"};function Et(e){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e)}function Le(e){return Et(e)?e:JSON.stringify(e)}function Nt(e){return e.expr!==void 0?e.reactive?`() => (${e.expr})`:`(${e.expr})`:JSON.stringify(e.literal??!0)}function bt(e){return e.expr!==void 0?`(${e.expr})`:JSON.stringify(e.literal??!0)}function kt(e,t,n){let o=e.filter(i=>i.kind==="spread"),a=e.filter(i=>i.kind!=="spread").map(i=>`${Le(i.name)}: ${Nt(i)}`);t!=null&&a.push(`children: ${t}`);let s=`{ ${a.join(", ")} }`;return o.length>0?(n.add("mergeProps"),`mergeProps(${o.map(i=>i.expr).join(", ")}, ${s})`):s}function Pe(e,t,n){return e.length===1?A(e[0],t,n):`[${e.map(o=>A(o,t,n)).join(", ")}]`}function $e(e,t,n,o,r){o.add("createMemo"),o.add("createComponent");let a=t.filter(p=>p.kind==="spread"),i=t.filter(p=>p.kind!=="spread").map(p=>`get ${Le(p.name)}() { return ${bt(p)}; }`);n.length>0&&i.push(`get children() { return ${Pe(n,o,r)}; }`);let l=`{ ${i.join(", ")} }`;return a.length>0&&(o.add("mergeProps"),l=`mergeProps(${a.map(p=>p.expr).join(", ")}, ${l})`),`createMemo(() => createComponent(${e}, ${l}))`}function St(e,t){let n=Se(t.name),o=t.literal;return o===!0||o===void 0?`${e}.setAttribute(${JSON.stringify(n)}, "");`:o===!1||o===null?"":`${e}.setAttribute(${JSON.stringify(n)}, ${JSON.stringify(String(o))});`}var Oe=!1;function A(e,t,n){switch(e.kind){case"text":return JSON.stringify(e.value);case"expr":return e.reactive?`() => (${e.code})`:`(${e.code})`;case"fragment":return e.children.length===0?"null":Pe(e.children,t,n);case"component":return $e(e.name,e.props,e.children,t,n);case"control":{let o=yt[e.control]??e.control;return t.add(o),$e(o,e.props,e.children,t,n)}case"element":{if(n&&e.static&&!e.svg&&ce(e)){t.add("templateNode");let i=`_tmpl$${n.length}`;return n.push({id:i,html:O(e),tag:e.tag,svg:!1}),`templateNode(${i}, ${JSON.stringify(e.tag)})`}if(n&&Oe){let i=we(e);if(i){t.add("templateNode"),t.add("insert"),t.add("holeEnd"),t.add("holeContent"),t.add("holeScope");let l=`_tmpl$${n.length}`;n.push({id:l,html:i.html,tag:i.tag,svg:!1});let p=[`const _el$ = templateNode(${l}, ${JSON.stringify(i.tag)}, true);`];for(let u of i.steps)p.push(`const ${u.ref} = ${u.expr};`);for(let u of i.holes)p.push(`insert(${u.parentRef}, holeScope(${u.startRef}, () => (${A(u.node,t,n)})), ${u.endRef}, holeContent(${u.startRef}, ${u.endRef}));`);return p.push("return _el$;"),`(() => { ${p.join(" ")} })()`}}t.add("createNativeElement");let o=JSON.stringify(e.tag),r="_el$",a=[],s=e.svg?`${o}, true`:o;if(a.push(`const ${r} = createNativeElement(${s});`),e.props.length>0)if(!e.svg&&e.props.every(P))for(let i of e.props)a.push(St(r,i));else{t.add("spread");let i=e.svg?", isSVG: true":"";a.push(`spread({ element: ${r}, props: ${kt(e.props,null,t)}${i} });`)}for(let i of e.children){t.add("insert");let l=A(i,t,n),p=i.kind==="expr"&&i.reactive||i.kind==="component"||i.kind==="control";a.push(p?`insert(${r}, ${l}, null);`:`insert(${r}, ${l});`)}return a.push(`return ${r};`),`(() => { ${a.join(" ")} })()`}}}function D(e,t){if(!t||t.length===0)return e;let n=new Map(t.map(o=>[o.id,JSON.stringify(o.html)]));return e.replace(/_tmpl\$\d+/g,o=>n.get(o)??o)}var C={name:"imperative",contract:pe,emit(e,t){let n=new Set,o=t?.templateClone!==!1?[]:void 0;return Oe=t?.partialTemplates===!0,{code:A(e,n,o),imports:Array.from(n),templates:o}}};var Q=require("@babel/core"),ue=Re(require("@babel/generator"),1);var Je=require("@fluixi/template-parser");function J(e){let t=e.split(/\r\n|\n|\r/),n=0;for(let r=0;r<t.length;r++)/[^ \t]/.test(t[r])&&(n=r);let o="";for(let r=0;r<t.length;r++){let a=t[r].replace(/\t/g," ");r!==0&&(a=a.replace(/^ +/,"")),r!==t.length-1&&(a=a.replace(/ +$/,"")),a&&(r!==n&&(a+=" "),o+=a)}return o}var Ae=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function It(e){return e.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${")}function De(e){return e.charAt(0).toUpperCase()+e.slice(1)}var de=class{constructor(t,n){this.holes=t;this.used=n}hole(t){return this.holes[t]??{code:"undefined",reactive:!1}}emit(t){let{code:n,imports:o,templates:r}=C.emit(t,{});for(let a of o)this.used.add(a);return D(n,r)}lowerRoot(t){let n=this.lowerChildren(t);return n.length===1?n[0]:{kind:"fragment",children:n}}lowerChildren(t){let n=[];for(let o=0;o<t.length;o++){let r=t[o];if(r.kind==="Element"||r.kind==="Component"){let s=r.attributes.find(i=>i.kind==="IfDirective");if(s&&s.kind==="IfDirective"){let i=o+1;i<t.length&&this.isBlankText(t[i])&&i++;let l=t[i],p=l&&(l.kind==="Element"||l.kind==="Component")&&l.attributes.some(u=>u.kind==="ElseDirective");n.push(this.lowerIf(r,s.hole,p?l:null)),p&&(o=i);continue}if(r.attributes.some(i=>i.kind==="EachDirective")){n.push(this.lowerEach(r));continue}}let a=this.lowerNode(r);a&&n.push(a)}return n}isBlankText(t){return t.kind==="Text"&&!t.raw&&J(t.value)===""}lowerNode(t){switch(t.kind){case"Text":{if(t.raw)return{kind:"text",value:t.value};let n=J(t.value);return n?{kind:"text",value:n}:null}case"Comment":return null;case"Expression":{let n=this.hole(t.hole);return{kind:"expr",code:n.code,reactive:n.reactive}}case"Fragment":return{kind:"fragment",children:this.lowerChildren(t.children)};case"Element":return this.lowerElement(t);case"Component":return this.lowerComponent(t);default:return null}}lowerElement(t){let n=t.attributes.find(o=>o.kind==="Attribute"&&o.name==="is");if(t.tag==="component"&&n&&n.value&&n.value.kind==="hole"){let o=t.attributes.filter(a=>a!==n),r=this.lowerComponent({...t,kind:"Component",tag:"Dynamic",tagHole:null,attributes:o});return r.props.unshift({name:"component",kind:"attr",expr:`() => (${this.hole(n.value.hole).code})`}),r}return{kind:"element",tag:t.tag,svg:t.namespace==="svg",props:this.lowerAttributes(t.attributes),children:this.lowerChildren(t.children),static:!1}}lowerComponent(t){let n=t.tagHole!=null?this.hole(t.tagHole).code:t.tag,o=this.lowerAttributes(t.attributes),{slots:r,rest:a}=this.partitionSlots(t.children);for(let[l,p]of r){let u=p.length===1?p[0]:{kind:"fragment",children:p},d={name:l,kind:"attr",expr:this.emit(u),jsxElement:!0},g=o.findIndex(k=>k.name===l);g>=0?o[g]=d:o.push(d)}let s=t.attributes.find(l=>l.kind==="LoadDirective"),i=s?W(`load:${s.strategy}`,s.modifier):void 0;return{kind:"component",name:n,props:o,children:this.lowerChildren(a),...i?{load:i}:{}}}partitionSlots(t){let n=new Map,o=[];for(let r of t){if(r.kind==="Element"||r.kind==="Component"){let a=r.attributes.find(s=>s.kind==="Attribute"&&s.name==="slot");if(a&&a.value&&a.value.kind==="static"){let s={...r,attributes:r.attributes.filter(p=>p!==a)},i=s.kind==="Element"?this.lowerElement(s):this.lowerComponent(s),l=n.get(a.value.value)??[];l.push(i),n.set(a.value.value,l);continue}}o.push(r)}return{slots:n,rest:o}}lowerIf(t,n,o){let r=this.hole(n),a=[{name:"when",kind:"attr",expr:r.code,reactive:r.reactive}];if(o){let i=this.stripAndLower(o,l=>l.kind==="ElseDirective");a.push({name:"fallback",kind:"attr",expr:this.emit(i),jsxElement:!0})}let s=this.stripAndLower(t,i=>i.kind==="IfDirective");return{kind:"component",name:"Show",props:a,children:[s]}}lowerEach(t){let n=t.attributes.find(l=>l.kind==="EachDirective");if(!n||n.kind!=="EachDirective")return this.lowerNode(t);let o=this.hole(n.hole),r=[{name:"each",kind:"attr",expr:o.code,reactive:o.reactive}];if(n.key){let l="static"in n.key?`(item) => item[${JSON.stringify(n.key.static)}]`:this.hole(n.key.hole).code;r.push({name:"by",kind:"attr",expr:l})}let a=this.itemArrow(t),s;if(a){let l={kind:"expr",code:a.body,reactive:a.bodyReactive},p=this.rebuildWithChildren(t,[l]);s=`(${a.params.join(", ")}) => (${this.emit(p)})`}else{let l=this.stripAndLower(t,p=>p.kind==="EachDirective");s=`() => (${this.emit(l)})`}return{kind:"component",name:"For",props:r,children:[{kind:"expr",code:s,reactive:!1}]}}itemArrow(t){let n=t.children.filter(o=>!this.isBlankText(o));return n.length!==1||n[0].kind!=="Expression"?null:this.hole(n[0].hole).arrow??null}stripAndLower(t,n){let o={...t,attributes:t.attributes.filter(r=>!n(r))};return o.kind==="Element"?this.lowerElement(o):this.lowerComponent(o)}rebuildWithChildren(t,n){let o=this.lowerAttributes(t.attributes.filter(r=>r.kind!=="EachDirective"));return t.kind==="Element"?{kind:"element",tag:t.tag,svg:t.namespace==="svg",props:o,children:n,static:!1}:{kind:"component",name:t.tag,props:o,children:n}}lowerAttributes(t){let n=[],o=[],r=!1,a=[],s=!1,i=[];for(let l of t)switch(l.kind){case"IfDirective":case"EachDirective":case"ElseDirective":break;case"Attribute":n.push(this.plainAttr(l));break;case"PropertyBinding":n.push({name:l.name,kind:"prop",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"EventBinding":n.push(this.eventProp(l));break;case"RefBinding":n.push({name:"ref",kind:"ref",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"Spread":n.push({name:"",kind:"spread",expr:this.hole(l.hole).code});break;case"ClassDirective":{let p=this.hole(l.hole);o.push(`${JSON.stringify(l.name)}: ${p.code}`),r=r||p.reactive;break}case"StyleDirective":{let p=this.hole(l.hole);a.push(`${JSON.stringify(l.name)}: ${p.code}`),s=s||p.reactive;break}case"BindDirective":n.push(...this.bindProps(l.name,this.hole(l.hole).code));break;case"UseDirective":{let p=l.name??(l.hole!=null?this.hole(l.hole).code:null);if(!p)break;i.push(l.name!=null&&l.hole!=null?`[${p}, () => (${this.hole(l.hole).code})]`:`[${p}]`);break}}return o.length>0&&n.push({name:"classList",kind:"attr",expr:`{ ${o.join(", ")} }`,reactive:r}),a.length>0&&n.push({name:"style",kind:"attr",expr:`{ ${a.join(", ")} }`,reactive:s}),i.length>0&&n.push({name:"use",kind:"attr",expr:`[${i.join(", ")}]`}),n}eventProp(t){let n=t.name.toLowerCase(),o=this.hole(t.hole).code;if(!(t.syntax==="colon"||t.modifiers.length>0))return{name:"on"+De(t.name),kind:"event",event:{name:n,delegated:Ae.has(n)},expr:o};let a=this.wrapHandler(o,t.modifiers),s=this.eventOptions(t.modifiers),i=s?`[${a}, ${s}]`:a;return{name:"on:"+n,kind:"attr",expr:i}}wrapHandler(t,n){let o=n.includes("self")?"if (e.target !== e.currentTarget) return; ":"",r=[];return n.includes("prevent")&&r.push("e.preventDefault();"),n.includes("stop")&&r.push("e.stopPropagation();"),!o&&r.length===0?t:`(e) => { ${o}${r.join(" ")} return (${t})(e); }`}eventOptions(t){let n=[];return t.includes("capture")&&n.push("capture: true"),t.includes("once")&&n.push("once: true"),t.includes("passive")&&n.push("passive: true"),n.length?`{ ${n.join(", ")} }`:null}bindProps(t,n){let o=t==="checked",r=o?"change":"input",a=o?"checked":"value",s=`(${n})`;return[{name:t,kind:"attr",expr:`${s}[0]()`,reactive:!0},{name:"on"+De(r),kind:"event",event:{name:r,delegated:Ae.has(r)},expr:`(e) => ${s}[1](e.target.${a})`}]}plainAttr(t){let n=t.value,o=t.name;t.name==="class"?o=n&&n.kind==="hole"&&this.hole(n.hole).object?"classList":"className":t.name==="html"&&(o="innerHTML");let a={name:o,kind:"attr"};if(n==null)return a.literal=!0,a;if(n.kind==="static")return a.literal=n.value,a;if(n.kind==="hole"){let l=this.hole(n.hole);return a.expr=l.code,a.reactive=l.reactive,a}let s=!1,i=n.parts.map(l=>{if("text"in l)return It(l.text);let p=this.hole(l.hole);return s=s||p.reactive,"${"+p.code+"}"}).join("");return a.expr="`"+i+"`",a.reactive=s,a}};function je(e,t,n,o={}){let{root:r}=(0,Je.parseTemplate)(e,{svg:o.svg});return new de(t,n).lowerRoot(r.children)}var Ct=ue.default.default??ue.default;function wt(e){return Ct(e,{concise:!0}).code}function Tt(e,t,n){let o={code:ee(e,t,n),reactive:me(e)};if(Q.types.isArrowFunctionExpression(e)&&!Q.types.isBlockStatement(e.body)){let r=e.body;o.arrow={params:e.params.map(a=>wt(a)),body:ee(r,t,n),bodyReactive:me(r)}}return Q.types.isObjectExpression(e)&&(o.object=!0),o}function Fe(e,t,n={}){let o=e.quasi,r=o.expressions.map(a=>Tt(a,t,n.onNested));return je(Mt(o),r,t,n)}function Mt(e){let t=[];return e.quasis.forEach((n,o)=>{let r=n.value.cooked??n.value.raw;if(t.push({kind:"static",text:r,start:n.start??0}),o<e.expressions.length){let a=e.expressions[o];t.push({kind:"hole",index:o,start:a.start??0,end:a.end??0})}}),t}function $t(e){switch(e.kind){case"event":return"event";case"ref":return"ref";case"spread":return"spread";case"class":case"style":return"class-or-style-directive";case"attr":case"prop":return e.reactive?"reactive-prop":e.expr!==void 0?"expression-prop":void 0;default:return"expression-prop"}}function te(e){let t=[],n=new Map,o=r=>{switch(r.kind){case"text":return!0;case"expr":return!1;case"component":case"control":for(let a of r.children)o(a);return!1;case"fragment":for(let a of r.children)o(a);return!1;case"element":{let a=!0;for(let i of r.children)o(i)||(a=!1);let s;for(let i of r.props)if(s=$t(i),s)break;return!s&&!a&&(s=Lt(r)),r.static=!s,s?n.set(r,s):t.push(r),r.static}default:return!1}};for(let r of Array.isArray(e)?e:[e])o(r);return{staticElements:t,reasons:n}}function Lt(e){for(let t of e.children){if(t.kind==="expr")return"expression-child";if(t.kind==="component")return"component-child";if(t.kind==="control")return"control-child";if(t.kind==="element"&&!t.static||t.kind==="fragment")return"expression-child"}return"expression-child"}function ne(e,t=new Set,n={}){let o=Fe(e,t,n);return te(o),o}var Pt="children";function j(e){switch(e.kind){case"call":return!0;case"member":return e.property!==Pt;case"compound":return e.parts.some(j);case"opaque":return!1}}var Ot=new Set(["CallExpression","OptionalCallExpression"]),At=new Set(["MemberExpression","OptionalMemberExpression"]);function _(e){if(!e)return{kind:"opaque"};if(Ot.has(e.type))return{kind:"call"};if(At.has(e.type)){let t=e.property;return{kind:"member",property:!(e.computed===!0)&&t?.type==="Identifier"?t.name:null}}return e.type==="ConditionalExpression"?{kind:"compound",parts:[e.test,e.consequent,e.alternate].map(F)}:e.type==="LogicalExpression"||e.type==="BinaryExpression"?{kind:"compound",parts:[e.left,e.right].map(F)}:e.type==="TemplateLiteral"?{kind:"compound",parts:e.expressions.map(F)}:e.type==="ObjectExpression"?{kind:"compound",parts:e.properties.filter(n=>(n.type==="ObjectProperty"||n.type==="Property")&&n.computed!==!0).map(n=>F(n.value))}:e.type==="ArrayExpression"?{kind:"compound",parts:e.elements.filter(n=>n!=null&&n.type!=="SpreadElement").map(F)}:{kind:"opaque"}}var F=e=>_(e);var Dt=new Set(["svg","path","circle","rect","line","polygon","polyline","ellipse","g","defs","clipPath","text"]),Jt=/^on[A-Z]/,jt=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]),Be=e=>j(_(e));function X(e){if(e.type==="StringLiteral"||e.type==="NumericLiteral"||e.type==="BooleanLiteral"||e.type==="Literal"&&(typeof e.value=="string"||typeof e.value=="number"||typeof e.value=="boolean"))return e.value}var fe=e=>!!e&&typeof X(e)=="string";function Ft(e,t){return e.type==="JSXIdentifier"?{tag:e.name,component:e.name[0]!==e.name[0].toLowerCase()}:e.type==="JSXMemberExpression"?{tag:t.code(e),component:!0}:e.type==="JSXNamespacedName"?{tag:`${e.namespace.name}:${e.name.name}`,component:!1}:{tag:"div",component:!1}}function ge(e){return e.type==="JSXIdentifier"?e.name==="class"?"className":e.name:e.type==="JSXNamespacedName"?`${e.namespace.name}:${e.name.name}`:"unknown"}function _t(e,t){let n=ge(e.name),o=Jt.test(n),r=o||n.startsWith("on:")||n==="ref",s={name:n,kind:o?"event":"attr"};if(o){let l=n.slice(2).toLowerCase();s.event={name:l,delegated:jt.has(l)}}let i=e.value;if(i==null)return s.literal=!0,s;if(fe(i))return s.literal=X(i),s;if(i.type==="JSXExpressionContainer"&&i.expression?.type!=="JSXEmptyExpression"){let l=i.expression,p=X(l);return p!==void 0?(s.literal=p,s):(s.expr=t.code(l),s.reactive=r?!1:Be(l),(l.type==="JSXElement"||l.type==="JSXFragment")&&(s.jsxElement=!0),s)}return s.literal=!0,s}function _e(e,t){let n=e.value;return n==null?null:fe(n)?JSON.stringify(X(n)):n.type==="JSXExpressionContainer"&&n.expression?.type!=="JSXEmptyExpression"?t.code(n.expression):null}function Xt(e,t){let n=[],o=[];for(let r of e){if(r.type==="JSXSpreadAttribute"){n.push({name:"",kind:"spread",expr:t.code(r.argument)});continue}if(r.type!=="JSXAttribute"||ae(ge(r.name)))continue;let a=r.name.type==="JSXNamespacedName"?r.name.namespace.name:null;if(a==="use"){let s=r.name.name.name;t.used.add(s);let i=_e(r,t);o.push(i!=null?`[${s}, () => (${i})]`:`[${s}]`);continue}if(a==="oncapture"){let s=r.name.name.name.toLowerCase(),i=_e(r,t)??"undefined";n.push({name:"on:"+s,kind:"attr",expr:`[${i}, { capture: true }]`});continue}n.push(_t(r,t))}return o.length>0&&n.push({name:"use",kind:"attr",expr:`[${o.join(", ")}]`}),n}function Xe(e,t){let n=[];for(let o of e)if(o.type==="JSXText"){let r=J(o.value);r&&n.push({kind:"text",value:r})}else if(o.type==="JSXExpressionContainer"){if(o.expression?.type!=="JSXEmptyExpression"){let r=o.expression;n.push({kind:"expr",code:t.code(r),reactive:Be(r)})}}else o.type==="JSXElement"||o.type==="JSXFragment"?n.push(He(o,t)):o.type==="JSXSpreadChild"&&n.push({kind:"expr",code:t.code(o.expression),reactive:!1});return n}function Bt(e){for(let t of e){if(t.type!=="JSXAttribute")continue;let n=ge(t.name);if(ae(n)){if(t.value&&!fe(t.value))throw new I(`'${n}' needs a literal value, not an expression — the strategy is compile-time.`);return W(n,t.value?X(t.value):null)}}}function He(e,t){if(e.type==="JSXFragment")return{kind:"fragment",children:Xe(e.children,t)};let{tag:n,component:o}=Ft(e.openingElement.name,t),r=Xt(e.openingElement.attributes,t),a=Xe(e.children,t);if(o){let s=Bt(e.openingElement.attributes);return{kind:"component",name:n,props:r,children:a,...s?{load:s}:{}}}return{kind:"element",tag:n,svg:Dt.has(n),props:r,children:a,static:!1}}function ze(e,t){let n=He(e,t);return te(n),n}var Ht=he.default.default??he.default;function Ve(e){return Ht(e,{concise:!0}).code}function zt(e,t,n){let o=S.types.cloneNode(e,!0),r=S.types.file(S.types.program([S.types.expressionStatement(o)])),a=!1,s=(i,l,p)=>{for(let u of p)t.add(u);i.replaceWith(S.template.expression(l,{placeholderPattern:!1,plugins:["typescript"]})()),i.skip(),a=!0};return(0,S.traverse)(r,{"JSXElement|JSXFragment"(i){let l=i.node,p=ve(l,t,n);n?.(p);let{code:u,imports:d,templates:g}=C.emit(p,{});s(i,D(u,g),d)},TaggedTemplateExpression(i){let l=i.node.tag;if(!S.types.isIdentifier(l)||l.name!=="html"&&l.name!=="svg")return;let p=ne(i.node,t,{svg:l.name==="svg",onNested:n});n?.(p);let{code:u,imports:d,templates:g}=C.emit(p,{});s(i,D(u,g),d)}}),a?r.program.body[0].expression:e}function ee(e,t,n){return Ve(zt(e,t,n))}function me(e){return j(_(e))}function ve(e,t=new Set,n){return ze(e,{code:r=>r.type==="JSXMemberExpression"?Ve(r):ee(r,t,n),used:t})}var We=new Set(L),Ue=new Set(M),$=(0,Ge.declare)((e,t={})=>{e.assertVersion(7);let{delegateEvents:n=!0,signalModule:o="@fluixi/dom",controlFlowModule:r="@fluixi/dom",routerModule:a="@fluixi/core/router-next",reactiveModule:s="@fluixi/reactive/signal",templateClone:i=!0,partialTemplates:l=!0,format:p="both",litTag:u="html",resolve:d=[]}=t,g=Ee(d),k=p==="lit"||p==="both",w={irImports:new Set,libModule:"@fluixi/core",controlFlowModule:r,routerModule:a,templateClone:i,partialTemplates:l,hasJSX:!1,hasLitHTML:!1,needsControlFlowImport:!1,needsCreateMemo:!1,controlFlowComponents:new Set,resolvedComponents:new Map,deferredComponents:new Map,componentResolver:g,delegatedEvents:new Set,staticTemplates:new Map,staticCounter:0};return{name:"@fluixi/babel-plugin-jsx",manipulateOptions(m,f){f.plugins.push("jsx","typescript")},pre(m){Object.assign(m,w)},visitor:{ImportDeclaration(m,f){m.node.source.value==="@fluixi/core/rx"&&(m.node.source=c.types.stringLiteral("@fluixi/reactive"))},Program:{enter(m,f){Object.assign(f,{hasJSX:!1,hasLitHTML:!1,hasLitIR:!1,needsControlFlowImport:!1,needsCreateMemo:!1,controlFlowComponents:new Set,resolvedComponents:new Map,deferredComponents:new Map,componentResolver:g,delegatedEvents:new Set,staticTemplates:new Map,staticCounter:0,libModule:"@fluixi/core",controlFlowModule:r,routerModule:a,templateClone:i,partialTemplates:l,irImports:new Set,needsCreateNativeElement:!1,needsInsert:!1,needsSpread:!1,needsCreateComponent:!1,needsMergeProps:!1})},exit(m,f){let y=[];if(f.hasJSX||f.hasLitIR){if(f.irImports.size>0){let v=new Set(["Show","For","Index","Switch","Match","Dynamic","ErrorBoundary","Portal","Suspense"]),h=new Set(["createMemo","createEffect","createRenderEffect","createRoot","createSignal","onCleanup","batch","untrack"]),R=Array.from(f.irImports),E=x=>c.types.importSpecifier(c.types.identifier(x),c.types.identifier(x)),b=x=>!m.scope.hasBinding(x),T=R.filter(x=>h.has(x)&&b(x)),N=R.filter(x=>!v.has(x)&&!h.has(x)&&b(x)),H=R.filter(x=>v.has(x)&&b(x));T.length>0&&y.push(c.types.importDeclaration(T.map(E),c.types.stringLiteral(s))),N.length>0&&y.push(c.types.importDeclaration(N.map(E),c.types.stringLiteral(o))),H.length>0&&y.push(c.types.importDeclaration(H.map(E),c.types.stringLiteral(r)))}if(f.needsCreateMemo&&!m.scope.hasBinding("createMemo")&&y.push(c.types.importDeclaration([c.types.importSpecifier(c.types.identifier("createMemo"),c.types.identifier("createMemo"))],c.types.stringLiteral(s))),f.needsControlFlowImport&&f.controlFlowComponents.size>0){let v=Array.from(f.controlFlowComponents).filter(N=>!m.scope.hasBinding(N)),h=f.libModule??"@fluixi/core",R=v.filter(N=>Ue.has(N)),E=v.filter(N=>We.has(N)),b=v.filter(N=>!We.has(N)&&!Ue.has(N)),T=(N,H)=>c.types.importDeclaration(N.map(x=>c.types.importSpecifier(c.types.identifier(x),c.types.identifier(x))),c.types.stringLiteral(H));b.length>0&&y.push(T(b,r)),E.length>0&&y.push(T(E,h)),R.length>0&&y.push(T(R,a))}let B=[];if(f.deferredComponents.size>0){for(let[v,h]of f.deferredComponents)m.scope.hasBinding(v)||B.push(c.types.variableDeclaration("const",[c.types.variableDeclarator(c.types.identifier(v),c.types.callExpression(c.types.identifier("deferred"),[c.types.arrowFunctionExpression([],c.types.callExpression(c.types.import(),[c.types.stringLiteral(h.module)])),c.types.objectExpression([c.types.objectProperty(c.types.identifier("strategy"),Vt(h.strategy)),c.types.objectProperty(c.types.identifier("export"),c.types.stringLiteral(h.export))])]))]));B.length>0&&!m.scope.hasBinding("deferred")&&y.push(c.types.importDeclaration([c.types.importSpecifier(c.types.identifier("deferred"),c.types.identifier("deferred"))],c.types.stringLiteral(f.libModule??"@fluixi/core")))}if(f.resolvedComponents.size>0){let v=new Map;for(let[h,R]of f.resolvedComponents){if(m.scope.hasBinding(h))continue;let E=v.get(R.module)??[];E.push({local:h,exported:R.export}),v.set(R.module,E)}for(let[h,R]of v)y.push(c.types.importDeclaration(R.map(({local:E,exported:b})=>b==="default"?c.types.importDefaultSpecifier(c.types.identifier(E)):c.types.importSpecifier(c.types.identifier(E),c.types.identifier(b))),c.types.stringLiteral(h)))}if(n&&f.delegatedEvents.size>0){y.push(c.types.importDeclaration([c.types.importSpecifier(c.types.identifier("delegateEvents"),c.types.identifier("delegateEvents"))],c.types.stringLiteral(o)));let v=c.types.arrayExpression(Array.from(f.delegatedEvents).map(R=>c.types.stringLiteral(R))),h=c.types.expressionStatement(c.types.callExpression(c.types.identifier("delegateEvents"),[v]));m.node.body.unshift(h)}if(B.length>0&&m.node.body.unshift(...B),f.staticTemplates.size>0){let v=[];for(let[h,R]of f.staticTemplates){let b=h.startsWith("svg:")?h.slice(4):h;v.push(c.types.variableDeclaration("const",[c.types.variableDeclarator(c.types.identifier(R),c.types.stringLiteral(b))]))}m.node.body.unshift(...v)}}y.length>0&&m.node.body.unshift(...Wt(y))}},JSXElement(m,f){f.hasJSX=!0,m.replaceWith(qe(m.node,f))},JSXFragment(m,f){f.hasJSX=!0,m.replaceWith(qe(m.node,f))},TaggedTemplateExpression(m,f){k&&c.types.isIdentifier(m.node.tag)&&(m.node.tag.name===u||m.node.tag.name==="svg")&&m.replaceWith(Ut(m.node,f))}}}});function Ke(e){return t=>{q(t,{resolver:e.componentResolver,modules:{controlFlowModule:e.controlFlowModule,coreModule:e.libModule,routerModule:e.routerModule},strategyFor:n=>n.load}),K(t),re(t,e)}}function Vt(e){let t=[c.types.objectProperty(c.types.identifier("kind"),c.types.stringLiteral(e.kind))];return e.kind==="visible"&&e.rootMargin&&t.push(c.types.objectProperty(c.types.identifier("rootMargin"),c.types.stringLiteral(e.rootMargin))),e.kind==="interaction"&&t.push(c.types.objectProperty(c.types.identifier("events"),c.types.arrayExpression(e.events.map(n=>c.types.stringLiteral(n))))),e.kind==="media"&&t.push(c.types.objectProperty(c.types.identifier("query"),c.types.stringLiteral(e.query))),c.types.objectExpression(t)}function Ye(e,t,n){if(!t||t.length===0)return e;let o=new Map;for(let r of t){let a=`${r.svg?"svg:":""}${r.html}`,s=n.staticTemplates.get(a);s||(s=`_tmpl$${n.staticTemplates.size}`,n.staticTemplates.set(a,s)),o.set(r.id,s)}return e.replace(/_tmpl\$\d+/g,r=>o.get(r)??r)}function qe(e,t){let n=new Set,o=ve(e,n,Ke(t));q(o,{resolver:t.componentResolver,modules:{controlFlowModule:t.controlFlowModule,coreModule:t.libModule,routerModule:t.routerModule},strategyFor:l=>l.load}),K(o);let{code:r,imports:a,templates:s}=C.emit(o,{templateClone:t.templateClone,partialTemplates:t.partialTemplates});for(let l of a)n.add(l);for(let l of n)t.irImports.add(l);re(o,t);let i=Ye(r,s,t);return c.template.expression(i,{placeholderPattern:!1,plugins:["typescript"]})()}function Wt(e){let t=new Map,n=[];for(let o of e){let r=o.source.value;if(!o.specifiers.every(i=>c.types.isImportSpecifier(i))){n.push(o);continue}let s=t.get(r);if(!s){let i=new Set(o.specifiers.map(l=>l.local.name));t.set(r,{decl:o,names:i}),n.push(o);continue}for(let i of o.specifiers)s.names.has(i.local.name)||(s.names.add(i.local.name),s.decl.specifiers.push(i))}return n}function Ut(e,t){let n=new Set,o=c.types.isIdentifier(e.tag)&&e.tag.name==="svg",r=ne(e,n,{svg:o,onNested:Ke(t)});q(r,{resolver:t.componentResolver,modules:{controlFlowModule:t.controlFlowModule,coreModule:t.libModule,routerModule:t.routerModule},strategyFor:p=>p.load}),K(r);let{code:a,imports:s,templates:i}=C.emit(r,{templateClone:t.templateClone,partialTemplates:t.partialTemplates});for(let p of s)n.add(p);for(let p of n)t.irImports.add(p);re(r,t),t.hasLitIR=!0;let l=c.template.expression(Ye(a,i,t),{placeholderPattern:!1,plugins:["typescript"]})();return qt(l,e),l}function qt(e,t){if(!t.loc)return;let n=new Set,o=r=>{if(!n.has(r)){n.add(r),r.loc||(r.loc=t.loc,r.start=t.start,r.end=t.end);for(let a of c.types.VISITOR_KEYS[r.type]??[]){let s=r[a];if(Array.isArray(s))for(let i of s)i&&typeof i=="object"&&"type"in i&&o(i);else s&&typeof s=="object"&&"type"in s&&o(s)}}};o(e)}function re(e,t){if(e.kind==="component"&&e.source&&(e.source.origin==="builtin"?(t.controlFlowComponents.add(e.name),t.needsControlFlowImport=!0):U(e.source.loading)&&!t.resolvedComponents.has(e.name)?t.deferredComponents.set(e.name,{module:e.source.module,export:e.source.export,strategy:e.source.loading}):(t.deferredComponents.delete(e.name),t.resolvedComponents.set(e.name,{module:e.source.module,export:e.source.export}))),(e.kind==="element"||e.kind==="component"||e.kind==="control")&&"props"in e)for(let n of e.props)n.kind==="event"&&n.event?.delegated&&t.delegatedEvents.add(n.event.name);if("children"in e&&e.children)for(let n of e.children)re(n,t)}var Gt=$;function Kt(e){return[$,e]}function oe(e={}){return{plugins:[[$,{runtime:"automatic",importSource:"@fluixi/jsx",development:!1,detectReactivity:!0,useLitHTML:!0,hoistStatics:!0,delegateEvents:!0,optimizeControlFlow:!0,sourceMaps:!0,...e}]]}}var Yt={production:oe({development:!1,hoistStatics:!0,delegateEvents:!0,optimizeControlFlow:!0}),development:oe({development:!0,hoistStatics:!1,sourceMaps:!0}),minimal:oe({detectReactivity:!1,useLitHTML:!1,hoistStatics:!1,delegateEvents:!1,optimizeControlFlow:!1})};
|