ladrillosjs 2.0.0-beta.5 → 2.0.0-beta.5.1

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.
Files changed (2) hide show
  1. package/dist/index.js +1 -1
  2. package/package.json +2 -1
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- const t=new DOMParser;async function e(e,n,r){const o=function(e){return t.parseFromString(e,"text/html")}(e),s=Array.from(o.querySelectorAll("script")),i=s.filter(t=>!t.src).map(t=>({content:(t.textContent??"").trim(),type:t.getAttribute("type")})).filter(t=>t.content.length>0),a=s.filter(t=>(t.getAttribute("src")||"").includes("html-proxy")&&"module"===t.getAttribute("type")),c=[...i,...(await Promise.all(a.map(async t=>{const e=t.getAttribute("src")||"";try{const t=await fetch(e);if(t.ok)return{content:(await t.text()).trim(),type:"module"}}catch(n){}return null}))).filter(t=>null!==t&&t.content.length>0)],l=s.filter(t=>{if(!t.src)return!1;const e=t.getAttribute("src")||"";return!e.includes("@vite/client")&&!e.includes("html-proxy")}).map(t=>{const e=t.getAttribute("type");let n=t.src;if(r)try{n=new URL(t.getAttribute("src")??t.src,r).toString()}catch{}return{src:n,type:e,external:t.hasAttribute("external")}}).filter(t=>t.src.length>0);s.forEach(t=>t.remove());const u=Array.from(o.querySelectorAll('link[rel="stylesheet"]')),f=u.map(t=>{let e=t.getAttribute("href")||"";const n=t.getAttribute("rel")||"stylesheet";if(r&&e&&!e.startsWith("http"))try{e=new URL(e,r).toString()}catch{}return{href:e,rel:n}}).filter(t=>t.href.length>0);u.forEach(t=>t.remove());const p=Array.from(o.querySelectorAll("style")),h=p.map(t=>t.textContent??"").join("\n").trim();p.forEach(t=>t.remove());const m=o.querySelector("template");let d;if(m){const t=document.createElement("div");t.appendChild(m.content.cloneNode(!0)),d=t.innerHTML.trim()}else d=o.body.innerHTML.trim();return{tagName:n,template:d,scripts:c,externalScripts:l,externalStyles:f,styles:h,sourcePath:r,lazy:!1}}const n=/* @__PURE__ */new Map,r=(t,e)=>{if(n.has(t))n.delete(t);else if(n.size>=25){const t=n.keys().next().value;t&&n.delete(t)}n.set(t,e)};async function o(t){if(!t)throw new Error("Path cannot be null or empty");const e=(t=>{const e=n.get(t);return e&&(n.delete(t),n.set(t,e)),e})(t);if(e)return e;try{const e=await async function(t){if(t.endsWith(".html")){const e=await fetch(t);return e.ok?{path:t,response:e}:null}const e=t.endsWith("/")?t.slice(0,-1):t;try{const t=await fetch(e);if(t.ok&&(t.headers.get("content-type")||"").includes("text/html"))return{path:e,response:t}}catch{}const n=`${e}/index.html`;try{const t=await fetch(n);if(t.ok)return{path:n,response:t}}catch{}return null}(t);if(!e)throw new Error(`Failed to fetch component from ${t}: Could not resolve path. Tried: ${t}${t.endsWith(".html")?"":` and ${t}/index.html`}`);const n=await e.response.text();return r(t,n),e.path!==t&&r(e.path,n),n}catch(o){return}}const s=/{([^}]+)}/g;function i(t){const e=t.trim(),n=function(t){const e=function(t){let e=0,n=0,r=0,o=!1,s=!1,i=!1,a=!1;for(let c=0;c<t.length;c++){const l=t[c];if(a)a=!1;else if("\\"!==l)if(s||i||"'"!==l)if(o||i||'"'!==l)if(o||s||"`"!==l){if(!(o||s||i)&&("("===l?e++:")"===l?e=Math.max(0,e-1):"["===l?n++:"]"===l?n=Math.max(0,n-1):"{"===l?r++:"}"===l&&(r=Math.max(0,r-1)),"("===l&&0===e&&0===n&&0===r))return c}else i=!i;else s=!s;else o=!o;else a=!0}return-1}(t);if(e<0)return null;const n=function(t,e){let n=0,r=!1,o=!1,s=!1,i=!1;for(let a=e;a<t.length;a++){const e=t[a];if(i)i=!1;else if("\\"!==e)if(o||s||"'"!==e)if(r||s||'"'!==e)if(r||o||"`"!==e){if(!(r||o||s))if("("===e)n++;else if(")"===e){if(n--,0===n)return a;if(n<0)return-1}}else s=!s;else o=!o;else r=!r;else i=!0}return-1}(t,e);if(n<0)return null;if(0!==t.slice(n+1).trim().length)return null;const r=a(t.slice(0,e).trim());if(!r)return null;const o=function(t){const e=[];let n="",r=0,o=0,s=0,i=!1,a=!1,c=!1,l=!1;for(let f=0;f<t.length;f++){const u=t[f];if(l)n+=u,l=!1;else if("\\"!==u)if(a||c||"'"!==u)if(i||c||'"'!==u)if(i||a||"`"!==u){if(!i&&!a&&!c&&("("===u?r++:")"===u?r=Math.max(0,r-1):"["===u?o++:"]"===u?o=Math.max(0,o-1):"{"===u?s++:"}"===u&&(s=Math.max(0,s-1)),","===u&&0===r&&0===o&&0===s)){const t=n.trim();t.length>0&&e.push(t),n="";continue}n+=u}else c=!c,n+=u;else a=!a,n+=u;else i=!i,n+=u;else n+=u,l=!0}const u=n.trim();return u.length>0&&e.push(u),e}(t.slice(e+1,n));return{calleePath:r,args:o}}(e);if(n)return{raw:e,path:n.calleePath,isFunction:!0,isExpression:!0,functionArgs:n.args};const r=a(e);return r?{raw:e,path:r,isFunction:!1,isExpression:!1}:{raw:e,path:[],isExpression:!0}}function a(t){return/^[$A-Z_][0-9A-Z_$]*(?:\s*\.\s*[$A-Z_][0-9A-Z_$]*)*$/i.test(t)?t.split(".").map(t=>t.trim()).filter(t=>t.length>0):null}function c(t){let e=t.parentElement;for(;e;){if(e.hasAttribute&&e.hasAttribute("$for"))return!0;e=e.parentElement}return!1}function l(t){let e=t.parentElement;for(;e;){if(e.hasAttribute&&e.hasAttribute("$no:bind"))return!0;e=e.parentElement}return!1}const u=["onclick","ondblclick","onmousedown","onmouseup","onmouseover","onmouseout","onmousemove","onmouseenter","onmouseleave","onkeydown","onkeyup","onkeypress","onfocus","onblur","onchange","oninput","onsubmit","onreset","onscroll","onload","onerror","ontouchstart","ontouchmove","ontouchend","ontouchcancel","ondragstart","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondrop"],f=Object.freeze(["alert","confirm","prompt","console","JSON","Math","Date","Array","Object","String","Number","Boolean","Map","Set","WeakMap","WeakSet","Symbol","BigInt","Promise","Proxy","Reflect","parseInt","parseFloat","isNaN","isFinite","Infinity","NaN","encodeURIComponent","decodeURIComponent","encodeURI","decodeURI","setTimeout","clearTimeout","setInterval","clearInterval","requestAnimationFrame","cancelAnimationFrame","requestIdleCallback","cancelIdleCallback","queueMicrotask","fetch","AbortController","AbortSignal","Headers","Request","Response","URL","URLSearchParams","navigator","location","history","localStorage","sessionStorage","crypto","document","window","globalThis","Element","HTMLElement","Event","CustomEvent","EventTarget","TextEncoder","TextDecoder","Blob","File","FileReader","FormData","Error","TypeError","RangeError","SyntaxError","ReferenceError","atob","btoa","structuredClone"]),p=Object.freeze([]),h=/* @__PURE__ */new Set(["with","eval","arguments","constructor","prototype","break","case","catch","continue","debugger","default","delete","do","else","finally","for","function","if","in","instanceof","new","return","switch","this","throw","try","typeof","var","void","while","class","const","enum","export","extends","import","super","implements","interface","let","package","private","protected","public","static","yield","null","true","false"]),m="[LadrillosJS]",d=function(){try{if(void 0!==import.meta)return!1}catch{}try{if("undefined"!=typeof globalThis&&globalThis.process?.env?.NODE_ENV)return"production"!==globalThis.process.env.NODE_ENV}catch{}return!0}(),g=()=>"undefined"!=typeof window&&"undefined"!=typeof console&&"function"==typeof console.log;let _=null;function y(){return _}function b(t,e){const n=`{${e}}`,r=t.indexOf(n);if(-1!==r)return{start:r,end:r+n.length};const o=t.indexOf(e);return-1!==o?{start:o,end:o+e.length}:null}function $(t){const e=void 0!==t?t:_;if(!e)return"";const n=[];if(e.tagName&&n.push(`<${e.tagName}>`),e.sourcePath){const t=e.sourcePath.split("/").pop()||e.sourcePath;n.push(`(${t})`)}return n.length>0?` in ${n.join(" ")}`:""}function E(t,e){return`${t}${$(e)}`}var w=/* @__PURE__ */(t=>(t[t.EXPRESSION_EVAL_FAILED=101]="EXPRESSION_EVAL_FAILED",t[t.EXPRESSION_SYNTAX_ERROR=102]="EXPRESSION_SYNTAX_ERROR",t[t.EXPRESSION_UNDEFINED_VAR=103]="EXPRESSION_UNDEFINED_VAR",t[t.EXPRESSION_NULL_ACCESS=104]="EXPRESSION_NULL_ACCESS",t[t.SCRIPT_EXTRACT_FAILED=201]="SCRIPT_EXTRACT_FAILED",t[t.SCRIPT_EXECUTION_FAILED=202]="SCRIPT_EXECUTION_FAILED",t[t.EVENT_HANDLER_FAILED=301]="EVENT_HANDLER_FAILED",t[t.DIRECTIVE_ERROR=401]="DIRECTIVE_ERROR",t[t.LOOP_ERROR=402]="LOOP_ERROR",t[t.CONDITIONAL_ERROR=403]="CONDITIONAL_ERROR",t[t.COMPONENT_LOAD_FAILED=501]="COMPONENT_LOAD_FAILED",t[t.COMPONENT_NOT_FOUND=502]="COMPONENT_NOT_FOUND",t[t.MODULE_LOAD_FAILED=601]="MODULE_LOAD_FAILED",t[t.MODULE_EXECUTION_FAILED=602]="MODULE_EXECUTION_FAILED",t))(w||{});function v(t,e){d&&(E(t,e),g())}function A(t,e){E(t,e),g()}function S(t,e,n={}){const r=n.context||_,o=n.errorCode||((i=e)instanceof SyntaxError?102:i instanceof ReferenceError?103:i instanceof TypeError&&(i.message.includes("Cannot read properties of null")||i.message.includes("Cannot read properties of undefined"))?104:101),s=function(t){if(t instanceof SyntaxError)return"Invalid expression syntax";if(t instanceof ReferenceError){const e=t.message.match(/(\w+) is not defined/);return e?`Undefined variable: "${e[1]}"`:"Undefined variable"}return t instanceof TypeError?t.message.includes("Cannot read properties of null")?"Cannot access property of null":t.message.includes("Cannot read properties of undefined")?"Cannot access property of undefined":"Type error":"Expression evaluation failed"}(e);var i;if(!d)return;const a=$(r);if(g())n.template&&b(n.template,t);else{const i=[`${m} ${s}${a}`,` Expression: ${t}`];if(r?.tagName&&i.push(` Component: <${r.tagName}>`),r?.sourcePath&&i.push(` File: ${r.sourcePath}`),n.template){const e=b(n.template,t);e&&(i.push(" Location:"),i.push(function(t,e=0,n=t.length){const r=t.split("\n");let o=0;const s=[];for(let i=0;i<r.length;i++){const t=r[i].length+1;if(o+t>=e){for(let a=Math.max(0,i-2);a<=Math.min(r.length-1,i+2);a++){const c=a+1,l=r[a],u=`${c}`.padStart(4)+" │ ";if(s.push(`${u}${l}`),a===i){const r=e-(o-t),i=Math.min(n>o?n-e:t-r,l.length-r);s.push(` │ ${"".padStart(Math.max(0,r))}${"^".repeat(Math.max(1,i))}`)}}break}o+=t}return s.join("\n")}(n.template,e.start,e.end).split("\n").map(t=>` ${t}`).join("\n")))}i.push(` Error: ${e.message}`),i.push(` Docs: ${function(t){return`https://ladrillosjs.dev/errors/${t}`}(o)}`)}}const R=/* @__PURE__ */Symbol("reactive-array"),C=["push","pop","shift","unshift","splice","sort","reverse","fill","copyWithin"];function x(t,e){return t[R]?t:new Proxy(t,{get(t,n){if(n===R)return!0;const r=t[n];return"string"==typeof n&&C.includes(n)&&"function"==typeof r?(...n)=>{const o=n.map(t=>Array.isArray(t)?x(t,e):t),s=r.apply(t,o);return e(),s}:Array.isArray(r)?x(r,e):r},set(t,n,r){const o="string"==typeof n?parseInt(n,10):NaN,s=!isNaN(o),i="length"===n,a=Array.isArray(r)?x(r,e):r;return t[n]===a||(t[n]=a,(s||i)&&e()),!0},deleteProperty(t,n){const r=delete t[n];return r&&e(),r}})}function N(t,e){for(const n of Object.keys(t)){const r=t[n];Array.isArray(r)?t[n]=x(r,e):r&&"object"==typeof r&&!Array.isArray(r)&&N(r,e)}return t}function L(t,e,n,r){const o=function(t,e){const n=/* @__PURE__ */new Map;for(const r of e)n.set(r,/* @__PURE__ */new Set);for(const r of t)for(const t of r.bindings)for(const o of e)I(t.raw,o)&&n.get(o).add(r);return n}(e,Object.keys(t));N(t,()=>{r&&r()});const s=new Proxy(t,{get:(t,e)=>t[e],set(t,s,i){const a=!(s in t);if(!a&&t[s]===i)return!0;const c=Array.isArray(i)?x(i,()=>{r&&r()}):i;return t[s]=c,a&&function(t,e,n){n.set(t,/* @__PURE__ */new Set);for(const r of e)for(const e of r.bindings)I(e.raw,t)&&n.get(t).add(r)}(s,e,o),((t,e)=>{const s=o.get(t);if(s)for(const r of s)n(r,e);r&&r()})(s,t),!0}});return s}function I(t,e){var n;return new RegExp(`\\b${n=e,n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}\\b`).test(t)}function T(t,e){return t.startsWith("http://")||t.startsWith("https://")||t.startsWith("/")?t.startsWith("/")?new URL(t,window.location.origin).href:t:new URL(t,e).href}function O(t){return{$registerComponent:function(e,n,r=!1){const o=T(n,t);return ie.registerComponent(e,o,r)},$registerComponents:function(e){const n=Array.isArray(e)?e.map(e=>({...e,path:T(e.path,t)})):Object.entries(e).map(([e,n])=>"string"==typeof n?{name:e,path:T(n,t)}:{name:e,...n,path:T(n.path,t)});return ie.registerComponents(n)},$use:function(e,n=!1){const r=function(t){return(t.split("/").pop()?.replace(/\.[^.]+$/,"")||t).replace(/([a-z])([A-Z])/g,"$1-$2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1-$2").toLowerCase()}(e),o=T(e,t);return ie.registerComponent(r,o,n)}}}const k=["$registerComponent","$registerComponents","$use"],M=O(window.location.href),P=M.$registerComponent,D=M.$registerComponents,U=M.$use;function j(){return globalThis.__ladrillosEventBus||(globalThis.__ladrillosEventBus={listeners:/* @__PURE__ */new Map,componentListeners:/* @__PURE__ */new Map}),globalThis.__ladrillosEventBus}function F(){return j().listeners}function z(){return j().componentListeners}function W(t,e){const n=F().get(t);if(n&&0!==n.size)for(const o of n)try{o.callback(e)}catch(r){}}function H(t,e,n){const r=F(),o=z();let s=r.get(t);s||(s=/* @__PURE__ */new Set,r.set(t,s));const i={callback:e,componentId:n};if(s.add(i),n){let e=o.get(n);e||(e=/* @__PURE__ */new Set,o.set(n,e)),e.add({event:t,registration:i})}return()=>{const e=F(),r=z();if(s?.delete(i),0===s?.size&&e.delete(t),n){const t=r.get(n);if(t){for(const e of t)if(e.registration===i){t.delete(e);break}0===t.size&&r.delete(n)}}}}function B(t){return{$emit:function(t,e){W(t,e)},$listen:function(e,n){return H(e,n,t)}}}const Z=["$emit","$listen"],q=t=>t instanceof ShadowRoot?t.host:t;function V(t,e,n,r){const o=Array.from(t.querySelectorAll("*"));for(const s of o)if(!X(s))for(const t of u){const o=s.getAttribute(t);if(o){s.removeAttribute(t);const i=t.slice(2),a=G(o,e,n,r);a&&s.addEventListener(i,a)}}}function X(t){if(t.hasAttribute("$for"))return!0;let e=t.parentElement;for(;e;){if(e.hasAttribute("$for"))return!0;e=e.parentElement}return!1}function G(t,e,n,r){try{const o=r?.__componentUrl,s=r?.__componentId,i=rt(o,s),a=nt(),c=["event","state","$refs",...a,...i.keys],l=Object.keys(e),u=l.filter(t=>"function"==typeof e[t]),f=l.filter(t=>"function"!=typeof e[t]),p=!0===e.__hasModuleScripts,h=p?f.length>0?`const { ${f.join(", ")} } = state;`:"":f.length>0?`let { ${f.join(", ")} } = state;`:"",m=p&&u.length>0?`const { ${u.join(", ")} } = state;`:"",d=J(n,p?u:[]),g=p?"":f.map(t=>`state.${t} = ${t};`).join(" "),_=/\bawait\b/.test(t)||/\bawait\b/.test(d)||/\basync\b/.test(d),b=o||"ladrillos-event-handler",$=_?`"use strict"; ${h} ${m} ${d} try { await (async () => { ${t} })(); } finally { ${g} }\n//# sourceURL=${b}`:`"use strict"; ${h} ${m} ${d} ${t}; ${g}\n//# sourceURL=${b}`,E=Object.getPrototypeOf(async function(){}).constructor,v=_?new E(...c,$):new Function(...c,$);return n=>{try{const o=r&&r.__refs||/* @__PURE__ */new Map,s=[n,e,o,...a.map(()=>{}),...i.values],c=v(...s);c&&"function"==typeof c.catch&&c.catch(n=>{const o={tagName:r?.tagName?.toLowerCase(),sourcePath:e.__componentUrl,instanceId:e.__componentId};S(t,n,{context:o.tagName?o:y(),errorCode:w.EVENT_HANDLER_FAILED})})}catch(o){const n={tagName:r?.tagName?.toLowerCase(),sourcePath:e.__componentUrl,instanceId:e.__componentId};S(t,o,{context:n.tagName?n:y(),errorCode:w.EVENT_HANDLER_FAILED})}}}catch(o){const n=r?.tagName?{tagName:r.tagName.toLowerCase(),sourcePath:e.__componentUrl}:null;return v(`Failed to create event handler: ${t}`,n),null}}function J(t,e=[]){const n=[],r=/(?:async\s+)?function\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*\([^)]*\)\s*\{/g;let o;for(;null!==(o=r.exec(t));){const r=o[1];if(e.includes(r))continue;const s=Y(t,o.index);s&&n.push(s)}const s=/(?:const|let)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*=\s*(?:async\s*)?\([^)]*\)\s*=>\s*\{/g;for(;null!==(o=s.exec(t));){const r=o[1];if(e.includes(r))continue;const s=o.index,i=t.indexOf("{",s+o[0].length-1),a=Y(t,s,i);a&&n.push(a)}return n.map(t=>t.trim()).join(";\n")+(n.length>0?";":"")}function Y(t,e,n){let r=0,o=e,s=!1,i="",a=!1;for(let c=n??e;c<t.length;c++){const e=t[c],n=c>0?t[c-1]:"";if('"'!==e&&"'"!==e&&"`"!==e||"\\"===n||(s?e===i&&(s=!1):(s=!0,i=e)),!s&&("{"===e&&(r++,a=!0),"}"===e&&r--,a&&0===r&&"}"===e)){o=c+1;break}}return 0!==r?null:t.slice(e,o)}function K(t){const e=/* @__PURE__ */new Map;try{const n=tt(t),r=function(t){const e=[],n=/(?:async\s+)?function\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*\(/g;let r;for(;null!==(r=n.exec(t));)e.push(r[1]);return e}(t),o=[...n,...r];if(0===o.length)return e;const s=`\n "use strict";\n ${t}\n return { ${o.join(", ")} };\n `,i=()=>()=>{},a=()=>{},c=["console","Math","JSON","Date","Array","Object","String","Number","Boolean"],l=c.map(t=>globalThis[t]),u=[...c,"$listen","$emit"],f=[...l,i,a],p=new Function(...u,s)(...f);for(const[t,h]of Object.entries(p))e.set(t,h)}catch(n){}return e}function Q(t,e,n,r,o,s){try{const i=`\n "use strict";\n ${function(t,e){if(0===e.length)return t;const n=[];let r=t.replace(/(["'`])(?:(?!\1)[^\\]|\\.)*\1/g,t=>(n.push(t),`__STRING_PLACEHOLDER_${n.length-1}__`));for(const s of e){const t=new RegExp(`\\b(let|const|var)\\s+(${et(s)})\\s*=`,"g");r=r.replace(t,`__state__.${s} ??=`)}for(const s of e){const t=new RegExp(`(?<![^.]\\.)(?<!__state__\\.)\\b${et(s)}\\b(?!\\s*[:(])`,"g");r=r.replace(t,`__state__.${s}`)}let o=r;for(let s=0;s<n.length;s++)o=o.replace(`__STRING_PLACEHOLDER_${s}__`,n[s]);return o}(t,tt(t))}\n//# sourceURL=${n||"ladrillos-component"}\n `,a=rt(n,r),c=nt(),l=["__state__","$host","$refs",...c,...a.keys],u=[e,o,s,...c.map(()=>{}),...a.values];new Function(...l,i)(...u)}catch(i){!function(t,e){const n=_;if(!d)return;const r=$(n);if(g());else{const t=[`${m} Script Error${r}`," Message: Error executing script with reactive state"];n?.tagName&&t.push(` Component: <${n.tagName}>`),n?.sourcePath&&t.push(` File: ${n.sourcePath}`),t.push(` Error: ${e.message}`)}}(0,i)}}function tt(t){const e=[],n=/(?:let|const|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*=/g;let r;for(;null!==(r=n.exec(t));)e.push(r[1]);return e}function et(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function nt(){return p.filter(t=>!h.has(t))}function rt(t,e){const n=[],r=[];for(const i of f)i in globalThis&&(n.push(i),r.push(globalThis[i]));const o=O(t||window.location.href);n.push(...k),r.push(o.$registerComponent,o.$registerComponents,o.$use);const s=B(e||"anonymous");return n.push(...Z),r.push(s.$emit,s.$listen),{keys:n,values:r}}function ot(t,e){try{const n=Object.keys(e),r=Object.values(e),o=nt(),s=[...o,...n],i=[...o.map(()=>{}),...r];return new Function(...s,`"use strict"; return ${t};`)(...i)}catch(n){return S(t,n,{context:y()}),`{${t}}`}}function st(t,e){let n=t.original;for(const r of t.bindings){const t=ot(r.raw,e),o=String(t??"");n=n.replace(`{${r.raw}}`,o)}if(t.isAttribute&&t.attributeName){const e=t.element??t.node.parentElement;e&&e.setAttribute(t.attributeName,n)}else t.node.textContent=n}function it(t,e){for(const n of t)st(n,e)}const at=/* @__PURE__ */new Map,ct=/* @__PURE__ */new Map,lt=/(?:import|export)\s+(?:[\s\S]*?\s+from\s+)?['"]([^'"]+)['"]/g,ut=/import\s*\(\s*['"]([^'"]+)['"]\s*\)/g,ft=[".ts",".tsx",".mts"];function pt(t){return t.startsWith("./")||t.startsWith("../")}function ht(t){return ft.some(e=>t.endsWith(e))}function mt(t){return!(t.startsWith("/")||t.startsWith("./")||t.startsWith("../")||t.startsWith("http://")||t.startsWith("https://")||t.startsWith("data:")||t.startsWith("blob:"))}const dt=/^(?:export\s+)?(?:let|const|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/gm;async function gt(t,e,n){if(t.external)return document.querySelector(`script[src="${t.src}"]`)?Promise.resolve(void 0):new Promise((e,n)=>{const r=document.createElement("script");r.src=t.src,t.type&&(r.type=t.type),r.onload=()=>e(void 0),r.onerror=e=>n(new Error(`Failed to load external script: ${t.src}`)),document.head.appendChild(r)});if("module"!==t.type)return document.querySelector(`script[src="${t.src}"]`)?Promise.resolve(void 0):new Promise((e,n)=>{const r=document.createElement("script");r.src=t.src,t.type&&(r.type=t.type),r.onload=()=>e(void 0),r.onerror=e=>n(new Error(`Failed to load script: ${t.src}`)),document.head.appendChild(r)});try{const r=await fetch(t.src);if(!r.ok)throw new Error(`Failed to fetch module: ${t.src}`);const o=function(t,e){let n=t;const r=[],o=[];return n=n.replace(lt,(t,n)=>{if(pt(n)){const r=new URL(n,e).href;return ht(n)&&o.push(n),t.replace(n,r)}return mt(n)&&r.push(n),t}),n=n.replace(ut,(t,n)=>{if(pt(n)){const t=new URL(n,e).href;return ht(n)&&o.push(n),`import("${t}")`}return mt(n)&&r.push(n),t}),o.length,r.length,n}(await r.text(),t.src),s=function(t){const e=function(t){const e=[];let n;for(dt.lastIndex=0;null!==(n=dt.exec(t));)e.push(n[1]);const r=/^(?:export\s+)?function\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/gm;for(;null!==(n=r.exec(t));)e.includes(n[1])||e.push(n[1]);return e}(t),n=/* @__PURE__ */new Set,r=/export\s+(?:let|const|var|function)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;let o;for(;null!==(o=r.exec(t));)n.add(o[1]);const s=/export\s*\{([^}]+)\}/g;for(;null!==(o=s.exec(t));)o[1].split(",").map(t=>t.trim().split(/\s+as\s+/)[0].trim()).forEach(t=>n.add(t));const i=e.filter(t=>!n.has(t));return 0===i.length?t:`${t}\nexport { ${i.join(", ")} };`}(function(t){const e=[];let n=t;if(n=n.replace(/import\s*\{([^}]+)\}\s*from\s*(['"][^'"]+['"])\s*;?/g,(t,n,r)=>{const o=n.split(",").map(t=>t.trim()),s=[];for(const i of o){if(!i)continue;const t=i.match(/^(\w+)\s+as\s+(\w+)$/);if(t){const[,n,r]=t,o=`__raw_${r}`;s.push(`${n} as ${o}`),e.push(`const ${r} = __wrapReactiveArray(${o}, __ladrillos_componentId);`)}else{const t=`__raw_${i}`;s.push(`${i} as ${t}`),e.push(`const ${i} = __wrapReactiveArray(${t}, __ladrillos_componentId);`)}}return`import { ${s.join(", ")} } from ${r};`}),e.length>0){const t=n.split("\n");let r=-1;for(let e=0;e<t.length;e++){const n=t[e].trim();(n.startsWith("import ")||n.startsWith("import{"))&&(r=e)}r>=0&&(t.splice(r+1,0,"","// === Reactive Import Wrappers ===",...e,"// === End Reactive Import Wrappers ===",""),n=t.join("\n"))}return n}(o)),i=function(t,e){return`\n// === LadrillosJS Framework Helpers (auto-injected) ===\nconst __ladrillos_componentId = "${t||"anonymous"}";\nconst __ladrillos_componentUrl = "${e||"unknown"}";\n\n// Global event bus (shared across all components)\nif (!globalThis.__ladrillosEventBus) {\n globalThis.__ladrillosEventBus = {\n listeners: new Map(),\n componentListeners: new Map()\n };\n}\n\n// Global state change callbacks (for reactive array updates)\nif (!globalThis.__ladrillosStateCallbacks) {\n globalThis.__ladrillosStateCallbacks = new Map();\n}\n\n// Reactive array symbol\nconst __REACTIVE_ARRAY = Symbol.for("ladrillos-reactive-array");\n\n// Array mutation methods to intercept\nconst __ARRAY_METHODS = ["push", "pop", "shift", "unshift", "splice", "sort", "reverse", "fill", "copyWithin"];\n\n// Wrap an array in a reactive proxy\nconst __wrapReactiveArray = (arr, componentId) => {\n if (!Array.isArray(arr) || arr[__REACTIVE_ARRAY]) return arr;\n \n const onMutate = () => {\n const callback = globalThis.__ladrillosStateCallbacks?.get(componentId);\n if (callback) callback();\n };\n \n return new Proxy(arr, {\n get(target, key) {\n if (key === __REACTIVE_ARRAY) return true;\n const value = target[key];\n if (typeof key === "string" && __ARRAY_METHODS.includes(key) && typeof value === "function") {\n return (...args) => {\n const result = value.apply(target, args);\n onMutate();\n return result;\n };\n }\n if (Array.isArray(value)) return __wrapReactiveArray(value, componentId);\n return value;\n },\n set(target, key, value) {\n const index = parseInt(key, 10);\n const isIndex = !isNaN(index);\n const isLength = key === "length";\n target[key] = Array.isArray(value) ? __wrapReactiveArray(value, componentId) : value;\n if (isIndex || isLength) onMutate();\n return true;\n }\n });\n};\n\nconst $emit = (eventName, data) => {\n const listeners = globalThis.__ladrillosEventBus.listeners.get(eventName);\n if (!listeners || listeners.size === 0) return;\n for (const registration of listeners) {\n try {\n registration.callback(data);\n } catch (error) {\n console.error(\`[LadrillosJS] Error in event listener for "\${eventName}":\`, error);\n }\n }\n};\n\nconst $listen = (eventName, callback) => {\n const bus = globalThis.__ladrillosEventBus;\n let listeners = bus.listeners.get(eventName);\n if (!listeners) {\n listeners = new Set();\n bus.listeners.set(eventName, listeners);\n }\n const registration = { callback, componentId: __ladrillos_componentId };\n listeners.add(registration);\n\n // Track by component ID for cleanup\n let componentRegs = bus.componentListeners.get(__ladrillos_componentId);\n if (!componentRegs) {\n componentRegs = new Set();\n bus.componentListeners.set(__ladrillos_componentId, componentRegs);\n }\n componentRegs.add({ event: eventName, registration });\n\n // Return unsubscribe function\n return () => {\n listeners?.delete(registration);\n if (listeners?.size === 0) bus.listeners.delete(eventName);\n const compRegs = bus.componentListeners.get(__ladrillos_componentId);\n if (compRegs) {\n for (const reg of compRegs) {\n if (reg.registration === registration) {\n compRegs.delete(reg);\n break;\n }\n }\n if (compRegs.size === 0) bus.componentListeners.delete(__ladrillos_componentId);\n }\n };\n};\n\n// Global refs registry (shared across all components)\n// Each component gets its own Map, keyed by component ID\nif (!globalThis.__ladrillosRefs) {\n globalThis.__ladrillosRefs = new Map();\n}\n\n// Helper to wrap refs Map in Proxy for cleaner dot notation access\nconst __createRefsProxy = (map) => new Proxy(map, {\n get(target, prop, receiver) {\n if (prop in target) {\n const value = Reflect.get(target, prop, receiver);\n return typeof value === "function" ? value.bind(target) : value;\n }\n if (typeof prop === "string") return target.get(prop);\n return undefined;\n },\n set(target, prop, value) {\n if (typeof prop === "string") { target.set(prop, value); return true; }\n return false;\n },\n has(target, prop) {\n return typeof prop === "string" ? target.has(prop) || prop in target : prop in target;\n }\n});\n\n// Get or create refs Map for this component (wrapped in Proxy)\nif (!globalThis.__ladrillosRefs.has(__ladrillos_componentId)) {\n globalThis.__ladrillosRefs.set(__ladrillos_componentId, __createRefsProxy(new Map()));\n}\n\n// $refs for this component - supports both $refs.inputEl and $refs.get("inputEl")\nconst $refs = globalThis.__ladrillosRefs.get(__ladrillos_componentId);\n\n// Helper to resolve relative paths against component URL\nconst __resolvePath = (path) => {\n if (path.startsWith("http://") || path.startsWith("https://") || path.startsWith("/")) {\n return path.startsWith("/") ? new URL(path, window.location.origin).href : path;\n }\n return new URL(path, __ladrillos_componentUrl).href;\n};\n\n// Helper to convert filename to tag name\nconst __filenameToTagName = (path) => {\n const filename = path.split("/").pop()?.replace(/\\.[^.]+$/, "") || path;\n return filename.replace(/([a-z])([A-Z])/g, "$1-$2").replace(/[_\\s]+/g, "-").toLowerCase();\n};\n\n// $registerComponent - Register a child component\nconst $registerComponent = async (name, path, useShadowDOM = false) => {\n const resolvedPath = __resolvePath(path);\n return globalThis.ladrillosjs.registerComponent({ name, path: resolvedPath, useShadowDOM });\n};\n\n// $registerComponents - Register multiple components at once\nconst $registerComponents = async (configs) => {\n const resolvedConfigs = configs.map(config => ({\n ...config,\n path: __resolvePath(config.path)\n }));\n return globalThis.ladrillosjs.registerComponents(resolvedConfigs);\n};\n\n// $use - Shorthand for $registerComponent with auto-derived tag name\nconst $use = async (path, useShadowDOM = false) => {\n const tagName = __filenameToTagName(path);\n return $registerComponent(tagName, path, useShadowDOM);\n};\n\n// === End Framework Helpers ===\n\n`}(e,n||t.src),a=new Blob([i+s],{type:"text/javascript"}),c=URL.createObjectURL(a);try{return await(0,eval)(`import("${c}")`)}finally{URL.revokeObjectURL(c)}}catch(r){throw r}}const _t=/* @__PURE__ */new Map;async function yt(t){if(ct.has(t))return ct.get(t);const e=(async()=>{try{return await(0,eval)(`import("${t}")`)}catch(e){throw e}})();return ct.set(t,e),e}function bt(t,e){return e&&Array.isArray(t)?x(t,e):t}async function $t(t,e,n,r,o,s){if("module"!==t.type)throw new Error('executeModuleScriptWithReactivity only handles type="module" scripts');const i=t.content,a=await async function(t,e,n){const r=function(t){const e=[],n=/import\s+(?:(\{[^}]+\})|(\*\s+as\s+\w+)|(\w+)(?:\s*,\s*(\{[^}]+\}))?)?\s*(?:from\s+)?['"]([^'"]+)['"]/g;let r;for(;null!==(r=n.exec(t));){const[t,n,o,s,i,a]=r,c={statement:t,specifier:a,imports:[],isDefault:!1,isNamespace:!1,isSideEffect:!1};if(n||o||s||(c.isSideEffect=!0),s&&(c.isDefault=!0,c.imports.push({imported:"default",local:s})),o){c.isNamespace=!0;const t=o.replace(/\*\s+as\s+/,"").trim();c.imports.push({imported:"*",local:t})}const l=n||i;if(l){const t=l.slice(1,-1).split(",").map(t=>t.trim()).filter(Boolean);for(const e of t){const t=e.match(/(\w+)\s+as\s+(\w+)/);t?c.imports.push({imported:t[1],local:t[2]}):c.imports.push({imported:e,local:e})}}e.push(c)}return e}(t),o={};for(const i of r){if(i.isSideEffect){const t=pt(i.specifier)?new URL(i.specifier,e).href:i.specifier;await yt(t);continue}const t=pt(i.specifier)?new URL(i.specifier,e).href:i.specifier;try{const e=await yt(t);for(const t of i.imports){let r;r="*"===t.imported?e:"default"===t.imported?e.default:e[t.imported],o[t.local]=bt(r,n)}}catch(s){}}return o}(i,e,s),c=function(t){return t.replace(/import\s+(?:(?:\{[^}]+\}|\*\s+as\s+\w+|\w+)(?:\s*,\s*\{[^}]+\})?\s+from\s+)?['"][^'"]+['"]\s*;?/g,"").trim()}(i),{variables:l,functions:u}=function(t){const e=[],n=[],r=t.replace(/`[^`]*`/g,t=>" ".repeat(t.length)).replace(/"(?:[^"\\]|\\.)*"/g,t=>" ".repeat(t.length)).replace(/'(?:[^'\\]|\\.)*'/g,t=>" ".repeat(t.length)).replace(/\/\*[\s\S]*?\*\//g,t=>" ".repeat(t.length)).replace(/\/\/[^\n]*/g,t=>" ".repeat(t.length));let o=0,s=0;for(;s<r.length;){const t=r[s];if("{"!==t)if("}"!==t){if(0===o){const t=r.slice(s).match(/^(?:async\s+)?function\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*\(/);if(t){n.push(t[1]),s+=t[0].length;continue}const o=r.slice(s).match(/^(?:let|const|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*=/);if(o){e.push(o[1]),s+=o[0].length;continue}}s++}else o--,s++;else o++,s++}return{variables:e,functions:n}}(c),f=function(t,e){if(0===e.length)return t;const n=[];let r=t.replace(/(["'`])(?:(?!\1)[^\\]|\\.)*\1/g,t=>(n.push(t),`__STRING_PLACEHOLDER_${n.length-1}__`));for(const s of e){const t=new RegExp(`\\b(let|const|var)\\s+(${Et(s)})\\s*=`,"g");r=r.replace(t,`__state__.${s} =`)}for(const s of e){const t=new RegExp(`(?<![^.]\\.)(?<!__state__\\.)\\b${Et(s)}\\b(?!\\s*[:(])`,"g");r=r.replace(t,`__state__.${s}`)}let o=r;for(let s=0;s<n.length;s++)o=o.replace(`__STRING_PLACEHOLDER_${s}__`,n[s]);return o}(c,l),p=Object.keys(a),h=Object.values(a),m=`\n "use strict";\n ${f}\n ${u.length>0?`return { ${u.join(", ")} };`:"return {};"}\n `;try{const t=["console","alert","Math","JSON","Date","Array","Object","String","Number","Boolean","Promise","setTimeout","setInterval","clearTimeout","clearInterval"],s=t.map(t=>globalThis[t]),i=["$refs","__state__"],a=[r||/* @__PURE__ */new Map,o||{}],c=O(e),l=[c.$registerComponent,c.$registerComponents,c.$use],u=B(n||"anonymous"),f=[u.$emit,u.$listen],d=[...p,...t,...k,...Z,...i],g=[...h,...s,...l,...f,...a],_=new Function(...d,m)(...g);return{...o||{},..._||{}}}catch(d){throw d}}function Et(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}const wt="$for",vt="$if",At="$else",St="$else-if",Rt="$show",Ct="$bind",xt="$ref",Nt=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]+)$/,Lt=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,It=/^\(|\)$/g;function Tt(t){return t.replace(/\$/g,"\\$")}function Ot(t){const e=t.trim();return e.startsWith("{")&&e.endsWith("}")?e.slice(1,-1).trim():e}function kt(t){const e=t.match(Nt);if(!e)return null;let n,[,r,o]=e;r=r.trim(),o=o.trim();const s=o.match(/\s+track\s+by\s+(.+)$/i);s&&(n=s[1].trim(),o=o.slice(0,s.index).trim());const i=r.replace(It,"").trim(),a=i.match(Lt);let c,l,u;return a?(c=i.replace(Lt,"").trim(),l=a[1]?.trim(),u=a[2]?.trim()):c=i,{item:c,index:l||u,key:n,array:o}}function Mt(t,e,n,r,o,s){return t.removeAttribute(vt),t.removeAttribute(St),t.removeAttribute(At),{element:t,condition:e,type:n,placeholder:r,group:[],originalParent:o,nextSibling:s}}function Pt(t,e){let n=t.parentElement;for(;n;){if(n.hasAttribute(wt))return!0;n=n.parentElement}return!1}function Dt(t,e,n){for(const a of t.renderedElements)a.remove();t.renderedElements=[];const r=n(t.arrayName,e);if(!r||null==(o=r)||!Array.isArray(o)&&"function"!=typeof o[Symbol.iterator]&&"object"!=typeof o)return;var o;const s=Array.from(r),i=document.createDocumentFragment();s.forEach((r,o)=>{const s=t.template.cloneNode(!0),a=e.__scriptContent,c={...e,[t.itemName]:r,__reactiveState__:e,__scriptContent__:a||"",__componentUrl__:e.__componentUrl||""};t.indexName&&(c[t.indexName]=o),Ut(s,c,n),i.appendChild(s),t.renderedElements.push(s)}),t.placeholder.parentNode?.insertBefore(i,t.placeholder.nextSibling)}function Ut(t,e,n){for(const i of Array.from(t.attributes))if(i.value.includes("{")){const t=i.value.replace(/\{([^}]+)\}/g,(t,r)=>{const o=n(r.trim(),e);return String(o??"")});i.value=t}!function(t,e){for(const n of u){const r=t.getAttribute(n);if(r){t.removeAttribute(n);const o=n.slice(2),s=jt(r,e);s&&t.addEventListener(o,s)}}}(t,e);const r=document.createTreeWalker(t,NodeFilter.SHOW_TEXT),o=[];let s;for(;s=r.nextNode();)s.textContent?.includes("{")&&o.push(s);for(const i of o)i.textContent=i.textContent.replace(/\{([^}]+)\}/g,(t,r)=>{const o=n(r.trim(),e);return String(o??"")});for(const i of Array.from(t.children))Ut(i,e,n)}function jt(t,e){try{const n=e.__reactiveState__,r=e.__scriptContent__||"",o=Object.keys(e).filter(t=>!t.startsWith("__")),s=n?Object.keys(n).filter(t=>!t.startsWith("__")&&"function"!=typeof n[t]):[],i=o.filter(t=>!s.includes(t)&&"function"!=typeof e[t]),a=r.trim().length>0,c=o.filter(t=>"function"==typeof e[t]),l=n&&!0===n.__hasModuleScripts;let u="",f="";l?f=c.length>0?`const { ${c.join(", ")} } = context;`:"":a?u=J(r,[]):f=c.length>0?`const { ${c.join(", ")} } = context;`:"";const p=i.length>0?`const { ${i.join(", ")} } = context;`:"",h=n&&s.length>0?"reactiveState":"context",m=s.length>0?`let { ${s.join(", ")} } = ${h};`:"",d=!l&&n&&s.length>0?s.map(t=>`reactiveState.${t} = ${t};`).join(" "):"",g=B(e.__componentId__||n?.__componentId||"anonymous"),_=new Function("event","context","reactiveState","$emit","$listen",`"use strict";\n ${p}\n ${m}\n ${f}\n ${u}\n ${t};\n ${d}`);return t=>{try{_(t,e,n,g.$emit,g.$listen)}catch(r){}}}catch(n){return null}}function Ft(t,e,n){for(const r of t)r.element.parentNode&&r.element.remove();for(const r of t){let t=!1;if("else"===r.type)t=!0;else{const o=n(r.condition,e);t=Boolean(o)}if(t){r.placeholder.parentNode?.insertBefore(r.element,r.placeholder.nextSibling);break}}}function zt(t,e,n,r){const o=t.element,{raw:s,path:i,isContentEditable:a}=t,c=n(s,e);Wt(o,c,a);const l=i[0];r.has(l)||r.set(l,[]),r.get(l).push({element:o,path:i,isContentEditable:a}),s===l||r.has(s)||r.set(s,[]),s!==l&&r.get(s).push({element:o,path:i,isContentEditable:a});const u=function(t){if(t instanceof HTMLSelectElement)return"change";if(t instanceof HTMLInputElement){const e=t.type.toLowerCase();if("checkbox"===e||"radio"===e)return"change"}return"input"}(o);let f=!1;o.__isUpdatingFromState=()=>f,o.__setUpdatingFromState=t=>{f=t},o.addEventListener(u,()=>{if(f)return;const t=function(t,e){if(e)return t.textContent||"";if(t instanceof HTMLInputElement){const e=t.type.toLowerCase();return"checkbox"===e?t.checked:"number"===e||"range"===e?t.valueAsNumber:t.value}return t instanceof HTMLSelectElement?t.multiple?Array.from(t.selectedOptions).map(t=>t.value):t.value:t instanceof HTMLTextAreaElement?t.value:t.value??""}(o,a);!function(t,e,n){let r=t;for(let o=0;o<e.length-1;o++){const t=e[o];t in r&&"object"==typeof r[t]||(r[t]={}),r=r[t]}r[e[e.length-1]]=n}(e,i,t)})}function Wt(t,e,n){if(n)t.textContent=String(e??"");else{if(t instanceof HTMLInputElement)return void("checkbox"===t.type.toLowerCase()?t.checked=Boolean(e):t.value=String(e??""));t instanceof HTMLSelectElement||t instanceof HTMLTextAreaElement?t.value=String(e??""):t.value=e}}function Ht(t,e){const{tagName:n,template:r,scripts:o,externalScripts:a,externalStyles:u,styles:f,sourcePath:p}=t,h=tt(o.map(t=>t.content).join("\n"));class m extends HTMLElement{static get observedAttributes(){return h}state={};_root=null;_initialized=!1;_componentId=`${n}-${Math.random().toString(36).slice(2)}`;_directives=null;_evaluator=null;_updateBoundInputs=null;constructor(){super()}async connectedCallback(){if(this._initialized)return;var t;this._initialized=!0,t={tagName:n,sourcePath:p,instanceId:this._componentId},_=t,this._root=e?this.attachShadow({mode:"open"}):this;const{bindings:h}=((t,e)=>{t.innerHTML=e;const n=function(t){const e=[],n=document.createTreeWalker(t,NodeFilter.SHOW_TEXT,null);let r;for(;r=n.nextNode();){if(c(r)||l(r))continue;const t=[...r.textContent.matchAll(s)];if(t.length>0){const n=r.textContent,o=t.map(t=>i(t[1].trim()));e.push({node:r,bindings:o,original:n})}}const o=function(t){const e=[],n=["$if","$else","$else-if","$for","$show","$bind","$ref","$no:bind"],r=Array.from(t.querySelectorAll("*"));for(const o of r)if(!(o.hasAttribute("$for")||c(o)||o.hasAttribute("$no:bind")||l(o)))for(const t of Array.from(o.attributes)){if(n.includes(t.name))continue;const r=[...t.value.matchAll(s)];if(r.length>0){const n=document.createTextNode(t.value),s=r.map(t=>i(t[1].trim()));e.push({node:n,bindings:s,original:t.value,isAttribute:!0,attributeName:t.name,element:o})}}return e}(t);return e.push(...o),e}(t);return{bindings:n,twoWayBindings:[],conditionals:[],loops:[]}})(this._root,r);((t,e,n)=>{if(!e)return;const r=document.createElement("style");r.textContent=e,n?t.appendChild(r):document.head.appendChild(r)})(this._root,f,e);const m=this._getAttributeOverrides(),d=o.filter(t=>"module"!==t.type),g=o.some(t=>"module"===t.type),y=new Proxy(/* @__PURE__ */new Map,{get(t,e,n){if(e in t){const r=Reflect.get(t,e,n);return"function"==typeof r?r.bind(t):r}if("string"==typeof e)return t.get(e)},set:(t,e,n)=>"string"==typeof e&&(t.set(e,n),!0),has:(t,e)=>"string"==typeof e&&t.has(e)||e in t});if(function(t,e){const n=Array.from(t.querySelectorAll(`[${Tt(xt)}]`));for(const r of n){const t=r.getAttribute(xt);t&&e.set(t,r)}}(this._root,y),u&&u.length>0&&await async function(t,e,n){for(const o of t)if(n&&e)try{let t=_t.get(o.href);if(!t){const e=await fetch(o.href);if(!e.ok)continue;t=await e.text(),_t.set(o.href,t)}const n=document.createElement("style");n.textContent=t,n.setAttribute("data-external-href",o.href),e.insertBefore(n,e.firstChild)}catch(r){}else{if(document.querySelector(`link[href="${o.href}"]`))continue;await new Promise(t=>{const e=document.createElement("link");e.rel=o.rel||"stylesheet",e.href=o.href,e.onload=()=>t(),e.onerror=()=>{t()},document.head.appendChild(e)})}}(u,this._root,e),a.length>0&&await async function(t){const e=t.filter(t=>t.external);for(const r of e)try{await gt(r)}catch(n){}}(a),this.state=await async function(t,e,n,r={},o,s=!1,i,a,c){const l=q(t),u={},f=e.map(t=>t.content).join("\n");for(const h of e){const t=K(h.content);for(const[e,n]of t)u[e]=n}for(const[h,m]of Object.entries(r))u[h]=m;u.__scriptContent=f,u.__componentUrl=i,u.__componentId=a;const p=L(u,n,(t,e)=>st(t,e),o);for(const h of e)Q(h.content,p,i,a,l,c);return l.__state=p,l.__scriptContent=f,l.__componentUrl=i,l.__componentId=a,s||(V(t,p,f,l),it(n,p)),p}(this._root,d,h,m,()=>this._updateDirectives(),g,p,this._componentId,y),"undefined"!=typeof globalThis&&(globalThis.__ladrillosStateCallbacks||(globalThis.__ladrillosStateCallbacks=/* @__PURE__ */new Map),globalThis.__ladrillosStateCallbacks.set(this._componentId,()=>this._updateDirectives())),p){const t=await async function(t,e,n,r,o,s,i){const a={},c=t.filter(t=>"module"===t.type),l=e.filter(t=>"module"===t.type),u=e.filter(t=>"module"!==t.type);for(const p of u)try{await gt(p,r,n)}catch(f){}for(const p of l)try{const t=await gt(p,r,n);if(t&&"object"==typeof t)for(const[e,n]of Object.entries(t))"default"!==e&&(a[e]=n,s&&(s[e]=n))}catch(f){}for(const p of c)try{const t=await $t(p,n,r,o,s,i);Object.assign(a,t)}catch(f){}return a}(o,a,p,this._componentId,y,this.state,()=>this._updateDirectives());(g||a.length>0)&&(this.state.__hasModuleScripts=!0);for(const[e,n]of Object.entries(t))"function"==typeof n&&(this.state[e]=n)}if(g&&function(t,e,n){const r=q(t);V(t,n,r.__scriptContent||"",r),it(e,n)}(this._root,h,this.state),this._evaluator=ot,this._directives=function(t,e){const n={loops:[],conditionals:[],twoWayBindings:[],refs:e,showElements:[]};return function(t,e){const n=Array.from(t.querySelectorAll(`[${Tt(xt)}]`));for(const r of n){const t=r.getAttribute(xt);t&&(e.refs.set(t,r),r.removeAttribute(xt))}}(t,n),function(t,e){const n=Array.from(t.querySelectorAll(`[${Tt(wt)}]`));for(const r of n){const n=r.getAttribute(wt);if(!n)continue;const o=kt(n);if(!o)continue;const s=document.createComment(` $for: ${n} `),i=r.parentElement||t;i.insertBefore(s,r),r.remove(),r.removeAttribute(wt);const a={template:r,expression:n,itemName:o.item,indexName:o.index,arrayName:o.array,keyAttribute:o.key,placeholder:s,renderedElements:[],originalParent:i};e.loops.push(a)}}(t,n),function(t,e){const n=Array.from(t.querySelectorAll(`[${Tt(vt)}]`));for(const r of n){if(Pt(r))continue;const n=[],o=Ot(r.getAttribute(vt)),s=document.createComment(` $if: ${o} `),i=r.parentElement||t,a=r.nextSibling;i.insertBefore(s,r),n.push(Mt(r,o,"if",s,i,a));let c=r.nextElementSibling;for(;c;){if(!c.hasAttribute(St)){if(c.hasAttribute(At)){n.push(Mt(c,"","else",s,i,c.nextSibling)),c.remove();break}break}{const t=Ot(c.getAttribute(St)),e=c.nextElementSibling;n.push(Mt(c,t,"else-if",s,i,c.nextSibling)),c.remove(),c=e}}r.remove();for(const t of n)t.group=n;e.conditionals.push(n)}}(t,n),function(t,e){const n=Array.from(t.querySelectorAll(`[${Tt(Rt)}]`));for(const r of n){const t=r.getAttribute(Rt);if(!t)continue;const n=Ot(t);if(Pt(r))continue;const o=r;e.showElements.push({element:o,expression:n,originalDisplay:o.style.display||""}),r.removeAttribute(Rt)}}(t,n),function(t,e){const n=Array.from(t.querySelectorAll(`[${Tt(Ct)}]`));for(const r of n){const t=r.getAttribute(Ct);if(!t)continue;if(Pt(r))continue;const n=t.split("."),o=r.hasAttribute("contenteditable"),s={element:r,path:n,raw:t,isContentEditable:o};e.twoWayBindings.push(s),r.removeAttribute(Ct)}}(t,n),n}(this._root,y),"undefined"!=typeof globalThis){globalThis.__ladrillosRefs||(globalThis.__ladrillosRefs=/* @__PURE__ */new Map);let t=globalThis.__ladrillosRefs.get(this._componentId);t||(t=/* @__PURE__ */new Map,globalThis.__ladrillosRefs.set(this._componentId,t));for(const[e,n]of this._directives.refs)t.set(e,n)}this.refs=this._directives.refs,this.__refs=this._directives.refs,this._updateDirectives(),this._directives.twoWayBindings.length>0&&(this._updateBoundInputs=function(t,e,n){const r=/* @__PURE__ */new Map;for(const o of t)zt(o,e,n,r);return t=>{!function(t,e,n,r){const o=r?[r]:Array.from(t.keys());for(const s of o){const r=t.get(s);if(r)for(const t of r){const{element:r,path:o,isContentEditable:s}=t,i=n(o.join("."),e),a=r.__setUpdatingFromState;a&&a(!0),Wt(r,i,s),a&&queueMicrotask(()=>a(!1))}}}(r,e,n,t)}}(this._directives.twoWayBindings,this.state,this._evaluator)),this.dispatchEvent(new CustomEvent("ladrillos:ready",{bubbles:!0,composed:!0,detail:{state:this.state,refs:this._directives.refs}}))}disconnectedCallback(){!function(t){const e=at.get(t);if(e){for(const t of e)URL.revokeObjectURL(t);at.delete(t)}}(this._componentId),function(t){const e=F(),n=z(),r=n.get(t);if(r){for(const{event:t,registration:n}of r){const r=e.get(t);r&&(r.delete(n),0===r.size&&e.delete(t))}n.delete(t)}}(this._componentId),"undefined"!=typeof globalThis&&globalThis.__ladrillosStateCallbacks?.delete(this._componentId),this._initialized=!1}attributeChangedCallback(t,e,n){if(e===n)return;if(!this._initialized)return;const r=this._parseAttributeValue(n);this.state[t]=r}adoptedCallback(){}_updateDirectives(){this._directives&&this._evaluator&&(this._directives.loops.length>0&&function(t,e,n){for(const r of t)Dt(r,e,n)}(this._directives.loops,this.state,this._evaluator),this._directives.conditionals.length>0&&function(t,e,n){for(const r of t)Ft(r,e,n)}(this._directives.conditionals,this.state,this._evaluator),this._directives.showElements.length>0&&function(t,e,n){for(const r of t){const t=n(r.expression,e),o=Boolean(t);r.element.style.display=o?r.originalDisplay:"none"}}(this._directives.showElements,this.state,this._evaluator),this._updateBoundInputs&&this._updateBoundInputs())}_getAttributeOverrides(){const t={};for(const e of Array.from(this.attributes))this._isReservedAttribute(e.name)||(t[e.name]=this._parseAttributeValue(e.value));return t}_isReservedAttribute(t){return["id","class","style","slot","part","is","tabindex","title","lang","dir","hidden","draggable","contenteditable"].includes(t.toLowerCase())||t.startsWith("data-")}_parseAttributeValue(t){if(null===t)return null;if(""===t)return!0;if("true"===t)return!0;if("false"===t)return!1;const e=Number(t);if(!isNaN(e)&&""!==t.trim())return e;try{return JSON.parse(t)}catch{return t}}get root(){return this._root}}return m}function Bt(t,e){const{tagName:n}=t;if(!customElements.get(n)){const r=Ht(t,e);customElements.define(n,r)}}const Zt=globalThis.requestIdleCallback||(t=>setTimeout(t,1)),qt=globalThis.cancelIdleCallback||(t=>clearTimeout(t)),Vt=(t=1e4)=>e=>{const n=Zt(e,{timeout:t});return()=>qt(n)},Xt=t=>(e,n)=>{if(function(t){const{top:e,left:n,bottom:r,right:o}=t.getBoundingClientRect(),{innerHeight:s,innerWidth:i}=window;return(e>0&&e<s||r>0&&r<s)&&(n>0&&n<i||o>0&&o<i)}(n))return void e();const r=new IntersectionObserver(t=>{for(const n of t)if(n.isIntersecting){r.disconnect(),e();break}},t);return r.observe(n),()=>r.disconnect()},Gt=t=>e=>{if(!t)return void e();const n=matchMedia(t);if(!n.matches){const t=()=>e();return n.addEventListener("change",t,{once:!0}),()=>n.removeEventListener("change",t)}e()},Jt=(t=["click","focusin"])=>{const e="string"==typeof t?[t]:t;return(t,n)=>{let r=!1;const o=e=>{r||(r=!0,s(),t(),queueMicrotask(()=>{e.target&&e.target instanceof Element&&e.target.dispatchEvent(new e.constructor(e.type,e))}))},s=()=>{for(const t of e)n.removeEventListener(t,o)};for(const i of e)n.addEventListener(i,o,{once:!0,passive:!0});return s}},Yt=(t=0)=>e=>{const n=setTimeout(e,t);return()=>clearTimeout(n)},Kt=Xt({rootMargin:"100px"}),Qt=/* @__PURE__ */new Map;let te;const ee=/* @__PURE__ */new Map,ne=/* @__PURE__ */new Set,re=/* @__PURE__ */new Map;function oe(t,e,n,r){var o;re.set(t,{name:t,absolutePath:e,useShadowDOM:n,strategy:r}),customElements.get(t)||customElements.define(t,(o=t,class extends HTMLElement{teardown;isLoading=!1;isUpgraded=!1;connectedCallback(){if(this.hasAttribute("eager"))return void this.triggerLoad();const t=re.get(o);t?this.teardown=t.strategy(()=>this.triggerLoad(),this):this.triggerLoad()}disconnectedCallback(){this.teardown?.(),this.teardown=void 0}async triggerLoad(){if(!this.isLoading&&!this.isUpgraded){this.isLoading=!0,this.teardown?.(),this.teardown=void 0;try{const t=await se(o);this.isUpgraded=!0,this.upgradeToRealComponent(t)}catch(t){A(`Failed to load lazy component "<${o}>"`,{tagName:o}),this.isLoading=!1}}}upgradeToRealComponent(t){const e=document.createElement(t);for(const n of Array.from(this.attributes))"eager"!==n.name&&"tabindex"!==n.name&&e.setAttribute(n.name,n.value);this.parentNode?this.parentNode.replaceChild(e,this):A("No parent node for placeholder - cannot upgrade lazy component",{tagName:o})}}))}async function se(t){const n=function(t){return`${t}--loaded`}(t);if(ne.has(t))return n;if(Qt.has(t))return await Qt.get(t),n;const r=re.get(t);if(!r)throw new Error(`Lazy component "${t}" not registered`);const s=(async()=>{const s=await o(r.absolutePath);if(!s)throw new Error(`Failed to fetch component source for "${t}"`);const i=await e(s,t,r.absolutePath);te[t]=i;const a=Ht(i,r.useShadowDOM);return customElements.get(n)||customElements.define(n,a),ne.add(t),ee.set(t,{component:i,useShadowDOM:r.useShadowDOM}),i})();Qt.set(t,s);try{return await s,n}finally{Qt.delete(t)}}const ie=new class{components;constructor(){var t;this.components={},t=this.components,te=t}async registerComponent(t,n,r=!0,s=!1){if(this.components[t])return void v(`Component with name "<${t}>" is already registered.`);const i=new URL(n,window.location.href).href;if(s)oe(t,i,r,!0===s?Kt:s);else try{const n=await o(i),s=await e(n||"",t,i);this.components[t]=s,Bt(s,r)}catch(a){A(`Error registering component "<${t}>"`,{tagName:t,sourcePath:n})}}async registerComponents(t){const n=Array.isArray(t)?t:Object.entries(t).map(([t,e])=>"string"==typeof e?{name:t,path:e}:{name:t,...e}),r={success:[],failed:[],skipped:[]},s=[],i=[];for(const e of n){if(this.components[e.name]){r.skipped.push(e.name);continue}const t=new URL(e.path,window.location.href).href,n={...e,absolutePath:t};e.lazy?s.push(n):i.push(n)}for(const e of s)try{const t=!0===e.lazy?Kt:e.lazy,n=e.useShadowDOM??!0;oe(e.name,e.absolutePath,n,t),r.success.push(e.name)}catch(l){r.failed.push({name:e.name,error:l instanceof Error?l:new Error(String(l))})}if(0===i.length)return r;const a=await Promise.allSettled(i.map(async t=>({config:t,source:await o(t.absolutePath)}))),c=await Promise.allSettled(a.map(async(t,n)=>{if("rejected"===t.status)throw t.reason;const{config:r,source:o}=t.value;if(!o)throw new Error(`Failed to fetch component source from ${r.absolutePath}`);return{config:r,component:await e(o,r.name,r.absolutePath)}}));for(let e=0;e<c.length;e++){const t=c[e],n=i[e];if("rejected"===t.status){r.failed.push({name:n.name,error:t.reason instanceof Error?t.reason:new Error(String(t.reason))});continue}const{component:o}=t.value,s=n.useShadowDOM??!0;this.components[n.name]=o;try{Bt(o,s),r.success.push(n.name)}catch(l){r.failed.push({name:n.name,error:l instanceof Error?l:new Error(String(l))}),delete this.components[n.name]}}return r}async loadLazyComponent(t){return async function(t){return re.has(t)&&await se(t),te[t]}(t)}},ae=(t,e,n,r)=>ie.registerComponent(t,e,n,r),ce=t=>ie.registerComponents(t),le=t=>ie.loadLazyComponent(t),ue={registerComponent:ae,registerComponents:ce,loadLazyComponent:le,$registerComponent:P,$registerComponents:D,$use:U,$emit:W,$listen:H,lazyOnIdle:Vt,lazyOnVisible:Xt,lazyOnMedia:Gt,lazyOnInteraction:Jt,lazyOnDelay:Yt};export{W as $emit,H as $listen,P as $registerComponent,D as $registerComponents,U as $use,ue as default,Yt as lazyOnDelay,Vt as lazyOnIdle,Jt as lazyOnInteraction,Gt as lazyOnMedia,Xt as lazyOnVisible,le as loadLazyComponent,ae as registerComponent,ce as registerComponents};
1
+ const e=/{([^}]+)}/g,t=new DOMParser;async function n(n,r,o){const s=function(e){return t.parseFromString(e,"text/html")}(n),i=Array.from(s.querySelectorAll("script")),a=i.filter(e=>!e.src).map(e=>({content:(e.textContent??"").trim(),type:e.getAttribute("type")})).filter(e=>e.content.length>0),c=i.filter(e=>(e.getAttribute("src")||"").includes("html-proxy")&&"module"===e.getAttribute("type")),l=[...a,...(await Promise.all(c.map(async e=>{const t=e.getAttribute("src")||"";try{const e=await fetch(t);if(e.ok)return{content:(await e.text()).trim(),type:"module"}}catch(n){}return null}))).filter(e=>null!==e&&e.content.length>0)],u=i.filter(e=>{if(!e.src)return!1;const t=e.getAttribute("src")||"";return!t.includes("@vite/client")&&!t.includes("html-proxy")}).map(e=>{const t=e.getAttribute("type");let n=e.src;if(o)try{n=new URL(e.getAttribute("src")??e.src,o).toString()}catch{}return{src:n,type:t,external:e.hasAttribute("external")}}).filter(e=>e.src.length>0);i.forEach(e=>e.remove());const f=Array.from(s.querySelectorAll('link[rel="stylesheet"]')),p=f.map(e=>{let t=e.getAttribute("href")||"";const n=e.getAttribute("rel")||"stylesheet";if(o&&t&&!t.startsWith("http"))try{t=new URL(t,o).toString()}catch{}return{href:t,rel:n}}).filter(e=>e.href.length>0);f.forEach(e=>e.remove());const h=Array.from(s.querySelectorAll("style")),d=h.map(e=>e.textContent??"").join("\n").trim();h.forEach(e=>e.remove());const m=s.querySelector("template");let g;if(m){const e=document.createElement("div");e.appendChild(m.content.cloneNode(!0)),g=e.innerHTML.trim()}else g=s.body.innerHTML.trim();const _=function(t){const n=/* @__PURE__ */new Set,r=function(e){const t=/* @__PURE__ */new Set,n=/\$for\s*=\s*["']([^"']+)["']/g;let r;for(;null!==(r=n.exec(e));){const e=r[1].trim(),n=e.match(/^\(\s*([a-zA-Z_$][a-zA-Z0-9_$]*)\s*,\s*([a-zA-Z_$][a-zA-Z0-9_$]*)\s*\)\s+in\s+/);if(n){t.add(n[1]),t.add(n[2]);continue}const o=e.match(/^([a-zA-Z_$][a-zA-Z0-9_$]*)\s+in\s+/);o&&t.add(o[1])}return t}(t),o=t.matchAll(e);for(const e of o){const t=e[1].trim().match(/^([a-zA-Z_$][a-zA-Z0-9_$]*)/);if(t){const e=t[1];["true","false","null","undefined","new","this","typeof","instanceof","void","delete","in","of","if","else","for","while","do","switch","case","break","continue","return","throw","try","catch","finally","function","class","const","let","var","Math","Date","JSON","Array","Object","String","Number","Boolean","console","window","document"].includes(e)||r.has(e)||n.add(e)}}return Array.from(n)}(g);return{tagName:r,template:g,scripts:l,externalScripts:u,externalStyles:p,styles:d,sourcePath:o,lazy:!1,templateBindings:_}}const r=/* @__PURE__ */new Map,o=(e,t)=>{if(r.has(e))r.delete(e);else if(r.size>=25){const e=r.keys().next().value;e&&r.delete(e)}r.set(e,t)};async function s(e){if(!e)throw new Error("Path cannot be null or empty");const t=(e=>{const t=r.get(e);return t&&(r.delete(e),r.set(e,t)),t})(e);if(t)return{source:t,resolvedPath:e};try{const t=await async function(e){if(e.endsWith(".html")){const t=await fetch(e);return t.ok?{path:e,response:t}:null}const t=e.endsWith("/")?e.slice(0,-1):e,n=`${t}/index.html`;try{const e=await fetch(n);if(e.ok)return{path:n,response:e}}catch{}try{const e=await fetch(t);if(e.ok&&(e.headers.get("content-type")||"").includes("text/html"))return{path:t,response:e}}catch{}return null}(e);if(!t)throw new Error(`Failed to fetch component from ${e}: Could not resolve path. Tried: ${e}${e.endsWith(".html")?"":` and ${e}/index.html`}`);const n=await t.response.text();return o(e,n),t.path!==e&&o(t.path,n),{source:n,resolvedPath:t.path}}catch(n){return}}function i(e){const t=e.trim(),n=function(e){const t=function(e){let t=0,n=0,r=0,o=!1,s=!1,i=!1,a=!1;for(let c=0;c<e.length;c++){const l=e[c];if(a)a=!1;else if("\\"!==l)if(s||i||"'"!==l)if(o||i||'"'!==l)if(o||s||"`"!==l){if(!(o||s||i)&&("("===l?t++:")"===l?t=Math.max(0,t-1):"["===l?n++:"]"===l?n=Math.max(0,n-1):"{"===l?r++:"}"===l&&(r=Math.max(0,r-1)),"("===l&&0===t&&0===n&&0===r))return c}else i=!i;else s=!s;else o=!o;else a=!0}return-1}(e);if(t<0)return null;const n=function(e,t){let n=0,r=!1,o=!1,s=!1,i=!1;for(let a=t;a<e.length;a++){const t=e[a];if(i)i=!1;else if("\\"!==t)if(o||s||"'"!==t)if(r||s||'"'!==t)if(r||o||"`"!==t){if(!(r||o||s))if("("===t)n++;else if(")"===t){if(n--,0===n)return a;if(n<0)return-1}}else s=!s;else o=!o;else r=!r;else i=!0}return-1}(e,t);if(n<0)return null;if(0!==e.slice(n+1).trim().length)return null;const r=a(e.slice(0,t).trim());if(!r)return null;const o=function(e){const t=[];let n="",r=0,o=0,s=0,i=!1,a=!1,c=!1,l=!1;for(let f=0;f<e.length;f++){const u=e[f];if(l)n+=u,l=!1;else if("\\"!==u)if(a||c||"'"!==u)if(i||c||'"'!==u)if(i||a||"`"!==u){if(!i&&!a&&!c&&("("===u?r++:")"===u?r=Math.max(0,r-1):"["===u?o++:"]"===u?o=Math.max(0,o-1):"{"===u?s++:"}"===u&&(s=Math.max(0,s-1)),","===u&&0===r&&0===o&&0===s)){const e=n.trim();e.length>0&&t.push(e),n="";continue}n+=u}else c=!c,n+=u;else a=!a,n+=u;else i=!i,n+=u;else n+=u,l=!0}const u=n.trim();return u.length>0&&t.push(u),t}(e.slice(t+1,n));return{calleePath:r,args:o}}(t);if(n)return{raw:t,path:n.calleePath,isFunction:!0,isExpression:!0,functionArgs:n.args};const r=a(t);return r?{raw:t,path:r,isFunction:!1,isExpression:!1}:{raw:t,path:[],isExpression:!0}}function a(e){return/^[$A-Z_][0-9A-Z_$]*(?:\s*\.\s*[$A-Z_][0-9A-Z_$]*)*$/i.test(e)?e.split(".").map(e=>e.trim()).filter(e=>e.length>0):null}function c(e){let t=e.parentElement;for(;t;){if(t.hasAttribute&&t.hasAttribute("$for"))return!0;t=t.parentElement}return!1}function l(e){let t=e.parentElement;for(;t;){if(t.hasAttribute&&t.hasAttribute("$no:bind"))return!0;t=t.parentElement}return!1}const u=["onclick","ondblclick","onmousedown","onmouseup","onmouseover","onmouseout","onmousemove","onmouseenter","onmouseleave","onkeydown","onkeyup","onkeypress","onfocus","onblur","onchange","oninput","onsubmit","onreset","onscroll","onload","onerror","ontouchstart","ontouchmove","ontouchend","ontouchcancel","ondragstart","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondrop"],f=Object.freeze(["alert","confirm","prompt","console","JSON","Math","Date","Array","Object","String","Number","Boolean","Map","Set","WeakMap","WeakSet","Symbol","BigInt","Promise","Proxy","Reflect","parseInt","parseFloat","isNaN","isFinite","Infinity","NaN","encodeURIComponent","decodeURIComponent","encodeURI","decodeURI","setTimeout","clearTimeout","setInterval","clearInterval","requestAnimationFrame","cancelAnimationFrame","requestIdleCallback","cancelIdleCallback","queueMicrotask","fetch","AbortController","AbortSignal","Headers","Request","Response","URL","URLSearchParams","navigator","location","history","localStorage","sessionStorage","crypto","document","window","globalThis","Element","HTMLElement","Event","CustomEvent","EventTarget","TextEncoder","TextDecoder","Blob","File","FileReader","FormData","Error","TypeError","RangeError","SyntaxError","ReferenceError","atob","btoa","structuredClone"]),p=Object.freeze([]),h=/* @__PURE__ */new Set(["with","eval","arguments","constructor","prototype","break","case","catch","continue","debugger","default","delete","do","else","finally","for","function","if","in","instanceof","new","return","switch","this","throw","try","typeof","var","void","while","class","const","enum","export","extends","import","super","implements","interface","let","package","private","protected","public","static","yield","null","true","false"]),d={enter:"Enter",tab:"Tab",esc:"Escape",escape:"Escape",space:" ",up:"ArrowUp",down:"ArrowDown",left:"ArrowLeft",right:"ArrowRight",delete:"Delete",backspace:"Backspace",insert:"Insert",f1:"F1",f2:"F2",f3:"F3",f4:"F4",f5:"F5",f6:"F6",f7:"F7",f8:"F8",f9:"F9",f10:"F10",f11:"F11",f12:"F12",home:"Home",end:"End",pageup:"PageUp",pagedown:"PageDown"},m=["ctrl","alt","shift","meta"],g=["prevent","stop","self","once","passive","capture"],_={left:0,middle:1,right:2};function y(e){if(!e.startsWith("$on:"))return null;const t=e.slice(4).split(".");if(0===t.length||!t[0])return null;const n=t[0],r=t.slice(1),o={eventName:n,keyModifiers:[],systemModifiers:[],eventModifiers:[],mouseModifier:null,exact:!1};for(const s of r){const e=s.toLowerCase();"exact"!==e?g.includes(e)?o.eventModifiers.push(e):m.includes(e)?o.systemModifiers.push(e):e in _?o.mouseModifier=e:o.keyModifiers.push(e):o.exact=!0}return o}function b(e){const t={};return e.includes("passive")&&(t.passive=!0),e.includes("capture")&&(t.capture=!0),e.includes("once")&&(t.once=!0),t}function $(e,t){return function(n){if((!t.eventModifiers.includes("self")||n.target===n.currentTarget)&&(!(t.mouseModifier&&n instanceof MouseEvent)||function(e,t){return e.button===_[t]}(n,t.mouseModifier))&&(!(t.systemModifiers.length>0||t.exact)||!(n instanceof KeyboardEvent||n instanceof MouseEvent)||function(e,t,n){const r={ctrl:e.ctrlKey,alt:e.altKey,shift:e.shiftKey,meta:e.metaKey};for(const o of t)if(!r[o])return!1;if(n)for(const o of m)if(!t.includes(o)&&r[o])return!1;return!0}(n,t.systemModifiers,t.exact))){if(t.keyModifiers.length>0&&n instanceof KeyboardEvent){const e=t.keyModifiers.some(e=>function(e,t){const n=t.toLowerCase(),r=d[n];if(r)return e.key===r;if(1===n.length)return e.key.toLowerCase()===n;const o=n.split("-").map((e,t)=>0===t?e:e.charAt(0).toUpperCase()+e.slice(1)).join("");return e.key.toLowerCase()===n||e.key.toLowerCase()===o.toLowerCase()}(n,e));if(!e)return}t.eventModifiers.includes("prevent")&&n.preventDefault(),t.eventModifiers.includes("stop")&&n.stopPropagation(),e(n)}}}function v(e){return e.startsWith("$on:")}const w="[LadrillosJS]",E=function(){try{if(void 0!==import.meta)return!1}catch{}try{if("undefined"!=typeof globalThis&&globalThis.process?.env?.NODE_ENV)return"production"!==globalThis.process.env.NODE_ENV}catch{}return!0}(),A=()=>"undefined"!=typeof window&&"undefined"!=typeof console&&"function"==typeof console.log;let S=null;function C(){return S}function R(e,t){const n=`{${t}}`,r=e.indexOf(n);if(-1!==r)return{start:r,end:r+n.length};const o=e.indexOf(t);return-1!==o?{start:o,end:o+t.length}:null}function x(e){const t=void 0!==e?e:S;if(!t)return"";const n=[];if(t.tagName&&n.push(`<${t.tagName}>`),t.sourcePath){const e=t.sourcePath.split("/").pop()||t.sourcePath;n.push(`(${e})`)}return n.length>0?` in ${n.join(" ")}`:""}function L(e,t){return`${e}${x(t)}`}var N=/* @__PURE__ */(e=>(e[e.EXPRESSION_EVAL_FAILED=101]="EXPRESSION_EVAL_FAILED",e[e.EXPRESSION_SYNTAX_ERROR=102]="EXPRESSION_SYNTAX_ERROR",e[e.EXPRESSION_UNDEFINED_VAR=103]="EXPRESSION_UNDEFINED_VAR",e[e.EXPRESSION_NULL_ACCESS=104]="EXPRESSION_NULL_ACCESS",e[e.SCRIPT_EXTRACT_FAILED=201]="SCRIPT_EXTRACT_FAILED",e[e.SCRIPT_EXECUTION_FAILED=202]="SCRIPT_EXECUTION_FAILED",e[e.EVENT_HANDLER_FAILED=301]="EVENT_HANDLER_FAILED",e[e.DIRECTIVE_ERROR=401]="DIRECTIVE_ERROR",e[e.LOOP_ERROR=402]="LOOP_ERROR",e[e.CONDITIONAL_ERROR=403]="CONDITIONAL_ERROR",e[e.COMPONENT_LOAD_FAILED=501]="COMPONENT_LOAD_FAILED",e[e.COMPONENT_NOT_FOUND=502]="COMPONENT_NOT_FOUND",e[e.MODULE_LOAD_FAILED=601]="MODULE_LOAD_FAILED",e[e.MODULE_EXECUTION_FAILED=602]="MODULE_EXECUTION_FAILED",e))(N||{});function T(e,t){E&&(L(e,t),A())}function I(e,t){L(e,t),A()}function M(e,t,n={}){const r=n.context||S,o=n.errorCode||((i=t)instanceof SyntaxError?102:i instanceof ReferenceError?103:i instanceof TypeError&&(i.message.includes("Cannot read properties of null")||i.message.includes("Cannot read properties of undefined"))?104:101),s=function(e){if(e instanceof SyntaxError)return"Invalid expression syntax";if(e instanceof ReferenceError){const t=e.message.match(/(\w+) is not defined/);return t?`Undefined variable: "${t[1]}"`:"Undefined variable"}return e instanceof TypeError?e.message.includes("Cannot read properties of null")?"Cannot access property of null":e.message.includes("Cannot read properties of undefined")?"Cannot access property of undefined":"Type error":"Expression evaluation failed"}(t);var i;if(!E)return;const a=x(r);if(A())n.template&&R(n.template,e);else{const i=[`${w} ${s}${a}`,` Expression: ${e}`];if(r?.tagName&&i.push(` Component: <${r.tagName}>`),r?.sourcePath&&i.push(` File: ${r.sourcePath}`),n.template){const t=R(n.template,e);t&&(i.push(" Location:"),i.push(function(e,t=0,n=e.length){const r=e.split("\n");let o=0;const s=[];for(let i=0;i<r.length;i++){const e=r[i].length+1;if(o+e>=t){for(let a=Math.max(0,i-2);a<=Math.min(r.length-1,i+2);a++){const c=a+1,l=r[a],u=`${c}`.padStart(4)+" │ ";if(s.push(`${u}${l}`),a===i){const r=t-(o-e),i=Math.min(n>o?n-t:e-r,l.length-r);s.push(` │ ${"".padStart(Math.max(0,r))}${"^".repeat(Math.max(1,i))}`)}}break}o+=e}return s.join("\n")}(n.template,t.start,t.end).split("\n").map(e=>` ${e}`).join("\n")))}i.push(` Error: ${t.message}`),i.push(` Docs: ${function(e){return`https://ladrillosjs.dev/errors/${e}`}(o)}`)}}const O=/* @__PURE__ */Symbol("reactive-array"),k=["push","pop","shift","unshift","splice","sort","reverse","fill","copyWithin"];function P(e,t){return e[O]?e:new Proxy(e,{get(e,n){if(n===O)return!0;const r=e[n];return"string"==typeof n&&k.includes(n)&&"function"==typeof r?(...n)=>{const o=n.map(e=>Array.isArray(e)?P(e,t):e),s=r.apply(e,o);return t(),s}:Array.isArray(r)?P(r,t):r},set(e,n,r){const o="string"==typeof n?parseInt(n,10):NaN,s=!isNaN(o),i="length"===n,a=Array.isArray(r)?P(r,t):r;return e[n]===a||(e[n]=a,(s||i)&&t()),!0},deleteProperty(e,n){const r=delete e[n];return r&&t(),r}})}function D(e,t){for(const n of Object.keys(e)){const r=e[n];Array.isArray(r)?e[n]=P(r,t):r&&"object"==typeof r&&!Array.isArray(r)&&D(r,t)}return e}function F(e,t,n,r){const o=function(e,t){const n=/* @__PURE__ */new Map;for(const r of t)n.set(r,/* @__PURE__ */new Set);for(const r of e)for(const e of r.bindings)for(const o of t)U(e.raw,o)&&n.get(o).add(r);return n}(t,Object.keys(e));D(e,()=>{r&&r()});const s=new Proxy(e,{get:(e,t)=>e[t],set(e,s,i){const a=!(s in e);if(!a&&e[s]===i)return!0;const c=Array.isArray(i)?P(i,()=>{r&&r()}):i;return e[s]=c,a&&function(e,t,n){n.set(e,/* @__PURE__ */new Set);for(const r of t)for(const t of r.bindings)U(t.raw,e)&&n.get(e).add(r)}(s,t,o),((e,t)=>{const s=o.get(e);if(s)for(const r of s)n(r,t);r&&r()})(s,e),!0}});return s}function U(e,t){var n;return new RegExp(`\\b${n=t,n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}\\b`).test(e)}function j(e,t){return e.startsWith("http://")||e.startsWith("https://")||e.startsWith("/")?e.startsWith("/")?new URL(e,window.location.origin).href:e:new URL(e,t).href}function z(e){return{$registerComponent:function(t,n,r=!1){const o=j(n,e);return dt.registerComponent(t,o,r)},$registerComponents:function(t){const n=Array.isArray(t)?t.map(t=>({...t,path:j(t.path,e)})):Object.entries(t).map(([t,n])=>"string"==typeof n?{name:t,path:j(n,e)}:{name:t,...n,path:j(n.path,e)});return dt.registerComponents(n)},$use:function(t,n=!1){const r=function(e){return(e.split("/").pop()?.replace(/\.[^.]+$/,"")||e).replace(/([a-z])([A-Z])/g,"$1-$2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1-$2").toLowerCase()}(t),o=j(t,e);return dt.registerComponent(r,o,n)}}}const W=["$registerComponent","$registerComponents","$use"],H=z(window.location.href),B=H.$registerComponent,Z=H.$registerComponents,q=H.$use;function V(){return globalThis.__ladrillosEventBus||(globalThis.__ladrillosEventBus={listeners:/* @__PURE__ */new Map,componentListeners:/* @__PURE__ */new Map}),globalThis.__ladrillosEventBus}function X(){return V().listeners}function G(){return V().componentListeners}function J(e,t){const n=X().get(e);if(n&&0!==n.size)for(const o of n)try{o.callback(t)}catch(r){}}function Y(e,t,n){const r=X(),o=G();let s=r.get(e);s||(s=/* @__PURE__ */new Set,r.set(e,s));const i={callback:t,componentId:n};if(s.add(i),n){let t=o.get(n);t||(t=/* @__PURE__ */new Set,o.set(n,t)),t.add({event:e,registration:i})}return()=>{const t=X(),r=G();if(s?.delete(i),0===s?.size&&t.delete(e),n){const e=r.get(n);if(e){for(const t of e)if(t.registration===i){e.delete(t);break}0===e.size&&r.delete(n)}}}}function K(e){return{$emit:function(e,t){J(e,t)},$listen:function(t,n){return Y(t,n,e)}}}const Q=["$emit","$listen"],ee=e=>e instanceof ShadowRoot?e.host:e;function te(e,t,n,r){const o=Array.from(e.querySelectorAll("*"));for(const s of o)if(!re(s)){for(const e of u){const o=s.getAttribute(e);if(o){s.removeAttribute(e);const i=e.slice(2),a=oe(o,t,n,r);a&&s.addEventListener(i,a)}}ne(s,t,n,r)}}function ne(e,t,n,r){const o=Array.from(e.attributes).filter(e=>v(e.name));for(const s of o){const o=y(s.name);if(!o)continue;const i=s.value;e.removeAttribute(s.name);const a=oe(i,t,n,r);if(!a)continue;const c=$(a,o),l=b(o.eventModifiers);e.addEventListener(o.eventName,c,l)}}function re(e){if(e.hasAttribute("$for"))return!0;let t=e.parentElement;for(;t;){if(t.hasAttribute("$for"))return!0;t=t.parentElement}return!1}function oe(e,t,n,r){try{const o=r?.__componentUrl,s=r?.__componentId,i=fe(o,s),a=ue(),c=["event","state","$refs",...a,...i.keys],l=Object.keys(t),u=l.filter(e=>"function"==typeof t[e]),f=l.filter(e=>"function"!=typeof t[e]),p=!0===t.__hasModuleScripts,h=p?f.length>0?`const { ${f.join(", ")} } = state;`:"":f.length>0?`let { ${f.join(", ")} } = state;`:"",d=p&&u.length>0?`const { ${u.join(", ")} } = state;`:"",m=function(e,t){if(!e||0===t.length)return e;const n=[];let r=e.replace(/"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'/g,e=>(n.push(e),`__STRING_PLACEHOLDER_${n.length-1}__`));r=r.replace(/`(?:[^`\\$]|\\.|\$(?!\{)|\$\{[^}]*\})*`/g,e=>e.replace(/\$\{([^}]+)\}/g,(e,n)=>{let r=n;for(const o of t){const e=new RegExp(`(?<![^.]\\.)(?<!state\\.)\\b${le(o)}\\b(?!\\s*[:(])`,"g");r=r.replace(e,`state.${o}`)}return`\${${r}}`}));for(const s of t){const e=new RegExp(`(?<![^.]\\.)(?<!state\\.)\\b${le(s)}\\b(?!\\s*[:(])`,"g");r=r.replace(e,`state.${s}`)}let o=r;for(let s=0;s<n.length;s++)o=o.replace(`__STRING_PLACEHOLDER_${s}__`,n[s]);return o}(se(n,p?u:[]),f),g=f.some(t=>new RegExp(`\\b${t}\\b`).test(e)),_=p||!g?"":f.filter(t=>new RegExp(`\\b${t}\\b`).test(e)).map(e=>`state.${e} = ${e};`).join(" "),y=/\bawait\b/.test(e)||/\bawait\b/.test(m)||/\basync\b/.test(m),b=o||"ladrillos-event-handler",$=y?`"use strict"; ${h} ${d} ${m} try { await (async () => { ${e} })(); } finally { ${_} }\n//# sourceURL=${b}`:`"use strict"; ${h} ${d} ${m} ${e}; ${_}\n//# sourceURL=${b}`,v=Object.getPrototypeOf(async function(){}).constructor,w=y?new v(...c,$):new Function(...c,$);return n=>{try{const o=r&&r.__refs||/* @__PURE__ */new Map,s=[n,t,o,...a.map(()=>{}),...i.values],c=w(...s);c&&"function"==typeof c.catch&&c.catch(n=>{const o={tagName:r?.tagName?.toLowerCase(),sourcePath:t.__componentUrl,instanceId:t.__componentId};M(e,n,{context:o.tagName?o:C(),errorCode:N.EVENT_HANDLER_FAILED})})}catch(o){const n={tagName:r?.tagName?.toLowerCase(),sourcePath:t.__componentUrl,instanceId:t.__componentId};M(e,o,{context:n.tagName?n:C(),errorCode:N.EVENT_HANDLER_FAILED})}}}catch(o){const n=r?.tagName?{tagName:r.tagName.toLowerCase(),sourcePath:t.__componentUrl}:null;return T(`Failed to create event handler: ${e}`,n),null}}function se(e,t=[]){const n=[],r=/(?:async\s+)?function\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*\([^)]*\)\s*\{/g;let o;for(;null!==(o=r.exec(e));){const r=o[1];if(t.includes(r))continue;const s=ie(e,o.index);s&&n.push(s)}const s=/(?:const|let)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*=\s*(?:async\s*)?\([^)]*\)\s*=>\s*\{/g;for(;null!==(o=s.exec(e));){const r=o[1];if(t.includes(r))continue;const s=o.index,i=e.indexOf("{",s+o[0].length-1),a=ie(e,s,i);a&&n.push(a)}return n.map(e=>e.trim()).join(";\n")+(n.length>0?";":"")}function ie(e,t,n){let r=0,o=t,s=!1,i="",a=!1;for(let c=n??t;c<e.length;c++){const t=e[c],n=c>0?e[c-1]:"";if('"'!==t&&"'"!==t&&"`"!==t||"\\"===n||(s?t===i&&(s=!1):(s=!0,i=t)),!s&&("{"===t&&(r++,a=!0),"}"===t&&r--,a&&0===r&&"}"===t)){o=c+1;break}}return 0!==r?null:e.slice(t,o)}function ae(e,t,n,r,o,s,i=[]){try{const a=ce(e),c=`\n "use strict";\n ${function(e,t){if(0===t.length)return e;const n=[];let r=e.replace(/(["'])(?:(?!\1)[^\\]|\\.)*\1/g,e=>(n.push(e),`__STRING_PLACEHOLDER_${n.length-1}__`));r=r.replace(/`(?:[^`\\$]|\\.|\$(?!\{)|\$\{[^}]*\})*`/g,e=>e.replace(/\$\{([^}]+)\}/g,(e,n)=>{let r=n;for(const o of t){const e=new RegExp(`(?<![^.]\\.)(?<!__state__\\.)\\b${le(o)}\\b(?!\\s*[:(])`,"g");r=r.replace(e,`__state__.${o}`)}return`\${${r}}`}));for(const s of t){const e=new RegExp(`\\b(let|const|var)\\s+(${le(s)})\\s*=`,"g");r=r.replace(e,`__state__.${s} ??=`)}for(const s of t){const e=new RegExp(`(?<![^.]\\.)(?<!__state__\\.)\\b${le(s)}\\b(?!\\s*[:(])`,"g");r=r.replace(e,`__state__.${s}`)}let o=r;for(let s=0;s<n.length;s++)o=o.replace(`__STRING_PLACEHOLDER_${s}__`,n[s]);return o}(e,[.../* @__PURE__ */new Set([...a,...i])])}\n//# sourceURL=${n||"ladrillos-component"}\n `,l=fe(n,r),u=ue(),f=["__state__","$host","$refs",...u,...l.keys],p=[t,o,s,...u.map(()=>{}),...l.values];new Function(...f,c)(...p)}catch(a){!function(e,t){const n=S;if(!E)return;const r=x(n);if(A());else{const e=[`${w} Script Error${r}`," Message: Error executing script with reactive state"];n?.tagName&&e.push(` Component: <${n.tagName}>`),n?.sourcePath&&e.push(` File: ${n.sourcePath}`),e.push(` Error: ${t.message}`)}}(0,a)}}function ce(e){const t=[],n=/(?:let|const|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*=/g;let r;for(;null!==(r=n.exec(e));)t.push(r[1]);return t}function le(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function ue(){return p.filter(e=>!h.has(e))}function fe(e,t){const n=[],r=[];for(const i of f)i in globalThis&&(n.push(i),r.push(globalThis[i]));const o=z(e||window.location.href);n.push(...W),r.push(o.$registerComponent,o.$registerComponents,o.$use);const s=K(t||"anonymous");return n.push(...Q),r.push(s.$emit,s.$listen),{keys:n,values:r}}function pe(e,t){try{const n=Object.keys(t),r=Object.values(t),o=ue(),s=[...o,...n],i=[...o.map(()=>{}),...r];return new Function(...s,`"use strict"; return ${e};`)(...i)}catch(n){return M(e,n,{context:C()}),`{${e}}`}}function he(e,t){let n=e.original;for(const r of e.bindings){const e=pe(r.raw,t),o=String(e??"");n=n.replace(`{${r.raw}}`,o)}if(e.isAttribute&&e.attributeName){const t=e.element??e.node.parentElement;t&&t.setAttribute(e.attributeName,n)}else e.node.textContent=n}function de(e,t){for(const n of e)he(n,t)}const me=/* @__PURE__ */new Map,ge=/* @__PURE__ */new Map,_e=/(?:import|export)\s+(?:[\s\S]*?\s+from\s+)?['"]([^'"]+)['"]/g,ye=/import\s*\(\s*['"]([^'"]+)['"]\s*\)/g,be=[".ts",".tsx",".mts"];function $e(e){return e.startsWith("./")||e.startsWith("../")}function ve(e){return be.some(t=>e.endsWith(t))}function we(e){return!(e.startsWith("/")||e.startsWith("./")||e.startsWith("../")||e.startsWith("http://")||e.startsWith("https://")||e.startsWith("data:")||e.startsWith("blob:"))}const Ee=/^(?:export\s+)?(?:let|const|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/gm;async function Ae(e,t,n){if(e.external)return document.querySelector(`script[src="${e.src}"]`)?Promise.resolve(void 0):new Promise((t,n)=>{const r=document.createElement("script");r.src=e.src,e.type&&(r.type=e.type),r.onload=()=>t(void 0),r.onerror=t=>n(new Error(`Failed to load external script: ${e.src}`)),document.head.appendChild(r)});if("module"!==e.type)return document.querySelector(`script[src="${e.src}"]`)?Promise.resolve(void 0):new Promise((t,n)=>{const r=document.createElement("script");r.src=e.src,e.type&&(r.type=e.type),r.onload=()=>t(void 0),r.onerror=t=>n(new Error(`Failed to load script: ${e.src}`)),document.head.appendChild(r)});try{const r=await fetch(e.src);if(!r.ok)throw new Error(`Failed to fetch module: ${e.src}`);const o=function(e,t){let n=e;const r=[],o=[];return n=n.replace(_e,(e,n)=>{if($e(n)){const r=new URL(n,t).href;return ve(n)&&o.push(n),e.replace(n,r)}return we(n)&&r.push(n),e}),n=n.replace(ye,(e,n)=>{if($e(n)){const e=new URL(n,t).href;return ve(n)&&o.push(n),`import("${e}")`}return we(n)&&r.push(n),e}),o.length,r.length,n}(await r.text(),e.src),s=function(e){const t=function(e){const t=[];let n;for(Ee.lastIndex=0;null!==(n=Ee.exec(e));)t.push(n[1]);const r=/^(?:export\s+)?function\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/gm;for(;null!==(n=r.exec(e));)t.includes(n[1])||t.push(n[1]);return t}(e),n=/* @__PURE__ */new Set,r=/export\s+(?:let|const|var|function)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;let o;for(;null!==(o=r.exec(e));)n.add(o[1]);const s=/export\s*\{([^}]+)\}/g;for(;null!==(o=s.exec(e));)o[1].split(",").map(e=>e.trim().split(/\s+as\s+/)[0].trim()).forEach(e=>n.add(e));const i=t.filter(e=>!n.has(e));return 0===i.length?e:`${e}\nexport { ${i.join(", ")} };`}(function(e){const t=[];let n=e;if(n=n.replace(/import\s*\{([^}]+)\}\s*from\s*(['"][^'"]+['"])\s*;?/g,(e,n,r)=>{const o=n.split(",").map(e=>e.trim()),s=[];for(const i of o){if(!i)continue;const e=i.match(/^(\w+)\s+as\s+(\w+)$/);if(e){const[,n,r]=e,o=`__raw_${r}`;s.push(`${n} as ${o}`),t.push(`const ${r} = __wrapReactiveArray(${o}, __ladrillos_componentId);`)}else{const e=`__raw_${i}`;s.push(`${i} as ${e}`),t.push(`const ${i} = __wrapReactiveArray(${e}, __ladrillos_componentId);`)}}return`import { ${s.join(", ")} } from ${r};`}),t.length>0){const e=n.split("\n");let r=-1;for(let t=0;t<e.length;t++){const n=e[t].trim();(n.startsWith("import ")||n.startsWith("import{"))&&(r=t)}r>=0&&(e.splice(r+1,0,"","// === Reactive Import Wrappers ===",...t,"// === End Reactive Import Wrappers ===",""),n=e.join("\n"))}return n}(o)),i=function(e,t){return`\n// === LadrillosJS Framework Helpers (auto-injected) ===\nconst __ladrillos_componentId = "${e||"anonymous"}";\nconst __ladrillos_componentUrl = "${t||"unknown"}";\n\n// Global event bus (shared across all components)\nif (!globalThis.__ladrillosEventBus) {\n globalThis.__ladrillosEventBus = {\n listeners: new Map(),\n componentListeners: new Map()\n };\n}\n\n// Global state change callbacks (for reactive array updates)\nif (!globalThis.__ladrillosStateCallbacks) {\n globalThis.__ladrillosStateCallbacks = new Map();\n}\n\n// Reactive array symbol\nconst __REACTIVE_ARRAY = Symbol.for("ladrillos-reactive-array");\n\n// Array mutation methods to intercept\nconst __ARRAY_METHODS = ["push", "pop", "shift", "unshift", "splice", "sort", "reverse", "fill", "copyWithin"];\n\n// Wrap an array in a reactive proxy\nconst __wrapReactiveArray = (arr, componentId) => {\n if (!Array.isArray(arr) || arr[__REACTIVE_ARRAY]) return arr;\n \n const onMutate = () => {\n const callback = globalThis.__ladrillosStateCallbacks?.get(componentId);\n if (callback) callback();\n };\n \n return new Proxy(arr, {\n get(target, key) {\n if (key === __REACTIVE_ARRAY) return true;\n const value = target[key];\n if (typeof key === "string" && __ARRAY_METHODS.includes(key) && typeof value === "function") {\n return (...args) => {\n const result = value.apply(target, args);\n onMutate();\n return result;\n };\n }\n if (Array.isArray(value)) return __wrapReactiveArray(value, componentId);\n return value;\n },\n set(target, key, value) {\n const index = parseInt(key, 10);\n const isIndex = !isNaN(index);\n const isLength = key === "length";\n target[key] = Array.isArray(value) ? __wrapReactiveArray(value, componentId) : value;\n if (isIndex || isLength) onMutate();\n return true;\n }\n });\n};\n\nconst $emit = (eventName, data) => {\n const listeners = globalThis.__ladrillosEventBus.listeners.get(eventName);\n if (!listeners || listeners.size === 0) return;\n for (const registration of listeners) {\n try {\n registration.callback(data);\n } catch (error) {\n console.error(\`[LadrillosJS] Error in event listener for "\${eventName}":\`, error);\n }\n }\n};\n\nconst $listen = (eventName, callback) => {\n const bus = globalThis.__ladrillosEventBus;\n let listeners = bus.listeners.get(eventName);\n if (!listeners) {\n listeners = new Set();\n bus.listeners.set(eventName, listeners);\n }\n const registration = { callback, componentId: __ladrillos_componentId };\n listeners.add(registration);\n\n // Track by component ID for cleanup\n let componentRegs = bus.componentListeners.get(__ladrillos_componentId);\n if (!componentRegs) {\n componentRegs = new Set();\n bus.componentListeners.set(__ladrillos_componentId, componentRegs);\n }\n componentRegs.add({ event: eventName, registration });\n\n // Return unsubscribe function\n return () => {\n listeners?.delete(registration);\n if (listeners?.size === 0) bus.listeners.delete(eventName);\n const compRegs = bus.componentListeners.get(__ladrillos_componentId);\n if (compRegs) {\n for (const reg of compRegs) {\n if (reg.registration === registration) {\n compRegs.delete(reg);\n break;\n }\n }\n if (compRegs.size === 0) bus.componentListeners.delete(__ladrillos_componentId);\n }\n };\n};\n\n// Global refs registry (shared across all components)\n// Each component gets its own Map, keyed by component ID\nif (!globalThis.__ladrillosRefs) {\n globalThis.__ladrillosRefs = new Map();\n}\n\n// Helper to wrap refs Map in Proxy for cleaner dot notation access\nconst __createRefsProxy = (map) => new Proxy(map, {\n get(target, prop, receiver) {\n if (prop in target) {\n const value = Reflect.get(target, prop, receiver);\n return typeof value === "function" ? value.bind(target) : value;\n }\n if (typeof prop === "string") return target.get(prop);\n return undefined;\n },\n set(target, prop, value) {\n if (typeof prop === "string") { target.set(prop, value); return true; }\n return false;\n },\n has(target, prop) {\n return typeof prop === "string" ? target.has(prop) || prop in target : prop in target;\n }\n});\n\n// Get or create refs Map for this component (wrapped in Proxy)\nif (!globalThis.__ladrillosRefs.has(__ladrillos_componentId)) {\n globalThis.__ladrillosRefs.set(__ladrillos_componentId, __createRefsProxy(new Map()));\n}\n\n// $refs for this component - supports both $refs.inputEl and $refs.get("inputEl")\nconst $refs = globalThis.__ladrillosRefs.get(__ladrillos_componentId);\n\n// Helper to resolve relative paths against component URL\nconst __resolvePath = (path) => {\n if (path.startsWith("http://") || path.startsWith("https://") || path.startsWith("/")) {\n return path.startsWith("/") ? new URL(path, window.location.origin).href : path;\n }\n return new URL(path, __ladrillos_componentUrl).href;\n};\n\n// Helper to convert filename to tag name\nconst __filenameToTagName = (path) => {\n const filename = path.split("/").pop()?.replace(/\\.[^.]+$/, "") || path;\n return filename.replace(/([a-z])([A-Z])/g, "$1-$2").replace(/[_\\s]+/g, "-").toLowerCase();\n};\n\n// $registerComponent - Register a child component\nconst $registerComponent = async (name, path, useShadowDOM = false) => {\n const resolvedPath = __resolvePath(path);\n return globalThis.ladrillosjs.registerComponent({ name, path: resolvedPath, useShadowDOM });\n};\n\n// $registerComponents - Register multiple components at once\nconst $registerComponents = async (configs) => {\n const resolvedConfigs = configs.map(config => ({\n ...config,\n path: __resolvePath(config.path)\n }));\n return globalThis.ladrillosjs.registerComponents(resolvedConfigs);\n};\n\n// $use - Shorthand for $registerComponent with auto-derived tag name\nconst $use = async (path, useShadowDOM = false) => {\n const tagName = __filenameToTagName(path);\n return $registerComponent(tagName, path, useShadowDOM);\n};\n\n// === End Framework Helpers ===\n\n`}(t,n||e.src),a=new Blob([i+s],{type:"text/javascript"}),c=URL.createObjectURL(a);try{return await(0,eval)(`import("${c}")`)}finally{URL.revokeObjectURL(c)}}catch(r){throw r}}const Se=/* @__PURE__ */new Map;async function Ce(e){if(ge.has(e))return ge.get(e);const t=(async()=>{try{return await(0,eval)(`import("${e}")`)}catch(t){throw t}})();return ge.set(e,t),t}function Re(e,t){return t&&Array.isArray(e)?P(e,t):e}async function xe(e,t,n,r,o,s){if("module"!==e.type)throw new Error('executeModuleScriptWithReactivity only handles type="module" scripts');const i=e.content,a=await async function(e,t,n){const r=function(e){const t=[],n=/import\s+(?:(\{[^}]+\})|(\*\s+as\s+\w+)|(\w+)(?:\s*,\s*(\{[^}]+\}))?)?\s*(?:from\s+)?['"]([^'"]+)['"]/g;let r;for(;null!==(r=n.exec(e));){const[e,n,o,s,i,a]=r,c={statement:e,specifier:a,imports:[],isDefault:!1,isNamespace:!1,isSideEffect:!1};if(n||o||s||(c.isSideEffect=!0),s&&(c.isDefault=!0,c.imports.push({imported:"default",local:s})),o){c.isNamespace=!0;const e=o.replace(/\*\s+as\s+/,"").trim();c.imports.push({imported:"*",local:e})}const l=n||i;if(l){const e=l.slice(1,-1).split(",").map(e=>e.trim()).filter(Boolean);for(const t of e){const e=t.match(/(\w+)\s+as\s+(\w+)/);e?c.imports.push({imported:e[1],local:e[2]}):c.imports.push({imported:t,local:t})}}t.push(c)}return t}(e),o={};for(const i of r){if(i.isSideEffect){const e=$e(i.specifier)?new URL(i.specifier,t).href:i.specifier;await Ce(e);continue}const e=$e(i.specifier)?new URL(i.specifier,t).href:i.specifier;try{const t=await Ce(e);for(const e of i.imports){let r;r="*"===e.imported?t:"default"===e.imported?t.default:t[e.imported],o[e.local]=Re(r,n)}}catch(s){}}return o}(i,t,s),c=function(e){return e.replace(/import\s+(?:(?:\{[^}]+\}|\*\s+as\s+\w+|\w+)(?:\s*,\s*\{[^}]+\})?\s+from\s+)?['"][^'"]+['"]\s*;?/g,"").trim()}(i),{variables:l,functions:u}=function(e){const t=[],n=[],r=e.replace(/`[^`]*`/g,e=>" ".repeat(e.length)).replace(/"(?:[^"\\]|\\.)*"/g,e=>" ".repeat(e.length)).replace(/'(?:[^'\\]|\\.)*'/g,e=>" ".repeat(e.length)).replace(/\/\*[\s\S]*?\*\//g,e=>" ".repeat(e.length)).replace(/\/\/[^\n]*/g,e=>" ".repeat(e.length));let o=0,s=0;for(;s<r.length;){const e=r[s];if("{"!==e)if("}"!==e){if(0===o){const e=r.slice(s).match(/^(?:async\s+)?function\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*\(/);if(e){n.push(e[1]),s+=e[0].length;continue}const o=r.slice(s).match(/^(?:let|const|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)\s*=/);if(o){t.push(o[1]),s+=o[0].length;continue}}s++}else o--,s++;else o++,s++}return{variables:t,functions:n}}(c),f=function(e,t){if(0===t.length)return e;const n=[];let r=e.replace(/(["'`])(?:(?!\1)[^\\]|\\.)*\1/g,e=>(n.push(e),`__STRING_PLACEHOLDER_${n.length-1}__`));for(const s of t){const e=new RegExp(`\\b(let|const|var)\\s+(${Le(s)})\\s*=`,"g");r=r.replace(e,`__state__.${s} =`)}for(const s of t){const e=new RegExp(`(?<![^.]\\.)(?<!__state__\\.)\\b${Le(s)}\\b(?!\\s*[:(])`,"g");r=r.replace(e,`__state__.${s}`)}let o=r;for(let s=0;s<n.length;s++)o=o.replace(`__STRING_PLACEHOLDER_${s}__`,n[s]);return o}(c,l),p=Object.keys(a),h=Object.values(a),d=`\n "use strict";\n return (async () => {\n ${f}\n ${u.length>0?`return { ${u.join(", ")} };`:"return {};"}\n })();\n `;try{const e=["console","alert","Math","JSON","Date","Array","Object","String","Number","Boolean","Promise","setTimeout","setInterval","clearTimeout","clearInterval"],s=e.map(e=>globalThis[e]),i=["$refs","__state__"],a=[r||/* @__PURE__ */new Map,o||{}],c=z(t),l=[c.$registerComponent,c.$registerComponents,c.$use],u=K(n||"anonymous"),f=[u.$emit,u.$listen],m={...globalThis.ladrillosjs||{},registerComponent:c.$registerComponent,registerComponents:c.$registerComponents},g=[...p,...e,...W,...Q,...i,"ladrillosjs"],_=[...h,...s,...l,...f,...a,m],y=new Function(...g,d),b=await y(..._);return{...o||{},...b||{}}}catch(m){throw m}}function Le(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}const Ne="$for",Te="$if",Ie="$else",Me="$else-if",Oe="$show",ke="$bind",Pe="$ref",De=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]+)$/,Fe=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,Ue=/^\(|\)$/g;function je(e){return e.replace(/\$/g,"\\$")}function ze(e){const t=e.trim();return t.startsWith("{")&&t.endsWith("}")?t.slice(1,-1).trim():t}function We(e){const t=e.match(De);if(!t)return null;let n,[,r,o]=t;r=r.trim(),o=o.trim();const s=o.match(/\s+track\s+by\s+(.+)$/i);s&&(n=s[1].trim(),o=o.slice(0,s.index).trim());const i=r.replace(Ue,"").trim(),a=i.match(Fe);let c,l,u;return a?(c=i.replace(Fe,"").trim(),l=a[1]?.trim(),u=a[2]?.trim()):c=i,{item:c,index:l||u,key:n,array:o}}function He(e,t,n,r,o,s){return e.removeAttribute(Te),e.removeAttribute(Me),e.removeAttribute(Ie),{element:e,condition:t,type:n,placeholder:r,group:[],originalParent:o,nextSibling:s}}function Be(e,t){let n=e.parentElement;for(;n;){if(n.hasAttribute(Ne))return!0;n=n.parentElement}return!1}function Ze(e,t,n){for(const a of e.renderedElements)a.remove();e.renderedElements=[];const r=n(e.arrayName,t);if(!r||null==(o=r)||!Array.isArray(o)&&"function"!=typeof o[Symbol.iterator]&&"object"!=typeof o)return;var o;const s=Array.from(r),i=document.createDocumentFragment();s.forEach((r,o)=>{const s=e.template.cloneNode(!0),a=t.__scriptContent,c={...t,[e.itemName]:r,__reactiveState__:t,__scriptContent__:a||"",__componentUrl__:t.__componentUrl||""};e.indexName&&(c[e.indexName]=o),qe(s,c,n),i.appendChild(s),e.renderedElements.push(s)}),e.placeholder.parentNode?.insertBefore(i,e.placeholder.nextSibling)}function qe(e,t,n){for(const i of Array.from(e.attributes))if(i.value.includes("{")){const e=i.value.replace(/\{([^}]+)\}/g,(e,r)=>{const o=n(r.trim(),t);return null!==o&&"object"==typeof o?JSON.stringify(o):String(o??"")});i.value=e}!function(e,t){for(const n of u){const r=e.getAttribute(n);if(r){e.removeAttribute(n);const o=n.slice(2),s=Ve(r,t);s&&e.addEventListener(o,s)}}!function(e,t){const n=Array.from(e.attributes).filter(e=>v(e.name));for(const r of n){const n=y(r.name);if(!n)continue;const o=r.value;e.removeAttribute(r.name);const s=Ve(o,t);if(!s)continue;const i=$(s,n),a=b(n.eventModifiers);e.addEventListener(n.eventName,i,a)}}(e,t)}(e,t);const r=document.createTreeWalker(e,NodeFilter.SHOW_TEXT),o=[];let s;for(;s=r.nextNode();)s.textContent?.includes("{")&&o.push(s);for(const i of o)i.textContent=i.textContent.replace(/\{([^}]+)\}/g,(e,r)=>{const o=n(r.trim(),t);return String(o??"")});for(const i of Array.from(e.children))qe(i,t,n)}function Ve(e,t){try{const n=t.__reactiveState__,r=t.__scriptContent__||"",o=Object.keys(t).filter(e=>!e.startsWith("__")),s=n?Object.keys(n).filter(e=>!e.startsWith("__")&&"function"!=typeof n[e]):[],i=o.filter(e=>!s.includes(e)&&"function"!=typeof t[e]),a=r.trim().length>0,c=o.filter(e=>"function"==typeof t[e]),l=n&&!0===n.__hasModuleScripts;let u="",f="";l?f=c.length>0?`const { ${c.join(", ")} } = context;`:"":a?u=se(r,[]):f=c.length>0?`const { ${c.join(", ")} } = context;`:"";const p=i.length>0?`const { ${i.join(", ")} } = context;`:"",h=n&&s.length>0?"reactiveState":"context",d=s.length>0?`let { ${s.join(", ")} } = ${h};`:"",m=!l&&n&&s.length>0?s.map(e=>`reactiveState.${e} = ${e};`).join(" "):"",g=K(t.__componentId__||n?.__componentId||"anonymous"),_=new Function("event","context","reactiveState","$emit","$listen",`"use strict";\n ${p}\n ${d}\n ${f}\n ${u}\n ${e};\n ${m}`);return e=>{try{_(e,t,n,g.$emit,g.$listen)}catch(r){}}}catch(n){return null}}function Xe(e,t,n){for(const r of e)r.element.parentNode&&r.element.remove();for(const r of e){let e=!1;if("else"===r.type)e=!0;else{const o=n(r.condition,t);e=Boolean(o)}if(e){r.placeholder.parentNode?.insertBefore(r.element,r.placeholder.nextSibling);break}}}function Ge(e,t,n,r){const o=e.element,{raw:s,path:i,isContentEditable:a}=e,c=n(s,t);Je(o,c,a);const l=i[0];r.has(l)||r.set(l,[]),r.get(l).push({element:o,path:i,isContentEditable:a}),s===l||r.has(s)||r.set(s,[]),s!==l&&r.get(s).push({element:o,path:i,isContentEditable:a});const u=function(e){if(e instanceof HTMLSelectElement)return"change";if(e instanceof HTMLInputElement){const t=e.type.toLowerCase();if("checkbox"===t||"radio"===t)return"change"}return"input"}(o);let f=!1;o.__isUpdatingFromState=()=>f,o.__setUpdatingFromState=e=>{f=e},o.addEventListener(u,()=>{if(f)return;const e=function(e,t){if(t)return e.textContent||"";if(e instanceof HTMLInputElement){const t=e.type.toLowerCase();return"checkbox"===t?e.checked:"number"===t||"range"===t?e.valueAsNumber:e.value}return e instanceof HTMLSelectElement?e.multiple?Array.from(e.selectedOptions).map(e=>e.value):e.value:e instanceof HTMLTextAreaElement?e.value:e.value??""}(o,a);!function(e,t,n){let r=e;for(let o=0;o<t.length-1;o++){const e=t[o];e in r&&"object"==typeof r[e]||(r[e]={}),r=r[e]}r[t[t.length-1]]=n}(t,i,e)})}function Je(e,t,n){if(n)e.textContent=String(t??"");else{if(e instanceof HTMLInputElement)return void("checkbox"===e.type.toLowerCase()?e.checked=Boolean(t):e.value=String(t??""));e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?e.value=String(t??""):e.value=t}}function Ye(t,n){const{tagName:r,template:o,scripts:s,externalScripts:a,externalStyles:u,styles:f,sourcePath:p,templateBindings:h=[]}=t,d=ce(s.map(e=>e.content).join("\n")),m=[.../* @__PURE__ */new Set([...d,...h])];class g extends HTMLElement{static get observedAttributes(){return m}state={};_root=null;_initialized=!1;_componentId=`${r}-${Math.random().toString(36).slice(2)}`;_directives=null;_evaluator=null;_updateBoundInputs=null;constructor(){super()}async connectedCallback(){if(this._initialized)return;var t;this._initialized=!0,t={tagName:r,sourcePath:p,instanceId:this._componentId},S=t,this._root=n?this.attachShadow({mode:"open"}):this;const{bindings:d}=((t,n)=>{t.innerHTML=n;const r=function(t){const n=[],r=document.createTreeWalker(t,NodeFilter.SHOW_TEXT,null);let o;for(;o=r.nextNode();){if(c(o)||l(o))continue;const t=[...o.textContent.matchAll(e)];if(t.length>0){const e=o.textContent,r=t.map(e=>i(e[1].trim()));n.push({node:o,bindings:r,original:e})}}const s=function(t){const n=[],r=["$if","$else","$else-if","$for","$show","$bind","$ref","$no:bind"],o=Array.from(t.querySelectorAll("*"));for(const s of o)if(!(s.hasAttribute("$for")||c(s)||s.hasAttribute("$no:bind")||l(s)))for(const t of Array.from(s.attributes)){if(r.includes(t.name))continue;const o=[...t.value.matchAll(e)];if(o.length>0){const e=document.createTextNode(t.value),r=o.map(e=>i(e[1].trim()));n.push({node:e,bindings:r,original:t.value,isAttribute:!0,attributeName:t.name,element:s})}}return n}(t);return n.push(...s),n}(t);return{bindings:r,twoWayBindings:[],conditionals:[],loops:[]}})(this._root,o);((e,t,n)=>{if(!t)return;const r=document.createElement("style");r.textContent=t,n?e.appendChild(r):document.head.appendChild(r)})(this._root,f,n);const m=this._getAttributeOverrides(),g=s.filter(e=>"module"!==e.type),_=s.some(e=>"module"===e.type),y=new Proxy(/* @__PURE__ */new Map,{get(e,t,n){if(t in e){const r=Reflect.get(e,t,n);return"function"==typeof r?r.bind(e):r}if("string"==typeof t)return e.get(t)},set:(e,t,n)=>"string"==typeof t&&(e.set(t,n),!0),has:(e,t)=>"string"==typeof t&&e.has(t)||t in e});if(function(e,t){const n=Array.from(e.querySelectorAll(`[${je(Pe)}]`));for(const r of n){const e=r.getAttribute(Pe);e&&t.set(e,r)}}(this._root,y),u&&u.length>0&&await async function(e,t,n){for(const o of e)if(n&&t)try{let e=Se.get(o.href);if(!e){const t=await fetch(o.href);if(!t.ok)continue;e=await t.text(),Se.set(o.href,e)}const n=document.createElement("style");n.textContent=e,n.setAttribute("data-external-href",o.href),t.insertBefore(n,t.firstChild)}catch(r){}else{if(document.querySelector(`link[href="${o.href}"]`))continue;await new Promise(e=>{const t=document.createElement("link");t.rel=o.rel||"stylesheet",t.href=o.href,t.onload=()=>e(),t.onerror=()=>{e()},document.head.appendChild(t)})}}(u,this._root,n),a.length>0&&await async function(e){const t=e.filter(e=>e.external);for(const r of t)try{await Ae(r)}catch(n){}}(a),this.state=await async function(e,t,n,r={},o,s=!1,i,a,c,l=[]){const u=ee(e),f={},p=t.map(e=>e.content).join("\n");for(const[d,m]of Object.entries(r))f[d]=m;f.__scriptContent=p,f.__componentUrl=i,f.__componentId=a;const h=F(f,n,(e,t)=>he(e,t),o);for(const d of t)ae(d.content,h,i,a,u,c,l);return u.__state=h,u.__scriptContent=p,u.__componentUrl=i,u.__componentId=a,s||(te(e,h,p,u),de(n,h)),h}(this._root,g,d,m,()=>this._updateDirectives(),_,p,this._componentId,y,h),"undefined"!=typeof globalThis&&(globalThis.__ladrillosStateCallbacks||(globalThis.__ladrillosStateCallbacks=/* @__PURE__ */new Map),globalThis.__ladrillosStateCallbacks.set(this._componentId,()=>this._updateDirectives())),p){const e=await async function(e,t,n,r,o,s,i){const a={},c=e.filter(e=>"module"===e.type),l=t.filter(e=>"module"===e.type),u=t.filter(e=>"module"!==e.type);for(const p of u)try{await Ae(p,r,n)}catch(f){}for(const p of l)try{const e=await Ae(p,r,n);if(e&&"object"==typeof e)for(const[t,n]of Object.entries(e))"default"!==t&&(a[t]=n,s&&(s[t]=n))}catch(f){}for(const p of c)try{const e=await xe(p,n,r,o,s,i);Object.assign(a,e)}catch(f){}return a}(s,a,p,this._componentId,y,this.state,()=>this._updateDirectives());(_||a.length>0)&&(this.state.__hasModuleScripts=!0);for(const[t,n]of Object.entries(e))"function"==typeof n&&(this.state[t]=n)}if(_&&function(e,t,n){const r=ee(e);te(e,n,r.__scriptContent||"",r),de(t,n)}(this._root,d,this.state),this._evaluator=pe,this._directives=function(e,t){const n={loops:[],conditionals:[],twoWayBindings:[],refs:t,showElements:[]};return function(e,t){const n=Array.from(e.querySelectorAll(`[${je(Pe)}]`));for(const r of n){const e=r.getAttribute(Pe);e&&(t.refs.set(e,r),r.removeAttribute(Pe))}}(e,n),function(e,t){const n=Array.from(e.querySelectorAll(`[${je(Ne)}]`));for(const r of n){const n=r.getAttribute(Ne);if(!n)continue;const o=We(n);if(!o)continue;const s=document.createComment(` $for: ${n} `),i=r.parentElement||e;i.insertBefore(s,r),r.remove(),r.removeAttribute(Ne);const a={template:r,expression:n,itemName:o.item,indexName:o.index,arrayName:o.array,keyAttribute:o.key,placeholder:s,renderedElements:[],originalParent:i};t.loops.push(a)}}(e,n),function(e,t){const n=Array.from(e.querySelectorAll(`[${je(Te)}]`));for(const r of n){if(Be(r))continue;const n=[],o=ze(r.getAttribute(Te)),s=document.createComment(` $if: ${o} `),i=r.parentElement||e,a=r.nextSibling;i.insertBefore(s,r),n.push(He(r,o,"if",s,i,a));let c=r.nextElementSibling;for(;c;){if(!c.hasAttribute(Me)){if(c.hasAttribute(Ie)){n.push(He(c,"","else",s,i,c.nextSibling)),c.remove();break}break}{const e=ze(c.getAttribute(Me)),t=c.nextElementSibling;n.push(He(c,e,"else-if",s,i,c.nextSibling)),c.remove(),c=t}}r.remove();for(const e of n)e.group=n;t.conditionals.push(n)}}(e,n),function(e,t){const n=Array.from(e.querySelectorAll(`[${je(Oe)}]`));for(const r of n){const e=r.getAttribute(Oe);if(!e)continue;const n=ze(e);if(Be(r))continue;const o=r;t.showElements.push({element:o,expression:n,originalDisplay:o.style.display||""}),r.removeAttribute(Oe)}}(e,n),function(e,t){const n=Array.from(e.querySelectorAll(`[${je(ke)}]`));for(const r of n){const e=r.getAttribute(ke);if(!e)continue;if(Be(r))continue;const n=e.split("."),o=r.hasAttribute("contenteditable"),s={element:r,path:n,raw:e,isContentEditable:o};t.twoWayBindings.push(s),r.removeAttribute(ke)}}(e,n),n}(this._root,y),"undefined"!=typeof globalThis){globalThis.__ladrillosRefs||(globalThis.__ladrillosRefs=/* @__PURE__ */new Map);let e=globalThis.__ladrillosRefs.get(this._componentId);e||(e=/* @__PURE__ */new Map,globalThis.__ladrillosRefs.set(this._componentId,e));for(const[t,n]of this._directives.refs)e.set(t,n)}this.refs=this._directives.refs,this.__refs=this._directives.refs,this._updateDirectives(),this._directives.twoWayBindings.length>0&&(this._updateBoundInputs=function(e,t,n){const r=/* @__PURE__ */new Map;for(const o of e)Ge(o,t,n,r);return e=>{!function(e,t,n,r){const o=r?[r]:Array.from(e.keys());for(const s of o){const r=e.get(s);if(r)for(const e of r){const{element:r,path:o,isContentEditable:s}=e,i=n(o.join("."),t),a=r.__setUpdatingFromState;a&&a(!0),Je(r,i,s),a&&queueMicrotask(()=>a(!1))}}}(r,t,n,e)}}(this._directives.twoWayBindings,this.state,this._evaluator)),this.dispatchEvent(new CustomEvent("ladrillos:ready",{bubbles:!0,composed:!0,detail:{state:this.state,refs:this._directives.refs}}))}disconnectedCallback(){!function(e){const t=me.get(e);if(t){for(const e of t)URL.revokeObjectURL(e);me.delete(e)}}(this._componentId),function(e){const t=X(),n=G(),r=n.get(e);if(r){for(const{event:e,registration:n}of r){const r=t.get(e);r&&(r.delete(n),0===r.size&&t.delete(e))}n.delete(e)}}(this._componentId),"undefined"!=typeof globalThis&&globalThis.__ladrillosStateCallbacks?.delete(this._componentId),this._initialized=!1}attributeChangedCallback(e,t,n){if(t===n)return;if(!this._initialized)return;const r=this._parseAttributeValue(n);this.state[e]=r}adoptedCallback(){}_updateDirectives(){this._directives&&this._evaluator&&(this._directives.loops.length>0&&function(e,t,n){for(const r of e)Ze(r,t,n)}(this._directives.loops,this.state,this._evaluator),this._directives.conditionals.length>0&&function(e,t,n){for(const r of e)Xe(r,t,n)}(this._directives.conditionals,this.state,this._evaluator),this._directives.showElements.length>0&&function(e,t,n){for(const r of e){const e=n(r.expression,t),o=Boolean(e);r.element.style.display=o?r.originalDisplay:"none"}}(this._directives.showElements,this.state,this._evaluator),this._updateBoundInputs&&this._updateBoundInputs())}_getAttributeOverrides(){const e={},t=[];for(const r of Array.from(this.attributes))this._isReservedAttribute(r.name)?r.value&&""!==r.value.trim()&&t.push(r.name):e[r.name]=this._parseAttributeValue(r.value);const n=t.filter(e=>!h.includes(e));if(n.length>0){const e=n.map(e=>{const t={title:"heading",class:"className",style:"customStyle",id:"componentId",hidden:"isHidden"}[e]||`my${e.charAt(0).toUpperCase()}${e.slice(1)}`;return`"${e}" → try "${t}"`});T(`Reserved HTML attribute(s) used on <${r}>: ${n.map(e=>`"${e}"`).join(", ")}.\n These won't be available as component state because they're standard HTML attributes.\n Suggestions: ${e.join(", ")}`,{tagName:r,sourcePath:p})}return e}_isReservedAttribute(e){return!h.includes(e)&&(["id","class","style","slot","part","is","tabindex","title","lang","dir","hidden","draggable","contenteditable"].includes(e.toLowerCase())||e.startsWith("data-"))}_parseAttributeValue(e){if(null===e)return null;if(""===e)return!0;if("true"===e)return!0;if("false"===e)return!1;const t=Number(e);if(!isNaN(t)&&""!==e.trim())return t;try{const t=e.trim();if(t.startsWith("[")||t.startsWith("{"))return JSON.parse(t)}catch{}return e}get root(){return this._root}}return g}function Ke(e,t){const{tagName:n}=e;if(!customElements.get(n)){const r=Ye(e,t);customElements.define(n,r)}}const Qe=globalThis.requestIdleCallback||(e=>setTimeout(e,1)),et=globalThis.cancelIdleCallback||(e=>clearTimeout(e)),tt=(e=1e4)=>t=>{const n=Qe(t,{timeout:e});return()=>et(n)},nt=e=>(t,n)=>{if(function(e){const{top:t,left:n,bottom:r,right:o}=e.getBoundingClientRect(),{innerHeight:s,innerWidth:i}=window;return(t>0&&t<s||r>0&&r<s)&&(n>0&&n<i||o>0&&o<i)}(n))return void t();const r=new IntersectionObserver(e=>{for(const n of e)if(n.isIntersecting){r.disconnect(),t();break}},e);return r.observe(n),()=>r.disconnect()},rt=e=>t=>{if(!e)return void t();const n=matchMedia(e);if(!n.matches){const e=()=>t();return n.addEventListener("change",e,{once:!0}),()=>n.removeEventListener("change",e)}t()},ot=(e=["click","focusin"])=>{const t="string"==typeof e?[e]:e;return(e,n)=>{let r=!1;const o=t=>{r||(r=!0,s(),e(),queueMicrotask(()=>{t.target&&t.target instanceof Element&&t.target.dispatchEvent(new t.constructor(t.type,t))}))},s=()=>{for(const e of t)n.removeEventListener(e,o)};for(const i of t)n.addEventListener(i,o,{once:!0,passive:!0});return s}},st=(e=0)=>t=>{const n=setTimeout(t,e);return()=>clearTimeout(n)},it=nt({rootMargin:"100px"}),at=/* @__PURE__ */new Map;let ct;const lt=/* @__PURE__ */new Map,ut=/* @__PURE__ */new Set,ft=/* @__PURE__ */new Map;function pt(e,t,n,r){var o;ft.set(e,{name:e,absolutePath:t,useShadowDOM:n,strategy:r}),customElements.get(e)||customElements.define(e,(o=e,class extends HTMLElement{teardown;isLoading=!1;isUpgraded=!1;connectedCallback(){if(this.hasAttribute("eager"))return void this.triggerLoad();const e=ft.get(o);e?this.teardown=e.strategy(()=>this.triggerLoad(),this):this.triggerLoad()}disconnectedCallback(){this.teardown?.(),this.teardown=void 0}async triggerLoad(){if(!this.isLoading&&!this.isUpgraded){this.isLoading=!0,this.teardown?.(),this.teardown=void 0;try{const e=await ht(o);this.isUpgraded=!0,this.upgradeToRealComponent(e)}catch(e){I(`Failed to load lazy component "<${o}>"`,{tagName:o}),this.isLoading=!1}}}upgradeToRealComponent(e){const t=document.createElement(e);for(const n of Array.from(this.attributes))"eager"!==n.name&&"tabindex"!==n.name&&t.setAttribute(n.name,n.value);this.parentNode?this.parentNode.replaceChild(t,this):I("No parent node for placeholder - cannot upgrade lazy component",{tagName:o})}}))}async function ht(e){const t=function(e){return`${e}--loaded`}(e);if(ut.has(e))return t;if(at.has(e))return await at.get(e),t;const r=ft.get(e);if(!r)throw new Error(`Lazy component "${e}" not registered`);const o=(async()=>{const o=await s(r.absolutePath);if(!o)throw new Error(`Failed to fetch component source for "${e}"`);const i=await n(o.source,e,o.resolvedPath);ct[e]=i;const a=Ye(i,r.useShadowDOM);return customElements.get(t)||customElements.define(t,a),ut.add(e),lt.set(e,{component:i,useShadowDOM:r.useShadowDOM}),i})();at.set(e,o);try{return await o,t}finally{at.delete(e)}}const dt=new class{components;constructor(){var e;this.components={},e=this.components,ct=e}async registerComponent(e,t,r=!0,o=!1){if(this.components[e])return void T(`Component with name "<${e}>" is already registered.`);const i=new URL(t,window.location.href).href;if(o)pt(e,i,r,!0===o?it:o);else try{const t=await s(i);if(!t)throw new Error(`Failed to fetch component source from ${i}`);const o=await n(t.source,e,t.resolvedPath);this.components[e]=o,Ke(o,r)}catch(a){I(`Error registering component "<${e}>"`,{tagName:e,sourcePath:t})}}async registerComponents(e){const t=Array.isArray(e)?e:Object.entries(e).map(([e,t])=>"string"==typeof t?{name:e,path:t}:{name:e,...t}),r={success:[],failed:[],skipped:[]},o=[],i=[];for(const n of t){if(this.components[n.name]){r.skipped.push(n.name);continue}const e=new URL(n.path,window.location.href).href,t={...n,absolutePath:e};n.lazy?o.push(t):i.push(t)}for(const n of o)try{const e=!0===n.lazy?it:n.lazy,t=n.useShadowDOM??!0;pt(n.name,n.absolutePath,t,e),r.success.push(n.name)}catch(l){r.failed.push({name:n.name,error:l instanceof Error?l:new Error(String(l))})}if(0===i.length)return r;const a=await Promise.allSettled(i.map(async e=>({config:e,result:await s(e.absolutePath)}))),c=await Promise.allSettled(a.map(async(e,t)=>{if("rejected"===e.status)throw e.reason;const{config:r,result:o}=e.value;if(!o)throw new Error(`Failed to fetch component source from ${r.absolutePath}`);return{config:r,component:await n(o.source,r.name,o.resolvedPath)}}));for(let n=0;n<c.length;n++){const e=c[n],t=i[n];if("rejected"===e.status){r.failed.push({name:t.name,error:e.reason instanceof Error?e.reason:new Error(String(e.reason))});continue}const{component:o}=e.value,s=t.useShadowDOM??!0;this.components[t.name]=o;try{Ke(o,s),r.success.push(t.name)}catch(l){r.failed.push({name:t.name,error:l instanceof Error?l:new Error(String(l))}),delete this.components[t.name]}}return r}async loadLazyComponent(e){return async function(e){return ft.has(e)&&await ht(e),ct[e]}(e)}},mt=(e,t,n,r)=>dt.registerComponent(e,t,n,r),gt=e=>dt.registerComponents(e),_t=e=>dt.loadLazyComponent(e),yt={registerComponent:mt,registerComponents:gt,loadLazyComponent:_t,$registerComponent:B,$registerComponents:Z,$use:q,$emit:J,$listen:Y,lazyOnIdle:tt,lazyOnVisible:nt,lazyOnMedia:rt,lazyOnInteraction:ot,lazyOnDelay:st};export{J as $emit,Y as $listen,B as $registerComponent,Z as $registerComponents,q as $use,yt as default,st as lazyOnDelay,tt as lazyOnIdle,ot as lazyOnInteraction,rt as lazyOnMedia,nt as lazyOnVisible,_t as loadLazyComponent,mt as registerComponent,gt as registerComponents};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ladrillosjs",
3
- "version": "2.0.0-beta.5",
3
+ "version": "2.0.0-beta.5.1",
4
4
  "description": "A lightweight, zero-dependency web component framework for building modular web applications.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -23,6 +23,7 @@
23
23
  "watch:cdn": "vite build --config vite.cdn.config.ts --watch",
24
24
  "serve:cdn": "npx serve dist-cdn -p 3000 --cors",
25
25
  "dev:cdn": "concurrently \"npm run watch:cdn\" \"npm run serve:cdn\"",
26
+ "dev:dotnet": "concurrently \"npm run dev:cdn\" \"cd samples/dotnet-sample && dotnet watch run\"",
26
27
  "test": "echo \"Error: no test specified\" && exit 1"
27
28
  },
28
29
  "workspaces": [