@fluixi/compiler 1.0.0-alpha.68 → 1.0.0-alpha.69

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.
@@ -0,0 +1,2 @@
1
+ import"./chunk-3SAEGOMQ.mjs";import{declare as at}from"@babel/helper-plugin-utils";var $e=e=>"components"in e;function se(e,t){return e.replace(/\$(\d+)/g,(r,s)=>t[Number(s)]??r)}function Oe(e,t){return typeof t=="string"?{module:t,export:e}:t}function oe(e=[]){let t=new Map,r=[],s=[];for(let o of e){if(!$e(o)){s.push(o);continue}for(let[c,l]of Object.entries(o.components)){let p=Oe(c,l),x=t.get(c);if(x&&x.module!==p.module){let d=r.find(w=>w.name===c);d?d.modules.push(p.module):r.push({name:c,modules:[x.module,p.module]});continue}t.set(c,p)}}let i=new Map;return{resolve:o=>{if(i.has(o))return i.get(o);let c=t.get(o);if(!c)for(let l of s){let p=o.match(new RegExp(l.match.source,l.match.flags.replace("g","")));if(p){c={module:se(l.module,p),export:l.export?se(l.export,p):o};break}}return i.set(o,c),c},names:()=>[...t.keys()],conflicts:()=>r}}import{types as n,template as ye}from"@babel/core";import{types as m,traverse as Ze,template as Ke}from"@babel/core";import fe from"@babel/generator";var U={version:1,module:"@fluixi/dom",symbols:["createNativeElement","insert","spread","setAttribute","delegateEvents","createComponent","createMemo","untrack","Show","For","Index","Switch","Match","Dynamic","ErrorBoundary"]},Pt={version:2,module:"@fluixi/dom",symbols:[...U.symbols,"template","cloneTemplate","walk"]};var De={show:"Show",for:"For",index:"Index",switch:"Switch",match:"Match",dynamic:"Dynamic",errorBoundary:"ErrorBoundary",suspense:"Suspense"};function Be(e){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e)}function le(e){return Be(e)?e:JSON.stringify(e)}function _e(e){return e.expr!==void 0?e.reactive?`() => (${e.expr})`:`(${e.expr})`:JSON.stringify(e.literal??!0)}function Ve(e){return e.expr!==void 0?`(${e.expr})`:JSON.stringify(e.literal??!0)}function ze(e,t,r){let s=e.filter(c=>c.kind==="spread"),a=e.filter(c=>c.kind!=="spread").map(c=>`${le(c.name)}: ${_e(c)}`);t!=null&&a.push(`children: ${t}`);let o=`{ ${a.join(", ")} }`;return s.length>0?(r.add("mergeProps"),`mergeProps(${s.map(c=>c.expr).join(", ")}, ${o})`):o}function ce(e,t){return e.length===1?V(e[0],t):`[${e.map(r=>V(r,t)).join(", ")}]`}function ae(e,t,r,s){s.add("createMemo"),s.add("createComponent");let i=t.filter(l=>l.kind==="spread"),o=t.filter(l=>l.kind!=="spread").map(l=>`get ${le(l.name)}() { return ${Ve(l)}; }`);r.length>0&&o.push(`get children() { return ${ce(r,s)}; }`);let c=`{ ${o.join(", ")} }`;return i.length>0&&(s.add("mergeProps"),c=`mergeProps(${i.map(l=>l.expr).join(", ")}, ${c})`),`createMemo(() => createComponent(${e}, ${c}))`}function V(e,t){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":ce(e.children,t);case"component":return ae(e.name,e.props,e.children,t);case"control":{let r=De[e.control]??e.control;return t.add(r),ae(r,e.props,e.children,t)}case"element":{t.add("createNativeElement");let r=JSON.stringify(e.tag),s="_el$",i=[],a=e.svg?`${r}, true`:r;if(i.push(`const ${s} = createNativeElement(${a});`),e.props.length>0){t.add("spread");let o=e.svg?", isSVG: true":"";i.push(`spread({ element: ${s}, props: ${ze(e.props,null,t)}${o} });`)}for(let o of e.children){t.add("insert");let c=V(o,t),l=o.kind==="expr"&&o.reactive||o.kind==="component"||o.kind==="control";i.push(l?`insert(${s}, ${c}, null);`:`insert(${s}, ${c});`)}return i.push(`return ${s};`),`(() => { ${i.join(" ")} })()`}}}var X={name:"imperative",contract:U,emit(e,t){let r=new Set;return{code:V(e,r),imports:Array.from(r)}}};import{types as z}from"@babel/core";import pe from"@babel/generator";import{parseTemplate as We}from"@fluixi/template-parser";var He=pe.default??pe;function Ge(e){return He(e,{concise:!0}).code}var ue=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function qe(e){return e.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${")}function me(e){return e.charAt(0).toUpperCase()+e.slice(1)}var Z=class{constructor(t,r){this.holes=t;this.used=r}hole(t){return this.holes[t]??{node:z.identifier("undefined"),code:"undefined",reactive:!1}}emit(t){let{code:r,imports:s}=X.emit(t,{});for(let i of s)this.used.add(i);return r}lowerRoot(t){let r=this.lowerChildren(t);return r.length===1?r[0]:{kind:"fragment",children:r}}lowerChildren(t){let r=[];for(let s=0;s<t.length;s++){let i=t[s];if(i.kind==="Element"||i.kind==="Component"){let o=i.attributes.find(c=>c.kind==="IfDirective");if(o&&o.kind==="IfDirective"){let c=s+1;c<t.length&&this.isBlankText(t[c])&&c++;let l=t[c],p=l&&(l.kind==="Element"||l.kind==="Component")&&l.attributes.some(x=>x.kind==="ElseDirective");r.push(this.lowerIf(i,o.hole,p?l:null)),p&&(s=c);continue}if(i.attributes.some(c=>c.kind==="EachDirective")){r.push(this.lowerEach(i));continue}}let a=this.lowerNode(i);a&&r.push(a)}return r}isBlankText(t){return t.kind==="Text"&&!t.raw&&W(t.value)===""}lowerNode(t){switch(t.kind){case"Text":{if(t.raw)return{kind:"text",value:t.value};let r=W(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(s=>s.kind==="Attribute"&&s.name==="is");if(t.tag==="component"&&r&&r.value&&r.value.kind==="hole"){let s=t.attributes.filter(a=>a!==r),i=this.lowerComponent({...t,kind:"Component",tag:"Dynamic",tagHole:null,attributes:s});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,s=this.lowerAttributes(t.attributes),{slots:i,rest:a}=this.partitionSlots(t.children);for(let[o,c]of i){let l=c.length===1?c[0]:{kind:"fragment",children:c};s.push({name:o,kind:"attr",expr:this.emit(l),jsxElement:!0})}return{kind:"component",name:r,props:s,children:this.lowerChildren(a)}}partitionSlots(t){let r=new Map,s=[];for(let i of t){if(i.kind==="Element"||i.kind==="Component"){let a=i.attributes.find(o=>o.kind==="Attribute"&&o.name==="slot");if(a&&a.value&&a.value.kind==="static"){let o={...i,attributes:i.attributes.filter(p=>p!==a)},c=o.kind==="Element"?this.lowerElement(o):this.lowerComponent(o),l=r.get(a.value.value)??[];l.push(c),r.set(a.value.value,l);continue}}s.push(i)}return{slots:r,rest:s}}lowerIf(t,r,s){let i=this.hole(r),a=[{name:"when",kind:"attr",expr:i.code,reactive:i.reactive}];if(s){let c=this.stripAndLower(s,l=>l.kind==="ElseDirective");a.push({name:"fallback",kind:"attr",expr:this.emit(c),jsxElement:!0})}let o=this.stripAndLower(t,c=>c.kind==="IfDirective");return{kind:"component",name:"Show",props:a,children:[o]}}lowerEach(t){let r=t.attributes.find(l=>l.kind==="EachDirective");if(!r||r.kind!=="EachDirective")return this.lowerNode(t);let s=this.hole(r.hole),i=[{name:"each",kind:"attr",expr:s.code,reactive:s.reactive}];if(r.key){let l="static"in r.key?`(item) => item[${JSON.stringify(r.key.static)}]`:this.hole(r.key.hole).code;i.push({name:"by",kind:"attr",expr:l})}let a=this.itemArrow(t),o;if(a){let l=a.body,p={kind:"expr",code:P(l,this.used),reactive:C(l)},x=this.rebuildWithChildren(t,[p]);o=`(${a.params.map(d=>Ge(d)).join(", ")}) => (${this.emit(x)})`}else{let l=this.stripAndLower(t,p=>p.kind==="EachDirective");o=`() => (${this.emit(l)})`}return{kind:"component",name:"For",props:i,children:[{kind:"expr",code:o,reactive:!1}]}}itemArrow(t){let r=t.children.filter(i=>!this.isBlankText(i));if(r.length!==1||r[0].kind!=="Expression")return null;let s=this.hole(r[0].hole).node;return z.isArrowFunctionExpression(s)&&!z.isBlockStatement(s.body)?s:null}stripAndLower(t,r){let s={...t,attributes:t.attributes.filter(i=>!r(i))};return s.kind==="Element"?this.lowerElement(s):this.lowerComponent(s)}rebuildWithChildren(t,r){let s=this.lowerAttributes(t.attributes.filter(i=>i.kind!=="EachDirective"));return t.kind==="Element"?{kind:"element",tag:t.tag,svg:t.namespace==="svg",props:s,children:r,static:!1}:{kind:"component",name:t.tag,props:s,children:r}}lowerAttributes(t){let r=[],s=[],i=!1,a=[],o=!1,c=[];for(let l of t)switch(l.kind){case"IfDirective":case"EachDirective":case"ElseDirective":break;case"Attribute":r.push(this.plainAttr(l));break;case"PropertyBinding":r.push({name:l.name,kind:"prop",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"EventBinding":r.push(this.eventProp(l));break;case"RefBinding":r.push({name:"ref",kind:"ref",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"Spread":r.push({name:"",kind:"spread",expr:this.hole(l.hole).code});break;case"ClassDirective":{let p=this.hole(l.hole);s.push(`${JSON.stringify(l.name)}: ${p.code}`),i=i||p.reactive;break}case"StyleDirective":{let p=this.hole(l.hole);a.push(`${JSON.stringify(l.name)}: ${p.code}`),o=o||p.reactive;break}case"BindDirective":r.push(...this.bindProps(l.name,this.hole(l.hole).code));break;case"UseDirective":{let p=l.name??(l.hole!=null?this.hole(l.hole).code:null);if(!p)break;c.push(l.name!=null&&l.hole!=null?`[${p}, () => (${this.hole(l.hole).code})]`:`[${p}]`);break}}return s.length>0&&r.push({name:"classList",kind:"attr",expr:`{ ${s.join(", ")} }`,reactive:i}),a.length>0&&r.push({name:"style",kind:"attr",expr:`{ ${a.join(", ")} }`,reactive:o}),c.length>0&&r.push({name:"use",kind:"attr",expr:`[${c.join(", ")}]`}),r}eventProp(t){let r=t.name.toLowerCase(),s=this.hole(t.hole).code;if(!(t.syntax==="colon"||t.modifiers.length>0))return{name:"on"+me(t.name),kind:"event",event:{name:r,delegated:ue.has(r)},expr:s};let a=this.wrapHandler(s,t.modifiers),o=this.eventOptions(t.modifiers),c=o?`[${a}, ${o}]`:a;return{name:"on:"+r,kind:"attr",expr:c}}wrapHandler(t,r){let s=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();"),!s&&i.length===0?t:`(e) => { ${s}${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 s=t==="checked",i=s?"change":"input",a=s?"checked":"value",o=`(${r})`;return[{name:t,kind:"attr",expr:`${o}[0]()`,reactive:!0},{name:"on"+me(i),kind:"event",event:{name:i,delegated:ue.has(i)},expr:`(e) => ${o}[1](e.target.${a})`}]}plainAttr(t){let r=t.value,s=t.name;t.name==="class"?s=r&&r.kind==="hole"&&z.isObjectExpression(this.hole(r.hole).node)?"classList":"className":t.name==="html"&&(s="innerHTML");let a={name:s,kind:"attr"};if(r==null)return a.literal=!0,a;if(r.kind==="static")return a.literal=r.value,a;if(r.kind==="hole"){let l=this.hole(r.hole);return a.expr=l.code,a.reactive=l.reactive,a}let o=!1,c=r.parts.map(l=>{if("text"in l)return qe(l.text);let p=this.hole(l.hole);return o=o||p.reactive,"${"+p.code+"}"}).join("");return a.expr="`"+c+"`",a.reactive=o,a}};function de(e,t,r={}){let s=e.quasi,i=s.expressions.map(c=>{let l=c;return{node:l,code:P(l,t),reactive:C(l)}}),a=Ue(s),{root:o}=We(a,{svg:r.svg});return new Z(i,t).lowerRoot(o.children)}function Ue(e){let t=[];return e.quasis.forEach((r,s)=>{let i=r.value.cooked??r.value.raw;if(t.push({kind:"static",text:i,start:r.start??0}),s<e.expressions.length){let a=e.expressions[s];t.push({kind:"hole",index:s,start:a.start??0,end:a.end??0})}}),t}function H(e,t=new Set,r={}){return de(e,t,r)}var Ye=fe.default??fe;function Ee(e){return Ye(e,{concise:!0}).code}function Qe(e,t){let r=m.cloneNode(e,!0),s=m.file(m.program([m.expressionStatement(r)])),i=!1,a=(o,c,l)=>{for(let p of l)t.add(p);o.replaceWith(Ke.expression(c,{placeholderPattern:!1,plugins:["typescript"]})()),o.skip(),i=!0};return Ze(s,{"JSXElement|JSXFragment"(o){let c=o.node,{code:l,imports:p}=X.emit(T(c,t),{});a(o,l,p)},TaggedTemplateExpression(o){let c=o.node.tag;if(!m.isIdentifier(c)||c.name!=="html"&&c.name!=="svg")return;let l=H(o.node,t,{svg:c.name==="svg"}),{code:p,imports:x}=X.emit(l,{});a(o,p,x)}}),i?s.program.body[0].expression:e}function P(e,t){return Ee(Qe(e,t))}var et=new Set(["svg","path","circle","rect","line","polygon","polyline","ellipse","g","defs","clipPath","text"]),tt=/^on[A-Z]/,nt=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function rt(e){if(m.isJSXIdentifier(e)){let t=e.name[0]!==e.name[0].toLowerCase();return{tag:e.name,component:t}}return m.isJSXMemberExpression(e)?{tag:Ee(e),component:!0}:m.isJSXNamespacedName(e)?{tag:`${e.namespace.name}:${e.name.name}`,component:!1}:{tag:"div",component:!1}}function it(e){return m.isJSXIdentifier(e)?e.name==="class"?"className":e.name:m.isJSXNamespacedName(e)?`${e.namespace.name}:${e.name.name}`:"unknown"}function C(e){return m.isCallExpression(e)||m.isOptionalCallExpression(e)?!0:m.isMemberExpression(e)||m.isOptionalMemberExpression(e)?!(!e.computed&&m.isIdentifier(e.property,{name:"children"})):m.isConditionalExpression(e)?C(e.test)||C(e.consequent)||C(e.alternate):m.isLogicalExpression(e)||m.isBinaryExpression(e)?C(e.left)||C(e.right):m.isTemplateLiteral(e)?e.expressions.some(t=>C(t)):m.isObjectExpression(e)?e.properties.some(t=>m.isObjectProperty(t)&&!t.computed&&C(t.value)):m.isArrayExpression(e)?e.elements.some(t=>t!=null&&!m.isSpreadElement(t)&&C(t)):!1}function st(e,t){let r=it(e.name),s=tt.test(r),i=s||r.startsWith("on:"),o={name:r,kind:s?"event":"attr"};s&&(o.event={name:r.slice(2).toLowerCase(),delegated:nt.has(r.slice(2).toLowerCase())});let c=e.value;if(c==null)return o.literal=!0,o;if(m.isStringLiteral(c))return o.literal=c.value,o;if(m.isJSXExpressionContainer(c)&&!m.isJSXEmptyExpression(c.expression)){let l=c.expression;return m.isStringLiteral(l)||m.isNumericLiteral(l)||m.isBooleanLiteral(l)?(o.literal=l.value,o):(o.expr=P(l,t),o.reactive=i?!1:C(l),(m.isJSXElement(l)||m.isJSXFragment(l))&&(o.jsxElement=!0),o)}return o.literal=!0,o}function ge(e,t){let r=e.value;return r==null?null:m.isStringLiteral(r)?JSON.stringify(r.value):m.isJSXExpressionContainer(r)&&!m.isJSXEmptyExpression(r.expression)?P(r.expression,t):null}function ot(e,t){let r=[],s=[];for(let i of e){if(m.isJSXSpreadAttribute(i)){r.push({name:"",kind:"spread",expr:P(i.argument,t)});continue}if(!m.isJSXAttribute(i))continue;let a=m.isJSXNamespacedName(i.name)?i.name.namespace.name:null;if(a==="use"){let o=i.name.name.name;t.add(o);let c=ge(i,t);s.push(c!=null?`[${o}, () => (${c})]`:`[${o}]`);continue}if(a==="oncapture"){let o=i.name.name.name.toLowerCase(),c=ge(i,t)??"undefined";r.push({name:"on:"+o,kind:"attr",expr:`[${c}, { capture: true }]`});continue}r.push(st(i,t))}return s.length>0&&r.push({name:"use",kind:"attr",expr:`[${s.join(", ")}]`}),r}function W(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 s="";for(let i=0;i<t.length;i++){let a=t[i].replace(/\t/g," ");i!==0&&(a=a.replace(/^ +/,"")),i!==t.length-1&&(a=a.replace(/ +$/,"")),a&&(i!==r&&(a+=" "),s+=a)}return s}function he(e,t){let r=[];for(let s of e)if(m.isJSXText(s)){let i=W(s.value);i&&r.push({kind:"text",value:i})}else if(m.isJSXExpressionContainer(s)){if(!m.isJSXEmptyExpression(s.expression)){let i=s.expression;r.push({kind:"expr",code:P(i,t),reactive:C(i)})}}else m.isJSXElement(s)||m.isJSXFragment(s)?r.push(T(s,t)):m.isJSXSpreadChild(s)&&r.push({kind:"expr",code:P(s.expression,t),reactive:!1});return r}function T(e,t=new Set){if(m.isJSXFragment(e))return{kind:"fragment",children:he(e.children,t)};let{tag:r,component:s}=rt(e.openingElement.name),i=ot(e.openingElement.attributes,t),a=he(e.children,t);return s?{kind:"component",name:r,props:i,children:a}:{kind:"element",tag:r,svg:et.has(r),props:i,children:a,static:!1}}var G=new Set(["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary","Suspense","SuspenseList","Await"]),xe=new Set(["Suspense","SuspenseList","Await"]),A=new Set(["Router","Outlet","Redirect","Link"]),lt={Show:"when",For:"each",Index:"each",Match:"when"};var Ce=/^on[A-Z]/,we=["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup","mouseover","mouseout","mouseenter","mouseleave"],O=at((e,t={})=>{e.assertVersion(7);let{runtime:r="automatic",importSource:s="@fluixi/jsx",pragma:i="jsx",pragmaFrag:a="Fragment",development:o=!1,detectReactivity:c=!0,useLitHTML:l=!0,hoistStatics:p=!0,delegateEvents:x=!0,delegatedEvents:d=we,optimizeControlFlow:w=!0,sourceMaps:j=!0,signalModule:R="@fluixi/dom",controlFlowModule:I="@fluixi/dom",routerModule:B="@fluixi/core/router-next",reactiveModule:te="@fluixi/reactive/signal",autoShowTransform:ne=!1,backend:N="imperative",codegen:M="inline",format:re="both",litTag:Fe="html",resolve:Ae=[]}=t,ie=oe(Ae),Me=re==="lit"||re==="both",Te={backend:N,codegen:M,irImports:new Set,libModule:"@fluixi/core",hasJSX:!1,hasReactivity:!1,hasLitHTML:!1,needsSignalImport:!1,needsControlFlowImport:!1,needsCreateMemo:!1,controlFlowComponents:new Set,resolvedComponents:new Map,componentResolver:ie,delegatedEvents:new Set,staticElements:new Map,staticCounter:0};return{name:"@fluixi/babel-plugin-jsx",manipulateOptions(f,u){u.plugins.push("jsx","typescript")},pre(f){Object.assign(f,Te)},visitor:{ImportDeclaration(f,u){f.node.source.value==="@fluixi/core/rx"&&(f.node.source=n.stringLiteral("@fluixi/reactive"))},Program:{enter(f,u){Object.assign(u,{hasJSX:!1,hasReactivity:!1,hasLitHTML:!1,hasLitIR:!1,needsSignalImport:!1,needsControlFlowImport:!1,needsCreateMemo:!1,controlFlowComponents:new Set,resolvedComponents:new Map,componentResolver:ie,delegatedEvents:new Set,staticElements:new Map,autoShow:ne,staticCounter:0,libModule:"@fluixi/core",backend:N,codegen:M,irImports:new Set,needsCreateNativeElement:!1,needsInsert:!1,needsSpread:!1,needsCreateComponent:!1,needsMergeProps:!1})},exit(f,u){let g=[];if(u.hasJSX||u.needsSignalImport&&g.push(n.importDeclaration([n.importSpecifier(n.identifier("signal"),n.identifier("signal"))],n.stringLiteral(R))),u.hasJSX||u.hasLitIR){if(u.irImports.size>0){let h=new Set(["Show","For","Index","Switch","Match","Dynamic","ErrorBoundary","Portal","Suspense"]),S=new Set(["createMemo","createEffect","createRenderEffect","createRoot","createSignal","onCleanup","batch","untrack"]),E=Array.from(u.irImports),b=v=>n.importSpecifier(n.identifier(v),n.identifier(v)),J=v=>!f.scope.hasBinding(v),F=E.filter(v=>S.has(v)&&J(v)),y=E.filter(v=>!h.has(v)&&!S.has(v)&&J(v)),_=E.filter(v=>h.has(v)&&J(v));F.length>0&&g.push(n.importDeclaration(F.map(b),n.stringLiteral(te))),y.length>0&&g.push(n.importDeclaration(y.map(b),n.stringLiteral(R))),_.length>0&&g.push(n.importDeclaration(_.map(b),n.stringLiteral(I)))}if(u.hasJSX&&N==="imperative"&&M!=="ir"){let S=[[!!u.needsCreateNativeElement,"createNativeElement"],[!!u.needsSpread,"spread"],[!!u.needsInsert,"insert"],[!!u.needsCreateComponent,"createComponent"],[!!u.needsMergeProps,"mergeProps"]].filter(([E,b])=>E&&!f.scope.hasBinding(b)).map(([,E])=>n.importSpecifier(n.identifier(E),n.identifier(E)));S.length>0&&g.push(n.importDeclaration(S,n.stringLiteral(R)))}else if(u.hasJSX&&r==="automatic"){let h=[n.importSpecifier(n.identifier("jsx"),n.identifier("jsx")),n.importSpecifier(n.identifier("jsxs"),n.identifier("jsxs")),n.importSpecifier(n.identifier("Fragment"),n.identifier("Fragment"))];o&&h.push(n.importSpecifier(n.identifier("jsxDEV"),n.identifier("jsxDEV"))),u.needsMergeProps&&h.push(n.importSpecifier(n.identifier("mergeProps"),n.identifier("mergeProps"))),g.push(n.importDeclaration(h,n.stringLiteral(s)))}if(u.needsCreateMemo&&!f.scope.hasBinding("createMemo")&&g.push(n.importDeclaration([n.importSpecifier(n.identifier("createMemo"),n.identifier("createMemo"))],n.stringLiteral(N==="imperative"?te:u.libModule??"@fluixi/core"))),u.needsControlFlowImport&&u.controlFlowComponents.size>0){let h=Array.from(u.controlFlowComponents).filter(y=>!f.scope.hasBinding(y)),S=u.libModule??"@fluixi/core",E=h.filter(y=>A.has(y)),b=h.filter(y=>xe.has(y)),J=h.filter(y=>!xe.has(y)&&!A.has(y)),F=(y,_)=>n.importDeclaration(y.map(v=>n.importSpecifier(n.identifier(v),n.identifier(v))),n.stringLiteral(_));J.length>0&&g.push(F(J,I)),b.length>0&&g.push(F(b,S)),E.length>0&&g.push(F(E,B))}if(u.resolvedComponents.size>0){let h=new Map;for(let[S,E]of u.resolvedComponents){if(f.scope.hasBinding(S))continue;let b=h.get(E.module)??[];b.push({local:S,exported:E.export}),h.set(E.module,b)}for(let[S,E]of h)g.push(n.importDeclaration(E.map(({local:b,exported:J})=>J==="default"?n.importDefaultSpecifier(n.identifier(b)):n.importSpecifier(n.identifier(b),n.identifier(J))),n.stringLiteral(S)))}if(x&&u.delegatedEvents.size>0){g.push(n.importDeclaration([n.importSpecifier(n.identifier("delegateEvents"),n.identifier("delegateEvents"))],n.stringLiteral(N==="imperative"?R:"@fluixi/jsx")));let h=n.arrayExpression(Array.from(u.delegatedEvents).map(E=>n.stringLiteral(E))),S=n.expressionStatement(n.callExpression(n.identifier("delegateEvents"),[h]));f.node.body.unshift(S)}if(p&&u.staticElements.size>0){let h=[];u.staticElements.forEach((S,E)=>{h.push(n.variableDeclaration("const",[n.variableDeclarator(n.identifier(E),S)]))}),f.node.body.unshift(...h)}}g.length>0&&f.node.body.unshift(...mt(g))}},JSXElement(f,u){if(u.hasJSX=!0,N==="imperative"&&M==="ir"){f.replaceWith(ve(f.node,u));return}let g=f.node,h=g.openingElement;if(n.isJSXIdentifier(h.name)&&A.has(h.name.name)&&(u.controlFlowComponents.add(h.name.name),u.needsControlFlowImport=!0),n.isJSXIdentifier(h.name)&&G.has(h.name.name)&&(u.controlFlowComponents.add(h.name.name),w)){let E=Nt(g,u);if(E){f.replaceWith(E);return}}if(p&&N!=="imperative"&&je(g,u)){let E=kt(g,u);if(E){f.replaceWith(E);return}}let S=ct(g,u,{runtime:r,pragma:i,development:o,detectReactivity:c,useLitHTML:l,autoShow:ne});f.replaceWith(S)},JSXFragment(f,u){if(u.hasJSX=!0,N==="imperative"&&M==="ir"){f.replaceWith(ve(f.node,u));return}let g=q(f.node,u,{runtime:r,pragmaFrag:a,development:o});f.replaceWith(g)},CallExpression(f,u){if(!c)return;let g=f.node.callee;g.name,n.isIdentifier(g)&&(g.name==="createSignal"||g.name==="createStore"||g.name==="useContext"||g.name==="useLocation")&&(u.hasReactivity=!0)},JSXExpressionContainer(f){},TaggedTemplateExpression(f,u){if(Me&&N==="imperative"&&n.isIdentifier(f.node.tag)&&(f.node.tag.name===Fe||f.node.tag.name==="svg")){f.replaceWith(dt(f.node,u));return}}}}});function ct(e,t,r){let{runtime:s,pragma:i,development:a,autoShow:o=!0}=r;return s==="automatic"?D(e,t,a,o):ht(e,t,i)}var pt=new Set(["svg","path","circle","rect","line","polygon","polyline","ellipse","g","defs","clipPath","text"]);function Se(e,t,r){return t.length>0?(r.needsMergeProps=!0,n.callExpression(n.identifier("mergeProps"),[...t,n.objectExpression(e)])):n.objectExpression(e)}function Re(e){return e.length===1?e[0]:n.arrayExpression(e)}function ut(e,t,r,s,i,a){if(!t){let d=[...r];return i.length>0&&d.push(n.objectMethod("get",n.identifier("children"),[],n.blockStatement([n.returnStatement(Re(i))]))),ke(e,Se(d,s,a),a)}let o=e.value,c=pt.has(o),l=n.identifier("_el$"),p=[];a.needsCreateNativeElement=!0;let x=[e];if(c&&x.push(n.booleanLiteral(!0)),p.push(n.variableDeclaration("const",[n.variableDeclarator(l,n.callExpression(n.identifier("createNativeElement"),x))])),r.length>0||s.length>0){a.needsSpread=!0;let d=[n.objectProperty(n.identifier("element"),l),n.objectProperty(n.identifier("props"),Se(r,s,a))];c&&d.push(n.objectProperty(n.identifier("isSVG"),n.booleanLiteral(!0))),p.push(n.expressionStatement(n.callExpression(n.identifier("spread"),[n.objectExpression(d)])))}if(i.length>0){a.needsInsert=!0;for(let d of i){let j=n.isArrowFunctionExpression(d)||n.isFunctionExpression(d)||n.isCallExpression(d)&&n.isIdentifier(d.callee)&&d.callee.name==="createMemo"?[n.cloneNode(l),d,n.nullLiteral()]:[n.cloneNode(l),d];p.push(n.expressionStatement(n.callExpression(n.identifier("insert"),j)))}}return p.push(n.returnStatement(l)),n.callExpression(n.arrowFunctionExpression([],n.blockStatement(p)),[])}function ke(e,t,r){if(n.isIdentifier(e)&&A.has(e.name)&&(r.controlFlowComponents.add(e.name),r.needsControlFlowImport=!0),n.isIdentifier(e)&&!A.has(e.name)&&!G.has(e.name)&&r.componentResolver){let s=r.componentResolver.resolve(e.name);s&&r.resolvedComponents.set(e.name,s)}return 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 ve(e,t){let r=new Set,s=T(e,r),{code:i,imports:a}=X.emit(s,{});for(let o of a)r.add(o);for(let o of r)t.irImports.add(o);return ye.expression(i,{placeholderPattern:!1,plugins:["typescript"]})()}function mt(e){let t=new Map,r=[];for(let s of e){let i=s.source.value;if(!s.specifiers.every(c=>n.isImportSpecifier(c))){r.push(s);continue}let o=t.get(i);if(!o){let c=new Set(s.specifiers.map(l=>l.local.name));t.set(i,{decl:s,names:c}),r.push(s);continue}for(let c of s.specifiers)o.names.has(c.local.name)||(o.names.add(c.local.name),o.decl.specifiers.push(c))}return r}function dt(e,t){let r=new Set,s=n.isIdentifier(e.tag)&&e.tag.name==="svg",i=H(e,r,{svg:s}),{code:a,imports:o}=X.emit(i,{});for(let l of o)r.add(l);for(let l of r)t.irImports.add(l);Ne(i,t),t.hasLitIR=!0;let c=ye.expression(a,{placeholderPattern:!1,plugins:["typescript"]})();return ft(c,e),c}function ft(e,t){if(!t.loc)return;let r=new Set,s=i=>{if(!r.has(i)){r.add(i),i.loc||(i.loc=t.loc,i.start=t.start,i.end=t.end);for(let a of n.VISITOR_KEYS[i.type]??[]){let o=i[a];if(Array.isArray(o))for(let c of o)c&&typeof c=="object"&&"type"in c&&s(c);else o&&typeof o=="object"&&"type"in o&&s(o)}}};s(e)}function Ne(e,t){if(e.kind==="component"&&(G.has(e.name)||A.has(e.name)))t.controlFlowComponents.add(e.name),t.needsControlFlowImport=!0;else if(e.kind==="component"&&t.componentResolver){let r=t.componentResolver.resolve(e.name);r&&t.resolvedComponents.set(e.name,r)}if((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)Ne(r,t)}function gt(e){return e.map(t=>{if(n.isObjectProperty(t)){let r=t.key,s=t.computed,i=t.value;return n.objectMethod("get",r,[],n.blockStatement([n.returnStatement(i)]),s)}return t})}function D(e,t,r,s=!0){let i=e.openingElement,a=e.children,o=Je(i.name),c=n.isJSXIdentifier(i.name)&&/^[a-z]/.test(i.name.name),l=Xe(i.attributes,t,c,n.isJSXIdentifier(i.name)?i.name.name:""),p=l.props,x=l.spreads;c||(p=gt(p));let d=Y(a,t,s);if(t.backend==="imperative")return ut(o,c,p,x,d,t);if(d.length>0){let I=d.length===1?d[0]:n.arrayExpression(d);p.push(n.objectProperty(n.identifier("children"),I))}let w;if(x.length>0){let I=p.length>0?n.objectExpression(p):n.objectExpression([]);t.needsMergeProps=!0,w=n.callExpression(n.identifier("mergeProps"),[...x,I])}else w=n.objectExpression(p);let j=r?"jsxDEV":d.length>1?"jsxs":"jsx",R=[o,w];return r&&R.push(n.identifier("undefined"),n.booleanLiteral(!1),n.identifier("undefined"),n.identifier("undefined")),n.callExpression(n.identifier(j),R)}function ht(e,t,r){let s=e.openingElement,i=e.children,a=Je(s.name),o=n.isJSXIdentifier(s.name)&&/^[a-z]/.test(s.name.name),{props:c,spreads:l}=Xe(s.attributes,t,o,n.isJSXIdentifier(s.name)?s.name.name:""),p=Y(i,t,t.autoShow??!0),x;if(l.length>0){let w=c.length>0?n.objectExpression(c):n.objectExpression([]);t.needsMergeProps=!0,x=n.callExpression(n.identifier("mergeProps"),[...l,w])}else x=c.length>0?n.objectExpression(c):n.nullLiteral();let d=[a,x,...p];return n.callExpression(n.identifier(r),d)}function q(e,t,r){let{runtime:s,pragmaFrag:i,development:a}=r,o=Y(e.children,t,t.autoShow??!0);if(t.backend==="imperative")return o.length===0?n.nullLiteral():Re(o);if(s==="automatic"){let c=a?"jsxDEV":o.length>1?"jsxs":"jsx",l=n.objectExpression([n.objectProperty(n.identifier("children"),o.length===1?o[0]:n.arrayExpression(o))]),p=[n.identifier("Fragment"),l];return a&&p.push(n.identifier("undefined"),n.booleanLiteral(!1),n.identifier("undefined"),n.identifier("undefined")),n.callExpression(n.identifier(c),p)}else return n.callExpression(n.identifier(i),o)}function Je(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)?Ie(e):n.isJSXNamespacedName(e)?n.stringLiteral(`${e.namespace.name}:${e.name.name}`):n.stringLiteral("div")}function Ie(e){let t;return n.isJSXIdentifier(e.object)?t=n.identifier(e.object.name):t=Ie(e.object),n.memberExpression(t,n.identifier(e.property.name))}function Et(e){return/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(e)}function Xe(e,t,r=!0,s=""){let i=[],a=[],o=lt[s];for(let c of e)if(n.isJSXSpreadAttribute(c))a.push(c.argument);else if(n.isJSXAttribute(c)){let l=xt(c.name),p=St(c.value,t,l,r);if(Ce.test(l)){let B=l.slice(2).toLowerCase();we.includes(B)&&t.delegatedEvents.add(B)}let x=Et(l)?n.identifier(l):n.stringLiteral(l),d=c.value,w=n.isJSXElement(d)||n.isJSXFragment(d)||n.isJSXExpressionContainer(d)&&(n.isJSXElement(d.expression)||n.isJSXFragment(d.expression)),j=!r&&l===o,R=n.isJSXExpressionContainer(d)&&!n.isJSXEmptyExpression(d.expression)?d.expression:null,I=!r&&!!R&&Pe(R,l);!r&&w||j||I?i.push(n.objectMethod("get",x,[],n.blockStatement([n.returnStatement(p)]))):i.push(n.objectProperty(x,p))}return{props:i,spreads:a}}function xt(e){return n.isJSXIdentifier(e)?e.name==="class"?"className":e.name:n.isJSXNamespacedName(e)?`${e.namespace.name}:${e.name.name}`:"unknown"}function St(e,t,r="",s=!0){if(e===null)return n.booleanLiteral(!0);if(n.isStringLiteral(e))return e.value.includes(`
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 s&&Pe(i,r)?n.arrowFunctionExpression([],i):i}return n.isJSXElement(e)?D(e,t,!1,t.autoShow??!0):n.isJSXFragment(e)?q(e,t,{runtime:"automatic",pragmaFrag:"Fragment",development:!1}):n.booleanLiteral(!0)}function Pe(e,t){return Ce.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 vt(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 s="";for(let i=0;i<t.length;i++){let a=t[i].replace(/\t/g," ");i!==0&&(a=a.replace(/^ +/,"")),i!==t.length-1&&(a=a.replace(/ +$/,"")),a&&(i!==r&&(a+=" "),s+=a)}return s}function Y(e,t,r=!0){let s=[];for(let i of e)if(n.isJSXText(i)){let a=vt(i.value);a&&s.push(n.stringLiteral(a))}else if(n.isJSXExpressionContainer(i)){if(!n.isJSXEmptyExpression(i.expression)){let a=i.expression;if(r){let o=bt(a,t)??yt(a,t);if(o){s.push(o);continue}}else{let o=Ct(a,t);if(o){s.push(o);continue}}Rt(a)?s.push(n.arrowFunctionExpression([],a)):s.push(a)}}else n.isJSXElement(i)?s.push(D(i,t,!1,t.autoShow??!0)):n.isJSXFragment(i)?s.push(q(i,t,{runtime:"automatic",pragmaFrag:"Fragment",development:!1})):n.isJSXSpreadChild(i)&&s.push(i.expression);return s}function bt(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 s=k(r.right);if(s)return $(L(r.left),s,null,t)}if(n.isConditionalExpression(r)){let s=k(r.consequent);if(s){let i=Q(r.alternate,t);return $(L(r.test),s,i,t,!0)}}return null}function yt(e,t){if(n.isLogicalExpression(e)&&e.operator==="&&"){let r=k(e.right);if(r)return $(L(e.left),r,null,t)}if(n.isConditionalExpression(e)){let r=k(e.consequent);if(r){let s=Q(e.alternate,t);return $(L(e.test),r,s,t)}}return null}function Ct(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 s=L(r.test),a=k(r.consequent)??r.consequent,c=k(r.alternate)??r.alternate,l=n.conditionalExpression(s,a,c);return K(r.consequent)||K(r.alternate)?null:(t.needsCreateMemo=!0,n.callExpression(n.identifier("createMemo"),[n.arrowFunctionExpression([],l)]))}if(n.isLogicalExpression(r)&&r.operator==="&&"){let s=L(r.left),a=k(r.right)??r.right,o=n.logicalExpression("&&",s,a);return K(r.right)?null:(t.needsCreateMemo=!0,n.callExpression(n.identifier("createMemo"),[n.arrowFunctionExpression([],o)]))}return null}function Q(e,t){if(wt(e))return null;let r=k(e);if(r)return Le(r,t);if(n.isConditionalExpression(e)){let s=e,i=k(s.consequent);if(i){let a=Q(s.alternate,t);return $(L(s.test),i,a,t)}}return e}function be(e){return n.isJSXElement(e)||n.isJSXFragment(e)}function K(e){let t=k(e);if(!t||!n.isJSXElement(t))return!1;let r=t.openingElement.name;return n.isJSXIdentifier(r)&&G.has(r.name)}function k(e){return be(e)?e:n.isArrowFunctionExpression(e)&&e.params.length===0&&!e.async&&be(e.body)?e.body:null}function L(e){return n.isArrowFunctionExpression(e)&&e.params.length===0&&!e.async&&n.isExpression(e.body)?e.body:e}function wt(e){return n.isNullLiteral(e)||n.isIdentifier(e)&&e.name==="undefined"||n.isBooleanLiteral(e)&&e.value===!1}function Le(e,t){return n.isJSXElement(e)?D(e,t,!1,t.autoShow??!0):q(e,t,{runtime:"automatic",pragmaFrag:"Fragment",development:!1})}function $(e,t,r,s,i=!1){s.controlFlowComponents.add("Show"),s.needsControlFlowImport=!0;let a=Le(t,s),o=[n.objectProperty(n.identifier("when"),n.arrowFunctionExpression([],e)),n.objectProperty(n.identifier("children"),a)];return r&&o.push(n.objectProperty(n.identifier("fallback"),r)),ke(n.identifier("Show"),n.objectExpression(o),s)}function Rt(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 je(e,t){let r=e.openingElement;if(!n.isJSXIdentifier(r.name))return!1;let s=r.name.name;if(s[0]!==s[0].toLowerCase())return!1;for(let i of r.attributes){if(n.isJSXSpreadAttribute(i))return!1;if(n.isJSXAttribute(i)){let a=i.value;if(n.isJSXExpressionContainer(a)&&!n.isStringLiteral(a.expression)&&!n.isNumericLiteral(a.expression))return!1}}for(let i of e.children)if(n.isJSXElement(i)&&!je(i,t)||n.isJSXExpressionContainer(i))return!1;return!0}function kt(e,t){let r=`_$static${t.staticCounter++}`,s=D(e,t,!1);return t.staticElements.set(r,s),n.identifier(r)}function Nt(e,t){let r=e.openingElement.name.name;return r==="Show"?Jt(e,t):r==="For"?It(e,t):null}function Jt(e,t){return null}function It(e,t){return null}var nn=O;function rn(e){return[O,e]}function ee(e={}){return{plugins:[[O,{runtime:"automatic",importSource:"@fluixi/jsx",development:!1,detectReactivity:!0,useLitHTML:!0,hoistStatics:!0,delegateEvents:!0,optimizeControlFlow:!0,sourceMaps:!0,...e}]]}}var sn={production:ee({development:!1,hoistStatics:!0,delegateEvents:!0,optimizeControlFlow:!0}),development:ee({development:!0,hoistStatics:!1,sourceMaps:!0}),minimal:ee({detectReactivity:!1,useLitHTML:!1,hoistStatics:!1,delegateEvents:!1,optimizeControlFlow:!1})};export{nn as babelPluginReactiveJSX,rn as createPlugin,ee as createPreset,O as default,sn as presets};
@@ -1,2 +1,2 @@
1
- "use strict";var $e=Object.create;var z=Object.defineProperty;var Oe=Object.getOwnPropertyDescriptor;var De=Object.getOwnPropertyNames;var Be=Object.getPrototypeOf,_e=Object.prototype.hasOwnProperty;var Ve=(e,t)=>{for(var r in t)z(e,r,{get:t[r],enumerable:!0})},ae=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of De(t))!_e.call(e,i)&&i!==r&&z(e,i,{get:()=>t[i],enumerable:!(s=Oe(t,i))||s.enumerable});return e};var le=(e,t,r)=>(r=e!=null?$e(Be(e)):{},ae(t||!e||!e.__esModule?z(r,"default",{value:e,enumerable:!0}):r,e)),ze=e=>ae(z({},"__esModule",{value:!0}),e);var Ft={};Ve(Ft,{babelPluginReactiveJSX:()=>Pt,createPlugin:()=>Lt,createPreset:()=>U,default:()=>A,presets:()=>jt});module.exports=ze(Ft);var we=require("@babel/helper-plugin-utils"),n=require("@babel/core");var u=require("@babel/core"),Q=le(require("@babel/generator"),1);var Z={version:1,module:"@fluixi/dom",symbols:["createNativeElement","insert","spread","setAttribute","delegateEvents","createComponent","createMemo","untrack","Show","For","Index","Switch","Match","Dynamic","ErrorBoundary"]},Mt={version:2,module:"@fluixi/dom",symbols:[...Z.symbols,"template","cloneTemplate","walk"]};var We={show:"Show",for:"For",index:"Index",switch:"Switch",match:"Match",dynamic:"Dynamic",errorBoundary:"ErrorBoundary",suspense:"Suspense"};function He(e){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e)}function pe(e){return He(e)?e:JSON.stringify(e)}function Ge(e){return e.expr!==void 0?e.reactive?`() => (${e.expr})`:`(${e.expr})`:JSON.stringify(e.literal??!0)}function qe(e){return e.expr!==void 0?`(${e.expr})`:JSON.stringify(e.literal??!0)}function Ue(e,t,r){let s=e.filter(c=>c.kind==="spread"),a=e.filter(c=>c.kind!=="spread").map(c=>`${pe(c.name)}: ${Ge(c)}`);t!=null&&a.push(`children: ${t}`);let o=`{ ${a.join(", ")} }`;return s.length>0?(r.add("mergeProps"),`mergeProps(${s.map(c=>c.expr).join(", ")}, ${o})`):o}function ue(e,t){return e.length===1?W(e[0],t):`[${e.map(r=>W(r,t)).join(", ")}]`}function ce(e,t,r,s){s.add("createMemo"),s.add("createComponent");let i=t.filter(l=>l.kind==="spread"),o=t.filter(l=>l.kind!=="spread").map(l=>`get ${pe(l.name)}() { return ${qe(l)}; }`);r.length>0&&o.push(`get children() { return ${ue(r,s)}; }`);let c=`{ ${o.join(", ")} }`;return i.length>0&&(s.add("mergeProps"),c=`mergeProps(${i.map(l=>l.expr).join(", ")}, ${c})`),`createMemo(() => createComponent(${e}, ${c}))`}function W(e,t){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":ue(e.children,t);case"component":return ce(e.name,e.props,e.children,t);case"control":{let r=We[e.control]??e.control;return t.add(r),ce(r,e.props,e.children,t)}case"element":{t.add("createNativeElement");let r=JSON.stringify(e.tag),s="_el$",i=[],a=e.svg?`${r}, true`:r;if(i.push(`const ${s} = createNativeElement(${a});`),e.props.length>0){t.add("spread");let o=e.svg?", isSVG: true":"";i.push(`spread({ element: ${s}, props: ${Ue(e.props,null,t)}${o} });`)}for(let o of e.children){t.add("insert");let c=W(o,t),l=o.kind==="expr"&&o.reactive||o.kind==="component"||o.kind==="control";i.push(l?`insert(${s}, ${c}, null);`:`insert(${s}, ${c});`)}return i.push(`return ${s};`),`(() => { ${i.join(" ")} })()`}}}var X={name:"imperative",contract:Z,emit(e,t){let r=new Set;return{code:W(e,r),imports:Array.from(r)}}};var T=require("@babel/core"),K=le(require("@babel/generator"),1),fe=require("@fluixi/template-parser");var Ze=K.default.default??K.default;function Ke(e){return Ze(e,{concise:!0}).code}var me=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function Ye(e){return e.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${")}function de(e){return e.charAt(0).toUpperCase()+e.slice(1)}var Y=class{constructor(t,r){this.holes=t;this.used=r}hole(t){return this.holes[t]??{node:T.types.identifier("undefined"),code:"undefined",reactive:!1}}emit(t){let{code:r,imports:s}=X.emit(t,{});for(let i of s)this.used.add(i);return r}lowerRoot(t){let r=this.lowerChildren(t);return r.length===1?r[0]:{kind:"fragment",children:r}}lowerChildren(t){let r=[];for(let s=0;s<t.length;s++){let i=t[s];if(i.kind==="Element"||i.kind==="Component"){let o=i.attributes.find(c=>c.kind==="IfDirective");if(o&&o.kind==="IfDirective"){let c=s+1;c<t.length&&this.isBlankText(t[c])&&c++;let l=t[c],p=l&&(l.kind==="Element"||l.kind==="Component")&&l.attributes.some(E=>E.kind==="ElseDirective");r.push(this.lowerIf(i,o.hole,p?l:null)),p&&(s=c);continue}if(i.attributes.some(c=>c.kind==="EachDirective")){r.push(this.lowerEach(i));continue}}let a=this.lowerNode(i);a&&r.push(a)}return r}isBlankText(t){return t.kind==="Text"&&!t.raw&&H(t.value)===""}lowerNode(t){switch(t.kind){case"Text":{if(t.raw)return{kind:"text",value:t.value};let r=H(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(s=>s.kind==="Attribute"&&s.name==="is");if(t.tag==="component"&&r&&r.value&&r.value.kind==="hole"){let s=t.attributes.filter(a=>a!==r),i=this.lowerComponent({...t,kind:"Component",tag:"Dynamic",tagHole:null,attributes:s});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,s=this.lowerAttributes(t.attributes),{slots:i,rest:a}=this.partitionSlots(t.children);for(let[o,c]of i){let l=c.length===1?c[0]:{kind:"fragment",children:c};s.push({name:o,kind:"attr",expr:this.emit(l),jsxElement:!0})}return{kind:"component",name:r,props:s,children:this.lowerChildren(a)}}partitionSlots(t){let r=new Map,s=[];for(let i of t){if(i.kind==="Element"||i.kind==="Component"){let a=i.attributes.find(o=>o.kind==="Attribute"&&o.name==="slot");if(a&&a.value&&a.value.kind==="static"){let o={...i,attributes:i.attributes.filter(p=>p!==a)},c=o.kind==="Element"?this.lowerElement(o):this.lowerComponent(o),l=r.get(a.value.value)??[];l.push(c),r.set(a.value.value,l);continue}}s.push(i)}return{slots:r,rest:s}}lowerIf(t,r,s){let i=this.hole(r),a=[{name:"when",kind:"attr",expr:i.code,reactive:i.reactive}];if(s){let c=this.stripAndLower(s,l=>l.kind==="ElseDirective");a.push({name:"fallback",kind:"attr",expr:this.emit(c),jsxElement:!0})}let o=this.stripAndLower(t,c=>c.kind==="IfDirective");return{kind:"component",name:"Show",props:a,children:[o]}}lowerEach(t){let r=t.attributes.find(l=>l.kind==="EachDirective");if(!r||r.kind!=="EachDirective")return this.lowerNode(t);let s=this.hole(r.hole),i=[{name:"each",kind:"attr",expr:s.code,reactive:s.reactive}];if(r.key){let l="static"in r.key?`(item) => item[${JSON.stringify(r.key.static)}]`:this.hole(r.key.hole).code;i.push({name:"by",kind:"attr",expr:l})}let a=this.itemArrow(t),o;if(a){let l=a.body,p={kind:"expr",code:R(l,this.used),reactive:y(l)},E=this.rebuildWithChildren(t,[p]);o=`(${a.params.map(f=>Ke(f)).join(", ")}) => (${this.emit(E)})`}else{let l=this.stripAndLower(t,p=>p.kind==="EachDirective");o=`() => (${this.emit(l)})`}return{kind:"component",name:"For",props:i,children:[{kind:"expr",code:o,reactive:!1}]}}itemArrow(t){let r=t.children.filter(i=>!this.isBlankText(i));if(r.length!==1||r[0].kind!=="Expression")return null;let s=this.hole(r[0].hole).node;return T.types.isArrowFunctionExpression(s)&&!T.types.isBlockStatement(s.body)?s:null}stripAndLower(t,r){let s={...t,attributes:t.attributes.filter(i=>!r(i))};return s.kind==="Element"?this.lowerElement(s):this.lowerComponent(s)}rebuildWithChildren(t,r){let s=this.lowerAttributes(t.attributes.filter(i=>i.kind!=="EachDirective"));return t.kind==="Element"?{kind:"element",tag:t.tag,svg:t.namespace==="svg",props:s,children:r,static:!1}:{kind:"component",name:t.tag,props:s,children:r}}lowerAttributes(t){let r=[],s=[],i=!1,a=[],o=!1,c=[];for(let l of t)switch(l.kind){case"IfDirective":case"EachDirective":case"ElseDirective":break;case"Attribute":r.push(this.plainAttr(l));break;case"PropertyBinding":r.push({name:l.name,kind:"prop",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"EventBinding":r.push(this.eventProp(l));break;case"RefBinding":r.push({name:"ref",kind:"ref",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"Spread":r.push({name:"",kind:"spread",expr:this.hole(l.hole).code});break;case"ClassDirective":{let p=this.hole(l.hole);s.push(`${JSON.stringify(l.name)}: ${p.code}`),i=i||p.reactive;break}case"StyleDirective":{let p=this.hole(l.hole);a.push(`${JSON.stringify(l.name)}: ${p.code}`),o=o||p.reactive;break}case"BindDirective":r.push(...this.bindProps(l.name,this.hole(l.hole).code));break;case"UseDirective":{let p=l.name??(l.hole!=null?this.hole(l.hole).code:null);if(!p)break;c.push(l.name!=null&&l.hole!=null?`[${p}, () => (${this.hole(l.hole).code})]`:`[${p}]`);break}}return s.length>0&&r.push({name:"classList",kind:"attr",expr:`{ ${s.join(", ")} }`,reactive:i}),a.length>0&&r.push({name:"style",kind:"attr",expr:`{ ${a.join(", ")} }`,reactive:o}),c.length>0&&r.push({name:"use",kind:"attr",expr:`[${c.join(", ")}]`}),r}eventProp(t){let r=t.name.toLowerCase(),s=this.hole(t.hole).code;if(!(t.syntax==="colon"||t.modifiers.length>0))return{name:"on"+de(t.name),kind:"event",event:{name:r,delegated:me.has(r)},expr:s};let a=this.wrapHandler(s,t.modifiers),o=this.eventOptions(t.modifiers),c=o?`[${a}, ${o}]`:a;return{name:"on:"+r,kind:"attr",expr:c}}wrapHandler(t,r){let s=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();"),!s&&i.length===0?t:`(e) => { ${s}${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 s=t==="checked",i=s?"change":"input",a=s?"checked":"value",o=`(${r})`;return[{name:t,kind:"attr",expr:`${o}[0]()`,reactive:!0},{name:"on"+de(i),kind:"event",event:{name:i,delegated:me.has(i)},expr:`(e) => ${o}[1](e.target.${a})`}]}plainAttr(t){let r=t.value,s=t.name;t.name==="class"?s=r&&r.kind==="hole"&&T.types.isObjectExpression(this.hole(r.hole).node)?"classList":"className":t.name==="html"&&(s="innerHTML");let a={name:s,kind:"attr"};if(r==null)return a.literal=!0,a;if(r.kind==="static")return a.literal=r.value,a;if(r.kind==="hole"){let l=this.hole(r.hole);return a.expr=l.code,a.reactive=l.reactive,a}let o=!1,c=r.parts.map(l=>{if("text"in l)return Ye(l.text);let p=this.hole(l.hole);return o=o||p.reactive,"${"+p.code+"}"}).join("");return a.expr="`"+c+"`",a.reactive=o,a}};function ge(e,t,r={}){let s=e.quasi,i=s.expressions.map(c=>{let l=c;return{node:l,code:R(l,t),reactive:y(l)}}),a=Qe(s),{root:o}=(0,fe.parseTemplate)(a,{svg:r.svg});return new Y(i,t).lowerRoot(o.children)}function Qe(e){let t=[];return e.quasis.forEach((r,s)=>{let i=r.value.cooked??r.value.raw;if(t.push({kind:"static",text:i,start:r.start??0}),s<e.expressions.length){let a=e.expressions[s];t.push({kind:"hole",index:s,start:a.start??0,end:a.end??0})}}),t}function G(e,t=new Set,r={}){return ge(e,t,r)}var et=Q.default.default??Q.default;function xe(e){return et(e,{concise:!0}).code}function tt(e,t){let r=u.types.cloneNode(e,!0),s=u.types.file(u.types.program([u.types.expressionStatement(r)])),i=!1,a=(o,c,l)=>{for(let p of l)t.add(p);o.replaceWith(u.template.expression(c,{placeholderPattern:!1,plugins:["typescript"]})()),o.skip(),i=!0};return(0,u.traverse)(s,{"JSXElement|JSXFragment"(o){let c=o.node,{code:l,imports:p}=X.emit($(c,t),{});a(o,l,p)},TaggedTemplateExpression(o){let c=o.node.tag;if(!u.types.isIdentifier(c)||c.name!=="html"&&c.name!=="svg")return;let l=G(o.node,t,{svg:c.name==="svg"}),{code:p,imports:E}=X.emit(l,{});a(o,p,E)}}),i?s.program.body[0].expression:e}function R(e,t){return xe(tt(e,t))}var nt=new Set(["svg","path","circle","rect","line","polygon","polyline","ellipse","g","defs","clipPath","text"]),rt=/^on[A-Z]/,it=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function st(e){if(u.types.isJSXIdentifier(e)){let t=e.name[0]!==e.name[0].toLowerCase();return{tag:e.name,component:t}}return u.types.isJSXMemberExpression(e)?{tag:xe(e),component:!0}:u.types.isJSXNamespacedName(e)?{tag:`${e.namespace.name}:${e.name.name}`,component:!1}:{tag:"div",component:!1}}function ot(e){return u.types.isJSXIdentifier(e)?e.name==="class"?"className":e.name:u.types.isJSXNamespacedName(e)?`${e.namespace.name}:${e.name.name}`:"unknown"}function y(e){return u.types.isCallExpression(e)||u.types.isOptionalCallExpression(e)?!0:u.types.isMemberExpression(e)||u.types.isOptionalMemberExpression(e)?!(!e.computed&&u.types.isIdentifier(e.property,{name:"children"})):u.types.isConditionalExpression(e)?y(e.test)||y(e.consequent)||y(e.alternate):u.types.isLogicalExpression(e)||u.types.isBinaryExpression(e)?y(e.left)||y(e.right):u.types.isTemplateLiteral(e)?e.expressions.some(t=>y(t)):u.types.isObjectExpression(e)?e.properties.some(t=>u.types.isObjectProperty(t)&&!t.computed&&y(t.value)):u.types.isArrayExpression(e)?e.elements.some(t=>t!=null&&!u.types.isSpreadElement(t)&&y(t)):!1}function at(e,t){let r=ot(e.name),s=rt.test(r),i=s||r.startsWith("on:"),o={name:r,kind:s?"event":"attr"};s&&(o.event={name:r.slice(2).toLowerCase(),delegated:it.has(r.slice(2).toLowerCase())});let c=e.value;if(c==null)return o.literal=!0,o;if(u.types.isStringLiteral(c))return o.literal=c.value,o;if(u.types.isJSXExpressionContainer(c)&&!u.types.isJSXEmptyExpression(c.expression)){let l=c.expression;return u.types.isStringLiteral(l)||u.types.isNumericLiteral(l)||u.types.isBooleanLiteral(l)?(o.literal=l.value,o):(o.expr=R(l,t),o.reactive=i?!1:y(l),(u.types.isJSXElement(l)||u.types.isJSXFragment(l))&&(o.jsxElement=!0),o)}return o.literal=!0,o}function he(e,t){let r=e.value;return r==null?null:u.types.isStringLiteral(r)?JSON.stringify(r.value):u.types.isJSXExpressionContainer(r)&&!u.types.isJSXEmptyExpression(r.expression)?R(r.expression,t):null}function lt(e,t){let r=[],s=[];for(let i of e){if(u.types.isJSXSpreadAttribute(i)){r.push({name:"",kind:"spread",expr:R(i.argument,t)});continue}if(!u.types.isJSXAttribute(i))continue;let a=u.types.isJSXNamespacedName(i.name)?i.name.namespace.name:null;if(a==="use"){let o=i.name.name.name;t.add(o);let c=he(i,t);s.push(c!=null?`[${o}, () => (${c})]`:`[${o}]`);continue}if(a==="oncapture"){let o=i.name.name.name.toLowerCase(),c=he(i,t)??"undefined";r.push({name:"on:"+o,kind:"attr",expr:`[${c}, { capture: true }]`});continue}r.push(at(i,t))}return s.length>0&&r.push({name:"use",kind:"attr",expr:`[${s.join(", ")}]`}),r}function H(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 s="";for(let i=0;i<t.length;i++){let a=t[i].replace(/\t/g," ");i!==0&&(a=a.replace(/^ +/,"")),i!==t.length-1&&(a=a.replace(/ +$/,"")),a&&(i!==r&&(a+=" "),s+=a)}return s}function Ee(e,t){let r=[];for(let s of e)if(u.types.isJSXText(s)){let i=H(s.value);i&&r.push({kind:"text",value:i})}else if(u.types.isJSXExpressionContainer(s)){if(!u.types.isJSXEmptyExpression(s.expression)){let i=s.expression;r.push({kind:"expr",code:R(i,t),reactive:y(i)})}}else u.types.isJSXElement(s)||u.types.isJSXFragment(s)?r.push($(s,t)):u.types.isJSXSpreadChild(s)&&r.push({kind:"expr",code:R(s.expression,t),reactive:!1});return r}function $(e,t=new Set){if(u.types.isJSXFragment(e))return{kind:"fragment",children:Ee(e.children,t)};let{tag:r,component:s}=st(e.openingElement.name),i=lt(e.openingElement.attributes,t),a=Ee(e.children,t);return s?{kind:"component",name:r,props:i,children:a}:{kind:"element",tag:r,svg:nt.has(r),props:i,children:a,static:!1}}var te=new Set(["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary","Suspense","SuspenseList","Await"]),Se=new Set(["Suspense","SuspenseList","Await"]),O=new Set(["Router","Outlet","Redirect","Link"]),ct={Show:"when",For:"each",Index:"each",Match:"when"};var Ce=/^on[A-Z]/,ke=["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup","mouseover","mouseout","mouseenter","mouseleave"],A=(0,we.declare)((e,t={})=>{e.assertVersion(7);let{runtime:r="automatic",importSource:s="@fluixi/jsx",pragma:i="jsx",pragmaFrag:a="Fragment",development:o=!1,detectReactivity:c=!0,useLitHTML:l=!0,hoistStatics:p=!0,delegateEvents:E=!0,delegatedEvents:f=ke,optimizeControlFlow:w=!0,sourceMaps:L=!0,signalModule:C="@fluixi/dom",controlFlowModule:J="@fluixi/dom",routerModule:_="@fluixi/core/router-next",reactiveModule:ie="@fluixi/reactive/signal",autoShowTransform:se=!1,backend:N="imperative",codegen:M="inline",format:oe="both",litTag:Ae="html"}=t,Me=oe==="lit"||oe==="both",Te={backend:N,codegen:M,irImports:new Set,libModule:"@fluixi/core",hasJSX:!1,hasReactivity:!1,hasLitHTML:!1,needsSignalImport:!1,needsControlFlowImport:!1,needsCreateMemo:!1,controlFlowComponents:new Set,delegatedEvents:new Set,staticElements:new Map,staticCounter:0};return{name:"@fluixi/babel-plugin-jsx",manipulateOptions(d,m){m.plugins.push("jsx","typescript")},pre(d){Object.assign(d,Te)},visitor:{ImportDeclaration(d,m){d.node.source.value==="@fluixi/core/rx"&&(d.node.source=n.types.stringLiteral("@fluixi/reactive"))},Program:{enter(d,m){Object.assign(m,{hasJSX:!1,hasReactivity:!1,hasLitHTML:!1,hasLitIR:!1,needsSignalImport:!1,needsControlFlowImport:!1,needsCreateMemo:!1,controlFlowComponents:new Set,delegatedEvents:new Set,staticElements:new Map,autoShow:se,staticCounter:0,libModule:"@fluixi/core",backend:N,codegen:M,irImports:new Set,needsCreateNativeElement:!1,needsInsert:!1,needsSpread:!1,needsCreateComponent:!1,needsMergeProps:!1})},exit(d,m){let g=[];if(m.hasJSX||m.needsSignalImport&&g.push(n.types.importDeclaration([n.types.importSpecifier(n.types.identifier("signal"),n.types.identifier("signal"))],n.types.stringLiteral(C))),m.hasJSX||m.hasLitIR){if(m.irImports.size>0){let h=new Set(["Show","For","Index","Switch","Match","Dynamic","ErrorBoundary","Portal","Suspense"]),b=new Set(["createMemo","createEffect","createRenderEffect","createRoot","createSignal","onCleanup","batch","untrack"]),x=Array.from(m.irImports),I=S=>n.types.importSpecifier(n.types.identifier(S),n.types.identifier(S)),j=S=>!d.scope.hasBinding(S),F=x.filter(S=>b.has(S)&&j(S)),v=x.filter(S=>!h.has(S)&&!b.has(S)&&j(S)),V=x.filter(S=>h.has(S)&&j(S));F.length>0&&g.push(n.types.importDeclaration(F.map(I),n.types.stringLiteral(ie))),v.length>0&&g.push(n.types.importDeclaration(v.map(I),n.types.stringLiteral(C))),V.length>0&&g.push(n.types.importDeclaration(V.map(I),n.types.stringLiteral(J)))}if(m.hasJSX&&N==="imperative"&&M!=="ir"){let b=[[!!m.needsCreateNativeElement,"createNativeElement"],[!!m.needsSpread,"spread"],[!!m.needsInsert,"insert"],[!!m.needsCreateComponent,"createComponent"],[!!m.needsMergeProps,"mergeProps"]].filter(([x,I])=>x&&!d.scope.hasBinding(I)).map(([,x])=>n.types.importSpecifier(n.types.identifier(x),n.types.identifier(x)));b.length>0&&g.push(n.types.importDeclaration(b,n.types.stringLiteral(C)))}else if(m.hasJSX&&r==="automatic"){let h=[n.types.importSpecifier(n.types.identifier("jsx"),n.types.identifier("jsx")),n.types.importSpecifier(n.types.identifier("jsxs"),n.types.identifier("jsxs")),n.types.importSpecifier(n.types.identifier("Fragment"),n.types.identifier("Fragment"))];o&&h.push(n.types.importSpecifier(n.types.identifier("jsxDEV"),n.types.identifier("jsxDEV"))),m.needsMergeProps&&h.push(n.types.importSpecifier(n.types.identifier("mergeProps"),n.types.identifier("mergeProps"))),g.push(n.types.importDeclaration(h,n.types.stringLiteral(s)))}if(m.needsCreateMemo&&!d.scope.hasBinding("createMemo")&&g.push(n.types.importDeclaration([n.types.importSpecifier(n.types.identifier("createMemo"),n.types.identifier("createMemo"))],n.types.stringLiteral(N==="imperative"?ie:m.libModule??"@fluixi/core"))),m.needsControlFlowImport&&m.controlFlowComponents.size>0){let h=Array.from(m.controlFlowComponents).filter(v=>!d.scope.hasBinding(v)),b=m.libModule??"@fluixi/core",x=h.filter(v=>O.has(v)),I=h.filter(v=>Se.has(v)),j=h.filter(v=>!Se.has(v)&&!O.has(v)),F=(v,V)=>n.types.importDeclaration(v.map(S=>n.types.importSpecifier(n.types.identifier(S),n.types.identifier(S))),n.types.stringLiteral(V));j.length>0&&g.push(F(j,J)),I.length>0&&g.push(F(I,b)),x.length>0&&g.push(F(x,_))}if(E&&m.delegatedEvents.size>0){g.push(n.types.importDeclaration([n.types.importSpecifier(n.types.identifier("delegateEvents"),n.types.identifier("delegateEvents"))],n.types.stringLiteral(N==="imperative"?C:"@fluixi/jsx")));let h=n.types.arrayExpression(Array.from(m.delegatedEvents).map(x=>n.types.stringLiteral(x))),b=n.types.expressionStatement(n.types.callExpression(n.types.identifier("delegateEvents"),[h]));d.node.body.unshift(b)}if(p&&m.staticElements.size>0){let h=[];m.staticElements.forEach((b,x)=>{h.push(n.types.variableDeclaration("const",[n.types.variableDeclarator(n.types.identifier(x),b)]))}),d.node.body.unshift(...h)}}g.length>0&&d.node.body.unshift(...dt(g))}},JSXElement(d,m){if(m.hasJSX=!0,N==="imperative"&&M==="ir"){d.replaceWith(ve(d.node,m));return}let g=d.node,h=g.openingElement;if(n.types.isJSXIdentifier(h.name)&&O.has(h.name.name)&&(m.controlFlowComponents.add(h.name.name),m.needsControlFlowImport=!0),n.types.isJSXIdentifier(h.name)&&te.has(h.name.name)&&(m.controlFlowComponents.add(h.name.name),w)){let x=It(g,m);if(x){d.replaceWith(x);return}}if(p&&N!=="imperative"&&Fe(g,m)){let x=Jt(g,m);if(x){d.replaceWith(x);return}}let b=pt(g,m,{runtime:r,pragma:i,development:o,detectReactivity:c,useLitHTML:l,autoShow:se});d.replaceWith(b)},JSXFragment(d,m){if(m.hasJSX=!0,N==="imperative"&&M==="ir"){d.replaceWith(ve(d.node,m));return}let g=q(d.node,m,{runtime:r,pragmaFrag:a,development:o});d.replaceWith(g)},CallExpression(d,m){if(!c)return;let g=d.node.callee;g.name,n.types.isIdentifier(g)&&(g.name==="createSignal"||g.name==="createStore"||g.name==="useContext"||g.name==="useLocation")&&(m.hasReactivity=!0)},JSXExpressionContainer(d){},TaggedTemplateExpression(d,m){if(Me&&N==="imperative"&&n.types.isIdentifier(d.node.tag)&&(d.node.tag.name===Ae||d.node.tag.name==="svg")){d.replaceWith(ft(d.node,m));return}}}}});function pt(e,t,r){let{runtime:s,pragma:i,development:a,autoShow:o=!0}=r;return s==="automatic"?B(e,t,a,o):Et(e,t,i)}var ut=new Set(["svg","path","circle","rect","line","polygon","polyline","ellipse","g","defs","clipPath","text"]);function be(e,t,r){return t.length>0?(r.needsMergeProps=!0,n.types.callExpression(n.types.identifier("mergeProps"),[...t,n.types.objectExpression(e)])):n.types.objectExpression(e)}function Ne(e){return e.length===1?e[0]:n.types.arrayExpression(e)}function mt(e,t,r,s,i,a){if(!t){let f=[...r];return i.length>0&&f.push(n.types.objectMethod("get",n.types.identifier("children"),[],n.types.blockStatement([n.types.returnStatement(Ne(i))]))),Je(e,be(f,s,a),a)}let o=e.value,c=ut.has(o),l=n.types.identifier("_el$"),p=[];a.needsCreateNativeElement=!0;let E=[e];if(c&&E.push(n.types.booleanLiteral(!0)),p.push(n.types.variableDeclaration("const",[n.types.variableDeclarator(l,n.types.callExpression(n.types.identifier("createNativeElement"),E))])),r.length>0||s.length>0){a.needsSpread=!0;let f=[n.types.objectProperty(n.types.identifier("element"),l),n.types.objectProperty(n.types.identifier("props"),be(r,s,a))];c&&f.push(n.types.objectProperty(n.types.identifier("isSVG"),n.types.booleanLiteral(!0))),p.push(n.types.expressionStatement(n.types.callExpression(n.types.identifier("spread"),[n.types.objectExpression(f)])))}if(i.length>0){a.needsInsert=!0;for(let f of i){let L=n.types.isArrowFunctionExpression(f)||n.types.isFunctionExpression(f)||n.types.isCallExpression(f)&&n.types.isIdentifier(f.callee)&&f.callee.name==="createMemo"?[n.types.cloneNode(l),f,n.types.nullLiteral()]:[n.types.cloneNode(l),f];p.push(n.types.expressionStatement(n.types.callExpression(n.types.identifier("insert"),L)))}}return p.push(n.types.returnStatement(l)),n.types.callExpression(n.types.arrowFunctionExpression([],n.types.blockStatement(p)),[])}function Je(e,t,r){return n.types.isIdentifier(e)&&O.has(e.name)&&(r.controlFlowComponents.add(e.name),r.needsControlFlowImport=!0),r.backend==="imperative"?(r.needsCreateComponent=!0,r.needsCreateMemo=!0,n.types.callExpression(n.types.identifier("createMemo"),[n.types.arrowFunctionExpression([],n.types.callExpression(n.types.identifier("createComponent"),[e,t]))])):n.types.callExpression(n.types.identifier("jsx"),[e,t])}function ve(e,t){let r=new Set,s=$(e,r),{code:i,imports:a}=X.emit(s,{});for(let o of a)r.add(o);for(let o of r)t.irImports.add(o);return n.template.expression(i,{placeholderPattern:!1,plugins:["typescript"]})()}function dt(e){let t=new Map,r=[];for(let s of e){let i=s.source.value;if(!s.specifiers.every(c=>n.types.isImportSpecifier(c))){r.push(s);continue}let o=t.get(i);if(!o){let c=new Set(s.specifiers.map(l=>l.local.name));t.set(i,{decl:s,names:c}),r.push(s);continue}for(let c of s.specifiers)o.names.has(c.local.name)||(o.names.add(c.local.name),o.decl.specifiers.push(c))}return r}function ft(e,t){let r=new Set,s=n.types.isIdentifier(e.tag)&&e.tag.name==="svg",i=G(e,r,{svg:s}),{code:a,imports:o}=X.emit(i,{});for(let l of o)r.add(l);for(let l of r)t.irImports.add(l);Ie(i,t),t.hasLitIR=!0;let c=n.template.expression(a,{placeholderPattern:!1,plugins:["typescript"]})();return gt(c,e),c}function gt(e,t){if(!t.loc)return;let r=new Set,s=i=>{if(!r.has(i)){r.add(i),i.loc||(i.loc=t.loc,i.start=t.start,i.end=t.end);for(let a of n.types.VISITOR_KEYS[i.type]??[]){let o=i[a];if(Array.isArray(o))for(let c of o)c&&typeof c=="object"&&"type"in c&&s(c);else o&&typeof o=="object"&&"type"in o&&s(o)}}};s(e)}function Ie(e,t){if(e.kind==="component"&&(te.has(e.name)||O.has(e.name))&&(t.controlFlowComponents.add(e.name),t.needsControlFlowImport=!0),(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)Ie(r,t)}function ht(e){return e.map(t=>{if(n.types.isObjectProperty(t)){let r=t.key,s=t.computed,i=t.value;return n.types.objectMethod("get",r,[],n.types.blockStatement([n.types.returnStatement(i)]),s)}return t})}function B(e,t,r,s=!0){let i=e.openingElement,a=e.children,o=Xe(i.name),c=n.types.isJSXIdentifier(i.name)&&/^[a-z]/.test(i.name.name),l=Pe(i.attributes,t,c,n.types.isJSXIdentifier(i.name)?i.name.name:""),p=l.props,E=l.spreads;c||(p=ht(p));let f=ne(a,t,s);if(t.backend==="imperative")return mt(o,c,p,E,f,t);if(f.length>0){let J=f.length===1?f[0]:n.types.arrayExpression(f);p.push(n.types.objectProperty(n.types.identifier("children"),J))}let w;if(E.length>0){let J=p.length>0?n.types.objectExpression(p):n.types.objectExpression([]);t.needsMergeProps=!0,w=n.types.callExpression(n.types.identifier("mergeProps"),[...E,J])}else w=n.types.objectExpression(p);let L=r?"jsxDEV":f.length>1?"jsxs":"jsx",C=[o,w];return r&&C.push(n.types.identifier("undefined"),n.types.booleanLiteral(!1),n.types.identifier("undefined"),n.types.identifier("undefined")),n.types.callExpression(n.types.identifier(L),C)}function Et(e,t,r){let s=e.openingElement,i=e.children,a=Xe(s.name),o=n.types.isJSXIdentifier(s.name)&&/^[a-z]/.test(s.name.name),{props:c,spreads:l}=Pe(s.attributes,t,o,n.types.isJSXIdentifier(s.name)?s.name.name:""),p=ne(i,t,t.autoShow??!0),E;if(l.length>0){let w=c.length>0?n.types.objectExpression(c):n.types.objectExpression([]);t.needsMergeProps=!0,E=n.types.callExpression(n.types.identifier("mergeProps"),[...l,w])}else E=c.length>0?n.types.objectExpression(c):n.types.nullLiteral();let f=[a,E,...p];return n.types.callExpression(n.types.identifier(r),f)}function q(e,t,r){let{runtime:s,pragmaFrag:i,development:a}=r,o=ne(e.children,t,t.autoShow??!0);if(t.backend==="imperative")return o.length===0?n.types.nullLiteral():Ne(o);if(s==="automatic"){let c=a?"jsxDEV":o.length>1?"jsxs":"jsx",l=n.types.objectExpression([n.types.objectProperty(n.types.identifier("children"),o.length===1?o[0]:n.types.arrayExpression(o))]),p=[n.types.identifier("Fragment"),l];return a&&p.push(n.types.identifier("undefined"),n.types.booleanLiteral(!1),n.types.identifier("undefined"),n.types.identifier("undefined")),n.types.callExpression(n.types.identifier(c),p)}else return n.types.callExpression(n.types.identifier(i),o)}function Xe(e){if(n.types.isJSXIdentifier(e)){let t=e.name;return t[0]===t[0].toLowerCase()?n.types.stringLiteral(t):n.types.identifier(t)}return n.types.isJSXMemberExpression(e)?Re(e):n.types.isJSXNamespacedName(e)?n.types.stringLiteral(`${e.namespace.name}:${e.name.name}`):n.types.stringLiteral("div")}function Re(e){let t;return n.types.isJSXIdentifier(e.object)?t=n.types.identifier(e.object.name):t=Re(e.object),n.types.memberExpression(t,n.types.identifier(e.property.name))}function xt(e){return/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(e)}function Pe(e,t,r=!0,s=""){let i=[],a=[],o=ct[s];for(let c of e)if(n.types.isJSXSpreadAttribute(c))a.push(c.argument);else if(n.types.isJSXAttribute(c)){let l=St(c.name),p=bt(c.value,t,l,r);if(Ce.test(l)){let _=l.slice(2).toLowerCase();ke.includes(_)&&t.delegatedEvents.add(_)}let E=xt(l)?n.types.identifier(l):n.types.stringLiteral(l),f=c.value,w=n.types.isJSXElement(f)||n.types.isJSXFragment(f)||n.types.isJSXExpressionContainer(f)&&(n.types.isJSXElement(f.expression)||n.types.isJSXFragment(f.expression)),L=!r&&l===o,C=n.types.isJSXExpressionContainer(f)&&!n.types.isJSXEmptyExpression(f.expression)?f.expression:null,J=!r&&!!C&&Le(C,l);!r&&w||L||J?i.push(n.types.objectMethod("get",E,[],n.types.blockStatement([n.types.returnStatement(p)]))):i.push(n.types.objectProperty(E,p))}return{props:i,spreads:a}}function St(e){return n.types.isJSXIdentifier(e)?e.name==="class"?"className":e.name:n.types.isJSXNamespacedName(e)?`${e.namespace.name}:${e.name.name}`:"unknown"}function bt(e,t,r="",s=!0){if(e===null)return n.types.booleanLiteral(!0);if(n.types.isStringLiteral(e))return e.value.includes(`
2
- `)?n.types.stringLiteral(e.value.replace(/\s+/g," ").trim()):e;if(n.types.isJSXExpressionContainer(e)){if(n.types.isJSXEmptyExpression(e.expression))return n.types.booleanLiteral(!0);let i=e.expression;return s&&Le(i,r)?n.types.arrowFunctionExpression([],i):i}return n.types.isJSXElement(e)?B(e,t,!1,t.autoShow??!0):n.types.isJSXFragment(e)?q(e,t,{runtime:"automatic",pragmaFrag:"Fragment",development:!1}):n.types.booleanLiteral(!0)}function Le(e,t){return Ce.test(t)||t.startsWith("on:")||t==="ref"||t.startsWith("use:")||n.types.isArrowFunctionExpression(e)||n.types.isFunctionExpression(e)||n.types.isIdentifier(e)||n.types.isStringLiteral(e)||n.types.isNumericLiteral(e)||n.types.isBooleanLiteral(e)||n.types.isNullLiteral(e)?!1:!!(n.types.isCallExpression(e)||n.types.isOptionalCallExpression(e)||n.types.isMemberExpression(e)||n.types.isOptionalMemberExpression(e)||n.types.isLogicalExpression(e)||n.types.isConditionalExpression(e)||n.types.isBinaryExpression(e)||n.types.isUnaryExpression(e)||n.types.isTemplateLiteral(e)||n.types.isObjectExpression(e)||n.types.isArrayExpression(e))}function vt(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 s="";for(let i=0;i<t.length;i++){let a=t[i].replace(/\t/g," ");i!==0&&(a=a.replace(/^ +/,"")),i!==t.length-1&&(a=a.replace(/ +$/,"")),a&&(i!==r&&(a+=" "),s+=a)}return s}function ne(e,t,r=!0){let s=[];for(let i of e)if(n.types.isJSXText(i)){let a=vt(i.value);a&&s.push(n.types.stringLiteral(a))}else if(n.types.isJSXExpressionContainer(i)){if(!n.types.isJSXEmptyExpression(i.expression)){let a=i.expression;if(r){let o=yt(a,t)??wt(a,t);if(o){s.push(o);continue}}else{let o=Ct(a,t);if(o){s.push(o);continue}}Nt(a)?s.push(n.types.arrowFunctionExpression([],a)):s.push(a)}}else n.types.isJSXElement(i)?s.push(B(i,t,!1,t.autoShow??!0)):n.types.isJSXFragment(i)?s.push(q(i,t,{runtime:"automatic",pragmaFrag:"Fragment",development:!1})):n.types.isJSXSpreadChild(i)&&s.push(i.expression);return s}function yt(e,t){if(!n.types.isArrowFunctionExpression(e)||e.params.length!==0||e.async)return null;let r=e.body;if(n.types.isLogicalExpression(r)&&r.operator==="&&"){let s=k(r.right);if(s)return D(P(r.left),s,null,t)}if(n.types.isConditionalExpression(r)){let s=k(r.consequent);if(s){let i=re(r.alternate,t);return D(P(r.test),s,i,t,!0)}}return null}function wt(e,t){if(n.types.isLogicalExpression(e)&&e.operator==="&&"){let r=k(e.right);if(r)return D(P(e.left),r,null,t)}if(n.types.isConditionalExpression(e)){let r=k(e.consequent);if(r){let s=re(e.alternate,t);return D(P(e.test),r,s,t)}}return null}function Ct(e,t){let r=n.types.isArrowFunctionExpression(e)&&e.params.length===0&&!e.async&&n.types.isExpression(e.body)?e.body:e;if(n.types.isConditionalExpression(r)){let s=P(r.test),a=k(r.consequent)??r.consequent,c=k(r.alternate)??r.alternate,l=n.types.conditionalExpression(s,a,c);return ee(r.consequent)||ee(r.alternate)?null:(t.needsCreateMemo=!0,n.types.callExpression(n.types.identifier("createMemo"),[n.types.arrowFunctionExpression([],l)]))}if(n.types.isLogicalExpression(r)&&r.operator==="&&"){let s=P(r.left),a=k(r.right)??r.right,o=n.types.logicalExpression("&&",s,a);return ee(r.right)?null:(t.needsCreateMemo=!0,n.types.callExpression(n.types.identifier("createMemo"),[n.types.arrowFunctionExpression([],o)]))}return null}function re(e,t){if(kt(e))return null;let r=k(e);if(r)return je(r,t);if(n.types.isConditionalExpression(e)){let s=e,i=k(s.consequent);if(i){let a=re(s.alternate,t);return D(P(s.test),i,a,t)}}return e}function ye(e){return n.types.isJSXElement(e)||n.types.isJSXFragment(e)}function ee(e){let t=k(e);if(!t||!n.types.isJSXElement(t))return!1;let r=t.openingElement.name;return n.types.isJSXIdentifier(r)&&te.has(r.name)}function k(e){return ye(e)?e:n.types.isArrowFunctionExpression(e)&&e.params.length===0&&!e.async&&ye(e.body)?e.body:null}function P(e){return n.types.isArrowFunctionExpression(e)&&e.params.length===0&&!e.async&&n.types.isExpression(e.body)?e.body:e}function kt(e){return n.types.isNullLiteral(e)||n.types.isIdentifier(e)&&e.name==="undefined"||n.types.isBooleanLiteral(e)&&e.value===!1}function je(e,t){return n.types.isJSXElement(e)?B(e,t,!1,t.autoShow??!0):q(e,t,{runtime:"automatic",pragmaFrag:"Fragment",development:!1})}function D(e,t,r,s,i=!1){s.controlFlowComponents.add("Show"),s.needsControlFlowImport=!0;let a=je(t,s),o=[n.types.objectProperty(n.types.identifier("when"),n.types.arrowFunctionExpression([],e)),n.types.objectProperty(n.types.identifier("children"),a)];return r&&o.push(n.types.objectProperty(n.types.identifier("fallback"),r)),Je(n.types.identifier("Show"),n.types.objectExpression(o),s)}function Nt(e){return n.types.isMemberExpression(e)||n.types.isOptionalMemberExpression(e)?!(!e.computed&&n.types.isIdentifier(e.property,{name:"children"})):n.types.isCallExpression(e)||n.types.isOptionalCallExpression(e)?!0:n.types.isIdentifier(e)?!1:!!(n.types.isLogicalExpression(e)||n.types.isConditionalExpression(e)||n.types.isBinaryExpression(e)||n.types.isUnaryExpression(e)||n.types.isTemplateLiteral(e))}function Fe(e,t){let r=e.openingElement;if(!n.types.isJSXIdentifier(r.name))return!1;let s=r.name.name;if(s[0]!==s[0].toLowerCase())return!1;for(let i of r.attributes){if(n.types.isJSXSpreadAttribute(i))return!1;if(n.types.isJSXAttribute(i)){let a=i.value;if(n.types.isJSXExpressionContainer(a)&&!n.types.isStringLiteral(a.expression)&&!n.types.isNumericLiteral(a.expression))return!1}}for(let i of e.children)if(n.types.isJSXElement(i)&&!Fe(i,t)||n.types.isJSXExpressionContainer(i))return!1;return!0}function Jt(e,t){let r=`_$static${t.staticCounter++}`,s=B(e,t,!1);return t.staticElements.set(r,s),n.types.identifier(r)}function It(e,t){let r=e.openingElement.name.name;return r==="Show"?Xt(e,t):r==="For"?Rt(e,t):null}function Xt(e,t){return null}function Rt(e,t){return null}var Pt=A;function Lt(e){return[A,e]}function U(e={}){return{plugins:[[A,{runtime:"automatic",importSource:"@fluixi/jsx",development:!1,detectReactivity:!0,useLitHTML:!0,hoistStatics:!0,delegateEvents:!0,optimizeControlFlow:!0,sourceMaps:!0,...e}]]}}var jt={production:U({development:!1,hoistStatics:!0,delegateEvents:!0,optimizeControlFlow:!0}),development:U({development:!0,hoistStatics:!1,sourceMaps:!0}),minimal:U({detectReactivity:!1,useLitHTML:!1,hoistStatics:!1,delegateEvents:!1,optimizeControlFlow:!1})};
1
+ "use strict";var _e=Object.create;var z=Object.defineProperty;var Ve=Object.getOwnPropertyDescriptor;var ze=Object.getOwnPropertyNames;var We=Object.getPrototypeOf,He=Object.prototype.hasOwnProperty;var Ge=(e,t)=>{for(var r in t)z(e,r,{get:t[r],enumerable:!0})},le=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of ze(t))!He.call(e,i)&&i!==r&&z(e,i,{get:()=>t[i],enumerable:!(s=Ve(t,i))||s.enumerable});return e};var ce=(e,t,r)=>(r=e!=null?_e(We(e)):{},le(t||!e||!e.__esModule?z(r,"default",{value:e,enumerable:!0}):r,e)),qe=e=>le(z({},"__esModule",{value:!0}),e);var Dt={};Ge(Dt,{babelPluginReactiveJSX:()=>Tt,createPlugin:()=>$t,createPreset:()=>Z,default:()=>M,presets:()=>Ot});module.exports=qe(Dt);var ke=require("@babel/helper-plugin-utils");var Ue=e=>"components"in e;function pe(e,t){return e.replace(/\$(\d+)/g,(r,s)=>t[Number(s)]??r)}function Ze(e,t){return typeof t=="string"?{module:t,export:e}:t}function ue(e=[]){let t=new Map,r=[],s=[];for(let o of e){if(!Ue(o)){s.push(o);continue}for(let[c,l]of Object.entries(o.components)){let p=Ze(c,l),x=t.get(c);if(x&&x.module!==p.module){let d=r.find(w=>w.name===c);d?d.modules.push(p.module):r.push({name:c,modules:[x.module,p.module]});continue}t.set(c,p)}}let i=new Map;return{resolve:o=>{if(i.has(o))return i.get(o);let c=t.get(o);if(!c)for(let l of s){let p=o.match(new RegExp(l.match.source,l.match.flags.replace("g","")));if(p){c={module:pe(l.module,p),export:l.export?pe(l.export,p):o};break}}return i.set(o,c),c},names:()=>[...t.keys()],conflicts:()=>r}}var n=require("@babel/core");var m=require("@babel/core"),ee=ce(require("@babel/generator"),1);var K={version:1,module:"@fluixi/dom",symbols:["createNativeElement","insert","spread","setAttribute","delegateEvents","createComponent","createMemo","untrack","Show","For","Index","Switch","Match","Dynamic","ErrorBoundary"]},Vt={version:2,module:"@fluixi/dom",symbols:[...K.symbols,"template","cloneTemplate","walk"]};var Ke={show:"Show",for:"For",index:"Index",switch:"Switch",match:"Match",dynamic:"Dynamic",errorBoundary:"ErrorBoundary",suspense:"Suspense"};function Ye(e){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e)}function de(e){return Ye(e)?e:JSON.stringify(e)}function Qe(e){return e.expr!==void 0?e.reactive?`() => (${e.expr})`:`(${e.expr})`:JSON.stringify(e.literal??!0)}function et(e){return e.expr!==void 0?`(${e.expr})`:JSON.stringify(e.literal??!0)}function tt(e,t,r){let s=e.filter(c=>c.kind==="spread"),a=e.filter(c=>c.kind!=="spread").map(c=>`${de(c.name)}: ${Qe(c)}`);t!=null&&a.push(`children: ${t}`);let o=`{ ${a.join(", ")} }`;return s.length>0?(r.add("mergeProps"),`mergeProps(${s.map(c=>c.expr).join(", ")}, ${o})`):o}function fe(e,t){return e.length===1?W(e[0],t):`[${e.map(r=>W(r,t)).join(", ")}]`}function me(e,t,r,s){s.add("createMemo"),s.add("createComponent");let i=t.filter(l=>l.kind==="spread"),o=t.filter(l=>l.kind!=="spread").map(l=>`get ${de(l.name)}() { return ${et(l)}; }`);r.length>0&&o.push(`get children() { return ${fe(r,s)}; }`);let c=`{ ${o.join(", ")} }`;return i.length>0&&(s.add("mergeProps"),c=`mergeProps(${i.map(l=>l.expr).join(", ")}, ${c})`),`createMemo(() => createComponent(${e}, ${c}))`}function W(e,t){switch(e.kind){case"text":return JSON.stringify(e.value);case"expr":return e.reactive?`() => (${e.code})`:`(${e.code})`;case"fragment":return e.children.length===0?"null":fe(e.children,t);case"component":return me(e.name,e.props,e.children,t);case"control":{let r=Ke[e.control]??e.control;return t.add(r),me(r,e.props,e.children,t)}case"element":{t.add("createNativeElement");let r=JSON.stringify(e.tag),s="_el$",i=[],a=e.svg?`${r}, true`:r;if(i.push(`const ${s} = createNativeElement(${a});`),e.props.length>0){t.add("spread");let o=e.svg?", isSVG: true":"";i.push(`spread({ element: ${s}, props: ${tt(e.props,null,t)}${o} });`)}for(let o of e.children){t.add("insert");let c=W(o,t),l=o.kind==="expr"&&o.reactive||o.kind==="component"||o.kind==="control";i.push(l?`insert(${s}, ${c}, null);`:`insert(${s}, ${c});`)}return i.push(`return ${s};`),`(() => { ${i.join(" ")} })()`}}}var X={name:"imperative",contract:K,emit(e,t){let r=new Set;return{code:W(e,r),imports:Array.from(r)}}};var $=require("@babel/core"),Y=ce(require("@babel/generator"),1),Ee=require("@fluixi/template-parser");var nt=Y.default.default??Y.default;function rt(e){return nt(e,{concise:!0}).code}var ge=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function it(e){return e.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${")}function he(e){return e.charAt(0).toUpperCase()+e.slice(1)}var Q=class{constructor(t,r){this.holes=t;this.used=r}hole(t){return this.holes[t]??{node:$.types.identifier("undefined"),code:"undefined",reactive:!1}}emit(t){let{code:r,imports:s}=X.emit(t,{});for(let i of s)this.used.add(i);return r}lowerRoot(t){let r=this.lowerChildren(t);return r.length===1?r[0]:{kind:"fragment",children:r}}lowerChildren(t){let r=[];for(let s=0;s<t.length;s++){let i=t[s];if(i.kind==="Element"||i.kind==="Component"){let o=i.attributes.find(c=>c.kind==="IfDirective");if(o&&o.kind==="IfDirective"){let c=s+1;c<t.length&&this.isBlankText(t[c])&&c++;let l=t[c],p=l&&(l.kind==="Element"||l.kind==="Component")&&l.attributes.some(x=>x.kind==="ElseDirective");r.push(this.lowerIf(i,o.hole,p?l:null)),p&&(s=c);continue}if(i.attributes.some(c=>c.kind==="EachDirective")){r.push(this.lowerEach(i));continue}}let a=this.lowerNode(i);a&&r.push(a)}return r}isBlankText(t){return t.kind==="Text"&&!t.raw&&H(t.value)===""}lowerNode(t){switch(t.kind){case"Text":{if(t.raw)return{kind:"text",value:t.value};let r=H(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(s=>s.kind==="Attribute"&&s.name==="is");if(t.tag==="component"&&r&&r.value&&r.value.kind==="hole"){let s=t.attributes.filter(a=>a!==r),i=this.lowerComponent({...t,kind:"Component",tag:"Dynamic",tagHole:null,attributes:s});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,s=this.lowerAttributes(t.attributes),{slots:i,rest:a}=this.partitionSlots(t.children);for(let[o,c]of i){let l=c.length===1?c[0]:{kind:"fragment",children:c};s.push({name:o,kind:"attr",expr:this.emit(l),jsxElement:!0})}return{kind:"component",name:r,props:s,children:this.lowerChildren(a)}}partitionSlots(t){let r=new Map,s=[];for(let i of t){if(i.kind==="Element"||i.kind==="Component"){let a=i.attributes.find(o=>o.kind==="Attribute"&&o.name==="slot");if(a&&a.value&&a.value.kind==="static"){let o={...i,attributes:i.attributes.filter(p=>p!==a)},c=o.kind==="Element"?this.lowerElement(o):this.lowerComponent(o),l=r.get(a.value.value)??[];l.push(c),r.set(a.value.value,l);continue}}s.push(i)}return{slots:r,rest:s}}lowerIf(t,r,s){let i=this.hole(r),a=[{name:"when",kind:"attr",expr:i.code,reactive:i.reactive}];if(s){let c=this.stripAndLower(s,l=>l.kind==="ElseDirective");a.push({name:"fallback",kind:"attr",expr:this.emit(c),jsxElement:!0})}let o=this.stripAndLower(t,c=>c.kind==="IfDirective");return{kind:"component",name:"Show",props:a,children:[o]}}lowerEach(t){let r=t.attributes.find(l=>l.kind==="EachDirective");if(!r||r.kind!=="EachDirective")return this.lowerNode(t);let s=this.hole(r.hole),i=[{name:"each",kind:"attr",expr:s.code,reactive:s.reactive}];if(r.key){let l="static"in r.key?`(item) => item[${JSON.stringify(r.key.static)}]`:this.hole(r.key.hole).code;i.push({name:"by",kind:"attr",expr:l})}let a=this.itemArrow(t),o;if(a){let l=a.body,p={kind:"expr",code:P(l,this.used),reactive:C(l)},x=this.rebuildWithChildren(t,[p]);o=`(${a.params.map(d=>rt(d)).join(", ")}) => (${this.emit(x)})`}else{let l=this.stripAndLower(t,p=>p.kind==="EachDirective");o=`() => (${this.emit(l)})`}return{kind:"component",name:"For",props:i,children:[{kind:"expr",code:o,reactive:!1}]}}itemArrow(t){let r=t.children.filter(i=>!this.isBlankText(i));if(r.length!==1||r[0].kind!=="Expression")return null;let s=this.hole(r[0].hole).node;return $.types.isArrowFunctionExpression(s)&&!$.types.isBlockStatement(s.body)?s:null}stripAndLower(t,r){let s={...t,attributes:t.attributes.filter(i=>!r(i))};return s.kind==="Element"?this.lowerElement(s):this.lowerComponent(s)}rebuildWithChildren(t,r){let s=this.lowerAttributes(t.attributes.filter(i=>i.kind!=="EachDirective"));return t.kind==="Element"?{kind:"element",tag:t.tag,svg:t.namespace==="svg",props:s,children:r,static:!1}:{kind:"component",name:t.tag,props:s,children:r}}lowerAttributes(t){let r=[],s=[],i=!1,a=[],o=!1,c=[];for(let l of t)switch(l.kind){case"IfDirective":case"EachDirective":case"ElseDirective":break;case"Attribute":r.push(this.plainAttr(l));break;case"PropertyBinding":r.push({name:l.name,kind:"prop",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"EventBinding":r.push(this.eventProp(l));break;case"RefBinding":r.push({name:"ref",kind:"ref",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"Spread":r.push({name:"",kind:"spread",expr:this.hole(l.hole).code});break;case"ClassDirective":{let p=this.hole(l.hole);s.push(`${JSON.stringify(l.name)}: ${p.code}`),i=i||p.reactive;break}case"StyleDirective":{let p=this.hole(l.hole);a.push(`${JSON.stringify(l.name)}: ${p.code}`),o=o||p.reactive;break}case"BindDirective":r.push(...this.bindProps(l.name,this.hole(l.hole).code));break;case"UseDirective":{let p=l.name??(l.hole!=null?this.hole(l.hole).code:null);if(!p)break;c.push(l.name!=null&&l.hole!=null?`[${p}, () => (${this.hole(l.hole).code})]`:`[${p}]`);break}}return s.length>0&&r.push({name:"classList",kind:"attr",expr:`{ ${s.join(", ")} }`,reactive:i}),a.length>0&&r.push({name:"style",kind:"attr",expr:`{ ${a.join(", ")} }`,reactive:o}),c.length>0&&r.push({name:"use",kind:"attr",expr:`[${c.join(", ")}]`}),r}eventProp(t){let r=t.name.toLowerCase(),s=this.hole(t.hole).code;if(!(t.syntax==="colon"||t.modifiers.length>0))return{name:"on"+he(t.name),kind:"event",event:{name:r,delegated:ge.has(r)},expr:s};let a=this.wrapHandler(s,t.modifiers),o=this.eventOptions(t.modifiers),c=o?`[${a}, ${o}]`:a;return{name:"on:"+r,kind:"attr",expr:c}}wrapHandler(t,r){let s=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();"),!s&&i.length===0?t:`(e) => { ${s}${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 s=t==="checked",i=s?"change":"input",a=s?"checked":"value",o=`(${r})`;return[{name:t,kind:"attr",expr:`${o}[0]()`,reactive:!0},{name:"on"+he(i),kind:"event",event:{name:i,delegated:ge.has(i)},expr:`(e) => ${o}[1](e.target.${a})`}]}plainAttr(t){let r=t.value,s=t.name;t.name==="class"?s=r&&r.kind==="hole"&&$.types.isObjectExpression(this.hole(r.hole).node)?"classList":"className":t.name==="html"&&(s="innerHTML");let a={name:s,kind:"attr"};if(r==null)return a.literal=!0,a;if(r.kind==="static")return a.literal=r.value,a;if(r.kind==="hole"){let l=this.hole(r.hole);return a.expr=l.code,a.reactive=l.reactive,a}let o=!1,c=r.parts.map(l=>{if("text"in l)return it(l.text);let p=this.hole(l.hole);return o=o||p.reactive,"${"+p.code+"}"}).join("");return a.expr="`"+c+"`",a.reactive=o,a}};function xe(e,t,r={}){let s=e.quasi,i=s.expressions.map(c=>{let l=c;return{node:l,code:P(l,t),reactive:C(l)}}),a=st(s),{root:o}=(0,Ee.parseTemplate)(a,{svg:r.svg});return new Q(i,t).lowerRoot(o.children)}function st(e){let t=[];return e.quasis.forEach((r,s)=>{let i=r.value.cooked??r.value.raw;if(t.push({kind:"static",text:i,start:r.start??0}),s<e.expressions.length){let a=e.expressions[s];t.push({kind:"hole",index:s,start:a.start??0,end:a.end??0})}}),t}function G(e,t=new Set,r={}){return xe(e,t,r)}var ot=ee.default.default??ee.default;function be(e){return ot(e,{concise:!0}).code}function at(e,t){let r=m.types.cloneNode(e,!0),s=m.types.file(m.types.program([m.types.expressionStatement(r)])),i=!1,a=(o,c,l)=>{for(let p of l)t.add(p);o.replaceWith(m.template.expression(c,{placeholderPattern:!1,plugins:["typescript"]})()),o.skip(),i=!0};return(0,m.traverse)(s,{"JSXElement|JSXFragment"(o){let c=o.node,{code:l,imports:p}=X.emit(O(c,t),{});a(o,l,p)},TaggedTemplateExpression(o){let c=o.node.tag;if(!m.types.isIdentifier(c)||c.name!=="html"&&c.name!=="svg")return;let l=G(o.node,t,{svg:c.name==="svg"}),{code:p,imports:x}=X.emit(l,{});a(o,p,x)}}),i?s.program.body[0].expression:e}function P(e,t){return be(at(e,t))}var lt=new Set(["svg","path","circle","rect","line","polygon","polyline","ellipse","g","defs","clipPath","text"]),ct=/^on[A-Z]/,pt=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function ut(e){if(m.types.isJSXIdentifier(e)){let t=e.name[0]!==e.name[0].toLowerCase();return{tag:e.name,component:t}}return m.types.isJSXMemberExpression(e)?{tag:be(e),component:!0}:m.types.isJSXNamespacedName(e)?{tag:`${e.namespace.name}:${e.name.name}`,component:!1}:{tag:"div",component:!1}}function mt(e){return m.types.isJSXIdentifier(e)?e.name==="class"?"className":e.name:m.types.isJSXNamespacedName(e)?`${e.namespace.name}:${e.name.name}`:"unknown"}function C(e){return m.types.isCallExpression(e)||m.types.isOptionalCallExpression(e)?!0:m.types.isMemberExpression(e)||m.types.isOptionalMemberExpression(e)?!(!e.computed&&m.types.isIdentifier(e.property,{name:"children"})):m.types.isConditionalExpression(e)?C(e.test)||C(e.consequent)||C(e.alternate):m.types.isLogicalExpression(e)||m.types.isBinaryExpression(e)?C(e.left)||C(e.right):m.types.isTemplateLiteral(e)?e.expressions.some(t=>C(t)):m.types.isObjectExpression(e)?e.properties.some(t=>m.types.isObjectProperty(t)&&!t.computed&&C(t.value)):m.types.isArrayExpression(e)?e.elements.some(t=>t!=null&&!m.types.isSpreadElement(t)&&C(t)):!1}function dt(e,t){let r=mt(e.name),s=ct.test(r),i=s||r.startsWith("on:"),o={name:r,kind:s?"event":"attr"};s&&(o.event={name:r.slice(2).toLowerCase(),delegated:pt.has(r.slice(2).toLowerCase())});let c=e.value;if(c==null)return o.literal=!0,o;if(m.types.isStringLiteral(c))return o.literal=c.value,o;if(m.types.isJSXExpressionContainer(c)&&!m.types.isJSXEmptyExpression(c.expression)){let l=c.expression;return m.types.isStringLiteral(l)||m.types.isNumericLiteral(l)||m.types.isBooleanLiteral(l)?(o.literal=l.value,o):(o.expr=P(l,t),o.reactive=i?!1:C(l),(m.types.isJSXElement(l)||m.types.isJSXFragment(l))&&(o.jsxElement=!0),o)}return o.literal=!0,o}function Se(e,t){let r=e.value;return r==null?null:m.types.isStringLiteral(r)?JSON.stringify(r.value):m.types.isJSXExpressionContainer(r)&&!m.types.isJSXEmptyExpression(r.expression)?P(r.expression,t):null}function ft(e,t){let r=[],s=[];for(let i of e){if(m.types.isJSXSpreadAttribute(i)){r.push({name:"",kind:"spread",expr:P(i.argument,t)});continue}if(!m.types.isJSXAttribute(i))continue;let a=m.types.isJSXNamespacedName(i.name)?i.name.namespace.name:null;if(a==="use"){let o=i.name.name.name;t.add(o);let c=Se(i,t);s.push(c!=null?`[${o}, () => (${c})]`:`[${o}]`);continue}if(a==="oncapture"){let o=i.name.name.name.toLowerCase(),c=Se(i,t)??"undefined";r.push({name:"on:"+o,kind:"attr",expr:`[${c}, { capture: true }]`});continue}r.push(dt(i,t))}return s.length>0&&r.push({name:"use",kind:"attr",expr:`[${s.join(", ")}]`}),r}function H(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 s="";for(let i=0;i<t.length;i++){let a=t[i].replace(/\t/g," ");i!==0&&(a=a.replace(/^ +/,"")),i!==t.length-1&&(a=a.replace(/ +$/,"")),a&&(i!==r&&(a+=" "),s+=a)}return s}function ve(e,t){let r=[];for(let s of e)if(m.types.isJSXText(s)){let i=H(s.value);i&&r.push({kind:"text",value:i})}else if(m.types.isJSXExpressionContainer(s)){if(!m.types.isJSXEmptyExpression(s.expression)){let i=s.expression;r.push({kind:"expr",code:P(i,t),reactive:C(i)})}}else m.types.isJSXElement(s)||m.types.isJSXFragment(s)?r.push(O(s,t)):m.types.isJSXSpreadChild(s)&&r.push({kind:"expr",code:P(s.expression,t),reactive:!1});return r}function O(e,t=new Set){if(m.types.isJSXFragment(e))return{kind:"fragment",children:ve(e.children,t)};let{tag:r,component:s}=ut(e.openingElement.name),i=ft(e.openingElement.attributes,t),a=ve(e.children,t);return s?{kind:"component",name:r,props:i,children:a}:{kind:"element",tag:r,svg:lt.has(r),props:i,children:a,static:!1}}var q=new Set(["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary","Suspense","SuspenseList","Await"]),ye=new Set(["Suspense","SuspenseList","Await"]),A=new Set(["Router","Outlet","Redirect","Link"]),gt={Show:"when",For:"each",Index:"each",Match:"when"};var Ne=/^on[A-Z]/,Je=["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup","mouseover","mouseout","mouseenter","mouseleave"],M=(0,ke.declare)((e,t={})=>{e.assertVersion(7);let{runtime:r="automatic",importSource:s="@fluixi/jsx",pragma:i="jsx",pragmaFrag:a="Fragment",development:o=!1,detectReactivity:c=!0,useLitHTML:l=!0,hoistStatics:p=!0,delegateEvents:x=!0,delegatedEvents:d=Je,optimizeControlFlow:w=!0,sourceMaps:j=!0,signalModule:R="@fluixi/dom",controlFlowModule:I="@fluixi/dom",routerModule:_="@fluixi/core/router-next",reactiveModule:ie="@fluixi/reactive/signal",autoShowTransform:se=!1,backend:N="imperative",codegen:T="inline",format:oe="both",litTag:$e="html",resolve:Oe=[]}=t,ae=ue(Oe),De=oe==="lit"||oe==="both",Be={backend:N,codegen:T,irImports:new Set,libModule:"@fluixi/core",hasJSX:!1,hasReactivity:!1,hasLitHTML:!1,needsSignalImport:!1,needsControlFlowImport:!1,needsCreateMemo:!1,controlFlowComponents:new Set,resolvedComponents:new Map,componentResolver:ae,delegatedEvents:new Set,staticElements:new Map,staticCounter:0};return{name:"@fluixi/babel-plugin-jsx",manipulateOptions(f,u){u.plugins.push("jsx","typescript")},pre(f){Object.assign(f,Be)},visitor:{ImportDeclaration(f,u){f.node.source.value==="@fluixi/core/rx"&&(f.node.source=n.types.stringLiteral("@fluixi/reactive"))},Program:{enter(f,u){Object.assign(u,{hasJSX:!1,hasReactivity:!1,hasLitHTML:!1,hasLitIR:!1,needsSignalImport:!1,needsControlFlowImport:!1,needsCreateMemo:!1,controlFlowComponents:new Set,resolvedComponents:new Map,componentResolver:ae,delegatedEvents:new Set,staticElements:new Map,autoShow:se,staticCounter:0,libModule:"@fluixi/core",backend:N,codegen:T,irImports:new Set,needsCreateNativeElement:!1,needsInsert:!1,needsSpread:!1,needsCreateComponent:!1,needsMergeProps:!1})},exit(f,u){let g=[];if(u.hasJSX||u.needsSignalImport&&g.push(n.types.importDeclaration([n.types.importSpecifier(n.types.identifier("signal"),n.types.identifier("signal"))],n.types.stringLiteral(R))),u.hasJSX||u.hasLitIR){if(u.irImports.size>0){let h=new Set(["Show","For","Index","Switch","Match","Dynamic","ErrorBoundary","Portal","Suspense"]),S=new Set(["createMemo","createEffect","createRenderEffect","createRoot","createSignal","onCleanup","batch","untrack"]),E=Array.from(u.irImports),b=v=>n.types.importSpecifier(n.types.identifier(v),n.types.identifier(v)),J=v=>!f.scope.hasBinding(v),F=E.filter(v=>S.has(v)&&J(v)),y=E.filter(v=>!h.has(v)&&!S.has(v)&&J(v)),V=E.filter(v=>h.has(v)&&J(v));F.length>0&&g.push(n.types.importDeclaration(F.map(b),n.types.stringLiteral(ie))),y.length>0&&g.push(n.types.importDeclaration(y.map(b),n.types.stringLiteral(R))),V.length>0&&g.push(n.types.importDeclaration(V.map(b),n.types.stringLiteral(I)))}if(u.hasJSX&&N==="imperative"&&T!=="ir"){let S=[[!!u.needsCreateNativeElement,"createNativeElement"],[!!u.needsSpread,"spread"],[!!u.needsInsert,"insert"],[!!u.needsCreateComponent,"createComponent"],[!!u.needsMergeProps,"mergeProps"]].filter(([E,b])=>E&&!f.scope.hasBinding(b)).map(([,E])=>n.types.importSpecifier(n.types.identifier(E),n.types.identifier(E)));S.length>0&&g.push(n.types.importDeclaration(S,n.types.stringLiteral(R)))}else if(u.hasJSX&&r==="automatic"){let h=[n.types.importSpecifier(n.types.identifier("jsx"),n.types.identifier("jsx")),n.types.importSpecifier(n.types.identifier("jsxs"),n.types.identifier("jsxs")),n.types.importSpecifier(n.types.identifier("Fragment"),n.types.identifier("Fragment"))];o&&h.push(n.types.importSpecifier(n.types.identifier("jsxDEV"),n.types.identifier("jsxDEV"))),u.needsMergeProps&&h.push(n.types.importSpecifier(n.types.identifier("mergeProps"),n.types.identifier("mergeProps"))),g.push(n.types.importDeclaration(h,n.types.stringLiteral(s)))}if(u.needsCreateMemo&&!f.scope.hasBinding("createMemo")&&g.push(n.types.importDeclaration([n.types.importSpecifier(n.types.identifier("createMemo"),n.types.identifier("createMemo"))],n.types.stringLiteral(N==="imperative"?ie:u.libModule??"@fluixi/core"))),u.needsControlFlowImport&&u.controlFlowComponents.size>0){let h=Array.from(u.controlFlowComponents).filter(y=>!f.scope.hasBinding(y)),S=u.libModule??"@fluixi/core",E=h.filter(y=>A.has(y)),b=h.filter(y=>ye.has(y)),J=h.filter(y=>!ye.has(y)&&!A.has(y)),F=(y,V)=>n.types.importDeclaration(y.map(v=>n.types.importSpecifier(n.types.identifier(v),n.types.identifier(v))),n.types.stringLiteral(V));J.length>0&&g.push(F(J,I)),b.length>0&&g.push(F(b,S)),E.length>0&&g.push(F(E,_))}if(u.resolvedComponents.size>0){let h=new Map;for(let[S,E]of u.resolvedComponents){if(f.scope.hasBinding(S))continue;let b=h.get(E.module)??[];b.push({local:S,exported:E.export}),h.set(E.module,b)}for(let[S,E]of h)g.push(n.types.importDeclaration(E.map(({local:b,exported:J})=>J==="default"?n.types.importDefaultSpecifier(n.types.identifier(b)):n.types.importSpecifier(n.types.identifier(b),n.types.identifier(J))),n.types.stringLiteral(S)))}if(x&&u.delegatedEvents.size>0){g.push(n.types.importDeclaration([n.types.importSpecifier(n.types.identifier("delegateEvents"),n.types.identifier("delegateEvents"))],n.types.stringLiteral(N==="imperative"?R:"@fluixi/jsx")));let h=n.types.arrayExpression(Array.from(u.delegatedEvents).map(E=>n.types.stringLiteral(E))),S=n.types.expressionStatement(n.types.callExpression(n.types.identifier("delegateEvents"),[h]));f.node.body.unshift(S)}if(p&&u.staticElements.size>0){let h=[];u.staticElements.forEach((S,E)=>{h.push(n.types.variableDeclaration("const",[n.types.variableDeclarator(n.types.identifier(E),S)]))}),f.node.body.unshift(...h)}}g.length>0&&f.node.body.unshift(...St(g))}},JSXElement(f,u){if(u.hasJSX=!0,N==="imperative"&&T==="ir"){f.replaceWith(we(f.node,u));return}let g=f.node,h=g.openingElement;if(n.types.isJSXIdentifier(h.name)&&A.has(h.name.name)&&(u.controlFlowComponents.add(h.name.name),u.needsControlFlowImport=!0),n.types.isJSXIdentifier(h.name)&&q.has(h.name.name)&&(u.controlFlowComponents.add(h.name.name),w)){let E=Ft(g,u);if(E){f.replaceWith(E);return}}if(p&&N!=="imperative"&&Te(g,u)){let E=jt(g,u);if(E){f.replaceWith(E);return}}let S=ht(g,u,{runtime:r,pragma:i,development:o,detectReactivity:c,useLitHTML:l,autoShow:se});f.replaceWith(S)},JSXFragment(f,u){if(u.hasJSX=!0,N==="imperative"&&T==="ir"){f.replaceWith(we(f.node,u));return}let g=U(f.node,u,{runtime:r,pragmaFrag:a,development:o});f.replaceWith(g)},CallExpression(f,u){if(!c)return;let g=f.node.callee;g.name,n.types.isIdentifier(g)&&(g.name==="createSignal"||g.name==="createStore"||g.name==="useContext"||g.name==="useLocation")&&(u.hasReactivity=!0)},JSXExpressionContainer(f){},TaggedTemplateExpression(f,u){if(De&&N==="imperative"&&n.types.isIdentifier(f.node.tag)&&(f.node.tag.name===$e||f.node.tag.name==="svg")){f.replaceWith(vt(f.node,u));return}}}}});function ht(e,t,r){let{runtime:s,pragma:i,development:a,autoShow:o=!0}=r;return s==="automatic"?B(e,t,a,o):Ct(e,t,i)}var Et=new Set(["svg","path","circle","rect","line","polygon","polyline","ellipse","g","defs","clipPath","text"]);function Ce(e,t,r){return t.length>0?(r.needsMergeProps=!0,n.types.callExpression(n.types.identifier("mergeProps"),[...t,n.types.objectExpression(e)])):n.types.objectExpression(e)}function Ie(e){return e.length===1?e[0]:n.types.arrayExpression(e)}function xt(e,t,r,s,i,a){if(!t){let d=[...r];return i.length>0&&d.push(n.types.objectMethod("get",n.types.identifier("children"),[],n.types.blockStatement([n.types.returnStatement(Ie(i))]))),Xe(e,Ce(d,s,a),a)}let o=e.value,c=Et.has(o),l=n.types.identifier("_el$"),p=[];a.needsCreateNativeElement=!0;let x=[e];if(c&&x.push(n.types.booleanLiteral(!0)),p.push(n.types.variableDeclaration("const",[n.types.variableDeclarator(l,n.types.callExpression(n.types.identifier("createNativeElement"),x))])),r.length>0||s.length>0){a.needsSpread=!0;let d=[n.types.objectProperty(n.types.identifier("element"),l),n.types.objectProperty(n.types.identifier("props"),Ce(r,s,a))];c&&d.push(n.types.objectProperty(n.types.identifier("isSVG"),n.types.booleanLiteral(!0))),p.push(n.types.expressionStatement(n.types.callExpression(n.types.identifier("spread"),[n.types.objectExpression(d)])))}if(i.length>0){a.needsInsert=!0;for(let d of i){let j=n.types.isArrowFunctionExpression(d)||n.types.isFunctionExpression(d)||n.types.isCallExpression(d)&&n.types.isIdentifier(d.callee)&&d.callee.name==="createMemo"?[n.types.cloneNode(l),d,n.types.nullLiteral()]:[n.types.cloneNode(l),d];p.push(n.types.expressionStatement(n.types.callExpression(n.types.identifier("insert"),j)))}}return p.push(n.types.returnStatement(l)),n.types.callExpression(n.types.arrowFunctionExpression([],n.types.blockStatement(p)),[])}function Xe(e,t,r){if(n.types.isIdentifier(e)&&A.has(e.name)&&(r.controlFlowComponents.add(e.name),r.needsControlFlowImport=!0),n.types.isIdentifier(e)&&!A.has(e.name)&&!q.has(e.name)&&r.componentResolver){let s=r.componentResolver.resolve(e.name);s&&r.resolvedComponents.set(e.name,s)}return r.backend==="imperative"?(r.needsCreateComponent=!0,r.needsCreateMemo=!0,n.types.callExpression(n.types.identifier("createMemo"),[n.types.arrowFunctionExpression([],n.types.callExpression(n.types.identifier("createComponent"),[e,t]))])):n.types.callExpression(n.types.identifier("jsx"),[e,t])}function we(e,t){let r=new Set,s=O(e,r),{code:i,imports:a}=X.emit(s,{});for(let o of a)r.add(o);for(let o of r)t.irImports.add(o);return n.template.expression(i,{placeholderPattern:!1,plugins:["typescript"]})()}function St(e){let t=new Map,r=[];for(let s of e){let i=s.source.value;if(!s.specifiers.every(c=>n.types.isImportSpecifier(c))){r.push(s);continue}let o=t.get(i);if(!o){let c=new Set(s.specifiers.map(l=>l.local.name));t.set(i,{decl:s,names:c}),r.push(s);continue}for(let c of s.specifiers)o.names.has(c.local.name)||(o.names.add(c.local.name),o.decl.specifiers.push(c))}return r}function vt(e,t){let r=new Set,s=n.types.isIdentifier(e.tag)&&e.tag.name==="svg",i=G(e,r,{svg:s}),{code:a,imports:o}=X.emit(i,{});for(let l of o)r.add(l);for(let l of r)t.irImports.add(l);Pe(i,t),t.hasLitIR=!0;let c=n.template.expression(a,{placeholderPattern:!1,plugins:["typescript"]})();return bt(c,e),c}function bt(e,t){if(!t.loc)return;let r=new Set,s=i=>{if(!r.has(i)){r.add(i),i.loc||(i.loc=t.loc,i.start=t.start,i.end=t.end);for(let a of n.types.VISITOR_KEYS[i.type]??[]){let o=i[a];if(Array.isArray(o))for(let c of o)c&&typeof c=="object"&&"type"in c&&s(c);else o&&typeof o=="object"&&"type"in o&&s(o)}}};s(e)}function Pe(e,t){if(e.kind==="component"&&(q.has(e.name)||A.has(e.name)))t.controlFlowComponents.add(e.name),t.needsControlFlowImport=!0;else if(e.kind==="component"&&t.componentResolver){let r=t.componentResolver.resolve(e.name);r&&t.resolvedComponents.set(e.name,r)}if((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)Pe(r,t)}function yt(e){return e.map(t=>{if(n.types.isObjectProperty(t)){let r=t.key,s=t.computed,i=t.value;return n.types.objectMethod("get",r,[],n.types.blockStatement([n.types.returnStatement(i)]),s)}return t})}function B(e,t,r,s=!0){let i=e.openingElement,a=e.children,o=Le(i.name),c=n.types.isJSXIdentifier(i.name)&&/^[a-z]/.test(i.name.name),l=Fe(i.attributes,t,c,n.types.isJSXIdentifier(i.name)?i.name.name:""),p=l.props,x=l.spreads;c||(p=yt(p));let d=ne(a,t,s);if(t.backend==="imperative")return xt(o,c,p,x,d,t);if(d.length>0){let I=d.length===1?d[0]:n.types.arrayExpression(d);p.push(n.types.objectProperty(n.types.identifier("children"),I))}let w;if(x.length>0){let I=p.length>0?n.types.objectExpression(p):n.types.objectExpression([]);t.needsMergeProps=!0,w=n.types.callExpression(n.types.identifier("mergeProps"),[...x,I])}else w=n.types.objectExpression(p);let j=r?"jsxDEV":d.length>1?"jsxs":"jsx",R=[o,w];return r&&R.push(n.types.identifier("undefined"),n.types.booleanLiteral(!1),n.types.identifier("undefined"),n.types.identifier("undefined")),n.types.callExpression(n.types.identifier(j),R)}function Ct(e,t,r){let s=e.openingElement,i=e.children,a=Le(s.name),o=n.types.isJSXIdentifier(s.name)&&/^[a-z]/.test(s.name.name),{props:c,spreads:l}=Fe(s.attributes,t,o,n.types.isJSXIdentifier(s.name)?s.name.name:""),p=ne(i,t,t.autoShow??!0),x;if(l.length>0){let w=c.length>0?n.types.objectExpression(c):n.types.objectExpression([]);t.needsMergeProps=!0,x=n.types.callExpression(n.types.identifier("mergeProps"),[...l,w])}else x=c.length>0?n.types.objectExpression(c):n.types.nullLiteral();let d=[a,x,...p];return n.types.callExpression(n.types.identifier(r),d)}function U(e,t,r){let{runtime:s,pragmaFrag:i,development:a}=r,o=ne(e.children,t,t.autoShow??!0);if(t.backend==="imperative")return o.length===0?n.types.nullLiteral():Ie(o);if(s==="automatic"){let c=a?"jsxDEV":o.length>1?"jsxs":"jsx",l=n.types.objectExpression([n.types.objectProperty(n.types.identifier("children"),o.length===1?o[0]:n.types.arrayExpression(o))]),p=[n.types.identifier("Fragment"),l];return a&&p.push(n.types.identifier("undefined"),n.types.booleanLiteral(!1),n.types.identifier("undefined"),n.types.identifier("undefined")),n.types.callExpression(n.types.identifier(c),p)}else return n.types.callExpression(n.types.identifier(i),o)}function Le(e){if(n.types.isJSXIdentifier(e)){let t=e.name;return t[0]===t[0].toLowerCase()?n.types.stringLiteral(t):n.types.identifier(t)}return n.types.isJSXMemberExpression(e)?je(e):n.types.isJSXNamespacedName(e)?n.types.stringLiteral(`${e.namespace.name}:${e.name.name}`):n.types.stringLiteral("div")}function je(e){let t;return n.types.isJSXIdentifier(e.object)?t=n.types.identifier(e.object.name):t=je(e.object),n.types.memberExpression(t,n.types.identifier(e.property.name))}function wt(e){return/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(e)}function Fe(e,t,r=!0,s=""){let i=[],a=[],o=gt[s];for(let c of e)if(n.types.isJSXSpreadAttribute(c))a.push(c.argument);else if(n.types.isJSXAttribute(c)){let l=Rt(c.name),p=kt(c.value,t,l,r);if(Ne.test(l)){let _=l.slice(2).toLowerCase();Je.includes(_)&&t.delegatedEvents.add(_)}let x=wt(l)?n.types.identifier(l):n.types.stringLiteral(l),d=c.value,w=n.types.isJSXElement(d)||n.types.isJSXFragment(d)||n.types.isJSXExpressionContainer(d)&&(n.types.isJSXElement(d.expression)||n.types.isJSXFragment(d.expression)),j=!r&&l===o,R=n.types.isJSXExpressionContainer(d)&&!n.types.isJSXEmptyExpression(d.expression)?d.expression:null,I=!r&&!!R&&Ae(R,l);!r&&w||j||I?i.push(n.types.objectMethod("get",x,[],n.types.blockStatement([n.types.returnStatement(p)]))):i.push(n.types.objectProperty(x,p))}return{props:i,spreads:a}}function Rt(e){return n.types.isJSXIdentifier(e)?e.name==="class"?"className":e.name:n.types.isJSXNamespacedName(e)?`${e.namespace.name}:${e.name.name}`:"unknown"}function kt(e,t,r="",s=!0){if(e===null)return n.types.booleanLiteral(!0);if(n.types.isStringLiteral(e))return e.value.includes(`
2
+ `)?n.types.stringLiteral(e.value.replace(/\s+/g," ").trim()):e;if(n.types.isJSXExpressionContainer(e)){if(n.types.isJSXEmptyExpression(e.expression))return n.types.booleanLiteral(!0);let i=e.expression;return s&&Ae(i,r)?n.types.arrowFunctionExpression([],i):i}return n.types.isJSXElement(e)?B(e,t,!1,t.autoShow??!0):n.types.isJSXFragment(e)?U(e,t,{runtime:"automatic",pragmaFrag:"Fragment",development:!1}):n.types.booleanLiteral(!0)}function Ae(e,t){return Ne.test(t)||t.startsWith("on:")||t==="ref"||t.startsWith("use:")||n.types.isArrowFunctionExpression(e)||n.types.isFunctionExpression(e)||n.types.isIdentifier(e)||n.types.isStringLiteral(e)||n.types.isNumericLiteral(e)||n.types.isBooleanLiteral(e)||n.types.isNullLiteral(e)?!1:!!(n.types.isCallExpression(e)||n.types.isOptionalCallExpression(e)||n.types.isMemberExpression(e)||n.types.isOptionalMemberExpression(e)||n.types.isLogicalExpression(e)||n.types.isConditionalExpression(e)||n.types.isBinaryExpression(e)||n.types.isUnaryExpression(e)||n.types.isTemplateLiteral(e)||n.types.isObjectExpression(e)||n.types.isArrayExpression(e))}function Nt(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 s="";for(let i=0;i<t.length;i++){let a=t[i].replace(/\t/g," ");i!==0&&(a=a.replace(/^ +/,"")),i!==t.length-1&&(a=a.replace(/ +$/,"")),a&&(i!==r&&(a+=" "),s+=a)}return s}function ne(e,t,r=!0){let s=[];for(let i of e)if(n.types.isJSXText(i)){let a=Nt(i.value);a&&s.push(n.types.stringLiteral(a))}else if(n.types.isJSXExpressionContainer(i)){if(!n.types.isJSXEmptyExpression(i.expression)){let a=i.expression;if(r){let o=Jt(a,t)??It(a,t);if(o){s.push(o);continue}}else{let o=Xt(a,t);if(o){s.push(o);continue}}Lt(a)?s.push(n.types.arrowFunctionExpression([],a)):s.push(a)}}else n.types.isJSXElement(i)?s.push(B(i,t,!1,t.autoShow??!0)):n.types.isJSXFragment(i)?s.push(U(i,t,{runtime:"automatic",pragmaFrag:"Fragment",development:!1})):n.types.isJSXSpreadChild(i)&&s.push(i.expression);return s}function Jt(e,t){if(!n.types.isArrowFunctionExpression(e)||e.params.length!==0||e.async)return null;let r=e.body;if(n.types.isLogicalExpression(r)&&r.operator==="&&"){let s=k(r.right);if(s)return D(L(r.left),s,null,t)}if(n.types.isConditionalExpression(r)){let s=k(r.consequent);if(s){let i=re(r.alternate,t);return D(L(r.test),s,i,t,!0)}}return null}function It(e,t){if(n.types.isLogicalExpression(e)&&e.operator==="&&"){let r=k(e.right);if(r)return D(L(e.left),r,null,t)}if(n.types.isConditionalExpression(e)){let r=k(e.consequent);if(r){let s=re(e.alternate,t);return D(L(e.test),r,s,t)}}return null}function Xt(e,t){let r=n.types.isArrowFunctionExpression(e)&&e.params.length===0&&!e.async&&n.types.isExpression(e.body)?e.body:e;if(n.types.isConditionalExpression(r)){let s=L(r.test),a=k(r.consequent)??r.consequent,c=k(r.alternate)??r.alternate,l=n.types.conditionalExpression(s,a,c);return te(r.consequent)||te(r.alternate)?null:(t.needsCreateMemo=!0,n.types.callExpression(n.types.identifier("createMemo"),[n.types.arrowFunctionExpression([],l)]))}if(n.types.isLogicalExpression(r)&&r.operator==="&&"){let s=L(r.left),a=k(r.right)??r.right,o=n.types.logicalExpression("&&",s,a);return te(r.right)?null:(t.needsCreateMemo=!0,n.types.callExpression(n.types.identifier("createMemo"),[n.types.arrowFunctionExpression([],o)]))}return null}function re(e,t){if(Pt(e))return null;let r=k(e);if(r)return Me(r,t);if(n.types.isConditionalExpression(e)){let s=e,i=k(s.consequent);if(i){let a=re(s.alternate,t);return D(L(s.test),i,a,t)}}return e}function Re(e){return n.types.isJSXElement(e)||n.types.isJSXFragment(e)}function te(e){let t=k(e);if(!t||!n.types.isJSXElement(t))return!1;let r=t.openingElement.name;return n.types.isJSXIdentifier(r)&&q.has(r.name)}function k(e){return Re(e)?e:n.types.isArrowFunctionExpression(e)&&e.params.length===0&&!e.async&&Re(e.body)?e.body:null}function L(e){return n.types.isArrowFunctionExpression(e)&&e.params.length===0&&!e.async&&n.types.isExpression(e.body)?e.body:e}function Pt(e){return n.types.isNullLiteral(e)||n.types.isIdentifier(e)&&e.name==="undefined"||n.types.isBooleanLiteral(e)&&e.value===!1}function Me(e,t){return n.types.isJSXElement(e)?B(e,t,!1,t.autoShow??!0):U(e,t,{runtime:"automatic",pragmaFrag:"Fragment",development:!1})}function D(e,t,r,s,i=!1){s.controlFlowComponents.add("Show"),s.needsControlFlowImport=!0;let a=Me(t,s),o=[n.types.objectProperty(n.types.identifier("when"),n.types.arrowFunctionExpression([],e)),n.types.objectProperty(n.types.identifier("children"),a)];return r&&o.push(n.types.objectProperty(n.types.identifier("fallback"),r)),Xe(n.types.identifier("Show"),n.types.objectExpression(o),s)}function Lt(e){return n.types.isMemberExpression(e)||n.types.isOptionalMemberExpression(e)?!(!e.computed&&n.types.isIdentifier(e.property,{name:"children"})):n.types.isCallExpression(e)||n.types.isOptionalCallExpression(e)?!0:n.types.isIdentifier(e)?!1:!!(n.types.isLogicalExpression(e)||n.types.isConditionalExpression(e)||n.types.isBinaryExpression(e)||n.types.isUnaryExpression(e)||n.types.isTemplateLiteral(e))}function Te(e,t){let r=e.openingElement;if(!n.types.isJSXIdentifier(r.name))return!1;let s=r.name.name;if(s[0]!==s[0].toLowerCase())return!1;for(let i of r.attributes){if(n.types.isJSXSpreadAttribute(i))return!1;if(n.types.isJSXAttribute(i)){let a=i.value;if(n.types.isJSXExpressionContainer(a)&&!n.types.isStringLiteral(a.expression)&&!n.types.isNumericLiteral(a.expression))return!1}}for(let i of e.children)if(n.types.isJSXElement(i)&&!Te(i,t)||n.types.isJSXExpressionContainer(i))return!1;return!0}function jt(e,t){let r=`_$static${t.staticCounter++}`,s=B(e,t,!1);return t.staticElements.set(r,s),n.types.identifier(r)}function Ft(e,t){let r=e.openingElement.name.name;return r==="Show"?At(e,t):r==="For"?Mt(e,t):null}function At(e,t){return null}function Mt(e,t){return null}var Tt=M;function $t(e){return[M,e]}function Z(e={}){return{plugins:[[M,{runtime:"automatic",importSource:"@fluixi/jsx",development:!1,detectReactivity:!0,useLitHTML:!0,hoistStatics:!0,delegateEvents:!0,optimizeControlFlow:!0,sourceMaps:!0,...e}]]}}var Ot={production:Z({development:!1,hoistStatics:!0,delegateEvents:!0,optimizeControlFlow:!0}),development:Z({development:!0,hoistStatics:!1,sourceMaps:!0}),minimal:Z({detectReactivity:!1,useLitHTML:!1,hoistStatics:!1,delegateEvents:!1,optimizeControlFlow:!1})};
@@ -1,2 +1,2 @@
1
- import{declare as tt}from"@babel/helper-plugin-utils";import{types as n,template as Se}from"@babel/core";import{types as m,traverse as ze,template as We}from"@babel/core";import ue from"@babel/generator";var q={version:1,module:"@fluixi/dom",symbols:["createNativeElement","insert","spread","setAttribute","delegateEvents","createComponent","createMemo","untrack","Show","For","Index","Switch","Match","Dynamic","ErrorBoundary"]},Ct={version:2,module:"@fluixi/dom",symbols:[...q.symbols,"template","cloneTemplate","walk"]};var Fe={show:"Show",for:"For",index:"Index",switch:"Switch",match:"Match",dynamic:"Dynamic",errorBoundary:"ErrorBoundary",suspense:"Suspense"};function Ae(e){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e)}function se(e){return Ae(e)?e:JSON.stringify(e)}function Me(e){return e.expr!==void 0?e.reactive?`() => (${e.expr})`:`(${e.expr})`:JSON.stringify(e.literal??!0)}function Te(e){return e.expr!==void 0?`(${e.expr})`:JSON.stringify(e.literal??!0)}function $e(e,t,r){let s=e.filter(c=>c.kind==="spread"),a=e.filter(c=>c.kind!=="spread").map(c=>`${se(c.name)}: ${Me(c)}`);t!=null&&a.push(`children: ${t}`);let o=`{ ${a.join(", ")} }`;return s.length>0?(r.add("mergeProps"),`mergeProps(${s.map(c=>c.expr).join(", ")}, ${o})`):o}function oe(e,t){return e.length===1?V(e[0],t):`[${e.map(r=>V(r,t)).join(", ")}]`}function ie(e,t,r,s){s.add("createMemo"),s.add("createComponent");let i=t.filter(l=>l.kind==="spread"),o=t.filter(l=>l.kind!=="spread").map(l=>`get ${se(l.name)}() { return ${Te(l)}; }`);r.length>0&&o.push(`get children() { return ${oe(r,s)}; }`);let c=`{ ${o.join(", ")} }`;return i.length>0&&(s.add("mergeProps"),c=`mergeProps(${i.map(l=>l.expr).join(", ")}, ${c})`),`createMemo(() => createComponent(${e}, ${c}))`}function V(e,t){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":oe(e.children,t);case"component":return ie(e.name,e.props,e.children,t);case"control":{let r=Fe[e.control]??e.control;return t.add(r),ie(r,e.props,e.children,t)}case"element":{t.add("createNativeElement");let r=JSON.stringify(e.tag),s="_el$",i=[],a=e.svg?`${r}, true`:r;if(i.push(`const ${s} = createNativeElement(${a});`),e.props.length>0){t.add("spread");let o=e.svg?", isSVG: true":"";i.push(`spread({ element: ${s}, props: ${$e(e.props,null,t)}${o} });`)}for(let o of e.children){t.add("insert");let c=V(o,t),l=o.kind==="expr"&&o.reactive||o.kind==="component"||o.kind==="control";i.push(l?`insert(${s}, ${c}, null);`:`insert(${s}, ${c});`)}return i.push(`return ${s};`),`(() => { ${i.join(" ")} })()`}}}var X={name:"imperative",contract:q,emit(e,t){let r=new Set;return{code:V(e,r),imports:Array.from(r)}}};import{types as z}from"@babel/core";import ae from"@babel/generator";import{parseTemplate as Oe}from"@fluixi/template-parser";var De=ae.default??ae;function Be(e){return De(e,{concise:!0}).code}var le=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function _e(e){return e.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${")}function ce(e){return e.charAt(0).toUpperCase()+e.slice(1)}var U=class{constructor(t,r){this.holes=t;this.used=r}hole(t){return this.holes[t]??{node:z.identifier("undefined"),code:"undefined",reactive:!1}}emit(t){let{code:r,imports:s}=X.emit(t,{});for(let i of s)this.used.add(i);return r}lowerRoot(t){let r=this.lowerChildren(t);return r.length===1?r[0]:{kind:"fragment",children:r}}lowerChildren(t){let r=[];for(let s=0;s<t.length;s++){let i=t[s];if(i.kind==="Element"||i.kind==="Component"){let o=i.attributes.find(c=>c.kind==="IfDirective");if(o&&o.kind==="IfDirective"){let c=s+1;c<t.length&&this.isBlankText(t[c])&&c++;let l=t[c],p=l&&(l.kind==="Element"||l.kind==="Component")&&l.attributes.some(E=>E.kind==="ElseDirective");r.push(this.lowerIf(i,o.hole,p?l:null)),p&&(s=c);continue}if(i.attributes.some(c=>c.kind==="EachDirective")){r.push(this.lowerEach(i));continue}}let a=this.lowerNode(i);a&&r.push(a)}return r}isBlankText(t){return t.kind==="Text"&&!t.raw&&W(t.value)===""}lowerNode(t){switch(t.kind){case"Text":{if(t.raw)return{kind:"text",value:t.value};let r=W(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(s=>s.kind==="Attribute"&&s.name==="is");if(t.tag==="component"&&r&&r.value&&r.value.kind==="hole"){let s=t.attributes.filter(a=>a!==r),i=this.lowerComponent({...t,kind:"Component",tag:"Dynamic",tagHole:null,attributes:s});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,s=this.lowerAttributes(t.attributes),{slots:i,rest:a}=this.partitionSlots(t.children);for(let[o,c]of i){let l=c.length===1?c[0]:{kind:"fragment",children:c};s.push({name:o,kind:"attr",expr:this.emit(l),jsxElement:!0})}return{kind:"component",name:r,props:s,children:this.lowerChildren(a)}}partitionSlots(t){let r=new Map,s=[];for(let i of t){if(i.kind==="Element"||i.kind==="Component"){let a=i.attributes.find(o=>o.kind==="Attribute"&&o.name==="slot");if(a&&a.value&&a.value.kind==="static"){let o={...i,attributes:i.attributes.filter(p=>p!==a)},c=o.kind==="Element"?this.lowerElement(o):this.lowerComponent(o),l=r.get(a.value.value)??[];l.push(c),r.set(a.value.value,l);continue}}s.push(i)}return{slots:r,rest:s}}lowerIf(t,r,s){let i=this.hole(r),a=[{name:"when",kind:"attr",expr:i.code,reactive:i.reactive}];if(s){let c=this.stripAndLower(s,l=>l.kind==="ElseDirective");a.push({name:"fallback",kind:"attr",expr:this.emit(c),jsxElement:!0})}let o=this.stripAndLower(t,c=>c.kind==="IfDirective");return{kind:"component",name:"Show",props:a,children:[o]}}lowerEach(t){let r=t.attributes.find(l=>l.kind==="EachDirective");if(!r||r.kind!=="EachDirective")return this.lowerNode(t);let s=this.hole(r.hole),i=[{name:"each",kind:"attr",expr:s.code,reactive:s.reactive}];if(r.key){let l="static"in r.key?`(item) => item[${JSON.stringify(r.key.static)}]`:this.hole(r.key.hole).code;i.push({name:"by",kind:"attr",expr:l})}let a=this.itemArrow(t),o;if(a){let l=a.body,p={kind:"expr",code:R(l,this.used),reactive:y(l)},E=this.rebuildWithChildren(t,[p]);o=`(${a.params.map(f=>Be(f)).join(", ")}) => (${this.emit(E)})`}else{let l=this.stripAndLower(t,p=>p.kind==="EachDirective");o=`() => (${this.emit(l)})`}return{kind:"component",name:"For",props:i,children:[{kind:"expr",code:o,reactive:!1}]}}itemArrow(t){let r=t.children.filter(i=>!this.isBlankText(i));if(r.length!==1||r[0].kind!=="Expression")return null;let s=this.hole(r[0].hole).node;return z.isArrowFunctionExpression(s)&&!z.isBlockStatement(s.body)?s:null}stripAndLower(t,r){let s={...t,attributes:t.attributes.filter(i=>!r(i))};return s.kind==="Element"?this.lowerElement(s):this.lowerComponent(s)}rebuildWithChildren(t,r){let s=this.lowerAttributes(t.attributes.filter(i=>i.kind!=="EachDirective"));return t.kind==="Element"?{kind:"element",tag:t.tag,svg:t.namespace==="svg",props:s,children:r,static:!1}:{kind:"component",name:t.tag,props:s,children:r}}lowerAttributes(t){let r=[],s=[],i=!1,a=[],o=!1,c=[];for(let l of t)switch(l.kind){case"IfDirective":case"EachDirective":case"ElseDirective":break;case"Attribute":r.push(this.plainAttr(l));break;case"PropertyBinding":r.push({name:l.name,kind:"prop",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"EventBinding":r.push(this.eventProp(l));break;case"RefBinding":r.push({name:"ref",kind:"ref",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"Spread":r.push({name:"",kind:"spread",expr:this.hole(l.hole).code});break;case"ClassDirective":{let p=this.hole(l.hole);s.push(`${JSON.stringify(l.name)}: ${p.code}`),i=i||p.reactive;break}case"StyleDirective":{let p=this.hole(l.hole);a.push(`${JSON.stringify(l.name)}: ${p.code}`),o=o||p.reactive;break}case"BindDirective":r.push(...this.bindProps(l.name,this.hole(l.hole).code));break;case"UseDirective":{let p=l.name??(l.hole!=null?this.hole(l.hole).code:null);if(!p)break;c.push(l.name!=null&&l.hole!=null?`[${p}, () => (${this.hole(l.hole).code})]`:`[${p}]`);break}}return s.length>0&&r.push({name:"classList",kind:"attr",expr:`{ ${s.join(", ")} }`,reactive:i}),a.length>0&&r.push({name:"style",kind:"attr",expr:`{ ${a.join(", ")} }`,reactive:o}),c.length>0&&r.push({name:"use",kind:"attr",expr:`[${c.join(", ")}]`}),r}eventProp(t){let r=t.name.toLowerCase(),s=this.hole(t.hole).code;if(!(t.syntax==="colon"||t.modifiers.length>0))return{name:"on"+ce(t.name),kind:"event",event:{name:r,delegated:le.has(r)},expr:s};let a=this.wrapHandler(s,t.modifiers),o=this.eventOptions(t.modifiers),c=o?`[${a}, ${o}]`:a;return{name:"on:"+r,kind:"attr",expr:c}}wrapHandler(t,r){let s=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();"),!s&&i.length===0?t:`(e) => { ${s}${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 s=t==="checked",i=s?"change":"input",a=s?"checked":"value",o=`(${r})`;return[{name:t,kind:"attr",expr:`${o}[0]()`,reactive:!0},{name:"on"+ce(i),kind:"event",event:{name:i,delegated:le.has(i)},expr:`(e) => ${o}[1](e.target.${a})`}]}plainAttr(t){let r=t.value,s=t.name;t.name==="class"?s=r&&r.kind==="hole"&&z.isObjectExpression(this.hole(r.hole).node)?"classList":"className":t.name==="html"&&(s="innerHTML");let a={name:s,kind:"attr"};if(r==null)return a.literal=!0,a;if(r.kind==="static")return a.literal=r.value,a;if(r.kind==="hole"){let l=this.hole(r.hole);return a.expr=l.code,a.reactive=l.reactive,a}let o=!1,c=r.parts.map(l=>{if("text"in l)return _e(l.text);let p=this.hole(l.hole);return o=o||p.reactive,"${"+p.code+"}"}).join("");return a.expr="`"+c+"`",a.reactive=o,a}};function pe(e,t,r={}){let s=e.quasi,i=s.expressions.map(c=>{let l=c;return{node:l,code:R(l,t),reactive:y(l)}}),a=Ve(s),{root:o}=Oe(a,{svg:r.svg});return new U(i,t).lowerRoot(o.children)}function Ve(e){let t=[];return e.quasis.forEach((r,s)=>{let i=r.value.cooked??r.value.raw;if(t.push({kind:"static",text:i,start:r.start??0}),s<e.expressions.length){let a=e.expressions[s];t.push({kind:"hole",index:s,start:a.start??0,end:a.end??0})}}),t}function H(e,t=new Set,r={}){return pe(e,t,r)}var He=ue.default??ue;function fe(e){return He(e,{concise:!0}).code}function Ge(e,t){let r=m.cloneNode(e,!0),s=m.file(m.program([m.expressionStatement(r)])),i=!1,a=(o,c,l)=>{for(let p of l)t.add(p);o.replaceWith(We.expression(c,{placeholderPattern:!1,plugins:["typescript"]})()),o.skip(),i=!0};return ze(s,{"JSXElement|JSXFragment"(o){let c=o.node,{code:l,imports:p}=X.emit(M(c,t),{});a(o,l,p)},TaggedTemplateExpression(o){let c=o.node.tag;if(!m.isIdentifier(c)||c.name!=="html"&&c.name!=="svg")return;let l=H(o.node,t,{svg:c.name==="svg"}),{code:p,imports:E}=X.emit(l,{});a(o,p,E)}}),i?s.program.body[0].expression:e}function R(e,t){return fe(Ge(e,t))}var qe=new Set(["svg","path","circle","rect","line","polygon","polyline","ellipse","g","defs","clipPath","text"]),Ue=/^on[A-Z]/,Ze=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function Ke(e){if(m.isJSXIdentifier(e)){let t=e.name[0]!==e.name[0].toLowerCase();return{tag:e.name,component:t}}return m.isJSXMemberExpression(e)?{tag:fe(e),component:!0}:m.isJSXNamespacedName(e)?{tag:`${e.namespace.name}:${e.name.name}`,component:!1}:{tag:"div",component:!1}}function Ye(e){return m.isJSXIdentifier(e)?e.name==="class"?"className":e.name:m.isJSXNamespacedName(e)?`${e.namespace.name}:${e.name.name}`:"unknown"}function y(e){return m.isCallExpression(e)||m.isOptionalCallExpression(e)?!0:m.isMemberExpression(e)||m.isOptionalMemberExpression(e)?!(!e.computed&&m.isIdentifier(e.property,{name:"children"})):m.isConditionalExpression(e)?y(e.test)||y(e.consequent)||y(e.alternate):m.isLogicalExpression(e)||m.isBinaryExpression(e)?y(e.left)||y(e.right):m.isTemplateLiteral(e)?e.expressions.some(t=>y(t)):m.isObjectExpression(e)?e.properties.some(t=>m.isObjectProperty(t)&&!t.computed&&y(t.value)):m.isArrayExpression(e)?e.elements.some(t=>t!=null&&!m.isSpreadElement(t)&&y(t)):!1}function Qe(e,t){let r=Ye(e.name),s=Ue.test(r),i=s||r.startsWith("on:"),o={name:r,kind:s?"event":"attr"};s&&(o.event={name:r.slice(2).toLowerCase(),delegated:Ze.has(r.slice(2).toLowerCase())});let c=e.value;if(c==null)return o.literal=!0,o;if(m.isStringLiteral(c))return o.literal=c.value,o;if(m.isJSXExpressionContainer(c)&&!m.isJSXEmptyExpression(c.expression)){let l=c.expression;return m.isStringLiteral(l)||m.isNumericLiteral(l)||m.isBooleanLiteral(l)?(o.literal=l.value,o):(o.expr=R(l,t),o.reactive=i?!1:y(l),(m.isJSXElement(l)||m.isJSXFragment(l))&&(o.jsxElement=!0),o)}return o.literal=!0,o}function me(e,t){let r=e.value;return r==null?null:m.isStringLiteral(r)?JSON.stringify(r.value):m.isJSXExpressionContainer(r)&&!m.isJSXEmptyExpression(r.expression)?R(r.expression,t):null}function et(e,t){let r=[],s=[];for(let i of e){if(m.isJSXSpreadAttribute(i)){r.push({name:"",kind:"spread",expr:R(i.argument,t)});continue}if(!m.isJSXAttribute(i))continue;let a=m.isJSXNamespacedName(i.name)?i.name.namespace.name:null;if(a==="use"){let o=i.name.name.name;t.add(o);let c=me(i,t);s.push(c!=null?`[${o}, () => (${c})]`:`[${o}]`);continue}if(a==="oncapture"){let o=i.name.name.name.toLowerCase(),c=me(i,t)??"undefined";r.push({name:"on:"+o,kind:"attr",expr:`[${c}, { capture: true }]`});continue}r.push(Qe(i,t))}return s.length>0&&r.push({name:"use",kind:"attr",expr:`[${s.join(", ")}]`}),r}function W(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 s="";for(let i=0;i<t.length;i++){let a=t[i].replace(/\t/g," ");i!==0&&(a=a.replace(/^ +/,"")),i!==t.length-1&&(a=a.replace(/ +$/,"")),a&&(i!==r&&(a+=" "),s+=a)}return s}function de(e,t){let r=[];for(let s of e)if(m.isJSXText(s)){let i=W(s.value);i&&r.push({kind:"text",value:i})}else if(m.isJSXExpressionContainer(s)){if(!m.isJSXEmptyExpression(s.expression)){let i=s.expression;r.push({kind:"expr",code:R(i,t),reactive:y(i)})}}else m.isJSXElement(s)||m.isJSXFragment(s)?r.push(M(s,t)):m.isJSXSpreadChild(s)&&r.push({kind:"expr",code:R(s.expression,t),reactive:!1});return r}function M(e,t=new Set){if(m.isJSXFragment(e))return{kind:"fragment",children:de(e.children,t)};let{tag:r,component:s}=Ke(e.openingElement.name),i=et(e.openingElement.attributes,t),a=de(e.children,t);return s?{kind:"component",name:r,props:i,children:a}:{kind:"element",tag:r,svg:qe.has(r),props:i,children:a,static:!1}}var K=new Set(["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary","Suspense","SuspenseList","Await"]),ge=new Set(["Suspense","SuspenseList","Await"]),T=new Set(["Router","Outlet","Redirect","Link"]),nt={Show:"when",For:"each",Index:"each",Match:"when"};var be=/^on[A-Z]/,ve=["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup","mouseover","mouseout","mouseenter","mouseleave"],O=tt((e,t={})=>{e.assertVersion(7);let{runtime:r="automatic",importSource:s="@fluixi/jsx",pragma:i="jsx",pragmaFrag:a="Fragment",development:o=!1,detectReactivity:c=!0,useLitHTML:l=!0,hoistStatics:p=!0,delegateEvents:E=!0,delegatedEvents:f=ve,optimizeControlFlow:w=!0,sourceMaps:L=!0,signalModule:C="@fluixi/dom",controlFlowModule:J="@fluixi/dom",routerModule:B="@fluixi/core/router-next",reactiveModule:te="@fluixi/reactive/signal",autoShowTransform:ne=!1,backend:N="imperative",codegen:A="inline",format:re="both",litTag:Pe="html"}=t,Le=re==="lit"||re==="both",je={backend:N,codegen:A,irImports:new Set,libModule:"@fluixi/core",hasJSX:!1,hasReactivity:!1,hasLitHTML:!1,needsSignalImport:!1,needsControlFlowImport:!1,needsCreateMemo:!1,controlFlowComponents:new Set,delegatedEvents:new Set,staticElements:new Map,staticCounter:0};return{name:"@fluixi/babel-plugin-jsx",manipulateOptions(d,u){u.plugins.push("jsx","typescript")},pre(d){Object.assign(d,je)},visitor:{ImportDeclaration(d,u){d.node.source.value==="@fluixi/core/rx"&&(d.node.source=n.stringLiteral("@fluixi/reactive"))},Program:{enter(d,u){Object.assign(u,{hasJSX:!1,hasReactivity:!1,hasLitHTML:!1,hasLitIR:!1,needsSignalImport:!1,needsControlFlowImport:!1,needsCreateMemo:!1,controlFlowComponents:new Set,delegatedEvents:new Set,staticElements:new Map,autoShow:ne,staticCounter:0,libModule:"@fluixi/core",backend:N,codegen:A,irImports:new Set,needsCreateNativeElement:!1,needsInsert:!1,needsSpread:!1,needsCreateComponent:!1,needsMergeProps:!1})},exit(d,u){let g=[];if(u.hasJSX||u.needsSignalImport&&g.push(n.importDeclaration([n.importSpecifier(n.identifier("signal"),n.identifier("signal"))],n.stringLiteral(C))),u.hasJSX||u.hasLitIR){if(u.irImports.size>0){let h=new Set(["Show","For","Index","Switch","Match","Dynamic","ErrorBoundary","Portal","Suspense"]),b=new Set(["createMemo","createEffect","createRenderEffect","createRoot","createSignal","onCleanup","batch","untrack"]),x=Array.from(u.irImports),I=S=>n.importSpecifier(n.identifier(S),n.identifier(S)),j=S=>!d.scope.hasBinding(S),F=x.filter(S=>b.has(S)&&j(S)),v=x.filter(S=>!h.has(S)&&!b.has(S)&&j(S)),_=x.filter(S=>h.has(S)&&j(S));F.length>0&&g.push(n.importDeclaration(F.map(I),n.stringLiteral(te))),v.length>0&&g.push(n.importDeclaration(v.map(I),n.stringLiteral(C))),_.length>0&&g.push(n.importDeclaration(_.map(I),n.stringLiteral(J)))}if(u.hasJSX&&N==="imperative"&&A!=="ir"){let b=[[!!u.needsCreateNativeElement,"createNativeElement"],[!!u.needsSpread,"spread"],[!!u.needsInsert,"insert"],[!!u.needsCreateComponent,"createComponent"],[!!u.needsMergeProps,"mergeProps"]].filter(([x,I])=>x&&!d.scope.hasBinding(I)).map(([,x])=>n.importSpecifier(n.identifier(x),n.identifier(x)));b.length>0&&g.push(n.importDeclaration(b,n.stringLiteral(C)))}else if(u.hasJSX&&r==="automatic"){let h=[n.importSpecifier(n.identifier("jsx"),n.identifier("jsx")),n.importSpecifier(n.identifier("jsxs"),n.identifier("jsxs")),n.importSpecifier(n.identifier("Fragment"),n.identifier("Fragment"))];o&&h.push(n.importSpecifier(n.identifier("jsxDEV"),n.identifier("jsxDEV"))),u.needsMergeProps&&h.push(n.importSpecifier(n.identifier("mergeProps"),n.identifier("mergeProps"))),g.push(n.importDeclaration(h,n.stringLiteral(s)))}if(u.needsCreateMemo&&!d.scope.hasBinding("createMemo")&&g.push(n.importDeclaration([n.importSpecifier(n.identifier("createMemo"),n.identifier("createMemo"))],n.stringLiteral(N==="imperative"?te:u.libModule??"@fluixi/core"))),u.needsControlFlowImport&&u.controlFlowComponents.size>0){let h=Array.from(u.controlFlowComponents).filter(v=>!d.scope.hasBinding(v)),b=u.libModule??"@fluixi/core",x=h.filter(v=>T.has(v)),I=h.filter(v=>ge.has(v)),j=h.filter(v=>!ge.has(v)&&!T.has(v)),F=(v,_)=>n.importDeclaration(v.map(S=>n.importSpecifier(n.identifier(S),n.identifier(S))),n.stringLiteral(_));j.length>0&&g.push(F(j,J)),I.length>0&&g.push(F(I,b)),x.length>0&&g.push(F(x,B))}if(E&&u.delegatedEvents.size>0){g.push(n.importDeclaration([n.importSpecifier(n.identifier("delegateEvents"),n.identifier("delegateEvents"))],n.stringLiteral(N==="imperative"?C:"@fluixi/jsx")));let h=n.arrayExpression(Array.from(u.delegatedEvents).map(x=>n.stringLiteral(x))),b=n.expressionStatement(n.callExpression(n.identifier("delegateEvents"),[h]));d.node.body.unshift(b)}if(p&&u.staticElements.size>0){let h=[];u.staticElements.forEach((b,x)=>{h.push(n.variableDeclaration("const",[n.variableDeclarator(n.identifier(x),b)]))}),d.node.body.unshift(...h)}}g.length>0&&d.node.body.unshift(...ot(g))}},JSXElement(d,u){if(u.hasJSX=!0,N==="imperative"&&A==="ir"){d.replaceWith(Ee(d.node,u));return}let g=d.node,h=g.openingElement;if(n.isJSXIdentifier(h.name)&&T.has(h.name.name)&&(u.controlFlowComponents.add(h.name.name),u.needsControlFlowImport=!0),n.isJSXIdentifier(h.name)&&K.has(h.name.name)&&(u.controlFlowComponents.add(h.name.name),w)){let x=vt(g,u);if(x){d.replaceWith(x);return}}if(p&&N!=="imperative"&&Re(g,u)){let x=bt(g,u);if(x){d.replaceWith(x);return}}let b=rt(g,u,{runtime:r,pragma:i,development:o,detectReactivity:c,useLitHTML:l,autoShow:ne});d.replaceWith(b)},JSXFragment(d,u){if(u.hasJSX=!0,N==="imperative"&&A==="ir"){d.replaceWith(Ee(d.node,u));return}let g=G(d.node,u,{runtime:r,pragmaFrag:a,development:o});d.replaceWith(g)},CallExpression(d,u){if(!c)return;let g=d.node.callee;g.name,n.isIdentifier(g)&&(g.name==="createSignal"||g.name==="createStore"||g.name==="useContext"||g.name==="useLocation")&&(u.hasReactivity=!0)},JSXExpressionContainer(d){},TaggedTemplateExpression(d,u){if(Le&&N==="imperative"&&n.isIdentifier(d.node.tag)&&(d.node.tag.name===Pe||d.node.tag.name==="svg")){d.replaceWith(at(d.node,u));return}}}}});function rt(e,t,r){let{runtime:s,pragma:i,development:a,autoShow:o=!0}=r;return s==="automatic"?D(e,t,a,o):pt(e,t,i)}var it=new Set(["svg","path","circle","rect","line","polygon","polyline","ellipse","g","defs","clipPath","text"]);function he(e,t,r){return t.length>0?(r.needsMergeProps=!0,n.callExpression(n.identifier("mergeProps"),[...t,n.objectExpression(e)])):n.objectExpression(e)}function ye(e){return e.length===1?e[0]:n.arrayExpression(e)}function st(e,t,r,s,i,a){if(!t){let f=[...r];return i.length>0&&f.push(n.objectMethod("get",n.identifier("children"),[],n.blockStatement([n.returnStatement(ye(i))]))),we(e,he(f,s,a),a)}let o=e.value,c=it.has(o),l=n.identifier("_el$"),p=[];a.needsCreateNativeElement=!0;let E=[e];if(c&&E.push(n.booleanLiteral(!0)),p.push(n.variableDeclaration("const",[n.variableDeclarator(l,n.callExpression(n.identifier("createNativeElement"),E))])),r.length>0||s.length>0){a.needsSpread=!0;let f=[n.objectProperty(n.identifier("element"),l),n.objectProperty(n.identifier("props"),he(r,s,a))];c&&f.push(n.objectProperty(n.identifier("isSVG"),n.booleanLiteral(!0))),p.push(n.expressionStatement(n.callExpression(n.identifier("spread"),[n.objectExpression(f)])))}if(i.length>0){a.needsInsert=!0;for(let f of i){let L=n.isArrowFunctionExpression(f)||n.isFunctionExpression(f)||n.isCallExpression(f)&&n.isIdentifier(f.callee)&&f.callee.name==="createMemo"?[n.cloneNode(l),f,n.nullLiteral()]:[n.cloneNode(l),f];p.push(n.expressionStatement(n.callExpression(n.identifier("insert"),L)))}}return p.push(n.returnStatement(l)),n.callExpression(n.arrowFunctionExpression([],n.blockStatement(p)),[])}function we(e,t,r){return n.isIdentifier(e)&&T.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 Ee(e,t){let r=new Set,s=M(e,r),{code:i,imports:a}=X.emit(s,{});for(let o of a)r.add(o);for(let o of r)t.irImports.add(o);return Se.expression(i,{placeholderPattern:!1,plugins:["typescript"]})()}function ot(e){let t=new Map,r=[];for(let s of e){let i=s.source.value;if(!s.specifiers.every(c=>n.isImportSpecifier(c))){r.push(s);continue}let o=t.get(i);if(!o){let c=new Set(s.specifiers.map(l=>l.local.name));t.set(i,{decl:s,names:c}),r.push(s);continue}for(let c of s.specifiers)o.names.has(c.local.name)||(o.names.add(c.local.name),o.decl.specifiers.push(c))}return r}function at(e,t){let r=new Set,s=n.isIdentifier(e.tag)&&e.tag.name==="svg",i=H(e,r,{svg:s}),{code:a,imports:o}=X.emit(i,{});for(let l of o)r.add(l);for(let l of r)t.irImports.add(l);Ce(i,t),t.hasLitIR=!0;let c=Se.expression(a,{placeholderPattern:!1,plugins:["typescript"]})();return lt(c,e),c}function lt(e,t){if(!t.loc)return;let r=new Set,s=i=>{if(!r.has(i)){r.add(i),i.loc||(i.loc=t.loc,i.start=t.start,i.end=t.end);for(let a of n.VISITOR_KEYS[i.type]??[]){let o=i[a];if(Array.isArray(o))for(let c of o)c&&typeof c=="object"&&"type"in c&&s(c);else o&&typeof o=="object"&&"type"in o&&s(o)}}};s(e)}function Ce(e,t){if(e.kind==="component"&&(K.has(e.name)||T.has(e.name))&&(t.controlFlowComponents.add(e.name),t.needsControlFlowImport=!0),(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)Ce(r,t)}function ct(e){return e.map(t=>{if(n.isObjectProperty(t)){let r=t.key,s=t.computed,i=t.value;return n.objectMethod("get",r,[],n.blockStatement([n.returnStatement(i)]),s)}return t})}function D(e,t,r,s=!0){let i=e.openingElement,a=e.children,o=ke(i.name),c=n.isJSXIdentifier(i.name)&&/^[a-z]/.test(i.name.name),l=Je(i.attributes,t,c,n.isJSXIdentifier(i.name)?i.name.name:""),p=l.props,E=l.spreads;c||(p=ct(p));let f=Y(a,t,s);if(t.backend==="imperative")return st(o,c,p,E,f,t);if(f.length>0){let J=f.length===1?f[0]:n.arrayExpression(f);p.push(n.objectProperty(n.identifier("children"),J))}let w;if(E.length>0){let J=p.length>0?n.objectExpression(p):n.objectExpression([]);t.needsMergeProps=!0,w=n.callExpression(n.identifier("mergeProps"),[...E,J])}else w=n.objectExpression(p);let L=r?"jsxDEV":f.length>1?"jsxs":"jsx",C=[o,w];return r&&C.push(n.identifier("undefined"),n.booleanLiteral(!1),n.identifier("undefined"),n.identifier("undefined")),n.callExpression(n.identifier(L),C)}function pt(e,t,r){let s=e.openingElement,i=e.children,a=ke(s.name),o=n.isJSXIdentifier(s.name)&&/^[a-z]/.test(s.name.name),{props:c,spreads:l}=Je(s.attributes,t,o,n.isJSXIdentifier(s.name)?s.name.name:""),p=Y(i,t,t.autoShow??!0),E;if(l.length>0){let w=c.length>0?n.objectExpression(c):n.objectExpression([]);t.needsMergeProps=!0,E=n.callExpression(n.identifier("mergeProps"),[...l,w])}else E=c.length>0?n.objectExpression(c):n.nullLiteral();let f=[a,E,...p];return n.callExpression(n.identifier(r),f)}function G(e,t,r){let{runtime:s,pragmaFrag:i,development:a}=r,o=Y(e.children,t,t.autoShow??!0);if(t.backend==="imperative")return o.length===0?n.nullLiteral():ye(o);if(s==="automatic"){let c=a?"jsxDEV":o.length>1?"jsxs":"jsx",l=n.objectExpression([n.objectProperty(n.identifier("children"),o.length===1?o[0]:n.arrayExpression(o))]),p=[n.identifier("Fragment"),l];return a&&p.push(n.identifier("undefined"),n.booleanLiteral(!1),n.identifier("undefined"),n.identifier("undefined")),n.callExpression(n.identifier(c),p)}else return n.callExpression(n.identifier(i),o)}function ke(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)?Ne(e):n.isJSXNamespacedName(e)?n.stringLiteral(`${e.namespace.name}:${e.name.name}`):n.stringLiteral("div")}function Ne(e){let t;return n.isJSXIdentifier(e.object)?t=n.identifier(e.object.name):t=Ne(e.object),n.memberExpression(t,n.identifier(e.property.name))}function ut(e){return/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(e)}function Je(e,t,r=!0,s=""){let i=[],a=[],o=nt[s];for(let c of e)if(n.isJSXSpreadAttribute(c))a.push(c.argument);else if(n.isJSXAttribute(c)){let l=mt(c.name),p=dt(c.value,t,l,r);if(be.test(l)){let B=l.slice(2).toLowerCase();ve.includes(B)&&t.delegatedEvents.add(B)}let E=ut(l)?n.identifier(l):n.stringLiteral(l),f=c.value,w=n.isJSXElement(f)||n.isJSXFragment(f)||n.isJSXExpressionContainer(f)&&(n.isJSXElement(f.expression)||n.isJSXFragment(f.expression)),L=!r&&l===o,C=n.isJSXExpressionContainer(f)&&!n.isJSXEmptyExpression(f.expression)?f.expression:null,J=!r&&!!C&&Ie(C,l);!r&&w||L||J?i.push(n.objectMethod("get",E,[],n.blockStatement([n.returnStatement(p)]))):i.push(n.objectProperty(E,p))}return{props:i,spreads:a}}function mt(e){return n.isJSXIdentifier(e)?e.name==="class"?"className":e.name:n.isJSXNamespacedName(e)?`${e.namespace.name}:${e.name.name}`:"unknown"}function dt(e,t,r="",s=!0){if(e===null)return n.booleanLiteral(!0);if(n.isStringLiteral(e))return e.value.includes(`
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 s&&Ie(i,r)?n.arrowFunctionExpression([],i):i}return n.isJSXElement(e)?D(e,t,!1,t.autoShow??!0):n.isJSXFragment(e)?G(e,t,{runtime:"automatic",pragmaFrag:"Fragment",development:!1}):n.booleanLiteral(!0)}function Ie(e,t){return be.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 ft(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 s="";for(let i=0;i<t.length;i++){let a=t[i].replace(/\t/g," ");i!==0&&(a=a.replace(/^ +/,"")),i!==t.length-1&&(a=a.replace(/ +$/,"")),a&&(i!==r&&(a+=" "),s+=a)}return s}function Y(e,t,r=!0){let s=[];for(let i of e)if(n.isJSXText(i)){let a=ft(i.value);a&&s.push(n.stringLiteral(a))}else if(n.isJSXExpressionContainer(i)){if(!n.isJSXEmptyExpression(i.expression)){let a=i.expression;if(r){let o=gt(a,t)??ht(a,t);if(o){s.push(o);continue}}else{let o=Et(a,t);if(o){s.push(o);continue}}St(a)?s.push(n.arrowFunctionExpression([],a)):s.push(a)}}else n.isJSXElement(i)?s.push(D(i,t,!1,t.autoShow??!0)):n.isJSXFragment(i)?s.push(G(i,t,{runtime:"automatic",pragmaFrag:"Fragment",development:!1})):n.isJSXSpreadChild(i)&&s.push(i.expression);return s}function gt(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 s=k(r.right);if(s)return $(P(r.left),s,null,t)}if(n.isConditionalExpression(r)){let s=k(r.consequent);if(s){let i=Q(r.alternate,t);return $(P(r.test),s,i,t,!0)}}return null}function ht(e,t){if(n.isLogicalExpression(e)&&e.operator==="&&"){let r=k(e.right);if(r)return $(P(e.left),r,null,t)}if(n.isConditionalExpression(e)){let r=k(e.consequent);if(r){let s=Q(e.alternate,t);return $(P(e.test),r,s,t)}}return null}function Et(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 s=P(r.test),a=k(r.consequent)??r.consequent,c=k(r.alternate)??r.alternate,l=n.conditionalExpression(s,a,c);return Z(r.consequent)||Z(r.alternate)?null:(t.needsCreateMemo=!0,n.callExpression(n.identifier("createMemo"),[n.arrowFunctionExpression([],l)]))}if(n.isLogicalExpression(r)&&r.operator==="&&"){let s=P(r.left),a=k(r.right)??r.right,o=n.logicalExpression("&&",s,a);return Z(r.right)?null:(t.needsCreateMemo=!0,n.callExpression(n.identifier("createMemo"),[n.arrowFunctionExpression([],o)]))}return null}function Q(e,t){if(xt(e))return null;let r=k(e);if(r)return Xe(r,t);if(n.isConditionalExpression(e)){let s=e,i=k(s.consequent);if(i){let a=Q(s.alternate,t);return $(P(s.test),i,a,t)}}return e}function xe(e){return n.isJSXElement(e)||n.isJSXFragment(e)}function Z(e){let t=k(e);if(!t||!n.isJSXElement(t))return!1;let r=t.openingElement.name;return n.isJSXIdentifier(r)&&K.has(r.name)}function k(e){return xe(e)?e:n.isArrowFunctionExpression(e)&&e.params.length===0&&!e.async&&xe(e.body)?e.body:null}function P(e){return n.isArrowFunctionExpression(e)&&e.params.length===0&&!e.async&&n.isExpression(e.body)?e.body:e}function xt(e){return n.isNullLiteral(e)||n.isIdentifier(e)&&e.name==="undefined"||n.isBooleanLiteral(e)&&e.value===!1}function Xe(e,t){return n.isJSXElement(e)?D(e,t,!1,t.autoShow??!0):G(e,t,{runtime:"automatic",pragmaFrag:"Fragment",development:!1})}function $(e,t,r,s,i=!1){s.controlFlowComponents.add("Show"),s.needsControlFlowImport=!0;let a=Xe(t,s),o=[n.objectProperty(n.identifier("when"),n.arrowFunctionExpression([],e)),n.objectProperty(n.identifier("children"),a)];return r&&o.push(n.objectProperty(n.identifier("fallback"),r)),we(n.identifier("Show"),n.objectExpression(o),s)}function St(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 Re(e,t){let r=e.openingElement;if(!n.isJSXIdentifier(r.name))return!1;let s=r.name.name;if(s[0]!==s[0].toLowerCase())return!1;for(let i of r.attributes){if(n.isJSXSpreadAttribute(i))return!1;if(n.isJSXAttribute(i)){let a=i.value;if(n.isJSXExpressionContainer(a)&&!n.isStringLiteral(a.expression)&&!n.isNumericLiteral(a.expression))return!1}}for(let i of e.children)if(n.isJSXElement(i)&&!Re(i,t)||n.isJSXExpressionContainer(i))return!1;return!0}function bt(e,t){let r=`_$static${t.staticCounter++}`,s=D(e,t,!1);return t.staticElements.set(r,s),n.identifier(r)}function vt(e,t){let r=e.openingElement.name.name;return r==="Show"?yt(e,t):r==="For"?wt(e,t):null}function yt(e,t){return null}function wt(e,t){return null}var qt=O;function Ut(e){return[O,e]}function ee(e={}){return{plugins:[[O,{runtime:"automatic",importSource:"@fluixi/jsx",development:!1,detectReactivity:!0,useLitHTML:!0,hoistStatics:!0,delegateEvents:!0,optimizeControlFlow:!0,sourceMaps:!0,...e}]]}}var Zt={production:ee({development:!1,hoistStatics:!0,delegateEvents:!0,optimizeControlFlow:!0}),development:ee({development:!0,hoistStatics:!1,sourceMaps:!0}),minimal:ee({detectReactivity:!1,useLitHTML:!1,hoistStatics:!1,delegateEvents:!1,optimizeControlFlow:!1})};export{qt as babelPluginReactiveJSX,Ut as createPlugin,ee as createPreset,O as default,Zt as presets};
1
+ import{declare as at}from"@babel/helper-plugin-utils";var $e=e=>"components"in e;function se(e,t){return e.replace(/\$(\d+)/g,(r,s)=>t[Number(s)]??r)}function Oe(e,t){return typeof t=="string"?{module:t,export:e}:t}function oe(e=[]){let t=new Map,r=[],s=[];for(let o of e){if(!$e(o)){s.push(o);continue}for(let[c,l]of Object.entries(o.components)){let p=Oe(c,l),x=t.get(c);if(x&&x.module!==p.module){let d=r.find(w=>w.name===c);d?d.modules.push(p.module):r.push({name:c,modules:[x.module,p.module]});continue}t.set(c,p)}}let i=new Map;return{resolve:o=>{if(i.has(o))return i.get(o);let c=t.get(o);if(!c)for(let l of s){let p=o.match(new RegExp(l.match.source,l.match.flags.replace("g","")));if(p){c={module:se(l.module,p),export:l.export?se(l.export,p):o};break}}return i.set(o,c),c},names:()=>[...t.keys()],conflicts:()=>r}}import{types as n,template as ye}from"@babel/core";import{types as m,traverse as Ze,template as Ke}from"@babel/core";import fe from"@babel/generator";var U={version:1,module:"@fluixi/dom",symbols:["createNativeElement","insert","spread","setAttribute","delegateEvents","createComponent","createMemo","untrack","Show","For","Index","Switch","Match","Dynamic","ErrorBoundary"]},Pt={version:2,module:"@fluixi/dom",symbols:[...U.symbols,"template","cloneTemplate","walk"]};var De={show:"Show",for:"For",index:"Index",switch:"Switch",match:"Match",dynamic:"Dynamic",errorBoundary:"ErrorBoundary",suspense:"Suspense"};function Be(e){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e)}function le(e){return Be(e)?e:JSON.stringify(e)}function _e(e){return e.expr!==void 0?e.reactive?`() => (${e.expr})`:`(${e.expr})`:JSON.stringify(e.literal??!0)}function Ve(e){return e.expr!==void 0?`(${e.expr})`:JSON.stringify(e.literal??!0)}function ze(e,t,r){let s=e.filter(c=>c.kind==="spread"),a=e.filter(c=>c.kind!=="spread").map(c=>`${le(c.name)}: ${_e(c)}`);t!=null&&a.push(`children: ${t}`);let o=`{ ${a.join(", ")} }`;return s.length>0?(r.add("mergeProps"),`mergeProps(${s.map(c=>c.expr).join(", ")}, ${o})`):o}function ce(e,t){return e.length===1?V(e[0],t):`[${e.map(r=>V(r,t)).join(", ")}]`}function ae(e,t,r,s){s.add("createMemo"),s.add("createComponent");let i=t.filter(l=>l.kind==="spread"),o=t.filter(l=>l.kind!=="spread").map(l=>`get ${le(l.name)}() { return ${Ve(l)}; }`);r.length>0&&o.push(`get children() { return ${ce(r,s)}; }`);let c=`{ ${o.join(", ")} }`;return i.length>0&&(s.add("mergeProps"),c=`mergeProps(${i.map(l=>l.expr).join(", ")}, ${c})`),`createMemo(() => createComponent(${e}, ${c}))`}function V(e,t){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":ce(e.children,t);case"component":return ae(e.name,e.props,e.children,t);case"control":{let r=De[e.control]??e.control;return t.add(r),ae(r,e.props,e.children,t)}case"element":{t.add("createNativeElement");let r=JSON.stringify(e.tag),s="_el$",i=[],a=e.svg?`${r}, true`:r;if(i.push(`const ${s} = createNativeElement(${a});`),e.props.length>0){t.add("spread");let o=e.svg?", isSVG: true":"";i.push(`spread({ element: ${s}, props: ${ze(e.props,null,t)}${o} });`)}for(let o of e.children){t.add("insert");let c=V(o,t),l=o.kind==="expr"&&o.reactive||o.kind==="component"||o.kind==="control";i.push(l?`insert(${s}, ${c}, null);`:`insert(${s}, ${c});`)}return i.push(`return ${s};`),`(() => { ${i.join(" ")} })()`}}}var X={name:"imperative",contract:U,emit(e,t){let r=new Set;return{code:V(e,r),imports:Array.from(r)}}};import{types as z}from"@babel/core";import pe from"@babel/generator";import{parseTemplate as We}from"@fluixi/template-parser";var He=pe.default??pe;function Ge(e){return He(e,{concise:!0}).code}var ue=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function qe(e){return e.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${")}function me(e){return e.charAt(0).toUpperCase()+e.slice(1)}var Z=class{constructor(t,r){this.holes=t;this.used=r}hole(t){return this.holes[t]??{node:z.identifier("undefined"),code:"undefined",reactive:!1}}emit(t){let{code:r,imports:s}=X.emit(t,{});for(let i of s)this.used.add(i);return r}lowerRoot(t){let r=this.lowerChildren(t);return r.length===1?r[0]:{kind:"fragment",children:r}}lowerChildren(t){let r=[];for(let s=0;s<t.length;s++){let i=t[s];if(i.kind==="Element"||i.kind==="Component"){let o=i.attributes.find(c=>c.kind==="IfDirective");if(o&&o.kind==="IfDirective"){let c=s+1;c<t.length&&this.isBlankText(t[c])&&c++;let l=t[c],p=l&&(l.kind==="Element"||l.kind==="Component")&&l.attributes.some(x=>x.kind==="ElseDirective");r.push(this.lowerIf(i,o.hole,p?l:null)),p&&(s=c);continue}if(i.attributes.some(c=>c.kind==="EachDirective")){r.push(this.lowerEach(i));continue}}let a=this.lowerNode(i);a&&r.push(a)}return r}isBlankText(t){return t.kind==="Text"&&!t.raw&&W(t.value)===""}lowerNode(t){switch(t.kind){case"Text":{if(t.raw)return{kind:"text",value:t.value};let r=W(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(s=>s.kind==="Attribute"&&s.name==="is");if(t.tag==="component"&&r&&r.value&&r.value.kind==="hole"){let s=t.attributes.filter(a=>a!==r),i=this.lowerComponent({...t,kind:"Component",tag:"Dynamic",tagHole:null,attributes:s});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,s=this.lowerAttributes(t.attributes),{slots:i,rest:a}=this.partitionSlots(t.children);for(let[o,c]of i){let l=c.length===1?c[0]:{kind:"fragment",children:c};s.push({name:o,kind:"attr",expr:this.emit(l),jsxElement:!0})}return{kind:"component",name:r,props:s,children:this.lowerChildren(a)}}partitionSlots(t){let r=new Map,s=[];for(let i of t){if(i.kind==="Element"||i.kind==="Component"){let a=i.attributes.find(o=>o.kind==="Attribute"&&o.name==="slot");if(a&&a.value&&a.value.kind==="static"){let o={...i,attributes:i.attributes.filter(p=>p!==a)},c=o.kind==="Element"?this.lowerElement(o):this.lowerComponent(o),l=r.get(a.value.value)??[];l.push(c),r.set(a.value.value,l);continue}}s.push(i)}return{slots:r,rest:s}}lowerIf(t,r,s){let i=this.hole(r),a=[{name:"when",kind:"attr",expr:i.code,reactive:i.reactive}];if(s){let c=this.stripAndLower(s,l=>l.kind==="ElseDirective");a.push({name:"fallback",kind:"attr",expr:this.emit(c),jsxElement:!0})}let o=this.stripAndLower(t,c=>c.kind==="IfDirective");return{kind:"component",name:"Show",props:a,children:[o]}}lowerEach(t){let r=t.attributes.find(l=>l.kind==="EachDirective");if(!r||r.kind!=="EachDirective")return this.lowerNode(t);let s=this.hole(r.hole),i=[{name:"each",kind:"attr",expr:s.code,reactive:s.reactive}];if(r.key){let l="static"in r.key?`(item) => item[${JSON.stringify(r.key.static)}]`:this.hole(r.key.hole).code;i.push({name:"by",kind:"attr",expr:l})}let a=this.itemArrow(t),o;if(a){let l=a.body,p={kind:"expr",code:P(l,this.used),reactive:C(l)},x=this.rebuildWithChildren(t,[p]);o=`(${a.params.map(d=>Ge(d)).join(", ")}) => (${this.emit(x)})`}else{let l=this.stripAndLower(t,p=>p.kind==="EachDirective");o=`() => (${this.emit(l)})`}return{kind:"component",name:"For",props:i,children:[{kind:"expr",code:o,reactive:!1}]}}itemArrow(t){let r=t.children.filter(i=>!this.isBlankText(i));if(r.length!==1||r[0].kind!=="Expression")return null;let s=this.hole(r[0].hole).node;return z.isArrowFunctionExpression(s)&&!z.isBlockStatement(s.body)?s:null}stripAndLower(t,r){let s={...t,attributes:t.attributes.filter(i=>!r(i))};return s.kind==="Element"?this.lowerElement(s):this.lowerComponent(s)}rebuildWithChildren(t,r){let s=this.lowerAttributes(t.attributes.filter(i=>i.kind!=="EachDirective"));return t.kind==="Element"?{kind:"element",tag:t.tag,svg:t.namespace==="svg",props:s,children:r,static:!1}:{kind:"component",name:t.tag,props:s,children:r}}lowerAttributes(t){let r=[],s=[],i=!1,a=[],o=!1,c=[];for(let l of t)switch(l.kind){case"IfDirective":case"EachDirective":case"ElseDirective":break;case"Attribute":r.push(this.plainAttr(l));break;case"PropertyBinding":r.push({name:l.name,kind:"prop",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"EventBinding":r.push(this.eventProp(l));break;case"RefBinding":r.push({name:"ref",kind:"ref",expr:this.hole(l.hole).code,reactive:this.hole(l.hole).reactive});break;case"Spread":r.push({name:"",kind:"spread",expr:this.hole(l.hole).code});break;case"ClassDirective":{let p=this.hole(l.hole);s.push(`${JSON.stringify(l.name)}: ${p.code}`),i=i||p.reactive;break}case"StyleDirective":{let p=this.hole(l.hole);a.push(`${JSON.stringify(l.name)}: ${p.code}`),o=o||p.reactive;break}case"BindDirective":r.push(...this.bindProps(l.name,this.hole(l.hole).code));break;case"UseDirective":{let p=l.name??(l.hole!=null?this.hole(l.hole).code:null);if(!p)break;c.push(l.name!=null&&l.hole!=null?`[${p}, () => (${this.hole(l.hole).code})]`:`[${p}]`);break}}return s.length>0&&r.push({name:"classList",kind:"attr",expr:`{ ${s.join(", ")} }`,reactive:i}),a.length>0&&r.push({name:"style",kind:"attr",expr:`{ ${a.join(", ")} }`,reactive:o}),c.length>0&&r.push({name:"use",kind:"attr",expr:`[${c.join(", ")}]`}),r}eventProp(t){let r=t.name.toLowerCase(),s=this.hole(t.hole).code;if(!(t.syntax==="colon"||t.modifiers.length>0))return{name:"on"+me(t.name),kind:"event",event:{name:r,delegated:ue.has(r)},expr:s};let a=this.wrapHandler(s,t.modifiers),o=this.eventOptions(t.modifiers),c=o?`[${a}, ${o}]`:a;return{name:"on:"+r,kind:"attr",expr:c}}wrapHandler(t,r){let s=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();"),!s&&i.length===0?t:`(e) => { ${s}${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 s=t==="checked",i=s?"change":"input",a=s?"checked":"value",o=`(${r})`;return[{name:t,kind:"attr",expr:`${o}[0]()`,reactive:!0},{name:"on"+me(i),kind:"event",event:{name:i,delegated:ue.has(i)},expr:`(e) => ${o}[1](e.target.${a})`}]}plainAttr(t){let r=t.value,s=t.name;t.name==="class"?s=r&&r.kind==="hole"&&z.isObjectExpression(this.hole(r.hole).node)?"classList":"className":t.name==="html"&&(s="innerHTML");let a={name:s,kind:"attr"};if(r==null)return a.literal=!0,a;if(r.kind==="static")return a.literal=r.value,a;if(r.kind==="hole"){let l=this.hole(r.hole);return a.expr=l.code,a.reactive=l.reactive,a}let o=!1,c=r.parts.map(l=>{if("text"in l)return qe(l.text);let p=this.hole(l.hole);return o=o||p.reactive,"${"+p.code+"}"}).join("");return a.expr="`"+c+"`",a.reactive=o,a}};function de(e,t,r={}){let s=e.quasi,i=s.expressions.map(c=>{let l=c;return{node:l,code:P(l,t),reactive:C(l)}}),a=Ue(s),{root:o}=We(a,{svg:r.svg});return new Z(i,t).lowerRoot(o.children)}function Ue(e){let t=[];return e.quasis.forEach((r,s)=>{let i=r.value.cooked??r.value.raw;if(t.push({kind:"static",text:i,start:r.start??0}),s<e.expressions.length){let a=e.expressions[s];t.push({kind:"hole",index:s,start:a.start??0,end:a.end??0})}}),t}function H(e,t=new Set,r={}){return de(e,t,r)}var Ye=fe.default??fe;function Ee(e){return Ye(e,{concise:!0}).code}function Qe(e,t){let r=m.cloneNode(e,!0),s=m.file(m.program([m.expressionStatement(r)])),i=!1,a=(o,c,l)=>{for(let p of l)t.add(p);o.replaceWith(Ke.expression(c,{placeholderPattern:!1,plugins:["typescript"]})()),o.skip(),i=!0};return Ze(s,{"JSXElement|JSXFragment"(o){let c=o.node,{code:l,imports:p}=X.emit(T(c,t),{});a(o,l,p)},TaggedTemplateExpression(o){let c=o.node.tag;if(!m.isIdentifier(c)||c.name!=="html"&&c.name!=="svg")return;let l=H(o.node,t,{svg:c.name==="svg"}),{code:p,imports:x}=X.emit(l,{});a(o,p,x)}}),i?s.program.body[0].expression:e}function P(e,t){return Ee(Qe(e,t))}var et=new Set(["svg","path","circle","rect","line","polygon","polyline","ellipse","g","defs","clipPath","text"]),tt=/^on[A-Z]/,nt=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function rt(e){if(m.isJSXIdentifier(e)){let t=e.name[0]!==e.name[0].toLowerCase();return{tag:e.name,component:t}}return m.isJSXMemberExpression(e)?{tag:Ee(e),component:!0}:m.isJSXNamespacedName(e)?{tag:`${e.namespace.name}:${e.name.name}`,component:!1}:{tag:"div",component:!1}}function it(e){return m.isJSXIdentifier(e)?e.name==="class"?"className":e.name:m.isJSXNamespacedName(e)?`${e.namespace.name}:${e.name.name}`:"unknown"}function C(e){return m.isCallExpression(e)||m.isOptionalCallExpression(e)?!0:m.isMemberExpression(e)||m.isOptionalMemberExpression(e)?!(!e.computed&&m.isIdentifier(e.property,{name:"children"})):m.isConditionalExpression(e)?C(e.test)||C(e.consequent)||C(e.alternate):m.isLogicalExpression(e)||m.isBinaryExpression(e)?C(e.left)||C(e.right):m.isTemplateLiteral(e)?e.expressions.some(t=>C(t)):m.isObjectExpression(e)?e.properties.some(t=>m.isObjectProperty(t)&&!t.computed&&C(t.value)):m.isArrayExpression(e)?e.elements.some(t=>t!=null&&!m.isSpreadElement(t)&&C(t)):!1}function st(e,t){let r=it(e.name),s=tt.test(r),i=s||r.startsWith("on:"),o={name:r,kind:s?"event":"attr"};s&&(o.event={name:r.slice(2).toLowerCase(),delegated:nt.has(r.slice(2).toLowerCase())});let c=e.value;if(c==null)return o.literal=!0,o;if(m.isStringLiteral(c))return o.literal=c.value,o;if(m.isJSXExpressionContainer(c)&&!m.isJSXEmptyExpression(c.expression)){let l=c.expression;return m.isStringLiteral(l)||m.isNumericLiteral(l)||m.isBooleanLiteral(l)?(o.literal=l.value,o):(o.expr=P(l,t),o.reactive=i?!1:C(l),(m.isJSXElement(l)||m.isJSXFragment(l))&&(o.jsxElement=!0),o)}return o.literal=!0,o}function ge(e,t){let r=e.value;return r==null?null:m.isStringLiteral(r)?JSON.stringify(r.value):m.isJSXExpressionContainer(r)&&!m.isJSXEmptyExpression(r.expression)?P(r.expression,t):null}function ot(e,t){let r=[],s=[];for(let i of e){if(m.isJSXSpreadAttribute(i)){r.push({name:"",kind:"spread",expr:P(i.argument,t)});continue}if(!m.isJSXAttribute(i))continue;let a=m.isJSXNamespacedName(i.name)?i.name.namespace.name:null;if(a==="use"){let o=i.name.name.name;t.add(o);let c=ge(i,t);s.push(c!=null?`[${o}, () => (${c})]`:`[${o}]`);continue}if(a==="oncapture"){let o=i.name.name.name.toLowerCase(),c=ge(i,t)??"undefined";r.push({name:"on:"+o,kind:"attr",expr:`[${c}, { capture: true }]`});continue}r.push(st(i,t))}return s.length>0&&r.push({name:"use",kind:"attr",expr:`[${s.join(", ")}]`}),r}function W(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 s="";for(let i=0;i<t.length;i++){let a=t[i].replace(/\t/g," ");i!==0&&(a=a.replace(/^ +/,"")),i!==t.length-1&&(a=a.replace(/ +$/,"")),a&&(i!==r&&(a+=" "),s+=a)}return s}function he(e,t){let r=[];for(let s of e)if(m.isJSXText(s)){let i=W(s.value);i&&r.push({kind:"text",value:i})}else if(m.isJSXExpressionContainer(s)){if(!m.isJSXEmptyExpression(s.expression)){let i=s.expression;r.push({kind:"expr",code:P(i,t),reactive:C(i)})}}else m.isJSXElement(s)||m.isJSXFragment(s)?r.push(T(s,t)):m.isJSXSpreadChild(s)&&r.push({kind:"expr",code:P(s.expression,t),reactive:!1});return r}function T(e,t=new Set){if(m.isJSXFragment(e))return{kind:"fragment",children:he(e.children,t)};let{tag:r,component:s}=rt(e.openingElement.name),i=ot(e.openingElement.attributes,t),a=he(e.children,t);return s?{kind:"component",name:r,props:i,children:a}:{kind:"element",tag:r,svg:et.has(r),props:i,children:a,static:!1}}var G=new Set(["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary","Suspense","SuspenseList","Await"]),xe=new Set(["Suspense","SuspenseList","Await"]),A=new Set(["Router","Outlet","Redirect","Link"]),lt={Show:"when",For:"each",Index:"each",Match:"when"};var Ce=/^on[A-Z]/,we=["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup","mouseover","mouseout","mouseenter","mouseleave"],O=at((e,t={})=>{e.assertVersion(7);let{runtime:r="automatic",importSource:s="@fluixi/jsx",pragma:i="jsx",pragmaFrag:a="Fragment",development:o=!1,detectReactivity:c=!0,useLitHTML:l=!0,hoistStatics:p=!0,delegateEvents:x=!0,delegatedEvents:d=we,optimizeControlFlow:w=!0,sourceMaps:j=!0,signalModule:R="@fluixi/dom",controlFlowModule:I="@fluixi/dom",routerModule:B="@fluixi/core/router-next",reactiveModule:te="@fluixi/reactive/signal",autoShowTransform:ne=!1,backend:N="imperative",codegen:M="inline",format:re="both",litTag:Fe="html",resolve:Ae=[]}=t,ie=oe(Ae),Me=re==="lit"||re==="both",Te={backend:N,codegen:M,irImports:new Set,libModule:"@fluixi/core",hasJSX:!1,hasReactivity:!1,hasLitHTML:!1,needsSignalImport:!1,needsControlFlowImport:!1,needsCreateMemo:!1,controlFlowComponents:new Set,resolvedComponents:new Map,componentResolver:ie,delegatedEvents:new Set,staticElements:new Map,staticCounter:0};return{name:"@fluixi/babel-plugin-jsx",manipulateOptions(f,u){u.plugins.push("jsx","typescript")},pre(f){Object.assign(f,Te)},visitor:{ImportDeclaration(f,u){f.node.source.value==="@fluixi/core/rx"&&(f.node.source=n.stringLiteral("@fluixi/reactive"))},Program:{enter(f,u){Object.assign(u,{hasJSX:!1,hasReactivity:!1,hasLitHTML:!1,hasLitIR:!1,needsSignalImport:!1,needsControlFlowImport:!1,needsCreateMemo:!1,controlFlowComponents:new Set,resolvedComponents:new Map,componentResolver:ie,delegatedEvents:new Set,staticElements:new Map,autoShow:ne,staticCounter:0,libModule:"@fluixi/core",backend:N,codegen:M,irImports:new Set,needsCreateNativeElement:!1,needsInsert:!1,needsSpread:!1,needsCreateComponent:!1,needsMergeProps:!1})},exit(f,u){let g=[];if(u.hasJSX||u.needsSignalImport&&g.push(n.importDeclaration([n.importSpecifier(n.identifier("signal"),n.identifier("signal"))],n.stringLiteral(R))),u.hasJSX||u.hasLitIR){if(u.irImports.size>0){let h=new Set(["Show","For","Index","Switch","Match","Dynamic","ErrorBoundary","Portal","Suspense"]),S=new Set(["createMemo","createEffect","createRenderEffect","createRoot","createSignal","onCleanup","batch","untrack"]),E=Array.from(u.irImports),b=v=>n.importSpecifier(n.identifier(v),n.identifier(v)),J=v=>!f.scope.hasBinding(v),F=E.filter(v=>S.has(v)&&J(v)),y=E.filter(v=>!h.has(v)&&!S.has(v)&&J(v)),_=E.filter(v=>h.has(v)&&J(v));F.length>0&&g.push(n.importDeclaration(F.map(b),n.stringLiteral(te))),y.length>0&&g.push(n.importDeclaration(y.map(b),n.stringLiteral(R))),_.length>0&&g.push(n.importDeclaration(_.map(b),n.stringLiteral(I)))}if(u.hasJSX&&N==="imperative"&&M!=="ir"){let S=[[!!u.needsCreateNativeElement,"createNativeElement"],[!!u.needsSpread,"spread"],[!!u.needsInsert,"insert"],[!!u.needsCreateComponent,"createComponent"],[!!u.needsMergeProps,"mergeProps"]].filter(([E,b])=>E&&!f.scope.hasBinding(b)).map(([,E])=>n.importSpecifier(n.identifier(E),n.identifier(E)));S.length>0&&g.push(n.importDeclaration(S,n.stringLiteral(R)))}else if(u.hasJSX&&r==="automatic"){let h=[n.importSpecifier(n.identifier("jsx"),n.identifier("jsx")),n.importSpecifier(n.identifier("jsxs"),n.identifier("jsxs")),n.importSpecifier(n.identifier("Fragment"),n.identifier("Fragment"))];o&&h.push(n.importSpecifier(n.identifier("jsxDEV"),n.identifier("jsxDEV"))),u.needsMergeProps&&h.push(n.importSpecifier(n.identifier("mergeProps"),n.identifier("mergeProps"))),g.push(n.importDeclaration(h,n.stringLiteral(s)))}if(u.needsCreateMemo&&!f.scope.hasBinding("createMemo")&&g.push(n.importDeclaration([n.importSpecifier(n.identifier("createMemo"),n.identifier("createMemo"))],n.stringLiteral(N==="imperative"?te:u.libModule??"@fluixi/core"))),u.needsControlFlowImport&&u.controlFlowComponents.size>0){let h=Array.from(u.controlFlowComponents).filter(y=>!f.scope.hasBinding(y)),S=u.libModule??"@fluixi/core",E=h.filter(y=>A.has(y)),b=h.filter(y=>xe.has(y)),J=h.filter(y=>!xe.has(y)&&!A.has(y)),F=(y,_)=>n.importDeclaration(y.map(v=>n.importSpecifier(n.identifier(v),n.identifier(v))),n.stringLiteral(_));J.length>0&&g.push(F(J,I)),b.length>0&&g.push(F(b,S)),E.length>0&&g.push(F(E,B))}if(u.resolvedComponents.size>0){let h=new Map;for(let[S,E]of u.resolvedComponents){if(f.scope.hasBinding(S))continue;let b=h.get(E.module)??[];b.push({local:S,exported:E.export}),h.set(E.module,b)}for(let[S,E]of h)g.push(n.importDeclaration(E.map(({local:b,exported:J})=>J==="default"?n.importDefaultSpecifier(n.identifier(b)):n.importSpecifier(n.identifier(b),n.identifier(J))),n.stringLiteral(S)))}if(x&&u.delegatedEvents.size>0){g.push(n.importDeclaration([n.importSpecifier(n.identifier("delegateEvents"),n.identifier("delegateEvents"))],n.stringLiteral(N==="imperative"?R:"@fluixi/jsx")));let h=n.arrayExpression(Array.from(u.delegatedEvents).map(E=>n.stringLiteral(E))),S=n.expressionStatement(n.callExpression(n.identifier("delegateEvents"),[h]));f.node.body.unshift(S)}if(p&&u.staticElements.size>0){let h=[];u.staticElements.forEach((S,E)=>{h.push(n.variableDeclaration("const",[n.variableDeclarator(n.identifier(E),S)]))}),f.node.body.unshift(...h)}}g.length>0&&f.node.body.unshift(...mt(g))}},JSXElement(f,u){if(u.hasJSX=!0,N==="imperative"&&M==="ir"){f.replaceWith(ve(f.node,u));return}let g=f.node,h=g.openingElement;if(n.isJSXIdentifier(h.name)&&A.has(h.name.name)&&(u.controlFlowComponents.add(h.name.name),u.needsControlFlowImport=!0),n.isJSXIdentifier(h.name)&&G.has(h.name.name)&&(u.controlFlowComponents.add(h.name.name),w)){let E=Nt(g,u);if(E){f.replaceWith(E);return}}if(p&&N!=="imperative"&&je(g,u)){let E=kt(g,u);if(E){f.replaceWith(E);return}}let S=ct(g,u,{runtime:r,pragma:i,development:o,detectReactivity:c,useLitHTML:l,autoShow:ne});f.replaceWith(S)},JSXFragment(f,u){if(u.hasJSX=!0,N==="imperative"&&M==="ir"){f.replaceWith(ve(f.node,u));return}let g=q(f.node,u,{runtime:r,pragmaFrag:a,development:o});f.replaceWith(g)},CallExpression(f,u){if(!c)return;let g=f.node.callee;g.name,n.isIdentifier(g)&&(g.name==="createSignal"||g.name==="createStore"||g.name==="useContext"||g.name==="useLocation")&&(u.hasReactivity=!0)},JSXExpressionContainer(f){},TaggedTemplateExpression(f,u){if(Me&&N==="imperative"&&n.isIdentifier(f.node.tag)&&(f.node.tag.name===Fe||f.node.tag.name==="svg")){f.replaceWith(dt(f.node,u));return}}}}});function ct(e,t,r){let{runtime:s,pragma:i,development:a,autoShow:o=!0}=r;return s==="automatic"?D(e,t,a,o):ht(e,t,i)}var pt=new Set(["svg","path","circle","rect","line","polygon","polyline","ellipse","g","defs","clipPath","text"]);function Se(e,t,r){return t.length>0?(r.needsMergeProps=!0,n.callExpression(n.identifier("mergeProps"),[...t,n.objectExpression(e)])):n.objectExpression(e)}function Re(e){return e.length===1?e[0]:n.arrayExpression(e)}function ut(e,t,r,s,i,a){if(!t){let d=[...r];return i.length>0&&d.push(n.objectMethod("get",n.identifier("children"),[],n.blockStatement([n.returnStatement(Re(i))]))),ke(e,Se(d,s,a),a)}let o=e.value,c=pt.has(o),l=n.identifier("_el$"),p=[];a.needsCreateNativeElement=!0;let x=[e];if(c&&x.push(n.booleanLiteral(!0)),p.push(n.variableDeclaration("const",[n.variableDeclarator(l,n.callExpression(n.identifier("createNativeElement"),x))])),r.length>0||s.length>0){a.needsSpread=!0;let d=[n.objectProperty(n.identifier("element"),l),n.objectProperty(n.identifier("props"),Se(r,s,a))];c&&d.push(n.objectProperty(n.identifier("isSVG"),n.booleanLiteral(!0))),p.push(n.expressionStatement(n.callExpression(n.identifier("spread"),[n.objectExpression(d)])))}if(i.length>0){a.needsInsert=!0;for(let d of i){let j=n.isArrowFunctionExpression(d)||n.isFunctionExpression(d)||n.isCallExpression(d)&&n.isIdentifier(d.callee)&&d.callee.name==="createMemo"?[n.cloneNode(l),d,n.nullLiteral()]:[n.cloneNode(l),d];p.push(n.expressionStatement(n.callExpression(n.identifier("insert"),j)))}}return p.push(n.returnStatement(l)),n.callExpression(n.arrowFunctionExpression([],n.blockStatement(p)),[])}function ke(e,t,r){if(n.isIdentifier(e)&&A.has(e.name)&&(r.controlFlowComponents.add(e.name),r.needsControlFlowImport=!0),n.isIdentifier(e)&&!A.has(e.name)&&!G.has(e.name)&&r.componentResolver){let s=r.componentResolver.resolve(e.name);s&&r.resolvedComponents.set(e.name,s)}return 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 ve(e,t){let r=new Set,s=T(e,r),{code:i,imports:a}=X.emit(s,{});for(let o of a)r.add(o);for(let o of r)t.irImports.add(o);return ye.expression(i,{placeholderPattern:!1,plugins:["typescript"]})()}function mt(e){let t=new Map,r=[];for(let s of e){let i=s.source.value;if(!s.specifiers.every(c=>n.isImportSpecifier(c))){r.push(s);continue}let o=t.get(i);if(!o){let c=new Set(s.specifiers.map(l=>l.local.name));t.set(i,{decl:s,names:c}),r.push(s);continue}for(let c of s.specifiers)o.names.has(c.local.name)||(o.names.add(c.local.name),o.decl.specifiers.push(c))}return r}function dt(e,t){let r=new Set,s=n.isIdentifier(e.tag)&&e.tag.name==="svg",i=H(e,r,{svg:s}),{code:a,imports:o}=X.emit(i,{});for(let l of o)r.add(l);for(let l of r)t.irImports.add(l);Ne(i,t),t.hasLitIR=!0;let c=ye.expression(a,{placeholderPattern:!1,plugins:["typescript"]})();return ft(c,e),c}function ft(e,t){if(!t.loc)return;let r=new Set,s=i=>{if(!r.has(i)){r.add(i),i.loc||(i.loc=t.loc,i.start=t.start,i.end=t.end);for(let a of n.VISITOR_KEYS[i.type]??[]){let o=i[a];if(Array.isArray(o))for(let c of o)c&&typeof c=="object"&&"type"in c&&s(c);else o&&typeof o=="object"&&"type"in o&&s(o)}}};s(e)}function Ne(e,t){if(e.kind==="component"&&(G.has(e.name)||A.has(e.name)))t.controlFlowComponents.add(e.name),t.needsControlFlowImport=!0;else if(e.kind==="component"&&t.componentResolver){let r=t.componentResolver.resolve(e.name);r&&t.resolvedComponents.set(e.name,r)}if((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)Ne(r,t)}function gt(e){return e.map(t=>{if(n.isObjectProperty(t)){let r=t.key,s=t.computed,i=t.value;return n.objectMethod("get",r,[],n.blockStatement([n.returnStatement(i)]),s)}return t})}function D(e,t,r,s=!0){let i=e.openingElement,a=e.children,o=Je(i.name),c=n.isJSXIdentifier(i.name)&&/^[a-z]/.test(i.name.name),l=Xe(i.attributes,t,c,n.isJSXIdentifier(i.name)?i.name.name:""),p=l.props,x=l.spreads;c||(p=gt(p));let d=Y(a,t,s);if(t.backend==="imperative")return ut(o,c,p,x,d,t);if(d.length>0){let I=d.length===1?d[0]:n.arrayExpression(d);p.push(n.objectProperty(n.identifier("children"),I))}let w;if(x.length>0){let I=p.length>0?n.objectExpression(p):n.objectExpression([]);t.needsMergeProps=!0,w=n.callExpression(n.identifier("mergeProps"),[...x,I])}else w=n.objectExpression(p);let j=r?"jsxDEV":d.length>1?"jsxs":"jsx",R=[o,w];return r&&R.push(n.identifier("undefined"),n.booleanLiteral(!1),n.identifier("undefined"),n.identifier("undefined")),n.callExpression(n.identifier(j),R)}function ht(e,t,r){let s=e.openingElement,i=e.children,a=Je(s.name),o=n.isJSXIdentifier(s.name)&&/^[a-z]/.test(s.name.name),{props:c,spreads:l}=Xe(s.attributes,t,o,n.isJSXIdentifier(s.name)?s.name.name:""),p=Y(i,t,t.autoShow??!0),x;if(l.length>0){let w=c.length>0?n.objectExpression(c):n.objectExpression([]);t.needsMergeProps=!0,x=n.callExpression(n.identifier("mergeProps"),[...l,w])}else x=c.length>0?n.objectExpression(c):n.nullLiteral();let d=[a,x,...p];return n.callExpression(n.identifier(r),d)}function q(e,t,r){let{runtime:s,pragmaFrag:i,development:a}=r,o=Y(e.children,t,t.autoShow??!0);if(t.backend==="imperative")return o.length===0?n.nullLiteral():Re(o);if(s==="automatic"){let c=a?"jsxDEV":o.length>1?"jsxs":"jsx",l=n.objectExpression([n.objectProperty(n.identifier("children"),o.length===1?o[0]:n.arrayExpression(o))]),p=[n.identifier("Fragment"),l];return a&&p.push(n.identifier("undefined"),n.booleanLiteral(!1),n.identifier("undefined"),n.identifier("undefined")),n.callExpression(n.identifier(c),p)}else return n.callExpression(n.identifier(i),o)}function Je(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)?Ie(e):n.isJSXNamespacedName(e)?n.stringLiteral(`${e.namespace.name}:${e.name.name}`):n.stringLiteral("div")}function Ie(e){let t;return n.isJSXIdentifier(e.object)?t=n.identifier(e.object.name):t=Ie(e.object),n.memberExpression(t,n.identifier(e.property.name))}function Et(e){return/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(e)}function Xe(e,t,r=!0,s=""){let i=[],a=[],o=lt[s];for(let c of e)if(n.isJSXSpreadAttribute(c))a.push(c.argument);else if(n.isJSXAttribute(c)){let l=xt(c.name),p=St(c.value,t,l,r);if(Ce.test(l)){let B=l.slice(2).toLowerCase();we.includes(B)&&t.delegatedEvents.add(B)}let x=Et(l)?n.identifier(l):n.stringLiteral(l),d=c.value,w=n.isJSXElement(d)||n.isJSXFragment(d)||n.isJSXExpressionContainer(d)&&(n.isJSXElement(d.expression)||n.isJSXFragment(d.expression)),j=!r&&l===o,R=n.isJSXExpressionContainer(d)&&!n.isJSXEmptyExpression(d.expression)?d.expression:null,I=!r&&!!R&&Pe(R,l);!r&&w||j||I?i.push(n.objectMethod("get",x,[],n.blockStatement([n.returnStatement(p)]))):i.push(n.objectProperty(x,p))}return{props:i,spreads:a}}function xt(e){return n.isJSXIdentifier(e)?e.name==="class"?"className":e.name:n.isJSXNamespacedName(e)?`${e.namespace.name}:${e.name.name}`:"unknown"}function St(e,t,r="",s=!0){if(e===null)return n.booleanLiteral(!0);if(n.isStringLiteral(e))return e.value.includes(`
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 s&&Pe(i,r)?n.arrowFunctionExpression([],i):i}return n.isJSXElement(e)?D(e,t,!1,t.autoShow??!0):n.isJSXFragment(e)?q(e,t,{runtime:"automatic",pragmaFrag:"Fragment",development:!1}):n.booleanLiteral(!0)}function Pe(e,t){return Ce.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 vt(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 s="";for(let i=0;i<t.length;i++){let a=t[i].replace(/\t/g," ");i!==0&&(a=a.replace(/^ +/,"")),i!==t.length-1&&(a=a.replace(/ +$/,"")),a&&(i!==r&&(a+=" "),s+=a)}return s}function Y(e,t,r=!0){let s=[];for(let i of e)if(n.isJSXText(i)){let a=vt(i.value);a&&s.push(n.stringLiteral(a))}else if(n.isJSXExpressionContainer(i)){if(!n.isJSXEmptyExpression(i.expression)){let a=i.expression;if(r){let o=bt(a,t)??yt(a,t);if(o){s.push(o);continue}}else{let o=Ct(a,t);if(o){s.push(o);continue}}Rt(a)?s.push(n.arrowFunctionExpression([],a)):s.push(a)}}else n.isJSXElement(i)?s.push(D(i,t,!1,t.autoShow??!0)):n.isJSXFragment(i)?s.push(q(i,t,{runtime:"automatic",pragmaFrag:"Fragment",development:!1})):n.isJSXSpreadChild(i)&&s.push(i.expression);return s}function bt(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 s=k(r.right);if(s)return $(L(r.left),s,null,t)}if(n.isConditionalExpression(r)){let s=k(r.consequent);if(s){let i=Q(r.alternate,t);return $(L(r.test),s,i,t,!0)}}return null}function yt(e,t){if(n.isLogicalExpression(e)&&e.operator==="&&"){let r=k(e.right);if(r)return $(L(e.left),r,null,t)}if(n.isConditionalExpression(e)){let r=k(e.consequent);if(r){let s=Q(e.alternate,t);return $(L(e.test),r,s,t)}}return null}function Ct(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 s=L(r.test),a=k(r.consequent)??r.consequent,c=k(r.alternate)??r.alternate,l=n.conditionalExpression(s,a,c);return K(r.consequent)||K(r.alternate)?null:(t.needsCreateMemo=!0,n.callExpression(n.identifier("createMemo"),[n.arrowFunctionExpression([],l)]))}if(n.isLogicalExpression(r)&&r.operator==="&&"){let s=L(r.left),a=k(r.right)??r.right,o=n.logicalExpression("&&",s,a);return K(r.right)?null:(t.needsCreateMemo=!0,n.callExpression(n.identifier("createMemo"),[n.arrowFunctionExpression([],o)]))}return null}function Q(e,t){if(wt(e))return null;let r=k(e);if(r)return Le(r,t);if(n.isConditionalExpression(e)){let s=e,i=k(s.consequent);if(i){let a=Q(s.alternate,t);return $(L(s.test),i,a,t)}}return e}function be(e){return n.isJSXElement(e)||n.isJSXFragment(e)}function K(e){let t=k(e);if(!t||!n.isJSXElement(t))return!1;let r=t.openingElement.name;return n.isJSXIdentifier(r)&&G.has(r.name)}function k(e){return be(e)?e:n.isArrowFunctionExpression(e)&&e.params.length===0&&!e.async&&be(e.body)?e.body:null}function L(e){return n.isArrowFunctionExpression(e)&&e.params.length===0&&!e.async&&n.isExpression(e.body)?e.body:e}function wt(e){return n.isNullLiteral(e)||n.isIdentifier(e)&&e.name==="undefined"||n.isBooleanLiteral(e)&&e.value===!1}function Le(e,t){return n.isJSXElement(e)?D(e,t,!1,t.autoShow??!0):q(e,t,{runtime:"automatic",pragmaFrag:"Fragment",development:!1})}function $(e,t,r,s,i=!1){s.controlFlowComponents.add("Show"),s.needsControlFlowImport=!0;let a=Le(t,s),o=[n.objectProperty(n.identifier("when"),n.arrowFunctionExpression([],e)),n.objectProperty(n.identifier("children"),a)];return r&&o.push(n.objectProperty(n.identifier("fallback"),r)),ke(n.identifier("Show"),n.objectExpression(o),s)}function Rt(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 je(e,t){let r=e.openingElement;if(!n.isJSXIdentifier(r.name))return!1;let s=r.name.name;if(s[0]!==s[0].toLowerCase())return!1;for(let i of r.attributes){if(n.isJSXSpreadAttribute(i))return!1;if(n.isJSXAttribute(i)){let a=i.value;if(n.isJSXExpressionContainer(a)&&!n.isStringLiteral(a.expression)&&!n.isNumericLiteral(a.expression))return!1}}for(let i of e.children)if(n.isJSXElement(i)&&!je(i,t)||n.isJSXExpressionContainer(i))return!1;return!0}function kt(e,t){let r=`_$static${t.staticCounter++}`,s=D(e,t,!1);return t.staticElements.set(r,s),n.identifier(r)}function Nt(e,t){let r=e.openingElement.name.name;return r==="Show"?Jt(e,t):r==="For"?It(e,t):null}function Jt(e,t){return null}function It(e,t){return null}var nn=O;function rn(e){return[O,e]}function ee(e={}){return{plugins:[[O,{runtime:"automatic",importSource:"@fluixi/jsx",development:!1,detectReactivity:!0,useLitHTML:!0,hoistStatics:!0,delegateEvents:!0,optimizeControlFlow:!0,sourceMaps:!0,...e}]]}}var sn={production:ee({development:!1,hoistStatics:!0,delegateEvents:!0,optimizeControlFlow:!0}),development:ee({development:!0,hoistStatics:!1,sourceMaps:!0}),minimal:ee({detectReactivity:!1,useLitHTML:!1,hoistStatics:!1,delegateEvents:!1,optimizeControlFlow:!1})};export{nn as babelPluginReactiveJSX,rn as createPlugin,ee as createPreset,O as default,sn as presets};