2 lines
7.5 KiB
JavaScript
2 lines
7.5 KiB
JavaScript
var m=(e)=>typeof e==="function",P=(e)=>e&&typeof e==="object",S=Array.isArray,E=typeof document<"u"?document:null,U=(e)=>e?._isRuntime?e.container:e instanceof Node?e:E.createTextNode(e==null?"":String(e)),d=null,_=null,b=!1,C=0,T=new Set,M=new WeakMap,j=Symbol("iter"),B=new WeakMap,g=(e)=>{if(!e||e._disposed)return;e._disposed=!0;let s=[e];while(s.length){let t=s.pop();if(t._cleanups)t._cleanups.forEach((c)=>c()),t._cleanups.clear();if(t._children)t._children.forEach((c)=>s.push(c)),t._children.clear();if(t._deps)t._deps.forEach((c)=>c.delete(t)),t._deps.clear()}},k=(e)=>{if(_)(_._mounts||=[]).push(e)},N=(e)=>{if(_)(_._cleanups||=new Set).add(e)},z=(e)=>{let s=d;d=null;try{return e()}finally{d=s}},x=(e,s=!1)=>{let t=()=>{if(t._disposed)return;if(t._deps)t._deps.forEach((n)=>n.delete(t));if(t._cleanups)t._cleanups.forEach((n)=>n()),t._cleanups.clear();let c=d,r=_;d=_=t;try{return t._result=e()}catch(n){console.error("[SigPro]",n)}finally{d=c,_=r}};if(t._deps=t._cleanups=t._children=null,t._disposed=!1,t._isComputed=s,t._depth=d?d._depth+1:0,t._mounts=[],t._parent=_,_)(_._children||=new Set).add(t);return t},W=()=>{if(b)return;b=!0;let e=Array.from(T).sort((s,t)=>s._depth-t._depth);T.clear();for(let s of e)if(!s._disposed)s();b=!1},F=(e)=>{C++;try{return e()}finally{if(C--,C===0&&T.size>0&&!b)W()}},w=(e,s=!1)=>{if(!s&&d&&!d._disposed)e.add(d),(d._deps||=new Set).add(e);else if(s){let t=!1;if(e.forEach((c)=>{if(c===d||c._disposed)return;if(c._isComputed){if(c._dirty=!0,c._subs)w(c._subs,!0)}else T.add(c),t=!0}),t&&!b&&C===0)queueMicrotask(W)}},L=(e,s=null)=>{let t=new Set;if(m(e)){let c,r=!0,n=()=>{if(r){let i=d;d=n;try{let o=e();if(!Object.is(c,o))c=o,r=!1,w(t,!0)}finally{d=i}}return w(t),c};if(n._isComputed=!0,n._subs=t,n._dirty=!0,n._deps=null,n._disposed=!1,n.markDirty=()=>{r=!0},n.stop=()=>{if(n._disposed=!0,n._deps)n._deps.forEach((i)=>i.delete(n)),n._deps.clear();t.clear()},_)N(n.stop);return n}if(s)try{e=JSON.parse(localStorage.getItem(s))??e}catch(c){}return(...c)=>{if(c.length){let r=m(c[0])?c[0](e):c[0];if(!Object.is(e,r)){if(e=r,s)localStorage.setItem(s,JSON.stringify(e));w(t,!0)}}return w(t),e}},V=(e)=>{if(!P(e))return e;if(M.has(e))return M.get(e);let s=new Map,t=(r)=>{let n=s.get(r);if(!n)s.set(r,n=new Set);return n},c=new Proxy(e,{get(r,n){return w(t(n)),V(r[n])},set(r,n,i){let o=!(n in r);if(!Object.is(r[n],i)){if(r[n]=i,w(t(n),!0),o)w(t(j),!0)}return!0},deleteProperty(r,n){let i=Reflect.deleteProperty(r,n);if(i)w(t(n),!0),w(t(j),!0);return i},ownKeys(r){return w(t(j)),Reflect.ownKeys(r)}});return M.set(e,c),c},A=(e,s)=>{if(s===void 0){let c=x(e);return c(),()=>g(c)}let t=x(()=>{let c=Array.isArray(e)?e.map((r)=>r()):e();z(()=>s(c))});return t(),()=>g(t)},$=(e)=>{if(e._cleanups)e._cleanups.forEach((s)=>s()),e._cleanups.clear();if(e._ownerEffect)g(e._ownerEffect);if(e.childNodes)e.childNodes.forEach($)},G=/^\s*(javascript|data|vbscript):/i,J=(e)=>e==="src"||e==="href"||e.startsWith("on"),D=(e,s)=>{if(s==null||s===!1)return null;if(J(e)){let t=String(s);if(G.test(t))return console.warn(`[SigPro] Bloqueado protocolo peligroso en ${e}`),"#"}return s},R=(e,s={},t=[])=>{if(s instanceof Node||S(s)||!P(s))t=s,s={};if(m(e)){let i={_mounts:[],_cleanups:new Set},o=x(()=>{let l=e(s,{children:t,emit:(h,...u)=>s[`on${h[0].toUpperCase()}${h.slice(1)}`]?.(...u)});return o._result=l,l});o();let a=o._result;if(a==null)return null;let f=a instanceof Node||S(a)&&a.every((l)=>l instanceof Node)?a:E.createTextNode(String(a)),p=(l)=>{if(P(l)&&!l._isRuntime)l._mounts=o._mounts||[],l._cleanups=o._cleanups||new Set,l._ownerEffect=o};return S(f)?f.forEach(p):p(f),f}let c=/^(svg|path|circle|rect|line|polyline|polygon|g|defs|text|tspan|use)$/.test(e),r=c?E.createElementNS("http://www.w3.org/2000/svg",e):E.createElement(e);r._cleanups=new Set;for(let i in s){if(!s.hasOwnProperty(i))continue;let o=s[i];if(i==="ref"){m(o)?o(r):o.current=r;continue}if(i.startsWith("on")){let a=i.slice(2).toLowerCase();r.addEventListener(a,o);let f=()=>r.removeEventListener(a,o);r._cleanups.add(f),N(f)}else if(m(o)){let a=x(()=>{let f=D(i,o());if(i==="class")r.className=f||"";else if(f==null)r.removeAttribute(i);else if(i in r&&!c)r[i]=f;else r.setAttribute(i,f===!0?"":f)});if(a(),r._cleanups.add(()=>g(a)),N(()=>g(a)),/^(INPUT|TEXTAREA|SELECT)$/.test(r.tagName)&&(i==="value"||i==="checked")){let f=i==="checked"?"change":"input";r.addEventListener(f,(p)=>o(p.target[i]))}}else{let a=D(i,o);if(a!=null)if(i in r&&!c)r[i]=a;else r.setAttribute(i,a===!0?"":a)}}let n=(i)=>{if(S(i))return i.forEach(n);if(m(i)){let o=E.createTextNode("");r.appendChild(o);let a=[],f=x(()=>{let p=i(),l=(S(p)?p:[p]).map(U);a.forEach((u)=>{if(u._isRuntime)u.destroy();else $(u);if(u.parentNode)u.remove()});let h=o;for(let u=l.length-1;u>=0;u--){let y=l[u];if(y.parentNode!==h.parentNode)h.parentNode?.insertBefore(y,h);if(y._mounts)y._mounts.forEach((q)=>q());h=y}a=l});f(),r._cleanups.add(()=>g(f)),N(()=>g(f))}else{let o=U(i);if(r.appendChild(o),o._mounts)o._mounts.forEach((a)=>a())}};return n(t),r},O=(e)=>{let s=new Set,t=[],c=_,r=d,n=E.createElement("div");n.style.display="contents",n.setAttribute("role","presentation"),_={_cleanups:s,_mounts:t},d=null;let i=(o)=>{if(!o)return;if(o._isRuntime)s.add(o.destroy),n.appendChild(o.container);else if(S(o))o.forEach(i);else n.appendChild(o instanceof Node?o:E.createTextNode(String(o==null?"":o)))};try{i(e({onCleanup:(o)=>s.add(o)}))}finally{_=c,d=r}return t.forEach((o)=>o()),{_isRuntime:!0,container:n,destroy:()=>{s.forEach((o)=>o()),$(n),n.remove()}}},K=(e,s,t=null)=>{let c=E.createTextNode(""),r=R("div",{style:"display:contents"},[c]),n=null;return A(()=>!!(m(e)?e():e),(i)=>{if(n)n.destroy(),n=null;let o=i?s:t;if(o)n=O(()=>m(o)?o():o),r.insertBefore(n.container,c)}),N(()=>n?.destroy()),r},Q=(e,s,t)=>{let c=E.createTextNode(""),r=R("div",{style:"display:contents"},[c]),n=new Map;return A(()=>(m(e)?e():e)||[],(i)=>{let o=new Map,a=[],f=i||[];for(let l=0;l<f.length;l++){let h=f[l],u=t?t(h,l):h?.id??l,y=n.get(u);if(!y)y=O(()=>s(h,l));else n.delete(u);o.set(u,y),a.push(y)}n.forEach((l)=>l.destroy());let p=c;for(let l=a.length-1;l>=0;l--){let u=a[l].container;if(u.nextSibling!==p)r.insertBefore(u,p);p=u}n=o}),r},v=(e)=>{let s=()=>window.location.hash.slice(1)||"/",t=L(s()),c=()=>t(s());window.addEventListener("hashchange",c),N(()=>window.removeEventListener("hashchange",c));let r=R("div",{class:"router-hook"}),n=null;return A([t],()=>{let i=t(),o=e.find((a)=>{let f=a.path.split("/").filter(Boolean),p=i.split("/").filter(Boolean);return f.length===p.length&&f.every((l,h)=>l[0]===":"||l===p[h])})||e.find((a)=>a.path==="*");if(o){n?.destroy();let a={};o.path.split("/").filter(Boolean).forEach((f,p)=>{if(f[0]===":")a[f.slice(1)]=i.split("/").filter(Boolean)[p]}),v.params(a),n=O(()=>m(o.component)?o.component(a):o.component),r.replaceChildren(n.container)}}),r};v.params=L({});v.to=(e)=>window.location.hash=e.replace(/^#?\/?/,"#/");v.back=()=>window.history.back();v.path=()=>window.location.hash.replace(/^#/,"")||"/";var H=(e,s)=>{let t=typeof s==="string"?E.querySelector(s):s;if(!t)return;if(B.has(t))B.get(t).destroy();let c=O(m(e)?e:()=>e);return t.replaceChildren(c.container),B.set(t,c),c},I=Object.freeze({$:L,$$:V,Watch:A,Tag:R,Render:O,If:K,For:Q,Router:v,Mount:H,onMount:k,onUnmount:N,Batch:F});if(typeof window<"u")Object.assign(window,I),"div span p h1 h2 h3 h4 h5 h6 br hr section article aside nav main header footer ul ol li a em strong pre code form label input textarea select button img svg".split(" ").forEach((e)=>window[e[0].toUpperCase()+e.slice(1)]=(s,t)=>I.Tag(e,s,t));export{N as onUnmount,k as onMount,A as Watch,R as Tag,v as Router,O as Render,H as Mount,K as If,Q as For,F as Batch,V as $$,L as $};
|