soma3/public/index.js
2024-10-20 16:29:39 -04:00

6 lines
25 KiB
JavaScript
Executable File

function re(t){return new DOMParser().parseFromString(t,"text/html").body.firstChild}var oe=t=>t.nodeType===Node.TEXT_NODE,qe=t=>t.nodeName==="TEMPLATE",W=t=>t.nodeType===Node.ELEMENT_NODE;function R(t){return t!==null&&typeof t=="object"}function ge(t){return Array.isArray(t)}function N(t,e){let n=t.getAttribute(e);return n!==null&&t.removeAttribute(e),n}function ye(t){let e=[],n=r=>{Array.from(r.childNodes).forEach(o=>{W(o)&&(o.nodeName==="SLOT"&&e.push({node:o,name:o.getAttribute("name")||"default"}),o.hasChildNodes()&&n(o))})};return n(t),e}function ve(t){let e=[];return(r=>{let o=[];if(Array.from(r.childNodes).forEach(s=>{(W(s)||oe(s))&&(W(s)&&s.nodeName==="TEMPLATE"&&qe(s)?e.push({targetSlotName:s.getAttribute("slot")||"",node:s}):o.push(s))}),o.length>0){let s=document.createElement("template");s.setAttribute("slot","default"),o.forEach(i=>{s.content.appendChild(i)}),e.push({targetSlotName:"default",node:s})}})(t),e}var Ee=async t=>{await new Promise(e=>setTimeout(n=>requestAnimationFrame(r=>{t&&t(),e()})))};function be(t,...e){let n=["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"],r=t.reduce((o,s,i)=>o+s+(e[i]||""),"");return r=r.replace(/<([a-zA-Z][^\s/>]*)\s*([^>]*?)\/>/g,(o,s,i)=>n.includes(s.toLowerCase())?o:`<${s} ${i}></${s}>`),r}function z(t){return t==null?"":R(t)?JSON.stringify(t,null,2):String(t)}function ie(t,e){e.nextSibling?e.parentNode.insertBefore(t,e.nextSibling):e?.parentNode?.appendChild(t)}function we(t){return!!(t.startsWith(".")||t.startsWith("{")&&t.endsWith("}"))}function se(t){return t.startsWith("...")}function J(t){return t.startsWith("{")&&t.endsWith("}")}function Ce(t){return t.startsWith(".")}function Re(t){return t.startsWith("@")}function Te(t,e){return Object.keys(e?.props??{}).some(n=>n===t)}function ae(t){return t.replace(/^\.\.\./,"").replace(/^\./,"").replace(/^{/,"").replace(/}$/,"").replace(/:bind$/,"")}function ze(t){return t.toLowerCase().replace(/-([a-z])/g,e=>e[1].toUpperCase())}function X(t){return ze(ae(t))}function ce(t){let e=[];for(let n=0;n<arguments.length;n++){let r=arguments[n];if(!r)continue;let o=typeof r;if(o==="string"||o==="number")e.push(r);else if(Array.isArray(r)){if(r.length){let s=ce.apply(null,r);s&&e.push(s)}}else if(o==="object")if(r.toString===Object.prototype.toString)for(let s in r)Object.hasOwnProperty.call(r,s)&&r[s]&&e.push(s);else e.push(r.toString())}return e.join(" ")}var Z=class{element;context;expression;attr;extractedAttributeName;previousClasses=[];previousStyles={};is={sameNameProperty:!1,bound:!1,spread:!1,componentProp:!1};constructor({element:e,context:n,attr:r}){this.element=e,this.context=n,this.expression=r.value,this.attr=r,this.extractedAttributeName=ae(r.name),this.is={sameNameProperty:r.name.startsWith("{")&&r.name.endsWith("}"),bound:r.name.includes(":bind"),spread:r.name.startsWith("..."),componentProp:!1},this.is.sameNameProperty&&(this.expression=this.extractedAttributeName),this.is.spread&&(this.expression=this.extractedAttributeName),e.removeAttribute(r.name),this.is.bound?n.effect(this.update.bind(this)):this.update()}update(){let e=m(this.context.scope,this.expression);if(this.is.spread&&typeof e=="object")for(let[n,r]of Object.entries(e))this.element.setAttribute(n,String(r));else if((typeof e=="object"||Array.isArray(e))&&this.extractedAttributeName==="class"){e=ce(e);let n=e.split(" "),r=n.filter(s=>!this.previousClasses.includes(s)).filter(Boolean),o=this.previousClasses.filter(s=>!n.includes(s));r.forEach(s=>{this.previousClasses.push(s),this.element.classList.add(s)}),o.forEach(s=>{this.previousClasses=this.previousClasses.filter(i=>i!==s),this.element.classList.remove(s)})}else if(typeof e=="object"&&this.extractedAttributeName==="style"){console.log("value is object",e);let n=Object.keys(e),r=Object.keys(this.previousStyles).filter(o=>!n.includes(o));n.forEach(o=>{this.previousStyles[o]=e[o],this.element.style[o]=e[o]}),r.forEach(o=>{this.previousStyles[o]="",this.element.style[o]=""}),this.previousStyles=e}else this.element.setAttribute(this.extractedAttributeName,e)}};var Q=class{element;context;expression;attr;eventCount=0;constructor({element:e,context:n,attr:r}){this.element=e,this.context=n,this.expression=r.value,this.attr=r;let s=r.name.replace(/^@/,"").split(".");this.element.addEventListener(s[0],i=>{if(s.includes("prevent")&&i.preventDefault(),s.includes("stop")&&i.stopPropagation(),s.includes("once")&&this.eventCount>0)return;this.eventCount++;let a=m(n.scope,r.value);typeof a=="function"&&a(i)}),e.removeAttribute(r.name)}};var Je=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,ke=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,Xe=/^\(|\)$/g,Ze=/^[{[]\s*((?:[\w_$]+\s*,?\s*)+)[\]}]$/,Ne=(t,e,n,r,o,s)=>{let i=e.match(Je);if(!i){console.warn(`invalid :for expression: ${e}`);return}let a=t.nextSibling,c=t.parentElement,l=new Text("");c.insertBefore(l,t),c.removeChild(t);let f=i[2].trim(),u=i[1].trim().replace(Xe,"").trim(),d,h=!1,x,E,p="key",w=t.getAttribute(p)||t.getAttribute(p=":key")||t.getAttribute(p=":key:bind");w&&(t.removeAttribute(p),p==="key"&&(w=JSON.stringify(w)));let T;(T=u.match(ke))&&(u=u.replace(ke,"").trim(),x=T[1].trim(),T[2]&&(E=T[2].trim())),(T=u.match(Ze))&&(d=T[1].split(",").map(g=>g.trim()),h=u[0]==="[");let _=!1,C,O,k,j=g=>{let S=new Map,y=[];if(ge(g))for(let v=0;v<g.length;v++)y.push(F(S,g[v],v));else if(typeof g=="number")for(let v=0;v<g;v++)y.push(F(S,v+1,v));else if(R(g)){let v=0;for(let b in g)y.push(F(S,g[b],v++,b))}return[y,S]},F=(g,S,y,v)=>{let b={};d?d.forEach((D,L)=>b[D]=S[h?L:D]):b[u]=S,v?(x&&(b[x]=v),E&&(b[E]=y)):x&&(b[x]=y);let H=Ae(n,b),M=w?m(H.scope,w):y;return g.set(M,y),H.key=M,H},q=(g,S)=>{let y=new A({element:t,parentContext:g,replacementType:"replace",component:r,componentProps:o,allProps:s});return y.key=g.key,y.insert(c,S),y};return n.effect(()=>{let g=m(n.scope,f),S=k;if([O,k]=j(g),!_)C=O.map(y=>q(y,l)),_=!0;else{for(let M=0;M<C.length;M++)k.has(C[M].key)||C[M].remove();let y=[],v=O.length,b,H;for(;v--;){let M=O[v],D=S.get(M.key),L;D==null?L=q(M,b?b.element:l):(L=C[D],Object.assign(L.context.scope,M.scope),D!==v&&(C[D+1]!==b||H===b)&&(H=L,L.insert(c,b?b.element:l))),y.unshift(b=L)}C=y}}),a};function Se(t,e,n,r,o,s){let i=t.parentElement,a=new Comment(":if");i.insertBefore(a,t);let c=[{exp:e,el:t}],l,f;for(;(l=t.nextElementSibling)&&(f=null,N(l,":else")===""||(f=N(l,":else-if")));)i.removeChild(l),c.push({exp:f,el:l});let u=t.nextSibling;i.removeChild(t);let d,h=-1,x=()=>{d&&(i.insertBefore(a,d.element),d.remove(),d=void 0)};return n.effect(()=>{for(let E=0;E<c.length;E++){let{exp:p,el:w}=c[E];if(!p||m(n.scope,p)){E!==h&&(x(),d=new A({element:w,parentContext:n,replacementType:"replace",component:r,componentProps:o,allProps:s}),d.insert(i,a),i.removeChild(a),h=E);return}}h=-1,x()}),u}var Qe=/{{\s?(.*?)\s?}}/g,Y=class{element;context;textNodes=new Map;constructor({element:e,context:n}){this.element=e,this.context=n,this.findNodes(),this.textNodes.forEach((r,o)=>{let s=o.slice(2,-2).trim();r.forEach(i=>{let a=(c=s)=>m(this.context.scope,c,i);n.effect(()=>{i.textContent=z(a())})})})}findNodes(){let e=this.element.textContent.trim();if(e?.match(Qe)){let n=e.split(/(\{\{\s?[^}]+\s?\}\})/g).filter(Boolean);if(n){let r=this.element;for(let o=0;o<n.length;o++){let s=n[o];if(s.match(/\{\{\s?.+\s?\}\}/)){let i=document.createTextNode(s);o===0?this.element.replaceWith(i):ie(i,r),r=i,this.textNodes.has(s)?this.textNodes.get(s).push(i):this.textNodes.set(s,[i])}else{let i=document.createTextNode(n[o]);o===0?this.element.replaceWith(i):ie(i,r),r=i}}}}}update(){}};var ee=class{element;context;expression;originalDisplay;constructor({element:e,context:n,expression:r}){this.element=e,this.context=n,this.expression=r,this.originalDisplay=getComputedStyle(this.element).display,n.effect(this.update.bind(this))}update(){let e=!!m(this.context.scope,this.expression);this.element.style.display=e?this.originalDisplay:"none"}};function Me(t,e,n){let r=new Comment(":teleport");t.replaceWith(r);let o=document.querySelector(e);if(!o){console.warn(`teleport target not found: ${e}`);return}return Ee(()=>{o.appendChild(t);let s=new MutationObserver(i=>{i.forEach(a=>{a.removedNodes.forEach(c=>{c.contains(r)&&(t.remove(),s.disconnect())})})});s.observe(document.body,{childList:!0,subtree:!0}),new A({element:t,parentContext:n})}),r}function Pe(t){return t instanceof HTMLInputElement}function Be(t){return t instanceof HTMLTextAreaElement}function Oe(t){return t instanceof HTMLSelectElement}var te=class{element;context;expression;inputType;constructor({element:e,context:n,expression:r}){if(this.element=e,this.context=n,this.expression=r,this.inputType=e.getAttribute("type"),Pe(e))switch(this.inputType){case"text":case"password":case"number":case"color":e.addEventListener("input",()=>{let o=this.inputType==="number"?e.value?parseFloat(e.value):0:e.value;I(this.context.scope,r,o)});break;case"checkbox":e.addEventListener("change",o=>{I(this.context.scope,r,!!o.currentTarget.checked)});break;case"radio":e.addEventListener("change",o=>{o.currentTarget.checked&&I(this.context.scope,r,e.getAttribute("value"))});break;default:break}Be(e)&&e.addEventListener("input",()=>{I(this.context.scope,r,e.value)}),Oe(e)&&e.addEventListener("change",()=>{I(this.context.scope,r,e.value)}),n.effect(this.updateElementValue.bind(this))}updateElementValue(){let e=m(this.context.scope,this.expression,this.element);if(Pe(this.element))switch(this.inputType){case"text":case"password":case"number":case"color":this.element.value=e;break;case"checkbox":this.element.checked=!!e;break;case"radio":this.element.checked=this.element.value===e;break;default:break}Be(this.element)&&(this.element.value=e),Oe(this.element)&&(this.element.value=e)}};var le=new WeakMap,G=[];function ne(t,e){let n=G[G.length-1];if(!n)return;let r=le.get(t);r||le.set(t,r=new Map);let o=r.get(e);o||r.set(e,o=new Set),o.has(n)||(o.add(n),n.refs.push(o))}function K(t,e){let n=le.get(t);if(!n)return;let r=new Set;n.get(e)?.forEach(o=>{r.add(o)}),r.forEach(pe)}function Le(t){t.active&&_e(t),t.active=!1}function $e(t){t.active||(t.active=!0,pe(t))}function pe(t){if(!t.active||G.includes(t))return;_e(t);let e;try{G.push(t),e=t.handler()}finally{G.pop()}return e}function _e(t){let{refs:e}=t;if(e.length)for(let n of e)n.delete(t);e.length=0}function fe(t,e={}){let{lazy:n}=e,r={active:!n,handler:t,refs:[]};return pe(r),{start:()=>{$e(r)},stop:()=>{Le(r)},toggle:()=>(r.active?Le(r):$e(r),r.active)}}var Ye=Symbol("computed");function U(t){return R(t)&&t[Ye]}var je=Symbol("ref");function $(t){return R(t)&&!!t[je]}function De(t=null){if(R(t))return $(t)?t:P(t);let e={value:t,[je]:!0};return new Proxy(e,{get(n,r,o){let s=Reflect.get(n,r,o);return ne(e,"value"),s},set(n,r,o){return n[r]!==o&&Reflect.set(n,r,o)&&K(e,"value"),!0}})}var Fe=Symbol("reactive");function P(t){return R(t)?t[Fe]?t:(t[Fe]=!0,Object.keys(t).forEach(e=>{R(t[e])&&(t[e]=P(t[e]))}),new Proxy(t,et())):De(t)}function et(){return{deleteProperty(t,e){let n=Reflect.has(t,e),r=Reflect.deleteProperty(t,e);return n&&K(t,e),r},get(t,e){return ne(t,e),Reflect.get(t,e)},set(t,e,n){if(t[e]===n)return!0;let r=!1;return R(n)&&!R(t[e])&&(r=!0),Reflect.set(t,e,n)&&K(t,e),r&&(t[e]=P(t[e])),!0}}}function tt(t){for(var e=[],n=0;n<t.length;){var r=t[n];if(r==="*"||r==="+"||r==="?"){e.push({type:"MODIFIER",index:n,value:t[n++]});continue}if(r==="\\"){e.push({type:"ESCAPED_CHAR",index:n++,value:t[n++]});continue}if(r==="{"){e.push({type:"OPEN",index:n,value:t[n++]});continue}if(r==="}"){e.push({type:"CLOSE",index:n,value:t[n++]});continue}if(r===":"){for(var o="",s=n+1;s<t.length;){var i=t.charCodeAt(s);if(i>=48&&i<=57||i>=65&&i<=90||i>=97&&i<=122||i===95){o+=t[s++];continue}break}if(!o)throw new TypeError("Missing parameter name at "+n);e.push({type:"NAME",index:n,value:o}),n=s;continue}if(r==="("){var a=1,c="",s=n+1;if(t[s]==="?")throw new TypeError('Pattern cannot start with "?" at '+s);for(;s<t.length;){if(t[s]==="\\"){c+=t[s++]+t[s++];continue}if(t[s]===")"){if(a--,a===0){s++;break}}else if(t[s]==="("&&(a++,t[s+1]!=="?"))throw new TypeError("Capturing groups are not allowed at "+s);c+=t[s++]}if(a)throw new TypeError("Unbalanced pattern at "+n);if(!c)throw new TypeError("Missing pattern at "+n);e.push({type:"PATTERN",index:n,value:c}),n=s;continue}e.push({type:"CHAR",index:n,value:t[n++]})}return e.push({type:"END",index:n,value:""}),e}function nt(t,e){e===void 0&&(e={});for(var n=tt(t),r=e.prefixes,o=r===void 0?"./":r,s="[^"+V(e.delimiter||"/#?")+"]+?",i=[],a=0,c=0,l="",f=function(k){if(c<n.length&&n[c].type===k)return n[c++].value},u=function(k){var j=f(k);if(j!==void 0)return j;var F=n[c],q=F.type,g=F.index;throw new TypeError("Unexpected "+q+" at "+g+", expected "+k)},d=function(){for(var k="",j;j=f("CHAR")||f("ESCAPED_CHAR");)k+=j;return k};c<n.length;){var h=f("CHAR"),x=f("NAME"),E=f("PATTERN");if(x||E){var p=h||"";o.indexOf(p)===-1&&(l+=p,p=""),l&&(i.push(l),l=""),i.push({name:x||a++,prefix:p,suffix:"",pattern:E||s,modifier:f("MODIFIER")||""});continue}var w=h||f("ESCAPED_CHAR");if(w){l+=w;continue}l&&(i.push(l),l="");var T=f("OPEN");if(T){var p=d(),_=f("NAME")||"",C=f("PATTERN")||"",O=d();u("CLOSE"),i.push({name:_||(C?a++:""),pattern:_&&!C?s:C,prefix:p,suffix:O,modifier:f("MODIFIER")||""});continue}u("END")}return i}function V(t){return t.replace(/([.+*?=^!:${}()[\]|/\\])/g,"\\$1")}function He(t){return t&&t.sensitive?"":"i"}function rt(t,e){if(!e)return t;for(var n=/\((?:\?<(.*?)>)?(?!\?)/g,r=0,o=n.exec(t.source);o;)e.push({name:o[1]||r++,prefix:"",suffix:"",modifier:"",pattern:""}),o=n.exec(t.source);return t}function ot(t,e,n){var r=t.map(function(o){return ue(o,e,n).source});return new RegExp("(?:"+r.join("|")+")",He(n))}function it(t,e,n){return st(nt(t,n),e,n)}function st(t,e,n){n===void 0&&(n={});for(var r=n.strict,o=r===void 0?!1:r,s=n.start,i=s===void 0?!0:s,a=n.end,c=a===void 0?!0:a,l=n.encode,f=l===void 0?function(k){return k}:l,u="["+V(n.endsWith||"")+"]|$",d="["+V(n.delimiter||"/#?")+"]",h=i?"^":"",x=0,E=t;x<E.length;x++){var p=E[x];if(typeof p=="string")h+=V(f(p));else{var w=V(f(p.prefix)),T=V(f(p.suffix));if(p.pattern)if(e&&e.push(p),w||T)if(p.modifier==="+"||p.modifier==="*"){var _=p.modifier==="*"?"?":"";h+="(?:"+w+"((?:"+p.pattern+")(?:"+T+w+"(?:"+p.pattern+"))*)"+T+")"+_}else h+="(?:"+w+"("+p.pattern+")"+T+")"+p.modifier;else h+="("+p.pattern+")"+p.modifier;else h+="(?:"+w+T+")"+p.modifier}}if(c)o||(h+=d+"?"),h+=n.endsWith?"(?="+u+")":"$";else{var C=t[t.length-1],O=typeof C=="string"?d.indexOf(C[C.length-1])>-1:C===void 0;o||(h+="(?:"+d+"(?="+u+"))?"),O||(h+="(?="+d+"|"+u+")")}return new RegExp(h,He(n))}function ue(t,e,n){return t instanceof RegExp?rt(t,e):Array.isArray(t)?ot(t,e,n):it(t,e,n)}function Ie(t){return $(t)||U(t)?t.value:typeof t=="function"?t():t}var he=new Set,at={template:be`
<a {href:bind} @click="go" .class:bind="classes">
<slot>LINK</slot>
</a>
`,props:{href:{default:"#"}},main({href:t}){let e=r=>{r.preventDefault(),he.forEach(o=>{o.doRouteChange(Ie(t))})},n=P({"router-link":!0});return{go:e,classes:n,href:t}}};async function ct(t){return await t()}var lt=async t=>t.beforeEnter?await ct(t.beforeEnter):!0,pt=t=>{t.redirectTo&&he.forEach(e=>e.doRouteChange(t.redirectTo))},me=class{app;routes=[];pathExpressions=new Map;lastPath="/";knownRouterViews=new Map;knownRouterViewNames=new Map;populatedRouterViews=new Map;constructor(e=[]){this.routes=e}use(e,...n){this.app=e,this.app.register("router-link",at),window.addEventListener("popstate",this.onHistoryEvent.bind(this)),window.addEventListener("pushstate",this.onHistoryEvent.bind(this)),window.addEventListener("load",this.onHistoryEvent.bind(this));for(let r of this.routes)this.cacheRouteExpression(r);this.lastPath=`${location.pathname}${location.search}`,window.history.replaceState({},"",this.lastPath),he.add(this)}compile(e){e.nodeType===Node.ELEMENT_NODE&&e.nodeName==="ROUTER-VIEW"&&!this.knownRouterViews.has(e)&&B.componentBlock&&(this.knownRouterViews.set(e,B.componentBlock),this.knownRouterViewNames.set(e.getAttribute("name")?.trim()||"",e))}onHistoryEvent(e){e.preventDefault(),e.stopImmediatePropagation();let n=new URL(e.currentTarget.location.href).pathname;e.type==="load"?window.history.replaceState({},"",this.lastPath):e.type==="pushstate"?window.history.replaceState({},"",n):e.type==="popstate"&&window.history.replaceState({},"",n),this.lastPath=n;let r=this.getMatchesForURL(n);this.applyMatches(r)}doRouteChange(e){window.history.pushState({},"",e);let n=this.getMatchesForURL(`${location.pathname}${location.search}`);this.applyMatches(n)}getMatchesForURL(e){let n=[],r=(o,s="",i=[])=>{let a=[];for(let c of o){a.push(c);let l=`${s}${c.path}`.replace(/\/\//g,"/"),f=this.getPathMatch(l,e);f&&n.push({match:f,parents:[...i,...a]}),c.children?.length&&(r(c.children,l,[...i,...a]),a=[])}return n};return n=r(this.routes),n}getRouteExpression(e,n){if(this.pathExpressions.has(e))return this.pathExpressions.get(e);let r=[],s={regex:ue(e,r,{strict:!1,sensitive:!1,end:!0}),params:r,path:e,route:n};return this.pathExpressions.set(e,s),s}getPathMatch(e,n){return this.pathExpressions.get(e)&&this.pathExpressions.get(e).regex.exec(n)?this.pathExpressions.get(e):null}async applyMatches(e){if(!e)return;let n=new Set,r=async(i,a)=>{for(let c of i)if(c.view){let l=this.knownRouterViewNames.get(c.view);if(l&&await o(l,c))continue}else if(a&&await o(a,c))continue},o=async(i,a)=>await lt(a)?(s(i,a),!0):(a.componentFallback?s(i,a,a.componentFallback):pt(a),!1),s=(i,a,c)=>{if(!n.has(i)||this.populatedRouterViews.get(i)?.route!==a){let l=document.createElement("div");i.replaceChildren(l);let f=l.parentElement,u=new A({element:l,component:c||a.component,replacementType:"replaceChildren",parentContext:B.componentBlock.context});f.replaceChild(u.element,l),this.populatedRouterViews.set(i,{block:u,route:a}),n.add(i)}};for(let i of e){let c=[...i.parents,i.match.route].filter((f,u,d)=>u===d.findIndex(h=>h.path===f.path)),l=this.knownRouterViewNames.get("")??null;await r(c,l)}for(let i of this.knownRouterViews.keys())if(!n.has(i)&&this.populatedRouterViews.has(i)){let a=this.populatedRouterViews.get(i);a&&(a.block.teardown(),this.populatedRouterViews.delete(i))}}cacheRouteExpression(e,n=""){let r=`${n}${e.path}`.replace(/\/\//g,"/");this.getRouteExpression(r,e),e.children?.length&&e.children.forEach(o=>{this.cacheRouteExpression(o,r)})}destroy(){window.removeEventListener("popstate",this.onHistoryEvent.bind(this)),window.removeEventListener("pushstate",this.onHistoryEvent.bind(this)),window.removeEventListener("load",this.onHistoryEvent.bind(this))}};function Fn(t,e){B.componentBlock||console.warn("Can't provide: no current component block"),B.componentBlock.provides.set(t,e)}function Hn(t){B.componentBlock||console.warn("Can't inject: no current component block");let e=B.componentBlock;for(;e;){if(e.provides.has(t))return e.provides.get(t);e=e.parentComponentBlock}}var Ve=class{rootBlock;registry=new Map;plugins=new Set;register(e,n){this.registry.set(e,n)}use(e,...n){this.plugins.add(e),e.use(this,...n)}getComponent(e){return this.registry.get(e)}mount(e,n="body",r={}){let o=typeof n=="string"?document.querySelector(n):n,s=o.style.display;return o.style.display="none",this.rootBlock=this._mount(e,o,r,!0),o.style.display=s,this.rootBlock}_mount(e,n,r,o=!1){let s=xe({app:this});return r&&(s.scope=P(r),Ge(s.scope)),s.scope.$isRef=$,s.scope.$isComputed=U,new A({element:n,parentContext:s,component:e,isRoot:o,componentProps:r,replacementType:"replaceChildren"})}unmount(){this.rootBlock.teardown()}};function xe({parentContext:t,app:e}){let n={app:e||(t&&t.app?t.app:null),scope:P({}),blocks:[],effects:[],slots:[],templates:t?t.templates:[],effect:r=>{let o=fe(r);return n.effects.push(o),o}};return n}var Ae=(t,e={})=>{let n=t.scope,r=Object.create(n);Object.defineProperties(r,Object.getOwnPropertyDescriptors(e));let o;return o=P(new Proxy(r,{set(i,a,c,l){return l===o&&!i.hasOwnProperty(a)?Reflect.set(n,a,c):Reflect.set(i,a,c,l)}})),Ge(o),{...t,scope:{...t.scope,...o}}};function Ge(t){for(let e of Object.keys(t))typeof t[e]=="function"&&(t[e]=t[e].bind(t))}function ft(t,e){let n={};return Object.keys(e).forEach(r=>{let o=t.hasOwnProperty(r)?t[r]:e[r]?.default;n[r]=P(typeof o=="function"?o():o)}),n}var B={componentBlock:void 0},A=class{element;context;parentContext;component;provides=new Map;parentComponentBlock;componentProps;allProps;isFragment;start;end;key;constructor(e){this.isFragment=e.element instanceof HTMLTemplateElement,this.parentComponentBlock=e.parentComponentBlock,e.component?(B.componentBlock=this,this.element=re(e.component.template)):this.isFragment?this.element=e.element.content.cloneNode(!0):typeof e.element=="string"?this.element=re(e.element):(this.element=e.element.cloneNode(!0),e.element.replaceWith(this.element)),e.isRoot?this.context=e.parentContext:(this.parentContext=e.parentContext?e.parentContext:xe({}),this.parentContext.blocks.push(this),this.context=xe({parentContext:e.parentContext})),e.component&&(this.componentProps=ft(e.componentProps??{},e.component.props??{}),e.component.main&&(this.context.scope={...e.component.main(this.componentProps)||{}})),e.allProps?.forEach(n=>{n.isBind&&this.context.effect(()=>{let r;if(n.isSpread){let o=m(this.parentContext.scope,n.extractedName);R(o)&&Object.keys(o).forEach(s=>{r=o[s],this.setProp(s,r)})}else r=n.isMirror?m(this.parentContext.scope,n.extractedName):m(this.parentContext.scope,n.exp),this.setProp(n.extractedName,r)})}),this.context.slots=ye(this.element),this.context.templates=e.templates??[],this.context.slots.forEach(n=>{let r=this.context.templates.find(o=>o.targetSlotName===n.name);if(r){let o=r.node.content.cloneNode(!0);n.node.replaceWith(o)}}),this.context.scope.$isRef=$,this.context.scope.$isComputed=U,Ke(this.element,this.context),e.component&&(e.replacementType==="replace"?e.element instanceof HTMLElement&&e.element.replaceWith(this.element):e.element instanceof HTMLElement&&e.element.replaceChildren(this.element))}setProp(e,n){$(this.componentProps[e])?this.componentProps[e].value=n:this.componentProps[e]=n}insert(e,n=null){if(this.isFragment)if(this.start){let r=this.start,o;for(;r&&(o=r.nextSibling,e.insertBefore(r,n),r!==this.end);)r=o}else this.start=new Text(""),this.end=new Text(""),e.insertBefore(this.end,n),e.insertBefore(this.start,this.end),e.insertBefore(this.element,this.end);else e.insertBefore(this.element,n)}remove(){if(this.parentContext){let e=this.parentContext.blocks.indexOf(this);e>-1&&this.parentContext.blocks.splice(e,1)}if(this.start){let e=this.start.parentNode,n=this.start,r;for(;n&&(r=n.nextSibling,e.removeChild(n),n!==this.end);)n=r}else this.element.remove();this.teardown()}teardown(){this.context.blocks.forEach(e=>{e.teardown()}),this.context.effects.forEach(stop)}};function ut(t,e){return!!e.app.getComponent(t.tagName.toLowerCase())}function de(t,e){return e.every(n=>t.hasAttribute(n))?(console.warn("These directives cannot be used together on the same node:",e),console.warn("Node ignored:",t),!0):!1}function Ke(t,e){if(oe(t)){new Y({element:t,context:e});return}if(W(t)){let n,r=(i,a,c,l,f)=>{if(!de(i,[":if",":for"])&&!de(i,[":if",":teleport"])&&!de(i,[":for",":teleport"])){if(n=N(i,":scope")){let u=m(a.scope,n);typeof u=="object"&&Object.assign(a.scope,u)}if(n=N(i,":teleport"))return Me(i,n,a);if(n=N(i,":if"))return Se(i,n,a,c,l,f);if(n=N(i,":for"))return Ne(i,n,a,c,l,f);(n=N(i,":show"))&&new ee({element:i,context:a,expression:n}),(n=N(i,":ref"))&&(a.scope[n].value=i),(n=N(i,":value"))&&new te({element:i,context:a,expression:n}),(n=N(i,":html"))&&a.effect(()=>{let u=m(a.scope,n);u instanceof Element?(i.replaceChildren(),i.append(u)):i.innerHTML=u}),(n=N(i,":text"))&&a.effect(()=>{i.textContent=z(m(a.scope,n))})}},o=(i,a)=>Array.from(i.attributes).filter(c=>se(c.name)||J(c.name)||Ce(c.name)&&Te(X(c.name),a)).map(c=>({isMirror:J(c.name),isSpread:se(c.name),isBind:c.name.includes("bind"),originalName:c.name,extractedName:X(c.name),exp:c.value,value:J(c.name)?m(e.scope,X(c.name)):c.value?m(e.scope,c.value):void 0}));if(ut(t,e)){let i=e.app.getComponent(t.tagName.toLowerCase()),a=o(t,i),c=a.reduce((u,{isSpread:d,isMirror:h,extractedName:x,value:E})=>{if(d){let p=m(e.scope,x);R(p)&&Object.assign(u,p)}else h?u[x]=m(e.scope,x):u[x]=E;return u},{}),l=r(t,e,i,c,a);if(l)return l;let f=ve(t);return new A({element:t,parentContext:e,component:i,replacementType:"replace",parentComponentBlock:B.componentBlock,templates:f,componentProps:c,allProps:a}).element}let s=r(t,e);if(s)return s;Array.from(t.attributes).forEach(i=>{we(i.name)&&new Z({element:t,context:e,attr:i}),Re(i.name)&&new Q({element:t,context:e,attr:i})}),mt(t,e)}}function mt(t,e){let n=t.firstChild;for(;n;)n=Ke(n,e)||n.nextSibling}var We={};function m(t,e,n){if(e.trim())return Ue(t,`const ___value = (${e.trim()}); return ___value;`,n)}function I(t,e,n){return n=typeof n=="string"?`"${n}"`:n,Ue(t,`const ___target = (${e.trim()}); return $isRef(___target) ? ___target.value = ${n} : ___target = ${n};`,null,!1)}function Ue(t,e,n,r=!0){let o=r?dt(t):t,s=We[e]||(We[e]=ht(e));try{return s(o,n)}catch(i){console.warn(`Error evaluating expression: "${e}":`),console.error(i)}}function ht(t){try{return new Function("$data","$el",`with($data){${t}}`)}catch(e){return console.error(`${e.message} in expression: ${t}`),()=>{}}}function dt(t){let e={};for(let n in t)t.hasOwnProperty(n)&&($(t[n])?e[n]=t[n].value:e[n]=t[n]);return e}export{Ve as App,A as Block,me as RouterPlugin,xe as createContext,Ae as createScopedContext,B as current,m as evalGet,I as evalSet,Hn as inject,Fn as provide};