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