ladrillosjs 0.1.5 → 0.1.7

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.
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./main-DEaqXlbt.js");exports.ladrillos=e.ladrillos;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./main-BhrXwJZE.js");exports.ladrillos=e.ladrillos;
@@ -1,4 +1,4 @@
1
- import { a as o } from "./main-BLGdqIcm.mjs";
1
+ import { a as o } from "./main-Bw2tFs_l.mjs";
2
2
  export {
3
3
  o as ladrillos
4
4
  };
@@ -1,5 +1,5 @@
1
- (function(o,s){typeof exports=="object"&&typeof module!="undefined"?s(exports):typeof define=="function"&&define.amd?define(["exports"],s):(o=typeof globalThis!="undefined"?globalThis:o||self,s(o.ladrillosjs={}))})(this,function(o){"use strict";var M=Object.defineProperty;var R=o=>{throw TypeError(o)};var q=(o,s,i)=>s in o?M(o,s,{enumerable:!0,configurable:!0,writable:!0,value:i}):o[s]=i;var x=(o,s,i)=>q(o,typeof s!="symbol"?s+"":s,i),H=(o,s,i)=>s.has(o)||R("Cannot "+i);var A=(o,s,i)=>(H(o,s,"read from private field"),i?i.call(o):s.get(o)),B=(o,s,i)=>s.has(o)?R("Cannot add the same private member more than once"):s instanceof WeakSet?s.add(o):s.set(o,i);var v=(o,s,i)=>new Promise((b,C)=>{var $=l=>{try{f(i.next(l))}catch(c){C(c)}},E=l=>{try{f(i.throw(l))}catch(c){C(c)}},f=l=>l.done?b(l.value):Promise.resolve(l.value).then($,E);f((i=i.apply(o,s)).next())});var f;const s={log(l,...c){},error(l,...c){console.error(l,...c)},warn(l,...c){}};class i{constructor(){B(this,f,new Map);this.components={}}registerComponent(c,h,d=!0){return v(this,null,function*(){if(this.components[c]){s.log(`Component ${c} already registered, skipping.`);return}try{let u=A(this,f).get(h);u||(u=yield(yield fetch(h)).text(),A(this,f).set(h,u));const _=u.replace(/<!--[\s\S]*?-->/g,""),w=new DOMParser().parseFromString(_,"text/html");let y="";const S=Array.from(w.querySelectorAll("script:not([type='module'])"));for(const e of S){if(e.src){const n=e.getAttribute("src");let a;try{a=n}catch(r){console.error(`Invalid script URL "${n}" (base "${h}") - skipping:`,r),e.remove();continue}try{const r=yield fetch(a);if(!r.ok)throw new Error(`HTTP ${r.status}`);y+=`
2
- `+(yield r.text())}catch(r){console.error(`Could not load script at ${a} - skipping:`,r)}}else y+=`
3
- `+e.textContent;e.remove()}y=y.replace(/\/\*[\s\S]*?\*\//g,"").replace(/\/\/.*$/gm,"").trim();let m="";const T=Array.from(w.querySelectorAll("link[rel='stylesheet']"));for(const e of T){const n=e.getAttribute("href");let a;try{a=n+"?raw"}catch(r){console.error(`Invalid stylesheet URL "${n}" (base "${h}") - skipping:`,r),e.remove();continue}try{const r=yield fetch(a);if(!r.ok)throw new Error(`HTTP ${r.status}`);m+=`
4
- `+(yield r.text())}catch(r){console.error(`Could not load stylesheet at ${a} - skipping:`,r)}e.remove()}const g=Array.from(w.querySelectorAll("style"));for(const e of g)m+=`
5
- `+e.textContent,e.remove();m=m.trim();const t=document.createElement("template");t.innerHTML=w.body.innerHTML,this.components[c]={tagName:c,template:t,script:y,style:m},this._defineWebComponent(c,d),s.log(`Component ${c} registered successfully`)}catch(u){s.error(`Failed to register component ${c}:`,u)}})}_defineWebComponent(c,h){return v(this,null,function*(){const{defineWebComponent:d}=yield Promise.resolve().then(()=>E);d(this.components[c],h)})}}f=new WeakMap,x(i,"_SCRIPT_ALL",/<script>([\s\S]*?)<\/script>/g),x(i,"_STYLE_ALL",/<style>([\s\S]*?)<\/style>/g),x(i,"_SCRIPT_ONE",/<script>([\s\S]*?)<\/script>/),x(i,"_STYLE_ONE",/<style>([\s\S]*?)<\/style>/);const b=new i;function C(l,c={}){return new Proxy(c,{set(h,d,u){const _=h[d];return h[d]=u,_!==u&&!l._initializing&&(typeof l._updateBinding=="function"?l._updateBinding(d,u):l._update()),!0},get(h,d){return h[d]}})}const E=Object.freeze(Object.defineProperty({__proto__:null,defineWebComponent:(l,c)=>{if(!l){s.error("Component is not defined or invalid.");return}if(customElements.get(l.tagName)){s.warn(`Component ${l.tagName} is already defined.`);return}const{tagName:h,template:d,script:u,style:_}=l,w=(g=>{const t=/{(.*?)}/g,e=new Set;let n;for(;(n=t.exec(g.innerHTML))!==null;)e.add(n[1].trim().toLowerCase());return Array.from(e)})(d),y=u.replace(/\b(?:const|let|var)\s+([\w$]+)\s*=/g,"state.$1 =").replace(/function\s+([\w$]+)\s*\(/g,"state.$1 = function ("),S=u?new Function("state",`with(state){${y}}`):()=>{},m=[];d.content.querySelectorAll("*").forEach(g=>{Array.from(g.attributes).forEach(t=>{if(!t.name.startsWith("on"))return;const e=t.name.slice(2),n=t.value.match(/{\s*([\w$]+)\(\)\s*}/);if(!n)return;const a=n[1];g.dataset._evtIndex=m.length,m.push({evt:e,fnName:a}),g.removeAttribute(t.name)})});class T extends HTMLElement{constructor(){super(),c&&this.attachShadow({mode:"open"}),this.state={},this.styleElement=document.createElement("style"),this.styleElement.textContent=_||"",this._textBindings={},this._origText=new Map}connectedCallback(){this._textBindings={},this._origText=new Map;const t=d.content.cloneNode(!0);this.shadowRoot?(this.shadowRoot.appendChild(this.styleElement),this.shadowRoot.appendChild(t)):(this.appendChild(this.styleElement),this.appendChild(t)),this.state=C(this,{}),this._initializing=!0;try{S.call(this,this.state)}catch(n){console.error("Error initializing component script:",n)}finally{this._initializing=!1}const e=this.shadowRoot||this;this._processTemplate(e)}_processTemplate(t){this._getAllTextNodes(t).forEach(n=>{const a=n.textContent;a.includes("{")&&a.includes("}")&&(this._origText.set(n,a),n.textContent=a.replace(/{([^}]+)}/g,(r,p)=>(p=p.trim(),this._textBindings[p]=this._textBindings[p]||[],this._textBindings[p].push(n),this.hasAttribute(p)?this.getAttribute(p):this.state[p]!==void 0?this.state[p]:r)))}),m.forEach((n,a)=>{const r=t.querySelector(`[data-_evt-index="${a}"]`);r.removeAttribute("data-_evt-index"),r.addEventListener(n.evt,p=>{const N=this.state[n.fnName];typeof N=="function"&&N.call(r,p)})})}_getAllTextNodes(t){const e=[],n=document.createTreeWalker(t,NodeFilter.SHOW_TEXT,null,!1);let a;for(;a=n.nextNode();)e.push(a);return e}_update(){const t=d.content.cloneNode(!0);this._processTemplate(t),this.shadowRoot?(this.shadowRoot.innerHTML="",this.shadowRoot.appendChild(this.styleElement),this.shadowRoot.appendChild(t)):(this.innerHTML="",this.appendChild(this.styleElement),this.appendChild(t))}_updateBinding(t){(this._textBindings[t]||[]).forEach(e=>{const n=this._origText.get(e)||"";e.textContent=n.replace(/{([^}]+)}/g,(a,r)=>(r=r.trim(),this.hasAttribute(r)?this.getAttribute(r):this.state[r]))})}disconnectedCallback(){s.log("disconnectedCallback",this)}static get observedAttributes(){return w}attributeChangedCallback(t,e,n){e!==n&&(this.state[t]=n)}emit(t,e){const n=e!=null?e:this.state;this.dispatchEvent(new CustomEvent(t,{detail:n,bubbles:!0}))}querySelector(t){return this.shadowRoot?this.shadowRoot.querySelector(t):super.querySelector(t)}querySelectorAll(t){return this.shadowRoot?this.shadowRoot.querySelectorAll(t):super.querySelectorAll(t)}}customElements.define(h,T),s.log(`Web component defined: <${h}></${h}>`)}},Symbol.toStringTag,{value:"Module"}));o.ladrillos=b,Object.defineProperty(o,Symbol.toStringTag,{value:"Module"})});
1
+ (function(r,n){typeof exports=="object"&&typeof module!="undefined"?n(exports):typeof define=="function"&&define.amd?define(["exports"],n):(r=typeof globalThis!="undefined"?globalThis:r||self,n(r.ladrillosjs={}))})(this,function(r){"use strict";var H=Object.defineProperty;var B=r=>{throw TypeError(r)};var q=(r,n,l)=>n in r?H(r,n,{enumerable:!0,configurable:!0,writable:!0,value:l}):r[n]=l;var b=(r,n,l)=>q(r,typeof n!="symbol"?n+"":n,l),P=(r,n,l)=>n.has(r)||B("Cannot "+l);var A=(r,n,l)=>(P(r,n,"read from private field"),l?l.call(r):n.get(r)),L=(r,n,l)=>n.has(r)?B("Cannot add the same private member more than once"):n instanceof WeakSet?n.add(r):n.set(r,l);var $=(r,n,l)=>new Promise((_,E)=>{var T=u=>{try{C(l.next(u))}catch(c){E(c)}},R=u=>{try{C(l.throw(u))}catch(c){E(c)}},C=u=>u.done?_(u.value):Promise.resolve(u.value).then(T,R);C((l=l.apply(r,n)).next())});var u;const n={log(c,...a){},error(c,...a){console.error(c,...a)},warn(c,...a){}},l=["___vscode_livepreview_injected_script"];class _{constructor(){L(this,u,new Map);this.components={}}registerComponent(a,h,d=!0){return $(this,null,function*(){if(this.components[a]){n.log(`Component ${a} already registered, skipping.`);return}try{let p=A(this,u).get(h);p||(p=yield(yield fetch(h)).text(),A(this,u).set(h,p));const x=p.replace(/<!--[\s\S]*?-->/g,""),w=new DOMParser().parseFromString(x,"text/html");let y="";const S=Array.from(w.querySelectorAll("script:not([type='module'])"));for(const s of S){const t=s.getAttribute("src");if(t&&l.some(o=>t.includes(o))){n.log(`Skipping ignored script "${t}"`),s.remove();continue}if(t){let o;try{o=t}catch(i){console.error(`Invalid script URL "${t}" (base "${h}") - skipping:`,i),s.remove();continue}try{const i=yield fetch(o);if(!i.ok)throw new Error(`HTTP ${i.status}`);y+=`
2
+ `+(yield i.text())}catch(i){console.error(`Could not load script at ${o} - skipping:`,i)}}else y+=`
3
+ `+s.textContent;s.remove()}y=y.replace(/\/\*[\s\S]*?\*\//g,"").replace(/\/\/.*$/gm,"").trim();let g="";const v=Array.from(w.querySelectorAll("link[rel='stylesheet']"));for(const s of v){const t=s.getAttribute("href");let o;try{o=t+"?raw"}catch(i){console.error(`Invalid stylesheet URL "${t}" (base "${h}") - skipping:`,i),s.remove();continue}try{const i=yield fetch(o);if(!i.ok)throw new Error(`HTTP ${i.status}`);g+=`
4
+ `+(yield i.text())}catch(i){console.error(`Could not load stylesheet at ${o} - skipping:`,i)}s.remove()}const m=Array.from(w.querySelectorAll("style"));for(const s of m)g+=`
5
+ `+s.textContent,s.remove();g=g.trim();const e=document.createElement("template");e.innerHTML=w.body.innerHTML,this.components[a]={tagName:a,template:e,script:y,style:g},this._defineWebComponent(a,d),n.log(`Component ${a} registered successfully`)}catch(p){n.error(`Failed to register component ${a}:`,p)}})}_defineWebComponent(a,h){return $(this,null,function*(){const{defineWebComponent:d}=yield Promise.resolve().then(()=>C);d(this.components[a],h)})}}u=new WeakMap,b(_,"_SCRIPT_ALL",/<script>([\s\S]*?)<\/script>/g),b(_,"_STYLE_ALL",/<style>([\s\S]*?)<\/style>/g),b(_,"_SCRIPT_ONE",/<script>([\s\S]*?)<\/script>/),b(_,"_STYLE_ONE",/<style>([\s\S]*?)<\/style>/);const E=new _;function T(c,a={}){return new Proxy(a,{set(h,d,p){const x=h[d];return h[d]=p,x!==p&&!c._initializing&&(typeof c._updateBinding=="function"?c._updateBinding(d,p):c._update()),!0},get(h,d){return h[d]}})}const C=Object.freeze(Object.defineProperty({__proto__:null,defineWebComponent:(c,a)=>{if(!c){n.error("Component is not defined or invalid.");return}if(customElements.get(c.tagName)){n.warn(`Component ${c.tagName} is already defined.`);return}const{tagName:h,template:d,script:p,style:x}=c,w=(m=>{const e=/{(.*?)}/g,s=new Set;let t;for(;(t=e.exec(m.innerHTML))!==null;)s.add(t[1].trim().toLowerCase());return Array.from(s)})(d),y=p.replace(/\b(?:const|let|var)\s+([\w$]+)\s*=/g,"state.$1 =").replace(/function\s+([\w$]+)\s*\(/g,"state.$1 = function ("),S=p?new Function("state",`with(state){${y}}`):()=>{},g=[];d.content.querySelectorAll("*").forEach(m=>{Array.from(m.attributes).forEach(e=>{if(!e.name.startsWith("on"))return;const s=e.name.slice(2),t=e.value.match(/{\s*([\w$]+)\(\)\s*}/);if(!t)return;const o=t[1];m.dataset._evtIndex=g.length,g.push({evt:s,fnName:o}),m.removeAttribute(e.name)})});class v extends HTMLElement{constructor(){super(),a&&this.attachShadow({mode:"open"}),this.state={},this.styleElement=document.createElement("style"),this.styleElement.textContent=x||"",this._textBindings={},this._origText=new Map,this._hasConnected=!1,this._isUpdating=!1,this._isBinding=!1}connectedCallback(){if(this._hasConnected)return;this._hasConnected=!0,this._textBindings={},this._origText=new Map;const e=d.content.cloneNode(!0);this.shadowRoot?this.shadowRoot.innerHTML="":this.innerHTML="",this.shadowRoot?(this.shadowRoot.appendChild(this.styleElement),this.shadowRoot.appendChild(e)):(this.appendChild(this.styleElement),this.appendChild(e)),this.state=T(this,{}),this._initializing=!0;try{S.call(this,this.state)}catch(t){console.error("Error initializing component script:",t)}finally{this._initializing=!1}const s=this.shadowRoot||this;this._processTemplate(s)}_processTemplate(e){this._getAllTextNodes(e).forEach(t=>{const o=t.textContent;o.includes("{")&&o.includes("}")&&(this._origText.set(t,o),t.textContent=o.replace(/{([^}]+)}/g,(i,f)=>(f=f.trim(),this._textBindings[f]=this._textBindings[f]||[],this._textBindings[f].push(t),this.hasAttribute(f)?this.getAttribute(f):this.state[f]!==void 0?this.state[f]:i)))}),g.forEach((t,o)=>{const i=e.querySelector(`[data-_evt-index="${o}"]`);i.removeAttribute("data-_evt-index"),i.addEventListener(t.evt,f=>{const N=this.state[t.fnName];typeof N=="function"&&N.call(i,f)})})}_getAllTextNodes(e){const s=[],t=document.createTreeWalker(e,NodeFilter.SHOW_TEXT,null,!1);let o;for(;o=t.nextNode();)s.push(o);return s}_update(){if(!this._isUpdating){this._isUpdating=!0;try{const e=d.content.cloneNode(!0);this._processTemplate(e),this.shadowRoot?(this.shadowRoot.innerHTML="",this.shadowRoot.appendChild(this.styleElement),this.shadowRoot.appendChild(e)):(this.innerHTML="",this.appendChild(this.styleElement),this.appendChild(e))}finally{this._isUpdating=!1}}}_updateBinding(e){if(!this._isBinding){this._isBinding=!0;try{(this._textBindings[e]||[]).forEach(s=>{const t=this._origText.get(s)||"";s.textContent=t.replace(/{([^}]+)}/g,(o,i)=>(i=i.trim(),this.hasAttribute(i)?this.getAttribute(i):this.state[i]))})}finally{this._isBinding=!1}}}disconnectedCallback(){this._hasConnected=!1,n.log("disconnectedCallback",this)}static get observedAttributes(){return w}attributeChangedCallback(e,s,t){s!==t&&(this.state[e]=t)}emit(e,s){const t=s!=null?s:this.state;this.dispatchEvent(new CustomEvent(e,{detail:t,bubbles:!0}))}querySelector(e){return this.shadowRoot?this.shadowRoot.querySelector(e):super.querySelector(e)}querySelectorAll(e){return this.shadowRoot?this.shadowRoot.querySelectorAll(e):super.querySelectorAll(e)}}customElements.define(h,v),n.log(`Web component defined: <${h}></${h}>`)}},Symbol.toStringTag,{value:"Module"}));r.ladrillos=E,Object.defineProperty(r,Symbol.toStringTag,{value:"Module"})});
@@ -0,0 +1,5 @@
1
+ "use strict";var k=Object.defineProperty;var C=t=>{throw TypeError(t)};var A=(t,e,r)=>e in t?k(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var y=(t,e,r)=>A(t,typeof e!="symbol"?e+"":e,r),b=(t,e,r)=>e.has(t)||C("Cannot "+r);var w=(t,e,r)=>(b(t,e,"read from private field"),r?r.call(t):e.get(t)),$=(t,e,r)=>e.has(t)?C("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r);var _=(t,e,r)=>new Promise((p,c)=>{var d=o=>{try{a(r.next(o))}catch(g){c(g)}},S=o=>{try{a(r.throw(o))}catch(g){c(g)}},a=o=>o.done?p(o.value):Promise.resolve(o.value).then(d,S);a((r=r.apply(t,e)).next())});const f={log(t,...e){},error(t,...e){console.error(t,...e)},warn(t,...e){}},L=["___vscode_livepreview_injected_script"];var h;class u{constructor(){$(this,h,new Map);this.components={}}registerComponent(e,r,p=!0){return _(this,null,function*(){if(this.components[e]){f.log(`Component ${e} already registered, skipping.`);return}try{let c=w(this,h).get(r);c||(c=yield(yield fetch(r)).text(),w(this,h).set(r,c));const d=c.replace(/<!--[\s\S]*?-->/g,""),a=new DOMParser().parseFromString(d,"text/html");let o="";const g=Array.from(a.querySelectorAll("script:not([type='module'])"));for(const n of g){const i=n.getAttribute("src");if(i&&L.some(l=>i.includes(l))){f.log(`Skipping ignored script "${i}"`),n.remove();continue}if(i){let l;try{l=i}catch(s){console.error(`Invalid script URL "${i}" (base "${r}") - skipping:`,s),n.remove();continue}try{const s=yield fetch(l);if(!s.ok)throw new Error(`HTTP ${s.status}`);o+=`
2
+ `+(yield s.text())}catch(s){console.error(`Could not load script at ${l} - skipping:`,s)}}else o+=`
3
+ `+n.textContent;n.remove()}o=o.replace(/\/\*[\s\S]*?\*\//g,"").replace(/\/\/.*$/gm,"").trim();let m="";const v=Array.from(a.querySelectorAll("link[rel='stylesheet']"));for(const n of v){const i=n.getAttribute("href");let l;try{l=i+"?raw"}catch(s){console.error(`Invalid stylesheet URL "${i}" (base "${r}") - skipping:`,s),n.remove();continue}try{const s=yield fetch(l);if(!s.ok)throw new Error(`HTTP ${s.status}`);m+=`
4
+ `+(yield s.text())}catch(s){console.error(`Could not load stylesheet at ${l} - skipping:`,s)}n.remove()}const T=Array.from(a.querySelectorAll("style"));for(const n of T)m+=`
5
+ `+n.textContent,n.remove();m=m.trim();const E=document.createElement("template");E.innerHTML=a.body.innerHTML,this.components[e]={tagName:e,template:E,script:o,style:m},this._defineWebComponent(e,p),f.log(`Component ${e} registered successfully`)}catch(c){f.error(`Failed to register component ${e}:`,c)}})}_defineWebComponent(e,r){return _(this,null,function*(){const{defineWebComponent:p}=yield Promise.resolve().then(()=>require("./webcomponent-6erZkQUw.js"));p(this.components[e],r)})}}h=new WeakMap,y(u,"_SCRIPT_ALL",/<script>([\s\S]*?)<\/script>/g),y(u,"_STYLE_ALL",/<style>([\s\S]*?)<\/style>/g),y(u,"_SCRIPT_ONE",/<script>([\s\S]*?)<\/script>/),y(u,"_STYLE_ONE",/<style>([\s\S]*?)<\/style>/);const x=new u;exports.ladrillos=x;exports.logger=f;
@@ -0,0 +1,171 @@
1
+ var k = Object.defineProperty;
2
+ var C = (t) => {
3
+ throw TypeError(t);
4
+ };
5
+ var A = (t, e, r) => e in t ? k(t, e, { enumerable: !0, configurable: !0, writable: !0, value: r }) : t[e] = r;
6
+ var y = (t, e, r) => A(t, typeof e != "symbol" ? e + "" : e, r), b = (t, e, r) => e.has(t) || C("Cannot " + r);
7
+ var w = (t, e, r) => (b(t, e, "read from private field"), r ? r.call(t) : e.get(t)), $ = (t, e, r) => e.has(t) ? C("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(t) : e.set(t, r);
8
+ var _ = (t, e, r) => new Promise((p, c) => {
9
+ var d = (o) => {
10
+ try {
11
+ a(r.next(o));
12
+ } catch (g) {
13
+ c(g);
14
+ }
15
+ }, S = (o) => {
16
+ try {
17
+ a(r.throw(o));
18
+ } catch (g) {
19
+ c(g);
20
+ }
21
+ }, a = (o) => o.done ? p(o.value) : Promise.resolve(o.value).then(d, S);
22
+ a((r = r.apply(t, e)).next());
23
+ });
24
+ const h = {
25
+ /**
26
+ * Log a message only in development mode
27
+ * @param {string} message - The message to log
28
+ * @param {any[]} args - Additional arguments to log
29
+ */
30
+ log(t, ...e) {
31
+ },
32
+ /**
33
+ * Log an error (always logs in both dev and production)
34
+ * @param {string} message - The error message
35
+ * @param {any[]} args - Additional arguments to log
36
+ */
37
+ error(t, ...e) {
38
+ console.error(t, ...e);
39
+ },
40
+ /**
41
+ * Log a warning only in development mode
42
+ * @param {string} message - The warning message
43
+ * @param {any[]} args - Additional arguments to log
44
+ */
45
+ warn(t, ...e) {
46
+ }
47
+ }, x = ["___vscode_livepreview_injected_script"];
48
+ var u;
49
+ class f {
50
+ constructor() {
51
+ $(this, u, /* @__PURE__ */ new Map());
52
+ this.components = {};
53
+ }
54
+ /**
55
+ * @param {string} name
56
+ * @param {string} path
57
+ * @param {boolean} [useShadowDOM=true]
58
+ * @returns {Promise<void>}
59
+ */
60
+ registerComponent(e, r, p = !0) {
61
+ return _(this, null, function* () {
62
+ if (this.components[e]) {
63
+ h.log(`Component ${e} already registered, skipping.`);
64
+ return;
65
+ }
66
+ try {
67
+ let c = w(this, u).get(r);
68
+ c || (c = yield (yield fetch(r)).text(), w(this, u).set(r, c));
69
+ const d = c.replace(/<!--[\s\S]*?-->/g, ""), a = new DOMParser().parseFromString(d, "text/html");
70
+ let o = "";
71
+ const g = Array.from(
72
+ a.querySelectorAll("script:not([type='module'])")
73
+ );
74
+ for (const n of g) {
75
+ const i = n.getAttribute("src");
76
+ if (i && x.some((l) => i.includes(l))) {
77
+ h.log(`Skipping ignored script "${i}"`), n.remove();
78
+ continue;
79
+ }
80
+ if (i) {
81
+ let l;
82
+ try {
83
+ l = i;
84
+ } catch (s) {
85
+ console.error(
86
+ `Invalid script URL "${i}" (base "${r}") - skipping:`,
87
+ s
88
+ ), n.remove();
89
+ continue;
90
+ }
91
+ try {
92
+ const s = yield fetch(l);
93
+ if (!s.ok) throw new Error(`HTTP ${s.status}`);
94
+ o += `
95
+ ` + (yield s.text());
96
+ } catch (s) {
97
+ console.error(
98
+ `Could not load script at ${l} - skipping:`,
99
+ s
100
+ );
101
+ }
102
+ } else
103
+ o += `
104
+ ` + n.textContent;
105
+ n.remove();
106
+ }
107
+ o = o.replace(/\/\*[\s\S]*?\*\//g, "").replace(/\/\/.*$/gm, "").trim();
108
+ let m = "";
109
+ const v = Array.from(
110
+ a.querySelectorAll("link[rel='stylesheet']")
111
+ );
112
+ for (const n of v) {
113
+ const i = n.getAttribute("href");
114
+ let l;
115
+ try {
116
+ l = i + "?raw";
117
+ } catch (s) {
118
+ console.error(
119
+ `Invalid stylesheet URL "${i}" (base "${r}") - skipping:`,
120
+ s
121
+ ), n.remove();
122
+ continue;
123
+ }
124
+ try {
125
+ const s = yield fetch(l);
126
+ if (!s.ok) throw new Error(`HTTP ${s.status}`);
127
+ m += `
128
+ ` + (yield s.text());
129
+ } catch (s) {
130
+ console.error(
131
+ `Could not load stylesheet at ${l} - skipping:`,
132
+ s
133
+ );
134
+ }
135
+ n.remove();
136
+ }
137
+ const T = Array.from(a.querySelectorAll("style"));
138
+ for (const n of T)
139
+ m += `
140
+ ` + n.textContent, n.remove();
141
+ m = m.trim();
142
+ const E = document.createElement("template");
143
+ E.innerHTML = a.body.innerHTML, this.components[e] = {
144
+ tagName: e,
145
+ template: E,
146
+ script: o,
147
+ style: m
148
+ }, this._defineWebComponent(e, p), h.log(`Component ${e} registered successfully`);
149
+ } catch (c) {
150
+ h.error(`Failed to register component ${e}:`, c);
151
+ }
152
+ });
153
+ }
154
+ /**
155
+ * @private
156
+ * @param {string} name
157
+ * @param {boolean} useShadowDOM
158
+ */
159
+ _defineWebComponent(e, r) {
160
+ return _(this, null, function* () {
161
+ const { defineWebComponent: p } = yield import("./webcomponent-BGHBTfQy.mjs");
162
+ p(this.components[e], r);
163
+ });
164
+ }
165
+ }
166
+ u = new WeakMap(), y(f, "_SCRIPT_ALL", /<script>([\s\S]*?)<\/script>/g), y(f, "_STYLE_ALL", /<style>([\s\S]*?)<\/style>/g), y(f, "_SCRIPT_ONE", /<script>([\s\S]*?)<\/script>/), y(f, "_STYLE_ONE", /<style>([\s\S]*?)<\/style>/);
167
+ const H = new f();
168
+ export {
169
+ H as a,
170
+ h as l
171
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("./main-BhrXwJZE.js");function C(a,u={}){return new Proxy(u,{set(h,r,l){const g=h[r];return h[r]=l,g!==l&&!a._initializing&&(typeof a._updateBinding=="function"?a._updateBinding(r,l):a._update()),!0},get(h,r){return h[r]}})}const b=(a,u)=>{if(!a){c.logger.error("Component is not defined or invalid.");return}if(customElements.get(a.tagName)){c.logger.warn(`Component ${a.tagName} is already defined.`);return}const{tagName:h,template:r,script:l,style:g}=a,m=(d=>{const t=/{(.*?)}/g,i=new Set;let e;for(;(e=t.exec(d.innerHTML))!==null;)i.add(e[1].trim().toLowerCase());return Array.from(i)})(r),_=l.replace(/\b(?:const|let|var)\s+([\w$]+)\s*=/g,"state.$1 =").replace(/function\s+([\w$]+)\s*\(/g,"state.$1 = function ("),x=l?new Function("state",`with(state){${_}}`):()=>{},f=[];r.content.querySelectorAll("*").forEach(d=>{Array.from(d.attributes).forEach(t=>{if(!t.name.startsWith("on"))return;const i=t.name.slice(2),e=t.value.match(/{\s*([\w$]+)\(\)\s*}/);if(!e)return;const s=e[1];d.dataset._evtIndex=f.length,f.push({evt:i,fnName:s}),d.removeAttribute(t.name)})});class w extends HTMLElement{constructor(){super(),u&&this.attachShadow({mode:"open"}),this.state={},this.styleElement=document.createElement("style"),this.styleElement.textContent=g||"",this._textBindings={},this._origText=new Map,this._hasConnected=!1,this._isUpdating=!1,this._isBinding=!1}connectedCallback(){if(this._hasConnected)return;this._hasConnected=!0,this._textBindings={},this._origText=new Map;const t=r.content.cloneNode(!0);this.shadowRoot?this.shadowRoot.innerHTML="":this.innerHTML="",this.shadowRoot?(this.shadowRoot.appendChild(this.styleElement),this.shadowRoot.appendChild(t)):(this.appendChild(this.styleElement),this.appendChild(t)),this.state=C(this,{}),this._initializing=!0;try{x.call(this,this.state)}catch(e){console.error("Error initializing component script:",e)}finally{this._initializing=!1}const i=this.shadowRoot||this;this._processTemplate(i)}_processTemplate(t){this._getAllTextNodes(t).forEach(e=>{const s=e.textContent;s.includes("{")&&s.includes("}")&&(this._origText.set(e,s),e.textContent=s.replace(/{([^}]+)}/g,(n,o)=>(o=o.trim(),this._textBindings[o]=this._textBindings[o]||[],this._textBindings[o].push(e),this.hasAttribute(o)?this.getAttribute(o):this.state[o]!==void 0?this.state[o]:n)))}),f.forEach((e,s)=>{const n=t.querySelector(`[data-_evt-index="${s}"]`);n.removeAttribute("data-_evt-index"),n.addEventListener(e.evt,o=>{const p=this.state[e.fnName];typeof p=="function"&&p.call(n,o)})})}_getAllTextNodes(t){const i=[],e=document.createTreeWalker(t,NodeFilter.SHOW_TEXT,null,!1);let s;for(;s=e.nextNode();)i.push(s);return i}_update(){if(!this._isUpdating){this._isUpdating=!0;try{const t=r.content.cloneNode(!0);this._processTemplate(t),this.shadowRoot?(this.shadowRoot.innerHTML="",this.shadowRoot.appendChild(this.styleElement),this.shadowRoot.appendChild(t)):(this.innerHTML="",this.appendChild(this.styleElement),this.appendChild(t))}finally{this._isUpdating=!1}}}_updateBinding(t){if(!this._isBinding){this._isBinding=!0;try{(this._textBindings[t]||[]).forEach(i=>{const e=this._origText.get(i)||"";i.textContent=e.replace(/{([^}]+)}/g,(s,n)=>(n=n.trim(),this.hasAttribute(n)?this.getAttribute(n):this.state[n]))})}finally{this._isBinding=!1}}}disconnectedCallback(){this._hasConnected=!1,c.logger.log("disconnectedCallback",this)}static get observedAttributes(){return m}attributeChangedCallback(t,i,e){i!==e&&(this.state[t]=e)}emit(t,i){const e=i!=null?i:this.state;this.dispatchEvent(new CustomEvent(t,{detail:e,bubbles:!0}))}querySelector(t){return this.shadowRoot?this.shadowRoot.querySelector(t):super.querySelector(t)}querySelectorAll(t){return this.shadowRoot?this.shadowRoot.querySelectorAll(t):super.querySelectorAll(t)}}customElements.define(h,w),c.logger.log(`Web component defined: <${h}></${h}>`)};exports.defineWebComponent=b;
@@ -0,0 +1,171 @@
1
+ import { l as c } from "./main-Bw2tFs_l.mjs";
2
+ function C(a, u = {}) {
3
+ return new Proxy(u, {
4
+ set(h, r, l) {
5
+ const f = h[r];
6
+ return h[r] = l, f !== l && !a._initializing && (typeof a._updateBinding == "function" ? a._updateBinding(r, l) : a._update()), !0;
7
+ },
8
+ get(h, r) {
9
+ return h[r];
10
+ }
11
+ });
12
+ }
13
+ const y = (a, u) => {
14
+ if (!a) {
15
+ c.error("Component is not defined or invalid.");
16
+ return;
17
+ }
18
+ if (customElements.get(a.tagName)) {
19
+ c.warn(`Component ${a.tagName} is already defined.`);
20
+ return;
21
+ }
22
+ const { tagName: h, template: r, script: l, style: f } = a, m = ((d) => {
23
+ const t = /{(.*?)}/g, i = /* @__PURE__ */ new Set();
24
+ let e;
25
+ for (; (e = t.exec(d.innerHTML)) !== null; )
26
+ i.add(e[1].trim().toLowerCase());
27
+ return Array.from(i);
28
+ })(r), _ = l.replace(/\b(?:const|let|var)\s+([\w$]+)\s*=/g, "state.$1 =").replace(/function\s+([\w$]+)\s*\(/g, "state.$1 = function ("), x = l ? new Function("state", `with(state){${_}}`) : () => {
29
+ }, g = [];
30
+ r.content.querySelectorAll("*").forEach((d) => {
31
+ Array.from(d.attributes).forEach((t) => {
32
+ if (!t.name.startsWith("on")) return;
33
+ const i = t.name.slice(2), e = t.value.match(/{\s*([\w$]+)\(\)\s*}/);
34
+ if (!e) return;
35
+ const s = e[1];
36
+ d.dataset._evtIndex = g.length, g.push({ evt: i, fnName: s }), d.removeAttribute(t.name);
37
+ });
38
+ });
39
+ class w extends HTMLElement {
40
+ constructor() {
41
+ super(), u && this.attachShadow({ mode: "open" }), this.state = {}, this.styleElement = document.createElement("style"), this.styleElement.textContent = f || "", this._textBindings = {}, this._origText = /* @__PURE__ */ new Map(), this._hasConnected = !1, this._isUpdating = !1, this._isBinding = !1;
42
+ }
43
+ /**
44
+ * Called when element is inserted into the DOM.
45
+ * - Initializes reactive state
46
+ * - Runs user script to populate state
47
+ * - Processes template bindings
48
+ * - Appends style + content to (shadow) root
49
+ */
50
+ connectedCallback() {
51
+ if (this._hasConnected) return;
52
+ this._hasConnected = !0, this._textBindings = {}, this._origText = /* @__PURE__ */ new Map();
53
+ const t = r.content.cloneNode(!0);
54
+ this.shadowRoot ? this.shadowRoot.innerHTML = "" : this.innerHTML = "", this.shadowRoot ? (this.shadowRoot.appendChild(this.styleElement), this.shadowRoot.appendChild(t)) : (this.appendChild(this.styleElement), this.appendChild(t)), this.state = C(this, {}), this._initializing = !0;
55
+ try {
56
+ x.call(this, this.state);
57
+ } catch (e) {
58
+ console.error("Error initializing component script:", e);
59
+ } finally {
60
+ this._initializing = !1;
61
+ }
62
+ const i = this.shadowRoot || this;
63
+ this._processTemplate(i);
64
+ }
65
+ _processTemplate(t) {
66
+ this._getAllTextNodes(t).forEach((e) => {
67
+ const s = e.textContent;
68
+ s.includes("{") && s.includes("}") && (this._origText.set(e, s), e.textContent = s.replace(/{([^}]+)}/g, (n, o) => (o = o.trim(), this._textBindings[o] = this._textBindings[o] || [], this._textBindings[o].push(e), this.hasAttribute(o) ? this.getAttribute(o) : this.state[o] !== void 0 ? this.state[o] : n)));
69
+ }), g.forEach((e, s) => {
70
+ const n = t.querySelector(`[data-_evt-index="${s}"]`);
71
+ n.removeAttribute("data-_evt-index"), n.addEventListener(e.evt, (o) => {
72
+ const p = this.state[e.fnName];
73
+ typeof p == "function" && p.call(n, o);
74
+ });
75
+ });
76
+ }
77
+ /**
78
+ * Retrieve all text nodes under a given root node.
79
+ *
80
+ * @param {Node} node
81
+ * @returns {Text[]}
82
+ */
83
+ _getAllTextNodes(t) {
84
+ const i = [], e = document.createTreeWalker(
85
+ t,
86
+ NodeFilter.SHOW_TEXT,
87
+ null,
88
+ !1
89
+ );
90
+ let s;
91
+ for (; s = e.nextNode(); )
92
+ i.push(s);
93
+ return i;
94
+ }
95
+ /**
96
+ * clears previous DOM, re-processes template and styles.
97
+ * Usually called by reactive state on mutation.
98
+ */
99
+ _update() {
100
+ if (!this._isUpdating) {
101
+ this._isUpdating = !0;
102
+ try {
103
+ const t = r.content.cloneNode(!0);
104
+ this._processTemplate(t), this.shadowRoot ? (this.shadowRoot.innerHTML = "", this.shadowRoot.appendChild(this.styleElement), this.shadowRoot.appendChild(t)) : (this.innerHTML = "", this.appendChild(this.styleElement), this.appendChild(t));
105
+ } finally {
106
+ this._isUpdating = !1;
107
+ }
108
+ }
109
+ }
110
+ // only update the nodes bound to a single key
111
+ _updateBinding(t) {
112
+ if (!this._isBinding) {
113
+ this._isBinding = !0;
114
+ try {
115
+ (this._textBindings[t] || []).forEach((i) => {
116
+ const e = this._origText.get(i) || "";
117
+ i.textContent = e.replace(/{([^}]+)}/g, (s, n) => (n = n.trim(), this.hasAttribute(n) ? this.getAttribute(n) : this.state[n]));
118
+ });
119
+ } finally {
120
+ this._isBinding = !1;
121
+ }
122
+ }
123
+ }
124
+ /**
125
+ * Called when the element is removed from the DOM
126
+ */
127
+ disconnectedCallback() {
128
+ this._hasConnected = !1, c.log("disconnectedCallback", this);
129
+ }
130
+ // property
131
+ static get observedAttributes() {
132
+ return m;
133
+ }
134
+ /**
135
+ * Called when one of the observed attributes changes.
136
+ * Updates state and triggers a re-render via the reactive proxy.
137
+ *
138
+ * @param {string} name
139
+ * @param {string} oldVal
140
+ * @param {string} newVal
141
+ */
142
+ attributeChangedCallback(t, i, e) {
143
+ i !== e && (this.state[t] = e);
144
+ }
145
+ /**
146
+ * Dispatch a custom event from the component.
147
+ *
148
+ * @param {string} name Event name
149
+ * @param {*} [detail] Payload; defaults to full component state
150
+ */
151
+ emit(t, i) {
152
+ const e = i != null ? i : this.state;
153
+ this.dispatchEvent(
154
+ new CustomEvent(t, {
155
+ detail: e,
156
+ bubbles: !0
157
+ })
158
+ );
159
+ }
160
+ querySelector(t) {
161
+ return this.shadowRoot ? this.shadowRoot.querySelector(t) : super.querySelector(t);
162
+ }
163
+ querySelectorAll(t) {
164
+ return this.shadowRoot ? this.shadowRoot.querySelectorAll(t) : super.querySelectorAll(t);
165
+ }
166
+ }
167
+ customElements.define(h, w), c.log(`Web component defined: <${h}></${h}>`);
168
+ };
169
+ export {
170
+ y as defineWebComponent
171
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ladrillosjs",
3
- "version": "0.1.5",
3
+ "version": "0.1.7",
4
4
  "description": "A lightweight, zero-dependency web component framework for building modular web applications.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -15,8 +15,7 @@
15
15
  "exports": {
16
16
  ".": {
17
17
  "import": "./dist/ladrillosjs.es.js",
18
- "require": "./dist/ladrillosjs.cjs.js",
19
- "browser": "./dist/ladrillosjs.umd.js"
18
+ "require": "./dist/ladrillosjs.cjs.js"
20
19
  }
21
20
  },
22
21
  "scripts": {
@@ -1,167 +0,0 @@
1
- var k = Object.defineProperty;
2
- var $ = (e) => {
3
- throw TypeError(e);
4
- };
5
- var b = (e, t, r) => t in e ? k(e, t, { enumerable: !0, configurable: !0, writable: !0, value: r }) : e[t] = r;
6
- var y = (e, t, r) => b(e, typeof t != "symbol" ? t + "" : t, r), v = (e, t, r) => t.has(e) || $("Cannot " + r);
7
- var w = (e, t, r) => (v(e, t, "read from private field"), r ? r.call(e) : t.get(e)), A = (e, t, r) => t.has(e) ? $("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(e) : t.set(e, r);
8
- var d = (e, t, r) => new Promise((a, c) => {
9
- var u = (o) => {
10
- try {
11
- l(r.next(o));
12
- } catch (p) {
13
- c(p);
14
- }
15
- }, S = (o) => {
16
- try {
17
- l(r.throw(o));
18
- } catch (p) {
19
- c(p);
20
- }
21
- }, l = (o) => o.done ? a(o.value) : Promise.resolve(o.value).then(u, S);
22
- l((r = r.apply(e, t)).next());
23
- });
24
- const E = {
25
- /**
26
- * Log a message only in development mode
27
- * @param {string} message - The message to log
28
- * @param {any[]} args - Additional arguments to log
29
- */
30
- log(e, ...t) {
31
- },
32
- /**
33
- * Log an error (always logs in both dev and production)
34
- * @param {string} message - The error message
35
- * @param {any[]} args - Additional arguments to log
36
- */
37
- error(e, ...t) {
38
- console.error(e, ...t);
39
- },
40
- /**
41
- * Log a warning only in development mode
42
- * @param {string} message - The warning message
43
- * @param {any[]} args - Additional arguments to log
44
- */
45
- warn(e, ...t) {
46
- }
47
- };
48
- var h;
49
- class f {
50
- constructor() {
51
- A(this, h, /* @__PURE__ */ new Map());
52
- this.components = {};
53
- }
54
- /**
55
- * @param {string} name
56
- * @param {string} path
57
- * @param {boolean} [useShadowDOM=true]
58
- * @returns {Promise<void>}
59
- */
60
- registerComponent(t, r, a = !0) {
61
- return d(this, null, function* () {
62
- if (this.components[t]) {
63
- E.log(`Component ${t} already registered, skipping.`);
64
- return;
65
- }
66
- try {
67
- let c = w(this, h).get(r);
68
- c || (c = yield (yield fetch(r)).text(), w(this, h).set(r, c));
69
- const u = c.replace(/<!--[\s\S]*?-->/g, ""), l = new DOMParser().parseFromString(u, "text/html");
70
- let o = "";
71
- const p = Array.from(
72
- l.querySelectorAll("script:not([type='module'])")
73
- );
74
- for (const n of p) {
75
- if (n.src) {
76
- const g = n.getAttribute("src");
77
- let i;
78
- try {
79
- i = g;
80
- } catch (s) {
81
- console.error(
82
- `Invalid script URL "${g}" (base "${r}") - skipping:`,
83
- s
84
- ), n.remove();
85
- continue;
86
- }
87
- try {
88
- const s = yield fetch(i);
89
- if (!s.ok) throw new Error(`HTTP ${s.status}`);
90
- o += `
91
- ` + (yield s.text());
92
- } catch (s) {
93
- console.error(
94
- `Could not load script at ${i} - skipping:`,
95
- s
96
- );
97
- }
98
- } else
99
- o += `
100
- ` + n.textContent;
101
- n.remove();
102
- }
103
- o = o.replace(/\/\*[\s\S]*?\*\//g, "").replace(/\/\/.*$/gm, "").trim();
104
- let m = "";
105
- const T = Array.from(
106
- l.querySelectorAll("link[rel='stylesheet']")
107
- );
108
- for (const n of T) {
109
- const g = n.getAttribute("href");
110
- let i;
111
- try {
112
- i = g + "?raw";
113
- } catch (s) {
114
- console.error(
115
- `Invalid stylesheet URL "${g}" (base "${r}") - skipping:`,
116
- s
117
- ), n.remove();
118
- continue;
119
- }
120
- try {
121
- const s = yield fetch(i);
122
- if (!s.ok) throw new Error(`HTTP ${s.status}`);
123
- m += `
124
- ` + (yield s.text());
125
- } catch (s) {
126
- console.error(
127
- `Could not load stylesheet at ${i} - skipping:`,
128
- s
129
- );
130
- }
131
- n.remove();
132
- }
133
- const _ = Array.from(l.querySelectorAll("style"));
134
- for (const n of _)
135
- m += `
136
- ` + n.textContent, n.remove();
137
- m = m.trim();
138
- const C = document.createElement("template");
139
- C.innerHTML = l.body.innerHTML, this.components[t] = {
140
- tagName: t,
141
- template: C,
142
- script: o,
143
- style: m
144
- }, this._defineWebComponent(t, a), E.log(`Component ${t} registered successfully`);
145
- } catch (c) {
146
- E.error(`Failed to register component ${t}:`, c);
147
- }
148
- });
149
- }
150
- /**
151
- * @private
152
- * @param {string} name
153
- * @param {boolean} useShadowDOM
154
- */
155
- _defineWebComponent(t, r) {
156
- return d(this, null, function* () {
157
- const { defineWebComponent: a } = yield import("./webcomponent-CjT9G5Wz.mjs");
158
- a(this.components[t], r);
159
- });
160
- }
161
- }
162
- h = new WeakMap(), y(f, "_SCRIPT_ALL", /<script>([\s\S]*?)<\/script>/g), y(f, "_STYLE_ALL", /<style>([\s\S]*?)<\/style>/g), y(f, "_SCRIPT_ONE", /<script>([\s\S]*?)<\/script>/), y(f, "_STYLE_ONE", /<style>([\s\S]*?)<\/style>/);
163
- const L = new f();
164
- export {
165
- L as a,
166
- E as l
167
- };
@@ -1,5 +0,0 @@
1
- "use strict";var k=Object.defineProperty;var $=t=>{throw TypeError(t)};var b=(t,e,r)=>e in t?k(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var y=(t,e,r)=>b(t,typeof e!="symbol"?e+"":e,r),v=(t,e,r)=>e.has(t)||$("Cannot "+r);var w=(t,e,r)=>(v(t,e,"read from private field"),r?r.call(t):e.get(t)),A=(t,e,r)=>e.has(t)?$("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r);var E=(t,e,r)=>new Promise((a,c)=>{var d=o=>{try{l(r.next(o))}catch(p){c(p)}},S=o=>{try{l(r.throw(o))}catch(p){c(p)}},l=o=>o.done?a(o.value):Promise.resolve(o.value).then(d,S);l((r=r.apply(t,e)).next())});const u={log(t,...e){},error(t,...e){console.error(t,...e)},warn(t,...e){}};var h;class f{constructor(){A(this,h,new Map);this.components={}}registerComponent(e,r,a=!0){return E(this,null,function*(){if(this.components[e]){u.log(`Component ${e} already registered, skipping.`);return}try{let c=w(this,h).get(r);c||(c=yield(yield fetch(r)).text(),w(this,h).set(r,c));const d=c.replace(/<!--[\s\S]*?-->/g,""),l=new DOMParser().parseFromString(d,"text/html");let o="";const p=Array.from(l.querySelectorAll("script:not([type='module'])"));for(const n of p){if(n.src){const m=n.getAttribute("src");let i;try{i=m}catch(s){console.error(`Invalid script URL "${m}" (base "${r}") - skipping:`,s),n.remove();continue}try{const s=yield fetch(i);if(!s.ok)throw new Error(`HTTP ${s.status}`);o+=`
2
- `+(yield s.text())}catch(s){console.error(`Could not load script at ${i} - skipping:`,s)}}else o+=`
3
- `+n.textContent;n.remove()}o=o.replace(/\/\*[\s\S]*?\*\//g,"").replace(/\/\/.*$/gm,"").trim();let g="";const T=Array.from(l.querySelectorAll("link[rel='stylesheet']"));for(const n of T){const m=n.getAttribute("href");let i;try{i=m+"?raw"}catch(s){console.error(`Invalid stylesheet URL "${m}" (base "${r}") - skipping:`,s),n.remove();continue}try{const s=yield fetch(i);if(!s.ok)throw new Error(`HTTP ${s.status}`);g+=`
4
- `+(yield s.text())}catch(s){console.error(`Could not load stylesheet at ${i} - skipping:`,s)}n.remove()}const _=Array.from(l.querySelectorAll("style"));for(const n of _)g+=`
5
- `+n.textContent,n.remove();g=g.trim();const C=document.createElement("template");C.innerHTML=l.body.innerHTML,this.components[e]={tagName:e,template:C,script:o,style:g},this._defineWebComponent(e,a),u.log(`Component ${e} registered successfully`)}catch(c){u.error(`Failed to register component ${e}:`,c)}})}_defineWebComponent(e,r){return E(this,null,function*(){const{defineWebComponent:a}=yield Promise.resolve().then(()=>require("./webcomponent-BAieZxvs.js"));a(this.components[e],r)})}}h=new WeakMap,y(f,"_SCRIPT_ALL",/<script>([\s\S]*?)<\/script>/g),y(f,"_STYLE_ALL",/<style>([\s\S]*?)<\/style>/g),y(f,"_SCRIPT_ONE",/<script>([\s\S]*?)<\/script>/),y(f,"_STYLE_ONE",/<style>([\s\S]*?)<\/style>/);const L=new f;exports.ladrillos=L;exports.logger=u;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("./main-DEaqXlbt.js");function C(a,u={}){return new Proxy(u,{set(l,r,h){const g=l[r];return l[r]=h,g!==h&&!a._initializing&&(typeof a._updateBinding=="function"?a._updateBinding(r,h):a._update()),!0},get(l,r){return l[r]}})}const b=(a,u)=>{if(!a){d.logger.error("Component is not defined or invalid.");return}if(customElements.get(a.tagName)){d.logger.warn(`Component ${a.tagName} is already defined.`);return}const{tagName:l,template:r,script:h,style:g}=a,f=(c=>{const t=/{(.*?)}/g,i=new Set;let e;for(;(e=t.exec(c.innerHTML))!==null;)i.add(e[1].trim().toLowerCase());return Array.from(i)})(r),x=h.replace(/\b(?:const|let|var)\s+([\w$]+)\s*=/g,"state.$1 =").replace(/function\s+([\w$]+)\s*\(/g,"state.$1 = function ("),w=h?new Function("state",`with(state){${x}}`):()=>{},p=[];r.content.querySelectorAll("*").forEach(c=>{Array.from(c.attributes).forEach(t=>{if(!t.name.startsWith("on"))return;const i=t.name.slice(2),e=t.value.match(/{\s*([\w$]+)\(\)\s*}/);if(!e)return;const n=e[1];c.dataset._evtIndex=p.length,p.push({evt:i,fnName:n}),c.removeAttribute(t.name)})});class _ extends HTMLElement{constructor(){super(),u&&this.attachShadow({mode:"open"}),this.state={},this.styleElement=document.createElement("style"),this.styleElement.textContent=g||"",this._textBindings={},this._origText=new Map}connectedCallback(){this._textBindings={},this._origText=new Map;const t=r.content.cloneNode(!0);this.shadowRoot?(this.shadowRoot.appendChild(this.styleElement),this.shadowRoot.appendChild(t)):(this.appendChild(this.styleElement),this.appendChild(t)),this.state=C(this,{}),this._initializing=!0;try{w.call(this,this.state)}catch(e){console.error("Error initializing component script:",e)}finally{this._initializing=!1}const i=this.shadowRoot||this;this._processTemplate(i)}_processTemplate(t){this._getAllTextNodes(t).forEach(e=>{const n=e.textContent;n.includes("{")&&n.includes("}")&&(this._origText.set(e,n),e.textContent=n.replace(/{([^}]+)}/g,(s,o)=>(o=o.trim(),this._textBindings[o]=this._textBindings[o]||[],this._textBindings[o].push(e),this.hasAttribute(o)?this.getAttribute(o):this.state[o]!==void 0?this.state[o]:s)))}),p.forEach((e,n)=>{const s=t.querySelector(`[data-_evt-index="${n}"]`);s.removeAttribute("data-_evt-index"),s.addEventListener(e.evt,o=>{const m=this.state[e.fnName];typeof m=="function"&&m.call(s,o)})})}_getAllTextNodes(t){const i=[],e=document.createTreeWalker(t,NodeFilter.SHOW_TEXT,null,!1);let n;for(;n=e.nextNode();)i.push(n);return i}_update(){const t=r.content.cloneNode(!0);this._processTemplate(t),this.shadowRoot?(this.shadowRoot.innerHTML="",this.shadowRoot.appendChild(this.styleElement),this.shadowRoot.appendChild(t)):(this.innerHTML="",this.appendChild(this.styleElement),this.appendChild(t))}_updateBinding(t){(this._textBindings[t]||[]).forEach(i=>{const e=this._origText.get(i)||"";i.textContent=e.replace(/{([^}]+)}/g,(n,s)=>(s=s.trim(),this.hasAttribute(s)?this.getAttribute(s):this.state[s]))})}disconnectedCallback(){d.logger.log("disconnectedCallback",this)}static get observedAttributes(){return f}attributeChangedCallback(t,i,e){i!==e&&(this.state[t]=e)}emit(t,i){const e=i!=null?i:this.state;this.dispatchEvent(new CustomEvent(t,{detail:e,bubbles:!0}))}querySelector(t){return this.shadowRoot?this.shadowRoot.querySelector(t):super.querySelector(t)}querySelectorAll(t){return this.shadowRoot?this.shadowRoot.querySelectorAll(t):super.querySelectorAll(t)}}customElements.define(l,_),d.logger.log(`Web component defined: <${l}></${l}>`)};exports.defineWebComponent=b;
@@ -1,156 +0,0 @@
1
- import { l as d } from "./main-BLGdqIcm.mjs";
2
- function C(a, u = {}) {
3
- return new Proxy(u, {
4
- set(l, r, h) {
5
- const p = l[r];
6
- return l[r] = h, p !== h && !a._initializing && (typeof a._updateBinding == "function" ? a._updateBinding(r, h) : a._update()), !0;
7
- },
8
- get(l, r) {
9
- return l[r];
10
- }
11
- });
12
- }
13
- const T = (a, u) => {
14
- if (!a) {
15
- d.error("Component is not defined or invalid.");
16
- return;
17
- }
18
- if (customElements.get(a.tagName)) {
19
- d.warn(`Component ${a.tagName} is already defined.`);
20
- return;
21
- }
22
- const { tagName: l, template: r, script: h, style: p } = a, g = ((c) => {
23
- const t = /{(.*?)}/g, s = /* @__PURE__ */ new Set();
24
- let e;
25
- for (; (e = t.exec(c.innerHTML)) !== null; )
26
- s.add(e[1].trim().toLowerCase());
27
- return Array.from(s);
28
- })(r), x = h.replace(/\b(?:const|let|var)\s+([\w$]+)\s*=/g, "state.$1 =").replace(/function\s+([\w$]+)\s*\(/g, "state.$1 = function ("), w = h ? new Function("state", `with(state){${x}}`) : () => {
29
- }, m = [];
30
- r.content.querySelectorAll("*").forEach((c) => {
31
- Array.from(c.attributes).forEach((t) => {
32
- if (!t.name.startsWith("on")) return;
33
- const s = t.name.slice(2), e = t.value.match(/{\s*([\w$]+)\(\)\s*}/);
34
- if (!e) return;
35
- const i = e[1];
36
- c.dataset._evtIndex = m.length, m.push({ evt: s, fnName: i }), c.removeAttribute(t.name);
37
- });
38
- });
39
- class _ extends HTMLElement {
40
- constructor() {
41
- super(), u && this.attachShadow({ mode: "open" }), this.state = {}, this.styleElement = document.createElement("style"), this.styleElement.textContent = p || "", this._textBindings = {}, this._origText = /* @__PURE__ */ new Map();
42
- }
43
- /**
44
- * Called when element is inserted into the DOM.
45
- * - Initializes reactive state
46
- * - Runs user script to populate state
47
- * - Processes template bindings
48
- * - Appends style + content to (shadow) root
49
- */
50
- connectedCallback() {
51
- this._textBindings = {}, this._origText = /* @__PURE__ */ new Map();
52
- const t = r.content.cloneNode(!0);
53
- this.shadowRoot ? (this.shadowRoot.appendChild(this.styleElement), this.shadowRoot.appendChild(t)) : (this.appendChild(this.styleElement), this.appendChild(t)), this.state = C(this, {}), this._initializing = !0;
54
- try {
55
- w.call(this, this.state);
56
- } catch (e) {
57
- console.error("Error initializing component script:", e);
58
- } finally {
59
- this._initializing = !1;
60
- }
61
- const s = this.shadowRoot || this;
62
- this._processTemplate(s);
63
- }
64
- _processTemplate(t) {
65
- this._getAllTextNodes(t).forEach((e) => {
66
- const i = e.textContent;
67
- i.includes("{") && i.includes("}") && (this._origText.set(e, i), e.textContent = i.replace(/{([^}]+)}/g, (n, o) => (o = o.trim(), this._textBindings[o] = this._textBindings[o] || [], this._textBindings[o].push(e), this.hasAttribute(o) ? this.getAttribute(o) : this.state[o] !== void 0 ? this.state[o] : n)));
68
- }), m.forEach((e, i) => {
69
- const n = t.querySelector(`[data-_evt-index="${i}"]`);
70
- n.removeAttribute("data-_evt-index"), n.addEventListener(e.evt, (o) => {
71
- const f = this.state[e.fnName];
72
- typeof f == "function" && f.call(n, o);
73
- });
74
- });
75
- }
76
- /**
77
- * Retrieve all text nodes under a given root node.
78
- *
79
- * @param {Node} node
80
- * @returns {Text[]}
81
- */
82
- _getAllTextNodes(t) {
83
- const s = [], e = document.createTreeWalker(
84
- t,
85
- NodeFilter.SHOW_TEXT,
86
- null,
87
- !1
88
- );
89
- let i;
90
- for (; i = e.nextNode(); )
91
- s.push(i);
92
- return s;
93
- }
94
- /**
95
- * clears previous DOM, re-processes template and styles.
96
- * Usually called by reactive state on mutation.
97
- */
98
- _update() {
99
- const t = r.content.cloneNode(!0);
100
- this._processTemplate(t), this.shadowRoot ? (this.shadowRoot.innerHTML = "", this.shadowRoot.appendChild(this.styleElement), this.shadowRoot.appendChild(t)) : (this.innerHTML = "", this.appendChild(this.styleElement), this.appendChild(t));
101
- }
102
- // only update the nodes bound to a single key
103
- _updateBinding(t) {
104
- (this._textBindings[t] || []).forEach((s) => {
105
- const e = this._origText.get(s) || "";
106
- s.textContent = e.replace(/{([^}]+)}/g, (i, n) => (n = n.trim(), this.hasAttribute(n) ? this.getAttribute(n) : this.state[n]));
107
- });
108
- }
109
- /**
110
- * Called when the element is removed from the DOM
111
- */
112
- disconnectedCallback() {
113
- d.log("disconnectedCallback", this);
114
- }
115
- // property
116
- static get observedAttributes() {
117
- return g;
118
- }
119
- /**
120
- * Called when one of the observed attributes changes.
121
- * Updates state and triggers a re-render via the reactive proxy.
122
- *
123
- * @param {string} name
124
- * @param {string} oldVal
125
- * @param {string} newVal
126
- */
127
- attributeChangedCallback(t, s, e) {
128
- s !== e && (this.state[t] = e);
129
- }
130
- /**
131
- * Dispatch a custom event from the component.
132
- *
133
- * @param {string} name Event name
134
- * @param {*} [detail] Payload; defaults to full component state
135
- */
136
- emit(t, s) {
137
- const e = s != null ? s : this.state;
138
- this.dispatchEvent(
139
- new CustomEvent(t, {
140
- detail: e,
141
- bubbles: !0
142
- })
143
- );
144
- }
145
- querySelector(t) {
146
- return this.shadowRoot ? this.shadowRoot.querySelector(t) : super.querySelector(t);
147
- }
148
- querySelectorAll(t) {
149
- return this.shadowRoot ? this.shadowRoot.querySelectorAll(t) : super.querySelectorAll(t);
150
- }
151
- }
152
- customElements.define(l, _), d.log(`Web component defined: <${l}></${l}>`);
153
- };
154
- export {
155
- T as defineWebComponent
156
- };