@fluixi/compiler 1.0.0-alpha.68 → 1.0.0-alpha.70
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/babel-NY6FXXLW.mjs +2 -0
- package/dist/codegen/backend.cjs +1 -1
- package/dist/codegen/backend.d.ts +14 -0
- package/dist/codegen/backend.d.ts.map +1 -1
- package/dist/codegen/backends/imperative.cjs +1 -1
- package/dist/codegen/backends/imperative.d.ts +10 -1
- package/dist/codegen/backends/imperative.d.ts.map +1 -1
- package/dist/codegen/backends/imperative.js +127 -16
- package/dist/codegen/backends/imperative.mjs +1 -1
- package/dist/codegen/partial-template.cjs +1 -0
- package/dist/codegen/partial-template.d.ts +62 -0
- package/dist/codegen/partial-template.d.ts.map +1 -0
- package/dist/codegen/partial-template.js +0 -0
- package/dist/codegen/partial-template.mjs +1 -0
- package/dist/codegen/serialize-static.cjs +1 -0
- package/dist/codegen/serialize-static.d.ts +23 -0
- package/dist/codegen/serialize-static.d.ts.map +1 -0
- package/dist/codegen/serialize-static.js +140 -0
- package/dist/codegen/serialize-static.mjs +1 -0
- package/dist/frontend/babel/build-ir-lit.cjs +1 -1
- package/dist/frontend/babel/build-ir-lit.d.ts.map +1 -1
- package/dist/frontend/babel/build-ir-lit.js +5 -1
- package/dist/frontend/babel/build-ir-lit.mjs +1 -1
- package/dist/frontend/babel/build-ir.cjs +1 -1
- package/dist/frontend/babel/build-ir.d.ts.map +1 -1
- package/dist/frontend/babel/build-ir.js +36 -8
- package/dist/frontend/babel/build-ir.mjs +1 -1
- package/dist/frontend/babel/index.cjs +2 -2
- package/dist/frontend/babel/index.mjs +2 -2
- package/dist/frontend/babel/lower-template.cjs +1 -1
- package/dist/frontend/babel/lower-template.d.ts.map +1 -1
- package/dist/frontend/babel/lower-template.js +34 -5
- package/dist/frontend/babel/lower-template.mjs +1 -1
- package/dist/frontend/babel/plugin.cjs +2 -2
- package/dist/frontend/babel/plugin.d.ts +14 -0
- package/dist/frontend/babel/plugin.d.ts.map +1 -1
- package/dist/frontend/babel/plugin.js +291 -34
- package/dist/frontend/babel/plugin.mjs +2 -2
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.mjs +1 -1
- package/dist/integrations.cjs +8 -8
- package/dist/integrations.d.ts +13 -0
- package/dist/integrations.d.ts.map +1 -1
- package/dist/integrations.js +9 -0
- package/dist/integrations.mjs +3 -3
- package/dist/ir/nodes.cjs +1 -1
- package/dist/ir/nodes.d.ts +43 -0
- package/dist/ir/nodes.d.ts.map +1 -1
- package/dist/optimize/analyze-static.cjs +1 -0
- package/dist/optimize/analyze-static.d.ts +40 -0
- package/dist/optimize/analyze-static.d.ts.map +1 -0
- package/dist/optimize/analyze-static.js +131 -0
- package/dist/optimize/analyze-static.mjs +1 -0
- package/dist/optimize/collapse-strategies.cjs +1 -0
- package/dist/optimize/collapse-strategies.d.ts +31 -0
- package/dist/optimize/collapse-strategies.d.ts.map +1 -0
- package/dist/optimize/collapse-strategies.js +33 -0
- package/dist/optimize/collapse-strategies.mjs +1 -0
- package/dist/options.cjs +1 -1
- package/dist/options.d.ts +24 -0
- package/dist/options.d.ts.map +1 -1
- package/dist/resolve/builtins.cjs +1 -0
- package/dist/resolve/builtins.d.ts +69 -0
- package/dist/resolve/builtins.d.ts.map +1 -0
- package/dist/resolve/builtins.js +64 -0
- package/dist/resolve/builtins.mjs +1 -0
- package/dist/resolve/component-resolver.cjs +1 -0
- package/dist/resolve/component-resolver.d.ts +69 -0
- package/dist/resolve/component-resolver.d.ts.map +1 -0
- package/dist/resolve/component-resolver.js +95 -0
- package/dist/resolve/component-resolver.mjs +1 -0
- package/dist/resolve/load-directive.cjs +1 -0
- package/dist/resolve/load-directive.d.ts +54 -0
- package/dist/resolve/load-directive.d.ts.map +1 -0
- package/dist/resolve/load-directive.js +93 -0
- package/dist/resolve/load-directive.mjs +1 -0
- package/dist/resolve/resolve-ir.cjs +1 -0
- package/dist/resolve/resolve-ir.d.ts +54 -0
- package/dist/resolve/resolve-ir.d.ts.map +1 -0
- package/dist/resolve/resolve-ir.js +58 -0
- package/dist/resolve/resolve-ir.mjs +1 -0
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/dist/babel-6UTCV3CC.mjs +0 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var Me=Object.create;var V=Object.defineProperty;var Te=Object.getOwnPropertyDescriptor;var $e=Object.getOwnPropertyNames;var Oe=Object.getPrototypeOf,De=Object.prototype.hasOwnProperty;var Be=(e,t)=>{for(var r in t)V(e,r,{get:t[r],enumerable:!0})},se=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of $e(t))!De.call(e,i)&&i!==r&&V(e,i,{get:()=>t[i],enumerable:!(s=Te(t,i))||s.enumerable});return e};var oe=(e,t,r)=>(r=e!=null?Me(Oe(e)):{},se(t||!e||!e.__esModule?V(r,"default",{value:e,enumerable:!0}):r,e)),_e=e=>se(V({},"__esModule",{value:!0}),e);var Rt={};Be(Rt,{default:()=>lt});module.exports=_e(Rt);var ve=require("@babel/helper-plugin-utils"),n=require("@babel/core");var u=require("@babel/core"),K=oe(require("@babel/generator"),1);var q={version:1,module:"@fluixi/dom",symbols:["createNativeElement","insert","spread","setAttribute","delegateEvents","createComponent","createMemo","untrack","Show","For","Index","Switch","Match","Dynamic","ErrorBoundary"]},Lt={version:2,module:"@fluixi/dom",symbols:[...q.symbols,"template","cloneTemplate","walk"]};var Ve={show:"Show",for:"For",index:"Index",switch:"Switch",match:"Match",dynamic:"Dynamic",errorBoundary:"ErrorBoundary",suspense:"Suspense"};function ze(e){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e)}function le(e){return ze(e)?e:JSON.stringify(e)}function We(e){return e.expr!==void 0?e.reactive?`() => (${e.expr})`:`(${e.expr})`:JSON.stringify(e.literal??!0)}function He(e){return e.expr!==void 0?`(${e.expr})`:JSON.stringify(e.literal??!0)}function Ge(e,t,r){let s=e.filter(c=>c.kind==="spread"),a=e.filter(c=>c.kind!=="spread").map(c=>`${le(c.name)}: ${We(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?z(e[0],t):`[${e.map(r=>z(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 ${He(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 z(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=Ve[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: ${Ge(e.props,null,t)}${o} });`)}for(let o of e.children){t.add("insert");let c=z(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:z(e,r),imports:Array.from(r)}}};var M=require("@babel/core"),U=oe(require("@babel/generator"),1),me=require("@fluixi/template-parser");var qe=U.default.default??U.default;function Ue(e){return qe(e,{concise:!0}).code}var pe=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function Ze(e){return e.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${")}function ue(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:M.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&&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=>Ue(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 M.types.isArrowFunctionExpression(s)&&!M.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"+ue(t.name),kind:"event",event:{name:r,delegated:pe.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"+ue(i),kind:"event",event:{name:i,delegated:pe.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"&&M.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 Ze(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:R(l,t),reactive:y(l)}}),a=Ke(s),{root:o}=(0,me.parseTemplate)(a,{svg:r.svg});return new Z(i,t).lowerRoot(o.children)}function Ke(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=K.default.default??K.default;function he(e){return Ye(e,{concise:!0}).code}function Qe(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(T(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=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 he(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(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:he(e),component:!0}:u.types.isJSXNamespacedName(e)?{tag:`${e.namespace.name}:${e.name.name}`,component:!1}:{tag:"div",component:!1}}function it(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 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(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 fe(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 ot(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=fe(i,t);s.push(c!=null?`[${o}, () => (${c})]`:`[${o}]`);continue}if(a==="oncapture"){let o=i.name.name.name.toLowerCase(),c=fe(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 ge(e,t){let r=[];for(let s of e)if(u.types.isJSXText(s)){let i=W(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(T(s,t)):u.types.isJSXSpreadChild(s)&&r.push({kind:"expr",code:R(s.expression,t),reactive:!1});return r}function T(e,t=new Set){if(u.types.isJSXFragment(e))return{kind:"fragment",children:ge(e.children,t)};let{tag:r,component:s}=rt(e.openingElement.name),i=ot(e.openingElement.attributes,t),a=ge(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 Q=new Set(["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary","Suspense","SuspenseList","Await"]),Ee=new Set(["Suspense","SuspenseList","Await"]),$=new Set(["Router","Outlet","Redirect","Link"]),at={Show:"when",For:"each",Index:"each",Match:"when"};var ye=/^on[A-Z]/,we=["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup","mouseover","mouseout","mouseenter","mouseleave"],lt=(0,ve.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=we,optimizeControlFlow:w=!0,sourceMaps:L=!0,signalModule:C="@fluixi/dom",controlFlowModule:J="@fluixi/dom",routerModule:B="@fluixi/core/router-next",reactiveModule:ne="@fluixi/reactive/signal",autoShowTransform:re=!1,backend:N="imperative",codegen:F="inline",format:ie="both",litTag:je="html"}=t,Ae=ie==="lit"||ie==="both",Fe={backend:N,codegen:F,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,Fe)},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:re,staticCounter:0,libModule:"@fluixi/core",backend:N,codegen:F,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),A=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));A.length>0&&g.push(n.types.importDeclaration(A.map(I),n.types.stringLiteral(ne))),v.length>0&&g.push(n.types.importDeclaration(v.map(I),n.types.stringLiteral(C))),_.length>0&&g.push(n.types.importDeclaration(_.map(I),n.types.stringLiteral(J)))}if(m.hasJSX&&N==="imperative"&&F!=="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"?ne: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=>$.has(v)),I=h.filter(v=>Ee.has(v)),j=h.filter(v=>!Ee.has(v)&&!$.has(v)),A=(v,_)=>n.types.importDeclaration(v.map(S=>n.types.importSpecifier(n.types.identifier(S),n.types.identifier(S))),n.types.stringLiteral(_));j.length>0&&g.push(A(j,J)),I.length>0&&g.push(A(I,b)),x.length>0&&g.push(A(x,B))}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(...mt(g))}},JSXElement(d,m){if(m.hasJSX=!0,N==="imperative"&&F==="ir"){d.replaceWith(Se(d.node,m));return}let g=d.node,h=g.openingElement;if(n.types.isJSXIdentifier(h.name)&&$.has(h.name.name)&&(m.controlFlowComponents.add(h.name.name),m.needsControlFlowImport=!0),n.types.isJSXIdentifier(h.name)&&Q.has(h.name.name)&&(m.controlFlowComponents.add(h.name.name),w)){let x=Jt(g,m);if(x){d.replaceWith(x);return}}if(p&&N!=="imperative"&&Le(g,m)){let x=Nt(g,m);if(x){d.replaceWith(x);return}}let b=ct(g,m,{runtime:r,pragma:i,development:o,detectReactivity:c,useLitHTML:l,autoShow:re});d.replaceWith(b)},JSXFragment(d,m){if(m.hasJSX=!0,N==="imperative"&&F==="ir"){d.replaceWith(Se(d.node,m));return}let g=G(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(Ae&&N==="imperative"&&n.types.isIdentifier(d.node.tag)&&(d.node.tag.name===je||d.node.tag.name==="svg")){d.replaceWith(dt(d.node,m));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 xe(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 Ce(e){return e.length===1?e[0]:n.types.arrayExpression(e)}function ut(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(Ce(i))]))),ke(e,xe(f,s,a),a)}let o=e.value,c=pt.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"),xe(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 ke(e,t,r){return n.types.isIdentifier(e)&&$.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 Se(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 n.template.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.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 dt(e,t){let r=new Set,s=n.types.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=n.template.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.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 Ne(e,t){if(e.kind==="component"&&(Q.has(e.name)||$.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)Ne(r,t)}function gt(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 D(e,t,r,s=!0){let i=e.openingElement,a=e.children,o=Je(i.name),c=n.types.isJSXIdentifier(i.name)&&/^[a-z]/.test(i.name.name),l=Xe(i.attributes,t,c,n.types.isJSXIdentifier(i.name)?i.name.name:""),p=l.props,E=l.spreads;c||(p=gt(p));let f=ee(a,t,s);if(t.backend==="imperative")return ut(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 ht(e,t,r){let s=e.openingElement,i=e.children,a=Je(s.name),o=n.types.isJSXIdentifier(s.name)&&/^[a-z]/.test(s.name.name),{props:c,spreads:l}=Xe(s.attributes,t,o,n.types.isJSXIdentifier(s.name)?s.name.name:""),p=ee(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 G(e,t,r){let{runtime:s,pragmaFrag:i,development:a}=r,o=ee(e.children,t,t.autoShow??!0);if(t.backend==="imperative")return o.length===0?n.types.nullLiteral():Ce(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 Je(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)?Ie(e):n.types.isJSXNamespacedName(e)?n.types.stringLiteral(`${e.namespace.name}:${e.name.name}`):n.types.stringLiteral("div")}function Ie(e){let t;return n.types.isJSXIdentifier(e.object)?t=n.types.identifier(e.object.name):t=Ie(e.object),n.types.memberExpression(t,n.types.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=at[s];for(let c of e)if(n.types.isJSXSpreadAttribute(c))a.push(c.argument);else if(n.types.isJSXAttribute(c)){let l=xt(c.name),p=St(c.value,t,l,r);if(ye.test(l)){let B=l.slice(2).toLowerCase();we.includes(B)&&t.delegatedEvents.add(B)}let E=Et(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&&Re(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 xt(e){return n.types.isJSXIdentifier(e)?e.name==="class"?"className":e.name:n.types.isJSXNamespacedName(e)?`${e.namespace.name}:${e.name.name}`:"unknown"}function St(e,t,r="",s=!0){if(e===null)return n.types.booleanLiteral(!0);if(n.types.isStringLiteral(e))return e.value.includes(`
|
|
2
|
-
`)?
|
|
1
|
+
"use strict";var yt=Object.create;var ee=Object.defineProperty;var Rt=Object.getOwnPropertyDescriptor;var Ct=Object.getOwnPropertyNames;var It=Object.getPrototypeOf,wt=Object.prototype.hasOwnProperty;var Nt=(e,t)=>{for(var n in t)ee(e,n,{get:t[n],enumerable:!0})},Te=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Ct(t))!wt.call(e,i)&&i!==n&&ee(e,i,{get:()=>t[i],enumerable:!(o=Rt(t,i))||o.enumerable});return e};var Pe=(e,t,n)=>(n=e!=null?yt(It(e)):{},Te(t||!e||!e.__esModule?ee(n,"default",{value:e,enumerable:!0}):n,e)),kt=e=>Te(ee({},"__esModule",{value:!0}),e);var On={};Nt(On,{default:()=>mn});module.exports=kt(On);var st=require("@babel/helper-plugin-utils");var Lt=e=>"components"in e;function Xe(e,t){return e.replace(/\$(\d+)/g,(n,o)=>t[Number(o)]??n)}function Mt(e,t){return typeof t=="string"?{module:t,export:e}:t}function $e(e=[]){let t=new Map,n=[],o=[];for(let a of e){if(!Lt(a)){o.push(a);continue}for(let[l,c]of Object.entries(a.components)){let p=Mt(l,c),f=t.get(l);if(f&&f.module!==p.module){let u=n.find(E=>E.name===l);u?u.modules.push(p.module):n.push({name:l,modules:[f.module,p.module]});continue}t.set(l,p)}}let i=new Map;return{resolve:a=>{if(i.has(a))return i.get(a);let l=t.get(a);if(!l)for(let c of o){let p=a.match(new RegExp(c.match.source,c.match.flags.replace("g","")));if(p){l={module:Xe(c.module,p),export:c.export?Xe(c.export,p):a};break}}return i.set(a,l),l},names:()=>[...t.keys()],conflicts:()=>n}}var V=["Show","For","Index","Switch","Match","Portal","Dynamic","ErrorBoundary"],D=["Suspense","SuspenseList","Await"],_=["Router","Outlet","Redirect","Link"],_n=[...V,...D,..._],pe=new Set([...V,...D]);function Ae(e={}){let{controlFlowModule:t="@fluixi/dom",coreModule:n="@fluixi/core",routerModule:o="@fluixi/core/router-next"}=e,i={};for(let s of V)i[s]=t;for(let s of D)i[s]=n;for(let s of _)i[s]=o;return i}var A={kind:"eager"},Jt=["pointerdown","focusin","keydown"],je=new Set(["eager","idle","visible","interaction","media","never"]),J=class extends Error{};function W(e){return e.startsWith("load:")}function B(e,t){let n=e.slice(5);if(!je.has(n))throw new J(`Unknown load strategy 'load:${n}'. Expected one of ${[...je].join(", ")}.`);switch(n){case"eager":return A;case"idle":return{kind:"idle"};case"never":return{kind:"never"};case"visible":return t?{kind:"visible",rootMargin:t}:{kind:"visible"};case"interaction":return{kind:"interaction",events:t?Tt(t):[...Jt]};case"media":if(!t)throw new J(`'load:media' needs a query, e.g. load:media="(min-width: 1024px)".`);return{kind:"media",query:t};default:throw new J(`Unhandled load strategy '${n}'.`)}}function Tt(e){let t=e.split(/[\s,]+/).map(n=>n.trim()).filter(Boolean);if(t.length===0)throw new J("'load:interaction' was given no event names.");return t}function P(e){return e.kind!=="eager"&&e.kind!=="never"}function ue(e,t={}){let{resolver:n,isBound:o,modules:i,strategyFor:s}=t,a=Ae(i),l=new Map,c=new Set,p=u=>{let{name:E}=u;if(!E||E.includes(".")||o?.(E))return;let y=f(E);if(!y){c.add(E);return}let R=y.origin==="builtin"&&pe.has(E)?A:s?.(u)??A;u.source={...y,loading:R},l.set(E,u.source)},f=u=>{if(pe.has(u))return{module:a[u],export:u,origin:"builtin"};let E=n?.resolve(u);if(E)return{module:E.module,export:E.export,origin:"rule"};if(_.includes(u))return{module:a[u],export:u,origin:"builtin"}};return te(e,u=>{u.kind==="component"&&p(u)}),{resolved:l,unresolved:[...c]}}function te(e,t){let n=Array.isArray(e)?e:[e];for(let o of n){t(o);let i=o.children;i&&te(i,t)}}function de(e){let t=[];te(e,s=>{s.kind==="component"&&s.source&&t.push(s)});let n=new Set,o=new Set;for(let s of t){let{module:a,loading:l}=s.source;l.kind==="eager"&&n.add(a),l.kind==="never"&&o.add(a)}let i=new Map;for(let s of t){let a=s.source;P(a.loading)&&n.has(a.module)&&(a.loading={kind:"eager"},i.set(a.module,(i.get(a.module)??0)+1))}return{collapsed:i,conflicted:[...o].filter(s=>n.has(s))}}var r=require("@babel/core");var m=require("@babel/core"),xe=Pe(require("@babel/generator"),1);var Pt=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),Oe={className:"class",htmlFor:"for"},Xt=new Set(["innerHTML","outerHTML","innerText","textContent","value","checked","selected","muted","defaultValue","defaultChecked","children","ref"]),$t=new Set(["script","style","textarea","title"]);function me(e){return $t.has(e)}function Fe(e){return Oe[e]??e}function H(e){return e.kind!=="attr"||e.expr!==void 0||e.name.includes(":")?!1:!Xt.has(e.name)}function fe(e){if(!e.static||me(e.tag))return!1;for(let t of e.props)if(!H(t))return!1;for(let t of e.children)if(t.kind!=="text"&&!(t.kind==="element"&&fe(t)))return!1;return!0}function U(e){let t=e.props.map(jt).filter(Boolean).join(""),n=`<${e.tag}${t}>`;return Pt.has(e.tag)?n:`${n}${e.children.map(At).join("")}</${e.tag}>`}function At(e){if(e.kind==="text")return Ft(e.value);if(e.kind!=="element")throw new Error(`serializeStatic: unexpected ${e.kind}`);return U(e)}function jt(e){let t=Oe[e.name]??e.name,n=e.literal;return n===!0||n===void 0?` ${t}`:n===!1||n===null?"":` ${t}="${Ot(String(n))}"`}function Ot(e){return e.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function Ft(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}var Dt="<!--fx-->",_t="<!--fx/-->";function re(e){return e.kind==="expr"||e.kind==="component"||e.kind==="control"}function Bt(e){return e.kind==="text"||e.kind==="element"&&De(e)}function De(e){return e.svg||me(e.tag)||!e.props.every(t=>H(t))?!1:e.children.every(t=>Bt(t)||re(t))}function ne(e){if(re(e))return!0;let t=e.children;return t?t.some(ne):!1}function _e(e){for(let t=0;t<e.children.length;t++){let n=e.children[t];if(n.kind==="text"&&(n.value===""||e.children[t+1]?.kind==="text"))return!1}return e.children.every(t=>t.kind!=="element"||_e(t))}function Be(e){if(!De(e)||!_e(e)||!e.children.some(ne))return null;let t=[],n=[],o=0,i=a=>{let l=`_n$${o++}`;return t.push({ref:l,expr:a}),l};return s(e,"_el$"),{html:zt(e),tag:e.tag,steps:t,holes:n};function s(a,l){let c=-1;a.children.forEach((f,u)=>{ne(f)&&(c=u)});let p=null;for(let f=0;f<=c;f++){let u=a.children[f],E=p?`${p}.nextSibling`:`${l}.firstChild`;if(re(u)){let R=i(E),I=i(`holeEnd(${R})`);n.push({parentRef:l,startRef:R,endRef:I,node:u}),p=I;continue}let y=i(E);u.kind==="element"&&ne(u)&&s(u,y),p=y}}}function zt(e){return U(ze(e)).split(Ve).join(Dt+_t)}function ze(e){return{...e,children:e.children.map(t=>re(t)?{kind:"text",value:Ve}:t.kind==="element"?ze(t):t)}}var Ve="\0fx-hole\0";var ge={version:1,module:"@fluixi/dom",symbols:["createNativeElement","insert","spread","setAttribute","delegateEvents","createComponent","createMemo","untrack","Show","For","Index","Switch","Match","Dynamic","ErrorBoundary"]},Qn={version:2,module:"@fluixi/dom",symbols:[...ge.symbols,"template","cloneTemplate","walk"]};var Vt={show:"Show",for:"For",index:"Index",switch:"Switch",match:"Match",dynamic:"Dynamic",errorBoundary:"ErrorBoundary",suspense:"Suspense"};function Wt(e){return/^[A-Za-z_$][A-Za-z0-9_$]*$/.test(e)}function He(e){return Wt(e)?e:JSON.stringify(e)}function Ht(e){return e.expr!==void 0?e.reactive?`() => (${e.expr})`:`(${e.expr})`:JSON.stringify(e.literal??!0)}function Ut(e){return e.expr!==void 0?`(${e.expr})`:JSON.stringify(e.literal??!0)}function qt(e,t,n){let o=e.filter(l=>l.kind==="spread"),s=e.filter(l=>l.kind!=="spread").map(l=>`${He(l.name)}: ${Ht(l)}`);t!=null&&s.push(`children: ${t}`);let a=`{ ${s.join(", ")} }`;return o.length>0?(n.add("mergeProps"),`mergeProps(${o.map(l=>l.expr).join(", ")}, ${a})`):a}function Ue(e,t,n){return e.length===1?q(e[0],t,n):`[${e.map(o=>q(o,t,n)).join(", ")}]`}function We(e,t,n,o,i){o.add("createMemo"),o.add("createComponent");let s=t.filter(p=>p.kind==="spread"),l=t.filter(p=>p.kind!=="spread").map(p=>`get ${He(p.name)}() { return ${Ut(p)}; }`);n.length>0&&l.push(`get children() { return ${Ue(n,o,i)}; }`);let c=`{ ${l.join(", ")} }`;return s.length>0&&(o.add("mergeProps"),c=`mergeProps(${s.map(p=>p.expr).join(", ")}, ${c})`),`createMemo(() => createComponent(${e}, ${c}))`}function Gt(e,t){let n=Fe(t.name),o=t.literal;return o===!0||o===void 0?`${e}.setAttribute(${JSON.stringify(n)}, "");`:o===!1||o===null?"":`${e}.setAttribute(${JSON.stringify(n)}, ${JSON.stringify(String(o))});`}var qe=!1;function q(e,t,n){switch(e.kind){case"text":return JSON.stringify(e.value);case"expr":return e.reactive?`() => (${e.code})`:`(${e.code})`;case"fragment":return e.children.length===0?"null":Ue(e.children,t,n);case"component":return We(e.name,e.props,e.children,t,n);case"control":{let o=Vt[e.control]??e.control;return t.add(o),We(o,e.props,e.children,t,n)}case"element":{if(n&&e.static&&!e.svg&&fe(e)){t.add("templateNode");let l=`_tmpl$${n.length}`;return n.push({id:l,html:U(e),tag:e.tag,svg:!1}),`templateNode(${l}, ${JSON.stringify(e.tag)})`}if(n&&qe){let l=Be(e);if(l){t.add("templateNode"),t.add("insert"),t.add("holeEnd"),t.add("holeContent"),t.add("holeScope");let c=`_tmpl$${n.length}`;n.push({id:c,html:l.html,tag:l.tag,svg:!1});let p=[`const _el$ = templateNode(${c}, ${JSON.stringify(l.tag)}, true);`];for(let f of l.steps)p.push(`const ${f.ref} = ${f.expr};`);for(let f of l.holes)p.push(`insert(${f.parentRef}, holeScope(${f.startRef}, () => (${q(f.node,t,n)})), ${f.endRef}, holeContent(${f.startRef}, ${f.endRef}));`);return p.push("return _el$;"),`(() => { ${p.join(" ")} })()`}}t.add("createNativeElement");let o=JSON.stringify(e.tag),i="_el$",s=[],a=e.svg?`${o}, true`:o;if(s.push(`const ${i} = createNativeElement(${a});`),e.props.length>0)if(!e.svg&&e.props.every(H))for(let l of e.props)s.push(Gt(i,l));else{t.add("spread");let l=e.svg?", isSVG: true":"";s.push(`spread({ element: ${i}, props: ${qt(e.props,null,t)}${l} });`)}for(let l of e.children){t.add("insert");let c=q(l,t,n),p=l.kind==="expr"&&l.reactive||l.kind==="component"||l.kind==="control";s.push(p?`insert(${i}, ${c}, null);`:`insert(${i}, ${c});`)}return s.push(`return ${i};`),`(() => { ${s.join(" ")} })()`}}}function G(e,t){if(!t||t.length===0)return e;let n=new Map(t.map(o=>[o.id,JSON.stringify(o.html)]));return e.replace(/_tmpl\$\d+/g,o=>n.get(o)??o)}var X={name:"imperative",contract:ge,emit(e,t){let n=new Set,o=t?.templateClone!==!1?[]:void 0;return qe=t?.partialTemplates===!0,{code:q(e,n,o),imports:Array.from(n),templates:o}}};var K=require("@babel/core"),he=Pe(require("@babel/generator"),1),Ze=require("@fluixi/template-parser");var Kt=he.default.default??he.default;function Zt(e){return Kt(e,{concise:!0}).code}var Ge=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function Yt(e){return e.replace(/\\/g,"\\\\").replace(/`/g,"\\`").replace(/\$\{/g,"\\${")}function Ke(e){return e.charAt(0).toUpperCase()+e.slice(1)}var Ee=class{constructor(t,n){this.holes=t;this.used=n}hole(t){return this.holes[t]??{node:K.types.identifier("undefined"),code:"undefined",reactive:!1}}emit(t){let{code:n,imports:o,templates:i}=X.emit(t,{});for(let s of o)this.used.add(s);return G(n,i)}lowerRoot(t){let n=this.lowerChildren(t);return n.length===1?n[0]:{kind:"fragment",children:n}}lowerChildren(t){let n=[];for(let o=0;o<t.length;o++){let i=t[o];if(i.kind==="Element"||i.kind==="Component"){let a=i.attributes.find(l=>l.kind==="IfDirective");if(a&&a.kind==="IfDirective"){let l=o+1;l<t.length&&this.isBlankText(t[l])&&l++;let c=t[l],p=c&&(c.kind==="Element"||c.kind==="Component")&&c.attributes.some(f=>f.kind==="ElseDirective");n.push(this.lowerIf(i,a.hole,p?c:null)),p&&(o=l);continue}if(i.attributes.some(l=>l.kind==="EachDirective")){n.push(this.lowerEach(i));continue}}let s=this.lowerNode(i);s&&n.push(s)}return n}isBlankText(t){return t.kind==="Text"&&!t.raw&&ie(t.value)===""}lowerNode(t){switch(t.kind){case"Text":{if(t.raw)return{kind:"text",value:t.value};let n=ie(t.value);return n?{kind:"text",value:n}:null}case"Comment":return null;case"Expression":{let n=this.hole(t.hole);return{kind:"expr",code:n.code,reactive:n.reactive}}case"Fragment":return{kind:"fragment",children:this.lowerChildren(t.children)};case"Element":return this.lowerElement(t);case"Component":return this.lowerComponent(t);default:return null}}lowerElement(t){let n=t.attributes.find(o=>o.kind==="Attribute"&&o.name==="is");if(t.tag==="component"&&n&&n.value&&n.value.kind==="hole"){let o=t.attributes.filter(s=>s!==n),i=this.lowerComponent({...t,kind:"Component",tag:"Dynamic",tagHole:null,attributes:o});return i.props.unshift({name:"component",kind:"attr",expr:`() => (${this.hole(n.value.hole).code})`}),i}return{kind:"element",tag:t.tag,svg:t.namespace==="svg",props:this.lowerAttributes(t.attributes),children:this.lowerChildren(t.children),static:!1}}lowerComponent(t){let n=t.tagHole!=null?this.hole(t.tagHole).code:t.tag,o=this.lowerAttributes(t.attributes),{slots:i,rest:s}=this.partitionSlots(t.children);for(let[c,p]of i){let f=p.length===1?p[0]:{kind:"fragment",children:p},u={name:c,kind:"attr",expr:this.emit(f),jsxElement:!0},E=o.findIndex(y=>y.name===c);E>=0?o[E]=u:o.push(u)}let a=t.attributes.find(c=>c.kind==="LoadDirective"),l=a?B(`load:${a.strategy}`,a.modifier):void 0;return{kind:"component",name:n,props:o,children:this.lowerChildren(s),...l?{load:l}:{}}}partitionSlots(t){let n=new Map,o=[];for(let i of t){if(i.kind==="Element"||i.kind==="Component"){let s=i.attributes.find(a=>a.kind==="Attribute"&&a.name==="slot");if(s&&s.value&&s.value.kind==="static"){let a={...i,attributes:i.attributes.filter(p=>p!==s)},l=a.kind==="Element"?this.lowerElement(a):this.lowerComponent(a),c=n.get(s.value.value)??[];c.push(l),n.set(s.value.value,c);continue}}o.push(i)}return{slots:n,rest:o}}lowerIf(t,n,o){let i=this.hole(n),s=[{name:"when",kind:"attr",expr:i.code,reactive:i.reactive}];if(o){let l=this.stripAndLower(o,c=>c.kind==="ElseDirective");s.push({name:"fallback",kind:"attr",expr:this.emit(l),jsxElement:!0})}let a=this.stripAndLower(t,l=>l.kind==="IfDirective");return{kind:"component",name:"Show",props:s,children:[a]}}lowerEach(t){let n=t.attributes.find(c=>c.kind==="EachDirective");if(!n||n.kind!=="EachDirective")return this.lowerNode(t);let o=this.hole(n.hole),i=[{name:"each",kind:"attr",expr:o.code,reactive:o.reactive}];if(n.key){let c="static"in n.key?`(item) => item[${JSON.stringify(n.key.static)}]`:this.hole(n.key.hole).code;i.push({name:"by",kind:"attr",expr:c})}let s=this.itemArrow(t),a;if(s){let c=s.body,p={kind:"expr",code:$(c,this.used),reactive:N(c)},f=this.rebuildWithChildren(t,[p]);a=`(${s.params.map(u=>Zt(u)).join(", ")}) => (${this.emit(f)})`}else{let c=this.stripAndLower(t,p=>p.kind==="EachDirective");a=`() => (${this.emit(c)})`}return{kind:"component",name:"For",props:i,children:[{kind:"expr",code:a,reactive:!1}]}}itemArrow(t){let n=t.children.filter(i=>!this.isBlankText(i));if(n.length!==1||n[0].kind!=="Expression")return null;let o=this.hole(n[0].hole).node;return K.types.isArrowFunctionExpression(o)&&!K.types.isBlockStatement(o.body)?o:null}stripAndLower(t,n){let o={...t,attributes:t.attributes.filter(i=>!n(i))};return o.kind==="Element"?this.lowerElement(o):this.lowerComponent(o)}rebuildWithChildren(t,n){let o=this.lowerAttributes(t.attributes.filter(i=>i.kind!=="EachDirective"));return t.kind==="Element"?{kind:"element",tag:t.tag,svg:t.namespace==="svg",props:o,children:n,static:!1}:{kind:"component",name:t.tag,props:o,children:n}}lowerAttributes(t){let n=[],o=[],i=!1,s=[],a=!1,l=[];for(let c of t)switch(c.kind){case"IfDirective":case"EachDirective":case"ElseDirective":break;case"Attribute":n.push(this.plainAttr(c));break;case"PropertyBinding":n.push({name:c.name,kind:"prop",expr:this.hole(c.hole).code,reactive:this.hole(c.hole).reactive});break;case"EventBinding":n.push(this.eventProp(c));break;case"RefBinding":n.push({name:"ref",kind:"ref",expr:this.hole(c.hole).code,reactive:this.hole(c.hole).reactive});break;case"Spread":n.push({name:"",kind:"spread",expr:this.hole(c.hole).code});break;case"ClassDirective":{let p=this.hole(c.hole);o.push(`${JSON.stringify(c.name)}: ${p.code}`),i=i||p.reactive;break}case"StyleDirective":{let p=this.hole(c.hole);s.push(`${JSON.stringify(c.name)}: ${p.code}`),a=a||p.reactive;break}case"BindDirective":n.push(...this.bindProps(c.name,this.hole(c.hole).code));break;case"UseDirective":{let p=c.name??(c.hole!=null?this.hole(c.hole).code:null);if(!p)break;l.push(c.name!=null&&c.hole!=null?`[${p}, () => (${this.hole(c.hole).code})]`:`[${p}]`);break}}return o.length>0&&n.push({name:"classList",kind:"attr",expr:`{ ${o.join(", ")} }`,reactive:i}),s.length>0&&n.push({name:"style",kind:"attr",expr:`{ ${s.join(", ")} }`,reactive:a}),l.length>0&&n.push({name:"use",kind:"attr",expr:`[${l.join(", ")}]`}),n}eventProp(t){let n=t.name.toLowerCase(),o=this.hole(t.hole).code;if(!(t.syntax==="colon"||t.modifiers.length>0))return{name:"on"+Ke(t.name),kind:"event",event:{name:n,delegated:Ge.has(n)},expr:o};let s=this.wrapHandler(o,t.modifiers),a=this.eventOptions(t.modifiers),l=a?`[${s}, ${a}]`:s;return{name:"on:"+n,kind:"attr",expr:l}}wrapHandler(t,n){let o=n.includes("self")?"if (e.target !== e.currentTarget) return; ":"",i=[];return n.includes("prevent")&&i.push("e.preventDefault();"),n.includes("stop")&&i.push("e.stopPropagation();"),!o&&i.length===0?t:`(e) => { ${o}${i.join(" ")} return (${t})(e); }`}eventOptions(t){let n=[];return t.includes("capture")&&n.push("capture: true"),t.includes("once")&&n.push("once: true"),t.includes("passive")&&n.push("passive: true"),n.length?`{ ${n.join(", ")} }`:null}bindProps(t,n){let o=t==="checked",i=o?"change":"input",s=o?"checked":"value",a=`(${n})`;return[{name:t,kind:"attr",expr:`${a}[0]()`,reactive:!0},{name:"on"+Ke(i),kind:"event",event:{name:i,delegated:Ge.has(i)},expr:`(e) => ${a}[1](e.target.${s})`}]}plainAttr(t){let n=t.value,o=t.name;t.name==="class"?o=n&&n.kind==="hole"&&K.types.isObjectExpression(this.hole(n.hole).node)?"classList":"className":t.name==="html"&&(o="innerHTML");let s={name:o,kind:"attr"};if(n==null)return s.literal=!0,s;if(n.kind==="static")return s.literal=n.value,s;if(n.kind==="hole"){let c=this.hole(n.hole);return s.expr=c.code,s.reactive=c.reactive,s}let a=!1,l=n.parts.map(c=>{if("text"in c)return Yt(c.text);let p=this.hole(c.hole);return a=a||p.reactive,"${"+p.code+"}"}).join("");return s.expr="`"+l+"`",s.reactive=a,s}};function Ye(e,t,n={}){let o=e.quasi,i=o.expressions.map(l=>{let c=l;return{node:c,code:$(c,t),reactive:N(c)}}),s=Qt(o),{root:a}=(0,Ze.parseTemplate)(s,{svg:n.svg});return new Ee(i,t).lowerRoot(a.children)}function Qt(e){let t=[];return e.quasis.forEach((n,o)=>{let i=n.value.cooked??n.value.raw;if(t.push({kind:"static",text:i,start:n.start??0}),o<e.expressions.length){let s=e.expressions[o];t.push({kind:"hole",index:o,start:s.start??0,end:s.end??0})}}),t}function en(e){switch(e.kind){case"event":return"event";case"ref":return"ref";case"spread":return"spread";case"class":case"style":return"class-or-style-directive";case"attr":case"prop":return e.reactive?"reactive-prop":e.expr!==void 0?"expression-prop":void 0;default:return"expression-prop"}}function oe(e){let t=[],n=new Map,o=i=>{switch(i.kind){case"text":return!0;case"expr":return!1;case"component":case"control":for(let s of i.children)o(s);return!1;case"fragment":for(let s of i.children)o(s);return!1;case"element":{let s=!0;for(let l of i.children)o(l)||(s=!1);let a;for(let l of i.props)if(a=en(l),a)break;return!a&&!s&&(a=tn(i)),i.static=!a,a?n.set(i,a):t.push(i),i.static}default:return!1}};for(let i of Array.isArray(e)?e:[e])o(i);return{staticElements:t,reasons:n}}function tn(e){for(let t of e.children){if(t.kind==="expr")return"expression-child";if(t.kind==="component")return"component-child";if(t.kind==="control")return"control-child";if(t.kind==="element"&&!t.static||t.kind==="fragment")return"expression-child"}return"expression-child"}function se(e,t=new Set,n={}){let o=Ye(e,t,n);return oe(o),o}var nn=xe.default.default??xe.default;function tt(e){return nn(e,{concise:!0}).code}function rn(e,t){let n=m.types.cloneNode(e,!0),o=m.types.file(m.types.program([m.types.expressionStatement(n)])),i=!1,s=(a,l,c)=>{for(let p of c)t.add(p);a.replaceWith(m.template.expression(l,{placeholderPattern:!1,plugins:["typescript"]})()),a.skip(),i=!0};return(0,m.traverse)(o,{"JSXElement|JSXFragment"(a){let l=a.node,{code:c,imports:p,templates:f}=X.emit(be(l,t),{});s(a,G(c,f),p)},TaggedTemplateExpression(a){let l=a.node.tag;if(!m.types.isIdentifier(l)||l.name!=="html"&&l.name!=="svg")return;let c=se(a.node,t,{svg:l.name==="svg"}),{code:p,imports:f,templates:u}=X.emit(c,{});s(a,G(p,u),f)}}),i?o.program.body[0].expression:e}function $(e,t){return tt(rn(e,t))}var on=new Set(["svg","path","circle","rect","line","polygon","polyline","ellipse","g","defs","clipPath","text"]),sn=/^on[A-Z]/,an=new Set(["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup"]);function ln(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:tt(e),component:!0}:m.types.isJSXNamespacedName(e)?{tag:`${e.namespace.name}:${e.name.name}`,component:!1}:{tag:"div",component:!1}}function ve(e){return m.types.isJSXIdentifier(e)?e.name==="class"?"className":e.name:m.types.isJSXNamespacedName(e)?`${e.namespace.name}:${e.name.name}`:"unknown"}function N(e){return m.types.isCallExpression(e)||m.types.isOptionalCallExpression(e)?!0:m.types.isMemberExpression(e)||m.types.isOptionalMemberExpression(e)?!(!e.computed&&m.types.isIdentifier(e.property,{name:"children"})):m.types.isConditionalExpression(e)?N(e.test)||N(e.consequent)||N(e.alternate):m.types.isLogicalExpression(e)||m.types.isBinaryExpression(e)?N(e.left)||N(e.right):m.types.isTemplateLiteral(e)?e.expressions.some(t=>N(t)):m.types.isObjectExpression(e)?e.properties.some(t=>m.types.isObjectProperty(t)&&!t.computed&&N(t.value)):m.types.isArrayExpression(e)?e.elements.some(t=>t!=null&&!m.types.isSpreadElement(t)&&N(t)):!1}function cn(e,t){let n=ve(e.name),o=sn.test(n),i=o||n.startsWith("on:"),a={name:n,kind:o?"event":"attr"};o&&(a.event={name:n.slice(2).toLowerCase(),delegated:an.has(n.slice(2).toLowerCase())});let l=e.value;if(l==null)return a.literal=!0,a;if(m.types.isStringLiteral(l))return a.literal=l.value,a;if(m.types.isJSXExpressionContainer(l)&&!m.types.isJSXEmptyExpression(l.expression)){let c=l.expression;return m.types.isStringLiteral(c)||m.types.isNumericLiteral(c)||m.types.isBooleanLiteral(c)?(a.literal=c.value,a):(a.expr=$(c,t),a.reactive=i?!1:N(c),(m.types.isJSXElement(c)||m.types.isJSXFragment(c))&&(a.jsxElement=!0),a)}return a.literal=!0,a}function Qe(e,t){let n=e.value;return n==null?null:m.types.isStringLiteral(n)?JSON.stringify(n.value):m.types.isJSXExpressionContainer(n)&&!m.types.isJSXEmptyExpression(n.expression)?$(n.expression,t):null}function pn(e,t){let n=[],o=[];for(let i of e){if(m.types.isJSXSpreadAttribute(i)){n.push({name:"",kind:"spread",expr:$(i.argument,t)});continue}if(!m.types.isJSXAttribute(i)||W(ve(i.name)))continue;let s=m.types.isJSXNamespacedName(i.name)?i.name.namespace.name:null;if(s==="use"){let a=i.name.name.name;t.add(a);let l=Qe(i,t);o.push(l!=null?`[${a}, () => (${l})]`:`[${a}]`);continue}if(s==="oncapture"){let a=i.name.name.name.toLowerCase(),l=Qe(i,t)??"undefined";n.push({name:"on:"+a,kind:"attr",expr:`[${l}, { capture: true }]`});continue}n.push(cn(i,t))}return o.length>0&&n.push({name:"use",kind:"attr",expr:`[${o.join(", ")}]`}),n}function ie(e){let t=e.split(/\r\n|\n|\r/),n=0;for(let i=0;i<t.length;i++)/[^ \t]/.test(t[i])&&(n=i);let o="";for(let i=0;i<t.length;i++){let s=t[i].replace(/\t/g," ");i!==0&&(s=s.replace(/^ +/,"")),i!==t.length-1&&(s=s.replace(/ +$/,"")),s&&(i!==n&&(s+=" "),o+=s)}return o}function et(e,t){let n=[];for(let o of e)if(m.types.isJSXText(o)){let i=ie(o.value);i&&n.push({kind:"text",value:i})}else if(m.types.isJSXExpressionContainer(o)){if(!m.types.isJSXEmptyExpression(o.expression)){let i=o.expression;n.push({kind:"expr",code:$(i,t),reactive:N(i)})}}else m.types.isJSXElement(o)||m.types.isJSXFragment(o)?n.push(Se(o,t)):m.types.isJSXSpreadChild(o)&&n.push({kind:"expr",code:$(o.expression,t),reactive:!1});return n}function be(e,t=new Set){let n=Se(e,t);return oe(n),n}function Se(e,t){if(m.types.isJSXFragment(e))return{kind:"fragment",children:et(e.children,t)};let{tag:n,component:o}=ln(e.openingElement.name),i=pn(e.openingElement.attributes,t),s=et(e.children,t);if(o){let a=un(e.openingElement.attributes);return{kind:"component",name:n,props:i,children:s,...a?{load:a}:{}}}return{kind:"element",tag:n,svg:on.has(n),props:i,children:s,static:!1}}function un(e){for(let t of e){if(!m.types.isJSXAttribute(t))continue;let n=ve(t.name);if(W(n)){if(t.value&&!m.types.isStringLiteral(t.value))throw new J(`'${n}' needs a literal value, not an expression — the strategy is compile-time.`);return B(n,t.value?t.value.value:null)}}}var le=new Set([...V,...D]),nt=new Set(D),ae=new Set(_),dn={Show:"when",For:"each",Index:"each",Match:"when"};var at=/^on[A-Z]/,lt=["click","dblclick","input","change","submit","focus","blur","keydown","keyup","keypress","mousedown","mouseup","mouseover","mouseout","mouseenter","mouseleave"],mn=(0,st.declare)((e,t={})=>{e.assertVersion(7);let{runtime:n="automatic",importSource:o="@fluixi/jsx",pragma:i="jsx",pragmaFrag:s="Fragment",development:a=!1,detectReactivity:l=!0,useLitHTML:c=!0,hoistStatics:p=!0,delegateEvents:f=!0,delegatedEvents:u=lt,optimizeControlFlow:E=!0,sourceMaps:y=!0,signalModule:R="@fluixi/dom",controlFlowModule:I="@fluixi/dom",routerModule:O="@fluixi/core/router-next",reactiveModule:we="@fluixi/reactive/signal",autoShowTransform:Ne=!1,backend:M="imperative",codegen:z="inline",templateClone:ke=!0,partialTemplates:Le=!0,format:Me="both",litTag:xt="html",resolve:St=[]}=t,Je=$e(St),vt=Me==="lit"||Me==="both",bt={backend:M,codegen:z,irImports:new Set,libModule:"@fluixi/core",controlFlowModule:I,routerModule:O,templateClone:ke,partialTemplates:Le,hasJSX:!1,hasReactivity:!1,hasLitHTML:!1,needsSignalImport:!1,needsControlFlowImport:!1,needsCreateMemo:!1,controlFlowComponents:new Set,resolvedComponents:new Map,deferredComponents:new Map,componentResolver:Je,delegatedEvents:new Set,staticElements:new Map,staticTemplates:new Map,staticCounter:0};return{name:"@fluixi/babel-plugin-jsx",manipulateOptions(g,d){d.plugins.push("jsx","typescript")},pre(g){Object.assign(g,bt)},visitor:{ImportDeclaration(g,d){g.node.source.value==="@fluixi/core/rx"&&(g.node.source=r.types.stringLiteral("@fluixi/reactive"))},Program:{enter(g,d){Object.assign(d,{hasJSX:!1,hasReactivity:!1,hasLitHTML:!1,hasLitIR:!1,needsSignalImport:!1,needsControlFlowImport:!1,needsCreateMemo:!1,controlFlowComponents:new Set,resolvedComponents:new Map,deferredComponents:new Map,componentResolver:Je,delegatedEvents:new Set,staticElements:new Map,staticTemplates:new Map,autoShow:Ne,staticCounter:0,libModule:"@fluixi/core",controlFlowModule:I,routerModule:O,templateClone:ke,partialTemplates:Le,backend:M,codegen:z,irImports:new Set,needsCreateNativeElement:!1,needsInsert:!1,needsSpread:!1,needsCreateComponent:!1,needsMergeProps:!1})},exit(g,d){let h=[];if(d.hasJSX||d.needsSignalImport&&h.push(r.types.importDeclaration([r.types.importSpecifier(r.types.identifier("signal"),r.types.identifier("signal"))],r.types.stringLiteral(R))),d.hasJSX||d.hasLitIR){if(d.irImports.size>0){let S=new Set(["Show","For","Index","Switch","Match","Dynamic","ErrorBoundary","Portal","Suspense"]),x=new Set(["createMemo","createEffect","createRenderEffect","createRoot","createSignal","onCleanup","batch","untrack"]),v=Array.from(d.irImports),C=b=>r.types.importSpecifier(r.types.identifier(b),r.types.identifier(b)),L=b=>!g.scope.hasBinding(b),F=v.filter(b=>x.has(b)&&L(b)),w=v.filter(b=>!S.has(b)&&!x.has(b)&&L(b)),Q=v.filter(b=>S.has(b)&&L(b));F.length>0&&h.push(r.types.importDeclaration(F.map(C),r.types.stringLiteral(we))),w.length>0&&h.push(r.types.importDeclaration(w.map(C),r.types.stringLiteral(R))),Q.length>0&&h.push(r.types.importDeclaration(Q.map(C),r.types.stringLiteral(I)))}if(d.hasJSX&&M==="imperative"&&z!=="ir"){let x=[[!!d.needsCreateNativeElement,"createNativeElement"],[!!d.needsSpread,"spread"],[!!d.needsInsert,"insert"],[!!d.needsCreateComponent,"createComponent"],[!!d.needsMergeProps,"mergeProps"]].filter(([v,C])=>v&&!g.scope.hasBinding(C)).map(([,v])=>r.types.importSpecifier(r.types.identifier(v),r.types.identifier(v)));x.length>0&&h.push(r.types.importDeclaration(x,r.types.stringLiteral(R)))}else if(d.hasJSX&&n==="automatic"&&M!=="imperative"){let S=[r.types.importSpecifier(r.types.identifier("jsx"),r.types.identifier("jsx")),r.types.importSpecifier(r.types.identifier("jsxs"),r.types.identifier("jsxs")),r.types.importSpecifier(r.types.identifier("Fragment"),r.types.identifier("Fragment"))];a&&S.push(r.types.importSpecifier(r.types.identifier("jsxDEV"),r.types.identifier("jsxDEV"))),d.needsMergeProps&&S.push(r.types.importSpecifier(r.types.identifier("mergeProps"),r.types.identifier("mergeProps"))),h.push(r.types.importDeclaration(S,r.types.stringLiteral(o)))}if(d.needsCreateMemo&&!g.scope.hasBinding("createMemo")&&h.push(r.types.importDeclaration([r.types.importSpecifier(r.types.identifier("createMemo"),r.types.identifier("createMemo"))],r.types.stringLiteral(M==="imperative"?we:d.libModule??"@fluixi/core"))),d.needsControlFlowImport&&d.controlFlowComponents.size>0){let S=Array.from(d.controlFlowComponents).filter(w=>!g.scope.hasBinding(w)),x=d.libModule??"@fluixi/core",v=S.filter(w=>ae.has(w)),C=S.filter(w=>nt.has(w)),L=S.filter(w=>!nt.has(w)&&!ae.has(w)),F=(w,Q)=>r.types.importDeclaration(w.map(b=>r.types.importSpecifier(r.types.identifier(b),r.types.identifier(b))),r.types.stringLiteral(Q));L.length>0&&h.push(F(L,I)),C.length>0&&h.push(F(C,x)),v.length>0&&h.push(F(v,O))}let k=[];if(d.deferredComponents.size>0){for(let[S,x]of d.deferredComponents)g.scope.hasBinding(S)||k.push(r.types.variableDeclaration("const",[r.types.variableDeclarator(r.types.identifier(S),r.types.callExpression(r.types.identifier("deferred"),[r.types.arrowFunctionExpression([],r.types.callExpression(r.types.import(),[r.types.stringLiteral(x.module)])),r.types.objectExpression([r.types.objectProperty(r.types.identifier("strategy"),xn(x.strategy)),r.types.objectProperty(r.types.identifier("export"),r.types.stringLiteral(x.export))])]))]));k.length>0&&!g.scope.hasBinding("deferred")&&h.push(r.types.importDeclaration([r.types.importSpecifier(r.types.identifier("deferred"),r.types.identifier("deferred"))],r.types.stringLiteral(d.libModule??"@fluixi/core")))}if(d.resolvedComponents.size>0){let S=new Map;for(let[x,v]of d.resolvedComponents){if(g.scope.hasBinding(x))continue;let C=S.get(v.module)??[];C.push({local:x,exported:v.export}),S.set(v.module,C)}for(let[x,v]of S)h.push(r.types.importDeclaration(v.map(({local:C,exported:L})=>L==="default"?r.types.importDefaultSpecifier(r.types.identifier(C)):r.types.importSpecifier(r.types.identifier(C),r.types.identifier(L))),r.types.stringLiteral(x)))}if(f&&d.delegatedEvents.size>0){h.push(r.types.importDeclaration([r.types.importSpecifier(r.types.identifier("delegateEvents"),r.types.identifier("delegateEvents"))],r.types.stringLiteral(M==="imperative"?R:"@fluixi/jsx")));let S=r.types.arrayExpression(Array.from(d.delegatedEvents).map(v=>r.types.stringLiteral(v))),x=r.types.expressionStatement(r.types.callExpression(r.types.identifier("delegateEvents"),[S]));g.node.body.unshift(x)}if(p&&d.staticElements.size>0){let S=[];d.staticElements.forEach((x,v)=>{S.push(r.types.variableDeclaration("const",[r.types.variableDeclarator(r.types.identifier(v),x)]))}),g.node.body.unshift(...S)}if(k.length>0&&g.node.body.unshift(...k),d.staticTemplates.size>0){let S=[];for(let[x,v]of d.staticTemplates){let L=x.startsWith("svg:")?x.slice(4):x;S.push(r.types.variableDeclaration("const",[r.types.variableDeclarator(r.types.identifier(v),r.types.stringLiteral(L))]))}g.node.body.unshift(...S)}}h.length>0&&g.node.body.unshift(...vn(h))}},JSXElement(g,d){if(d.hasJSX=!0,M==="imperative"&&z==="ir"){g.replaceWith(it(g.node,d));return}let h=g.node,k=h.openingElement;if(r.types.isJSXIdentifier(k.name)&&ae.has(k.name.name)&&!d.componentResolver?.resolve(k.name.name)&&(d.controlFlowComponents.add(k.name.name),d.needsControlFlowImport=!0),r.types.isJSXIdentifier(k.name)&&le.has(k.name.name)&&(d.controlFlowComponents.add(k.name.name),E)){let x=$n(h,d);if(x){g.replaceWith(x);return}}if(p&&M!=="imperative"&&Et(h,d)){let x=Xn(h,d);if(x){g.replaceWith(x);return}}let S=fn(h,d,{runtime:n,pragma:i,development:a,detectReactivity:l,useLitHTML:c,autoShow:Ne});g.replaceWith(S)},JSXFragment(g,d){if(d.hasJSX=!0,M==="imperative"&&z==="ir"){g.replaceWith(it(g.node,d));return}let h=ce(g.node,d,{runtime:n,pragmaFrag:s,development:a});g.replaceWith(h)},CallExpression(g,d){if(!l)return;let h=g.node.callee;h.name,r.types.isIdentifier(h)&&(h.name==="createSignal"||h.name==="createStore"||h.name==="useContext"||h.name==="useLocation")&&(d.hasReactivity=!0)},JSXExpressionContainer(g){},TaggedTemplateExpression(g,d){if(vt&&M==="imperative"&&r.types.isIdentifier(g.node.tag)&&(g.node.tag.name===xt||g.node.tag.name==="svg")){g.replaceWith(bn(g.node,d));return}}}}});function fn(e,t,n){let{runtime:o,pragma:i,development:s,autoShow:a=!0}=n;return o==="automatic"?Y(e,t,s,a):Cn(e,t,i)}var gn=new Set(["svg","path","circle","rect","line","polygon","polyline","ellipse","g","defs","clipPath","text"]);function rt(e,t,n){return t.length>0?(n.needsMergeProps=!0,r.types.callExpression(r.types.identifier("mergeProps"),[...t,r.types.objectExpression(e)])):r.types.objectExpression(e)}function ct(e){return e.length===1?e[0]:r.types.arrayExpression(e)}function hn(e,t,n,o,i,s){if(!t){let u=[...n];return i.length>0&&u.push(r.types.objectMethod("get",r.types.identifier("children"),[],r.types.blockStatement([r.types.returnStatement(ct(i))]))),pt(e,rt(u,o,s),s)}let a=e.value,l=gn.has(a),c=r.types.identifier("_el$"),p=[];s.needsCreateNativeElement=!0;let f=[e];if(l&&f.push(r.types.booleanLiteral(!0)),p.push(r.types.variableDeclaration("const",[r.types.variableDeclarator(c,r.types.callExpression(r.types.identifier("createNativeElement"),f))])),n.length>0||o.length>0){s.needsSpread=!0;let u=[r.types.objectProperty(r.types.identifier("element"),c),r.types.objectProperty(r.types.identifier("props"),rt(n,o,s))];l&&u.push(r.types.objectProperty(r.types.identifier("isSVG"),r.types.booleanLiteral(!0))),p.push(r.types.expressionStatement(r.types.callExpression(r.types.identifier("spread"),[r.types.objectExpression(u)])))}if(i.length>0){s.needsInsert=!0;for(let u of i){let y=r.types.isArrowFunctionExpression(u)||r.types.isFunctionExpression(u)||r.types.isCallExpression(u)&&r.types.isIdentifier(u.callee)&&u.callee.name==="createMemo"?[r.types.cloneNode(c),u,r.types.nullLiteral()]:[r.types.cloneNode(c),u];p.push(r.types.expressionStatement(r.types.callExpression(r.types.identifier("insert"),y)))}}return p.push(r.types.returnStatement(c)),r.types.callExpression(r.types.arrowFunctionExpression([],r.types.blockStatement(p)),[])}function En(e,t){let n=null;if(t.value)if(r.types.isStringLiteral(t.value))n=t.value.value;else throw new J(`'${e}' needs a literal value, not an expression — the strategy is compile-time.`);return B(e,n)}function xn(e){let t=[r.types.objectProperty(r.types.identifier("kind"),r.types.stringLiteral(e.kind))];return e.kind==="visible"&&e.rootMargin&&t.push(r.types.objectProperty(r.types.identifier("rootMargin"),r.types.stringLiteral(e.rootMargin))),e.kind==="interaction"&&t.push(r.types.objectProperty(r.types.identifier("events"),r.types.arrayExpression(e.events.map(n=>r.types.stringLiteral(n))))),e.kind==="media"&&t.push(r.types.objectProperty(r.types.identifier("query"),r.types.stringLiteral(e.query))),r.types.objectExpression(t)}function Sn(e,t){return!P(e)||!P(t)?A:e}function pt(e,t,n){r.types.isIdentifier(e)&&le.has(e.name)&&(n.controlFlowComponents.add(e.name),n.needsControlFlowImport=!0);let o=!1;if(r.types.isIdentifier(e)&&!le.has(e.name)&&n.componentResolver){let i=n.componentResolver.resolve(e.name);if(i){let s=n.pendingLoad??A,a=n.resolvedComponents.has(e.name);if(P(s)&&!a){let l=n.deferredComponents.get(e.name),c=l?Sn(l.strategy,s):s;P(c)?n.deferredComponents.set(e.name,{...i,strategy:c}):(n.deferredComponents.delete(e.name),n.resolvedComponents.set(e.name,i))}else n.deferredComponents.delete(e.name),n.resolvedComponents.set(e.name,i);o=!0}}return n.pendingLoad=void 0,!o&&r.types.isIdentifier(e)&&ae.has(e.name)&&(n.controlFlowComponents.add(e.name),n.needsControlFlowImport=!0),n.backend==="imperative"?(n.needsCreateComponent=!0,n.needsCreateMemo=!0,r.types.callExpression(r.types.identifier("createMemo"),[r.types.arrowFunctionExpression([],r.types.callExpression(r.types.identifier("createComponent"),[e,t]))])):r.types.callExpression(r.types.identifier("jsx"),[e,t])}function ut(e,t,n){if(!t||t.length===0)return e;let o=new Map;for(let i of t){let s=`${i.svg?"svg:":""}${i.html}`,a=n.staticTemplates.get(s);a||(a=`_tmpl$${n.staticTemplates.size}`,n.staticTemplates.set(s,a)),o.set(i.id,a)}return e.replace(/_tmpl\$\d+/g,i=>o.get(i)??i)}function it(e,t){let n=new Set,o=be(e,n);ue(o,{resolver:t.componentResolver,modules:{controlFlowModule:t.controlFlowModule,coreModule:t.libModule,routerModule:t.routerModule},strategyFor:c=>c.load}),de(o);let{code:i,imports:s,templates:a}=X.emit(o,{templateClone:t.templateClone,partialTemplates:t.partialTemplates});for(let c of s)n.add(c);for(let c of n)t.irImports.add(c);Re(o,t);let l=ut(i,a,t);return r.template.expression(l,{placeholderPattern:!1,plugins:["typescript"]})()}function vn(e){let t=new Map,n=[];for(let o of e){let i=o.source.value;if(!o.specifiers.every(l=>r.types.isImportSpecifier(l))){n.push(o);continue}let a=t.get(i);if(!a){let l=new Set(o.specifiers.map(c=>c.local.name));t.set(i,{decl:o,names:l}),n.push(o);continue}for(let l of o.specifiers)a.names.has(l.local.name)||(a.names.add(l.local.name),a.decl.specifiers.push(l))}return n}function bn(e,t){let n=new Set,o=r.types.isIdentifier(e.tag)&&e.tag.name==="svg",i=se(e,n,{svg:o});ue(i,{resolver:t.componentResolver,modules:{controlFlowModule:t.controlFlowModule,coreModule:t.libModule,routerModule:t.routerModule},strategyFor:p=>p.load}),de(i);let{code:s,imports:a,templates:l}=X.emit(i,{templateClone:t.templateClone,partialTemplates:t.partialTemplates});for(let p of a)n.add(p);for(let p of n)t.irImports.add(p);Re(i,t),t.hasLitIR=!0;let c=r.template.expression(ut(s,l,t),{placeholderPattern:!1,plugins:["typescript"]})();return yn(c,e),c}function yn(e,t){if(!t.loc)return;let n=new Set,o=i=>{if(!n.has(i)){n.add(i),i.loc||(i.loc=t.loc,i.start=t.start,i.end=t.end);for(let s of r.types.VISITOR_KEYS[i.type]??[]){let a=i[s];if(Array.isArray(a))for(let l of a)l&&typeof l=="object"&&"type"in l&&o(l);else a&&typeof a=="object"&&"type"in a&&o(a)}}};o(e)}function Re(e,t){if(e.kind==="component"&&e.source&&(e.source.origin==="builtin"?(t.controlFlowComponents.add(e.name),t.needsControlFlowImport=!0):P(e.source.loading)&&!t.resolvedComponents.has(e.name)?t.deferredComponents.set(e.name,{module:e.source.module,export:e.source.export,strategy:e.source.loading}):(t.deferredComponents.delete(e.name),t.resolvedComponents.set(e.name,{module:e.source.module,export:e.source.export}))),(e.kind==="element"||e.kind==="component"||e.kind==="control")&&"props"in e)for(let n of e.props)n.kind==="event"&&n.event?.delegated&&t.delegatedEvents.add(n.event.name);if("children"in e&&e.children)for(let n of e.children)Re(n,t)}function Rn(e){return e.map(t=>{if(r.types.isObjectProperty(t)){let n=t.key,o=t.computed,i=t.value;return r.types.objectMethod("get",n,[],r.types.blockStatement([r.types.returnStatement(i)]),o)}return t})}function Y(e,t,n,o=!0){let i=e.openingElement,s=e.children,a=dt(i.name),l=r.types.isJSXIdentifier(i.name)&&/^[a-z]/.test(i.name.name),c=ft(i.attributes,t,l,r.types.isJSXIdentifier(i.name)?i.name.name:""),p=c.props,f=c.spreads;l||(p=Rn(p));let u=Ce(s,t,o);if(t.backend==="imperative")return hn(a,l,p,f,u,t);if(u.length>0){let I=u.length===1?u[0]:r.types.arrayExpression(u);p.push(r.types.objectProperty(r.types.identifier("children"),I))}let E;if(f.length>0){let I=p.length>0?r.types.objectExpression(p):r.types.objectExpression([]);t.needsMergeProps=!0,E=r.types.callExpression(r.types.identifier("mergeProps"),[...f,I])}else E=r.types.objectExpression(p);let y=n?"jsxDEV":u.length>1?"jsxs":"jsx",R=[a,E];return n&&R.push(r.types.identifier("undefined"),r.types.booleanLiteral(!1),r.types.identifier("undefined"),r.types.identifier("undefined")),r.types.callExpression(r.types.identifier(y),R)}function Cn(e,t,n){let o=e.openingElement,i=e.children,s=dt(o.name),a=r.types.isJSXIdentifier(o.name)&&/^[a-z]/.test(o.name.name),{props:l,spreads:c}=ft(o.attributes,t,a,r.types.isJSXIdentifier(o.name)?o.name.name:""),p=Ce(i,t,t.autoShow??!0),f;if(c.length>0){let E=l.length>0?r.types.objectExpression(l):r.types.objectExpression([]);t.needsMergeProps=!0,f=r.types.callExpression(r.types.identifier("mergeProps"),[...c,E])}else f=l.length>0?r.types.objectExpression(l):r.types.nullLiteral();let u=[s,f,...p];return r.types.callExpression(r.types.identifier(n),u)}function ce(e,t,n){let{runtime:o,pragmaFrag:i,development:s}=n,a=Ce(e.children,t,t.autoShow??!0);if(t.backend==="imperative")return a.length===0?r.types.nullLiteral():ct(a);if(o==="automatic"){let l=s?"jsxDEV":a.length>1?"jsxs":"jsx",c=r.types.objectExpression([r.types.objectProperty(r.types.identifier("children"),a.length===1?a[0]:r.types.arrayExpression(a))]),p=[r.types.identifier("Fragment"),c];return s&&p.push(r.types.identifier("undefined"),r.types.booleanLiteral(!1),r.types.identifier("undefined"),r.types.identifier("undefined")),r.types.callExpression(r.types.identifier(l),p)}else return r.types.callExpression(r.types.identifier(i),a)}function dt(e){if(r.types.isJSXIdentifier(e)){let t=e.name;return t[0]===t[0].toLowerCase()?r.types.stringLiteral(t):r.types.identifier(t)}return r.types.isJSXMemberExpression(e)?mt(e):r.types.isJSXNamespacedName(e)?r.types.stringLiteral(`${e.namespace.name}:${e.name.name}`):r.types.stringLiteral("div")}function mt(e){let t;return r.types.isJSXIdentifier(e.object)?t=r.types.identifier(e.object.name):t=mt(e.object),r.types.memberExpression(t,r.types.identifier(e.property.name))}function In(e){return/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(e)}function ft(e,t,n=!0,o=""){let i=[],s=[],a=dn[o];t.pendingLoad=void 0;for(let l of e)if(r.types.isJSXSpreadAttribute(l))s.push(l.argument);else if(r.types.isJSXAttribute(l)){let c=wn(l.name);if(W(c)){t.pendingLoad=En(c,l);continue}let p=Nn(l.value,t,c,n);if(at.test(c)){let O=c.slice(2).toLowerCase();lt.includes(O)&&t.delegatedEvents.add(O)}let f=In(c)?r.types.identifier(c):r.types.stringLiteral(c),u=l.value,E=r.types.isJSXElement(u)||r.types.isJSXFragment(u)||r.types.isJSXExpressionContainer(u)&&(r.types.isJSXElement(u.expression)||r.types.isJSXFragment(u.expression)),y=!n&&c===a,R=r.types.isJSXExpressionContainer(u)&&!r.types.isJSXEmptyExpression(u.expression)?u.expression:null,I=!n&&!!R&>(R,c);!n&&E||y||I?i.push(r.types.objectMethod("get",f,[],r.types.blockStatement([r.types.returnStatement(p)]))):i.push(r.types.objectProperty(f,p))}return{props:i,spreads:s}}function wn(e){return r.types.isJSXIdentifier(e)?e.name==="class"?"className":e.name:r.types.isJSXNamespacedName(e)?`${e.namespace.name}:${e.name.name}`:"unknown"}function Nn(e,t,n="",o=!0){if(e===null)return r.types.booleanLiteral(!0);if(r.types.isStringLiteral(e))return e.value.includes(`
|
|
2
|
+
`)?r.types.stringLiteral(e.value.replace(/\s+/g," ").trim()):e;if(r.types.isJSXExpressionContainer(e)){if(r.types.isJSXEmptyExpression(e.expression))return r.types.booleanLiteral(!0);let i=e.expression;return o&>(i,n)?r.types.arrowFunctionExpression([],i):i}return r.types.isJSXElement(e)?Y(e,t,!1,t.autoShow??!0):r.types.isJSXFragment(e)?ce(e,t,{runtime:"automatic",pragmaFrag:"Fragment",development:!1}):r.types.booleanLiteral(!0)}function gt(e,t){return at.test(t)||t.startsWith("on:")||t==="ref"||t.startsWith("use:")||r.types.isArrowFunctionExpression(e)||r.types.isFunctionExpression(e)||r.types.isIdentifier(e)||r.types.isStringLiteral(e)||r.types.isNumericLiteral(e)||r.types.isBooleanLiteral(e)||r.types.isNullLiteral(e)?!1:!!(r.types.isCallExpression(e)||r.types.isOptionalCallExpression(e)||r.types.isMemberExpression(e)||r.types.isOptionalMemberExpression(e)||r.types.isLogicalExpression(e)||r.types.isConditionalExpression(e)||r.types.isBinaryExpression(e)||r.types.isUnaryExpression(e)||r.types.isTemplateLiteral(e)||r.types.isObjectExpression(e)||r.types.isArrayExpression(e))}function kn(e){let t=e.split(/\r\n|\n|\r/),n=0;for(let i=0;i<t.length;i++)/[^ \t]/.test(t[i])&&(n=i);let o="";for(let i=0;i<t.length;i++){let s=t[i].replace(/\t/g," ");i!==0&&(s=s.replace(/^ +/,"")),i!==t.length-1&&(s=s.replace(/ +$/,"")),s&&(i!==n&&(s+=" "),o+=s)}return o}function Ce(e,t,n=!0){let o=[];for(let i of e)if(r.types.isJSXText(i)){let s=kn(i.value);s&&o.push(r.types.stringLiteral(s))}else if(r.types.isJSXExpressionContainer(i)){if(!r.types.isJSXEmptyExpression(i.expression)){let s=i.expression;if(n){let a=Ln(s,t)??Mn(s,t);if(a){o.push(a);continue}}else{let a=Jn(s,t);if(a){o.push(a);continue}}Pn(s)?o.push(r.types.arrowFunctionExpression([],s)):o.push(s)}}else r.types.isJSXElement(i)?o.push(Y(i,t,!1,t.autoShow??!0)):r.types.isJSXFragment(i)?o.push(ce(i,t,{runtime:"automatic",pragmaFrag:"Fragment",development:!1})):r.types.isJSXSpreadChild(i)&&o.push(i.expression);return o}function Ln(e,t){if(!r.types.isArrowFunctionExpression(e)||e.params.length!==0||e.async)return null;let n=e.body;if(r.types.isLogicalExpression(n)&&n.operator==="&&"){let o=T(n.right);if(o)return Z(j(n.left),o,null,t)}if(r.types.isConditionalExpression(n)){let o=T(n.consequent);if(o){let i=Ie(n.alternate,t);return Z(j(n.test),o,i,t,!0)}}return null}function Mn(e,t){if(r.types.isLogicalExpression(e)&&e.operator==="&&"){let n=T(e.right);if(n)return Z(j(e.left),n,null,t)}if(r.types.isConditionalExpression(e)){let n=T(e.consequent);if(n){let o=Ie(e.alternate,t);return Z(j(e.test),n,o,t)}}return null}function Jn(e,t){let n=r.types.isArrowFunctionExpression(e)&&e.params.length===0&&!e.async&&r.types.isExpression(e.body)?e.body:e;if(r.types.isConditionalExpression(n)){let o=j(n.test),s=T(n.consequent)??n.consequent,l=T(n.alternate)??n.alternate,c=r.types.conditionalExpression(o,s,l);return ye(n.consequent)||ye(n.alternate)?null:(t.needsCreateMemo=!0,r.types.callExpression(r.types.identifier("createMemo"),[r.types.arrowFunctionExpression([],c)]))}if(r.types.isLogicalExpression(n)&&n.operator==="&&"){let o=j(n.left),s=T(n.right)??n.right,a=r.types.logicalExpression("&&",o,s);return ye(n.right)?null:(t.needsCreateMemo=!0,r.types.callExpression(r.types.identifier("createMemo"),[r.types.arrowFunctionExpression([],a)]))}return null}function Ie(e,t){if(Tn(e))return null;let n=T(e);if(n)return ht(n,t);if(r.types.isConditionalExpression(e)){let o=e,i=T(o.consequent);if(i){let s=Ie(o.alternate,t);return Z(j(o.test),i,s,t)}}return e}function ot(e){return r.types.isJSXElement(e)||r.types.isJSXFragment(e)}function ye(e){let t=T(e);if(!t||!r.types.isJSXElement(t))return!1;let n=t.openingElement.name;return r.types.isJSXIdentifier(n)&&le.has(n.name)}function T(e){return ot(e)?e:r.types.isArrowFunctionExpression(e)&&e.params.length===0&&!e.async&&ot(e.body)?e.body:null}function j(e){return r.types.isArrowFunctionExpression(e)&&e.params.length===0&&!e.async&&r.types.isExpression(e.body)?e.body:e}function Tn(e){return r.types.isNullLiteral(e)||r.types.isIdentifier(e)&&e.name==="undefined"||r.types.isBooleanLiteral(e)&&e.value===!1}function ht(e,t){return r.types.isJSXElement(e)?Y(e,t,!1,t.autoShow??!0):ce(e,t,{runtime:"automatic",pragmaFrag:"Fragment",development:!1})}function Z(e,t,n,o,i=!1){o.controlFlowComponents.add("Show"),o.needsControlFlowImport=!0;let s=ht(t,o),a=[r.types.objectProperty(r.types.identifier("when"),r.types.arrowFunctionExpression([],e)),r.types.objectProperty(r.types.identifier("children"),s)];return n&&a.push(r.types.objectProperty(r.types.identifier("fallback"),n)),pt(r.types.identifier("Show"),r.types.objectExpression(a),o)}function Pn(e){return r.types.isMemberExpression(e)||r.types.isOptionalMemberExpression(e)?!(!e.computed&&r.types.isIdentifier(e.property,{name:"children"})):r.types.isCallExpression(e)||r.types.isOptionalCallExpression(e)?!0:r.types.isIdentifier(e)?!1:!!(r.types.isLogicalExpression(e)||r.types.isConditionalExpression(e)||r.types.isBinaryExpression(e)||r.types.isUnaryExpression(e)||r.types.isTemplateLiteral(e))}function Et(e,t){let n=e.openingElement;if(!r.types.isJSXIdentifier(n.name))return!1;let o=n.name.name;if(o[0]!==o[0].toLowerCase())return!1;for(let i of n.attributes){if(r.types.isJSXSpreadAttribute(i))return!1;if(r.types.isJSXAttribute(i)){let s=i.value;if(r.types.isJSXExpressionContainer(s)&&!r.types.isStringLiteral(s.expression)&&!r.types.isNumericLiteral(s.expression))return!1}}for(let i of e.children)if(r.types.isJSXElement(i)&&!Et(i,t)||r.types.isJSXExpressionContainer(i))return!1;return!0}function Xn(e,t){let n=`_$static${t.staticCounter++}`,o=Y(e,t,!1);return t.staticElements.set(n,o),r.types.identifier(n)}function $n(e,t){let n=e.openingElement.name.name;return n==="Show"?An(e,t):n==="For"?jn(e,t):null}function An(e,t){return null}function jn(e,t){return null}
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* - Lit-HTML integration
|
|
11
11
|
* - Control flow optimization
|
|
12
12
|
*/
|
|
13
|
+
import { type ComponentResolverRule } from '../../resolve/component-resolver.js';
|
|
13
14
|
import { type PluginObj, type PluginPass } from '@babel/core';
|
|
14
15
|
export interface PluginOptions {
|
|
15
16
|
/**
|
|
@@ -94,6 +95,19 @@ export interface PluginOptions {
|
|
|
94
95
|
* @default '@fluixi/core/router-next'
|
|
95
96
|
*/
|
|
96
97
|
routerModule?: string;
|
|
98
|
+
/** Clone static subtrees from a template. Client-only — see CompilerOptions. */
|
|
99
|
+
templateClone?: boolean;
|
|
100
|
+
/** Also clone structure-static subtrees with holes. See CompilerOptions. */
|
|
101
|
+
partialTemplates?: boolean;
|
|
102
|
+
/**
|
|
103
|
+
* Rules that resolve an unbound capitalised tag to a module, so a component can be
|
|
104
|
+
* used without an import — the configurable form of the built-in
|
|
105
|
+
* Suspense/Portal/Router auto-import.
|
|
106
|
+
*
|
|
107
|
+
* A lexical binding always wins, so an explicit import or a local variable is never
|
|
108
|
+
* overridden. With no rules, behaviour is exactly as before.
|
|
109
|
+
*/
|
|
110
|
+
resolve?: readonly ComponentResolverRule[];
|
|
97
111
|
/**
|
|
98
112
|
* Where reactive primitives (createMemo) are imported from — the signal core,
|
|
99
113
|
* not the dom runtime.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/frontend/babel/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,UAAU,EAChB,MAAM,aAAa,CAAC;AAUrB,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAElC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAE3B;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/frontend/babel/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAEL,KAAK,qBAAqB,EAG3B,MAAM,qCAAqC,CAAC;AAgB7C,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,UAAU,EAChB,MAAM,aAAa,CAAC;AAUrB,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IAElC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAE3B;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gFAAgF;IAChF,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAE3C;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,KAAK,GAAG,YAAY,CAAC;IAE/B;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAE1B;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IAEhC;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;;AA6GD,wBA4jBG"}
|