From de4b09324d9f75711289d86522cc471295d45d6d Mon Sep 17 00:00:00 2001 From: natxocc Date: Thu, 23 Apr 2026 11:49:06 +0200 Subject: [PATCH] remove fadeout in fx() --- dist/sigpro.esm.js | 30 +++--------------------------- dist/sigpro.esm.min.js | 2 +- dist/sigpro.js | 30 +++--------------------------- dist/sigpro.min.js | 2 +- docs/sigpro.js | 30 +++--------------------------- package.json | 2 +- sigpro.js | 33 +++++---------------------------- 7 files changed, 17 insertions(+), 112 deletions(-) diff --git a/dist/sigpro.esm.js b/dist/sigpro.esm.js index 7ece3be..db8f34f 100644 --- a/dist/sigpro.esm.js +++ b/dist/sigpro.esm.js @@ -231,7 +231,7 @@ var watch = (sources, cb) => { effect(); return () => dispose(effect); }; -var cleanupNode = (node, skipLeave = false) => { +var cleanupNode = (node) => { if (!node) return; if (node._cleanups) { @@ -240,15 +240,8 @@ var cleanupNode = (node, skipLeave = false) => { } if (node._ownerEffect) dispose(node._ownerEffect); - if (!skipLeave && node._sig_leave) { - return node._sig_leave(() => { - if (node.childNodes) - node.childNodes.forEach((n) => cleanupNode(n, true)); - node.remove(); - }); - } if (node.childNodes) - node.childNodes.forEach((n) => cleanupNode(n, false)); + node.childNodes.forEach((n) => cleanupNode(n)); }; var DANGEROUS_PROTOCOL = /^\s*(javascript|data|vbscript):/i; var isDangerousAttr = (key) => key === "src" || key === "href" || key.startsWith("on"); @@ -419,8 +412,7 @@ var render = (renderFn) => { destroy: () => { cleanups.forEach((fn) => fn()); cleanupNode(container); - if (!container._sig_leave) - container.remove(); + container.remove(); } }; }; @@ -448,10 +440,6 @@ var fx = ({ name, duration = 200, scale, slide, rotate, blur }, child) => { return el; if (name) { el.style.animation = `${name}-in ${duration}ms`; - el._sig_leave = (done) => { - el.style.animation = `${name}-out ${duration}ms`; - el.addEventListener("animationend", done, { once: true }); - }; return el; } const hasTransform = scale || slide || rotate || blur; @@ -473,18 +461,6 @@ var fx = ({ name, duration = 200, scale, slide, rotate, blur }, child) => { if (blur) el.style.filter = "none"; }); - el._sig_leave = (done) => { - el.style.opacity = "0"; - if (hasTransform) - el.style.transform = initialTransform; - if (blur) - el.style.filter = "blur(4px)"; - const timer = setTimeout(done, duration + 20); - el.addEventListener("transitionend", () => { - clearTimeout(timer); - done(); - }, { once: true }); - }; return el; }; var each = (src, itemFn, keyFn) => { diff --git a/dist/sigpro.esm.min.js b/dist/sigpro.esm.min.js index 4fbb8c4..f099e37 100644 --- a/dist/sigpro.esm.min.js +++ b/dist/sigpro.esm.min.js @@ -1 +1 @@ -var y=(e)=>typeof e==="function",P=(e)=>e&&typeof e==="object",b=Array.isArray,g=typeof document<"u"?document:null,k=(e)=>e?._isRuntime?e.container:e instanceof Node?e:g.createTextNode(e==null?"":String(e)),p=null,_=null,x=!1,A=0,C=new Set,D=new WeakMap,L=Symbol("iter"),B=new WeakMap,E=(e)=>{if(!e||e._disposed)return;e._disposed=!0;let r=[e];while(r.length){let n=r.pop();if(n._cleanups)n._cleanups.forEach((i)=>i()),n._cleanups.clear();if(n._children)n._children.forEach((i)=>r.push(i)),n._children.clear();if(n._deps)n._deps.forEach((i)=>i.delete(n)),n._deps.clear()}},v=(e)=>{if(_)(_._cleanups||=new Set).add(e)},V=(e)=>{let r=p;p=null;try{return e()}finally{p=r}},T=(e,r=!1)=>{let n=()=>{if(n._disposed)return;if(n._deps)n._deps.forEach((c)=>c.delete(n));if(n._cleanups)n._cleanups.forEach((c)=>c()),n._cleanups.clear();let i=p,o=_;p=_=n;try{return n._result=e()}catch(c){console.error("[SigPro]",c)}finally{p=i,_=o}};if(n._deps=n._cleanups=n._children=null,n._disposed=!1,n._isComputed=r,n._depth=p?p._depth+1:0,n._mounts=[],n._parent=_,_)(_._children||=new Set).add(n);return n},q=()=>{if(x)return;x=!0;let e=Array.from(C).sort((r,n)=>r._depth-n._depth);C.clear();for(let r of e)if(!r._disposed)r();x=!1},W=(e)=>{A++;try{return e()}finally{if(A--,A===0&&C.size>0&&!x)q()}},w=(e,r=!1)=>{if(!r&&p&&!p._disposed)e.add(p),(p._deps||=new Set).add(e);else if(r&&e.size>0){let n=!1;for(let i of e){if(i===p||i._disposed)continue;if(i._isComputed){if(i._dirty=!0,i._subs)w(i._subs,!0)}else C.add(i),n=!0}if(n&&!x&&A===0)queueMicrotask(q)}},N=(e,r=null)=>{let n=new Set;if(y(e)){let i,o=()=>{if(o._dirty){let c=p;p=o;try{let t=e();if(!Object.is(i,t))i=t,w(n,!0)}finally{p=c}o._dirty=!1}return w(n),i};if(o._isComputed=!0,o._subs=n,o._dirty=!0,o._deps=null,o._disposed=!1,o.stop=()=>{},_)v(o.stop);return o}if(r)try{e=JSON.parse(localStorage.getItem(r))??e}catch(i){}return(...i)=>{if(i.length){let o=y(i[0])?i[0](e):i[0];if(!Object.is(e,o)){if(e=o,r)localStorage.setItem(r,JSON.stringify(e));w(n,!0)}}return w(n),e}},I=(e)=>{if(!P(e))return e;let r=D.get(e);if(r)return r;let n=new Map,i=(c)=>{let t=n.get(c);if(!t)n.set(c,t=new Set);return t},o=new Proxy(e,{get(c,t,s){if(typeof t!=="symbol")w(i(t));return I(Reflect.get(c,t,s))},set(c,t,s,l){let u=Reflect.has(c,t),a=Reflect.get(c,t,l),f=Reflect.set(c,t,s,l);if(f&&!Object.is(a,s)){if(w(i(t),!0),!u)w(i(L),!0)}return f},deleteProperty(c,t){let s=Reflect.deleteProperty(c,t);if(s)w(i(t),!0),w(i(L),!0);return s},ownKeys(c){return w(i(L)),Reflect.ownKeys(c)}});return D.set(e,o),o},j=(e,r)=>{if(r===void 0){let i=T(e);return i(),()=>E(i)}let n=T(()=>{let i=Array.isArray(e)?e.map((o)=>o()):e();V(()=>r(i))});return n(),()=>E(n)},R=(e,r=!1)=>{if(!e)return;if(e._cleanups)e._cleanups.forEach((n)=>n()),e._cleanups.clear();if(e._ownerEffect)E(e._ownerEffect);if(!r&&e._sig_leave)return e._sig_leave(()=>{if(e.childNodes)e.childNodes.forEach((n)=>R(n,!0));e.remove()});if(e.childNodes)e.childNodes.forEach((n)=>R(n,!1))},F=/^\s*(javascript|data|vbscript):/i,J=(e)=>e==="src"||e==="href"||e.startsWith("on"),M=(e,r)=>{if(r==null||r===!1)return null;if(J(e)){let n=String(r);if(F.test(n))return console.warn(`[SigPro] Bloqueado protocolo peligroso en ${e}`),"#"}return r},O=(e,r={},n=[])=>{if(r instanceof Node||b(r)||!P(r))n=r,r={};if(y(e)){let t=T(()=>{let a=e(r,{children:n,emit:(f,...h)=>r[`on${f[0].toUpperCase()}${f.slice(1)}`]?.(...h)});return t._result=a,a});t();let s=t._result;if(s==null)return null;let l=s instanceof Node||b(s)&&s.every((a)=>a instanceof Node)?s:g.createTextNode(String(s)),u=(a)=>{if(P(a)&&!a._isRuntime)a._mounts=t._mounts||[],a._cleanups=t._cleanups||new Set,a._ownerEffect=t};return b(l)?l.forEach(u):u(l),l}let i=/^(svg|path|circle|rect|line|poly(line|gon)|g|defs|text(path)?|tspan|use|symbol|image|marker|ellipse)$/i.test(e),o=i?g.createElementNS("http://www.w3.org/2000/svg",e):g.createElement(e);o._cleanups=new Set;for(let t in r){if(!r.hasOwnProperty(t))continue;let s=r[t];if(t==="ref"){y(s)?s(o):s.current=o;continue}if(i&&t.startsWith("xlink:")){s==null?o.removeAttributeNS("http://www.w3.org/1999/xlink",t.slice(6)):o.setAttributeNS("http://www.w3.org/1999/xlink",t.slice(6),s);continue}if(t.startsWith("on")){let l=t.slice(2).toLowerCase();o.addEventListener(l,s);let u=()=>o.removeEventListener(l,s);o._cleanups.add(u),v(u)}else if(y(s)){let l=T(()=>{let u=M(t,s());if(t==="class")o.className=u||"";else if(u==null)o.removeAttribute(t);else if(t in o&&!i)o[t]=u;else o.setAttribute(t,u===!0?"":u)});if(l(),o._cleanups.add(()=>E(l)),v(()=>E(l)),/^(INPUT|TEXTAREA|SELECT)$/.test(o.tagName)&&(t==="value"||t==="checked")){let u=t==="checked"?"change":"input";o.addEventListener(u,(a)=>s(a.target[t]))}}else{let l=M(t,s);if(l!=null)if(t in o&&!i)o[t]=l;else o.setAttribute(t,l===!0?"":l)}}let c=(t)=>{if(b(t))return t.forEach(c);if(y(t)){let s=g.createTextNode("");o.appendChild(s);let l=[],u=T(()=>{let a=t(),f=(b(a)?a:[a]).map(k);l.forEach((d)=>{if(d._isRuntime)d.destroy();else R(d);if(d.parentNode)d.remove()});let h=s;for(let d=f.length-1;d>=0;d--){let m=f[d];if(m.parentNode!==h.parentNode)h.parentNode?.insertBefore(m,h);if(m._mounts)m._mounts.forEach((U)=>U());h=m}l=f});u(),o._cleanups.add(()=>E(u)),v(()=>E(u))}else{let s=k(t);if(o.appendChild(s),s._mounts)s._mounts.forEach((l)=>l())}};return c(n),o},$=(e)=>{let r=new Set,n=_,i=p,o=g.createElement("div");o.style.display="contents",o.setAttribute("role","presentation"),_={_cleanups:r},p=null;let c=(t)=>{if(!t)return;if(t._isRuntime)r.add(t.destroy),o.appendChild(t.container);else if(b(t))t.forEach(c);else o.appendChild(t instanceof Node?t:g.createTextNode(String(t==null?"":t)))};try{c(e({onCleanup:(t)=>r.add(t)}))}finally{_=n,p=i}return{_isRuntime:!0,container:o,destroy:()=>{if(r.forEach((t)=>t()),R(o),!o._sig_leave)o.remove()}}},z=(e,r,n=null)=>{let i=g.createTextNode(""),o=O("div",{style:"display:contents"},[i]),c=null;return j(()=>!!(y(e)?e():e),(t)=>{if(c)c.destroy(),c=null;let s=t?r:n;if(s)c=$(()=>y(s)?s():s),o.insertBefore(c.container,i)}),v(()=>c?.destroy()),o},G=({name:e,duration:r=200,scale:n,slide:i,rotate:o,blur:c},t)=>{let s=typeof t==="function"?t():t;if(!(s instanceof Node))return s;if(e)return s.style.animation=`${e}-in ${r}ms`,s._sig_leave=(a)=>{s.style.animation=`${e}-out ${r}ms`,s.addEventListener("animationend",a,{once:!0})},s;let l=n||i||o||c,u=[n?"scale(0.95)":"",i?"translateY(-10px)":"",o?"rotate(-2deg)":""].filter(Boolean).join(" ");if(s.style.transition=`all ${r}ms ease`,s.style.opacity="0",l)s.style.transform=u;if(c)s.style.filter="blur(4px)";return requestAnimationFrame(()=>{if(s.style.opacity="1",l)s.style.transform="none";if(c)s.style.filter="none"}),s._sig_leave=(a)=>{if(s.style.opacity="0",l)s.style.transform=u;if(c)s.style.filter="blur(4px)";let f=setTimeout(a,r+20);s.addEventListener("transitionend",()=>{clearTimeout(f),a()},{once:!0})},s},K=(e,r,n)=>{let i=g.createTextNode(""),o=O("div",{style:"display:contents"},[i]),c=new Map;return j(()=>(y(e)?e():e)||[],(t)=>{let s=new Map,l=[],u=t||[];for(let f=0;fr(h,f));else c.delete(d);s.set(d,m),l.push(m)}c.forEach((f)=>f.destroy());let a=i;for(let f=l.length-1;f>=0;f--){let d=l[f].container;if(d.nextSibling!==a)o.insertBefore(d,a);a=d}c=s}),o},S=(e)=>{let r=()=>window.location.hash.slice(1)||"/",n=N(r()),i=()=>n(r());window.addEventListener("hashchange",i),v(()=>window.removeEventListener("hashchange",i));let o=O("div",{class:"router-hook"}),c=null;return j([n],()=>{let t=n(),s=e.find((l)=>{let u=l.path.split("/").filter(Boolean),a=t.split("/").filter(Boolean);return u.length===a.length&&u.every((f,h)=>f[0]===":"||f===a[h])})||e.find((l)=>l.path==="*");if(s){c?.destroy();let l={};s.path.split("/").filter(Boolean).forEach((u,a)=>{if(u[0]===":")l[u.slice(1)]=t.split("/").filter(Boolean)[a]}),S.params(l),c=$(()=>y(s.component)?s.component(l):s.component),o.replaceChildren(c.container)}}),o};S.params=N({});S.to=(e)=>window.location.hash=e.replace(/^#?\/?/,"#/");S.back=()=>window.history.back();S.path=()=>window.location.hash.replace(/^#/,"")||"/";var Q=({url:e,method:r="GET",headers:n={}})=>{let i=N(!1),o=N(null),c=N(null),t=null,s=null;return{run:async(a=null)=>{t?.abort(),clearTimeout(s),t=new AbortController,s=setTimeout(()=>t.abort(),1e4),i(!0),o(null);try{let f=a instanceof FormData,h=await fetch(e,{method:r,headers:f?n:{"Content-Type":"application/json",...n},body:f?a:a?JSON.stringify(a):void 0,signal:t.signal}),d=await h.text(),m=d?JSON.parse(d):null;if(!h.ok)throw Error(m?.message||h.statusText);return c(m),m}catch(f){if(f.name!=="AbortError")o(f.message);throw f}finally{i(!1),clearTimeout(s),t=null,s=null}},abort:()=>t?.abort(),loading:i,error:o,data:c}},H=(e,r)=>{let n=typeof r==="string"?g.querySelector(r):r;if(!n)return;if(B.has(n))B.get(n).destroy();let i=$(y(e)?e:()=>e);return n.replaceChildren(i.container),B.set(n,i),i},X=Object.freeze({$:N,$$:I,watch:j,h:O,when:z,each:K,fx:G,router:S,req:Q,mount:H,batch:W});if(typeof window<"u")Object.assign(window,X),"a abbr article aside audio b blockquote br button canvas caption cite code col colgroup datalist dd del details dfn dialog div dl dt em embed fieldset figcaption figure footer form h1 h2 h3 h4 h5 h6 header hr i iframe img input ins kbd label legend li main mark meter nav object ol optgroup option output p picture pre progress section select slot small source span strong sub summary sup svg table tbody td template textarea tfoot th thead time tr u ul video".split(" ").forEach((e)=>{window[e]=(r,n)=>O(e,r,n)});export{z as when,j as watch,S as router,Q as req,H as mount,O as h,G as fx,K as each,W as batch,I as $$,N as $}; +var y=(e)=>typeof e==="function",P=(e)=>e&&typeof e==="object",b=Array.isArray,g=typeof document<"u"?document:null,k=(e)=>e?._isRuntime?e.container:e instanceof Node?e:g.createTextNode(e==null?"":String(e)),p=null,_=null,x=!1,A=0,C=new Set,D=new WeakMap,$=Symbol("iter"),B=new WeakMap,E=(e)=>{if(!e||e._disposed)return;e._disposed=!0;let o=[e];while(o.length){let n=o.pop();if(n._cleanups)n._cleanups.forEach((i)=>i()),n._cleanups.clear();if(n._children)n._children.forEach((i)=>o.push(i)),n._children.clear();if(n._deps)n._deps.forEach((i)=>i.delete(n)),n._deps.clear()}},N=(e)=>{if(_)(_._cleanups||=new Set).add(e)},V=(e)=>{let o=p;p=null;try{return e()}finally{p=o}},T=(e,o=!1)=>{let n=()=>{if(n._disposed)return;if(n._deps)n._deps.forEach((c)=>c.delete(n));if(n._cleanups)n._cleanups.forEach((c)=>c()),n._cleanups.clear();let i=p,s=_;p=_=n;try{return n._result=e()}catch(c){console.error("[SigPro]",c)}finally{p=i,_=s}};if(n._deps=n._cleanups=n._children=null,n._disposed=!1,n._isComputed=o,n._depth=p?p._depth+1:0,n._mounts=[],n._parent=_,_)(_._children||=new Set).add(n);return n},q=()=>{if(x)return;x=!0;let e=Array.from(C).sort((o,n)=>o._depth-n._depth);C.clear();for(let o of e)if(!o._disposed)o();x=!1},W=(e)=>{A++;try{return e()}finally{if(A--,A===0&&C.size>0&&!x)q()}},w=(e,o=!1)=>{if(!o&&p&&!p._disposed)e.add(p),(p._deps||=new Set).add(e);else if(o&&e.size>0){let n=!1;for(let i of e){if(i===p||i._disposed)continue;if(i._isComputed){if(i._dirty=!0,i._subs)w(i._subs,!0)}else C.add(i),n=!0}if(n&&!x&&A===0)queueMicrotask(q)}},S=(e,o=null)=>{let n=new Set;if(y(e)){let i,s=()=>{if(s._dirty){let c=p;p=s;try{let t=e();if(!Object.is(i,t))i=t,w(n,!0)}finally{p=c}s._dirty=!1}return w(n),i};if(s._isComputed=!0,s._subs=n,s._dirty=!0,s._deps=null,s._disposed=!1,s.stop=()=>{},_)N(s.stop);return s}if(o)try{e=JSON.parse(localStorage.getItem(o))??e}catch(i){}return(...i)=>{if(i.length){let s=y(i[0])?i[0](e):i[0];if(!Object.is(e,s)){if(e=s,o)localStorage.setItem(o,JSON.stringify(e));w(n,!0)}}return w(n),e}},I=(e)=>{if(!P(e))return e;let o=D.get(e);if(o)return o;let n=new Map,i=(c)=>{let t=n.get(c);if(!t)n.set(c,t=new Set);return t},s=new Proxy(e,{get(c,t,r){if(typeof t!=="symbol")w(i(t));return I(Reflect.get(c,t,r))},set(c,t,r,l){let u=Reflect.has(c,t),a=Reflect.get(c,t,l),f=Reflect.set(c,t,r,l);if(f&&!Object.is(a,r)){if(w(i(t),!0),!u)w(i($),!0)}return f},deleteProperty(c,t){let r=Reflect.deleteProperty(c,t);if(r)w(i(t),!0),w(i($),!0);return r},ownKeys(c){return w(i($)),Reflect.ownKeys(c)}});return D.set(e,s),s},R=(e,o)=>{if(o===void 0){let i=T(e);return i(),()=>E(i)}let n=T(()=>{let i=Array.isArray(e)?e.map((s)=>s()):e();V(()=>o(i))});return n(),()=>E(n)},L=(e)=>{if(!e)return;if(e._cleanups)e._cleanups.forEach((o)=>o()),e._cleanups.clear();if(e._ownerEffect)E(e._ownerEffect);if(e.childNodes)e.childNodes.forEach((o)=>L(o))},F=/^\s*(javascript|data|vbscript):/i,J=(e)=>e==="src"||e==="href"||e.startsWith("on"),M=(e,o)=>{if(o==null||o===!1)return null;if(J(e)){let n=String(o);if(F.test(n))return console.warn(`[SigPro] Bloqueado protocolo peligroso en ${e}`),"#"}return o},O=(e,o={},n=[])=>{if(o instanceof Node||b(o)||!P(o))n=o,o={};if(y(e)){let t=T(()=>{let a=e(o,{children:n,emit:(f,...h)=>o[`on${f[0].toUpperCase()}${f.slice(1)}`]?.(...h)});return t._result=a,a});t();let r=t._result;if(r==null)return null;let l=r instanceof Node||b(r)&&r.every((a)=>a instanceof Node)?r:g.createTextNode(String(r)),u=(a)=>{if(P(a)&&!a._isRuntime)a._mounts=t._mounts||[],a._cleanups=t._cleanups||new Set,a._ownerEffect=t};return b(l)?l.forEach(u):u(l),l}let i=/^(svg|path|circle|rect|line|poly(line|gon)|g|defs|text(path)?|tspan|use|symbol|image|marker|ellipse)$/i.test(e),s=i?g.createElementNS("http://www.w3.org/2000/svg",e):g.createElement(e);s._cleanups=new Set;for(let t in o){if(!o.hasOwnProperty(t))continue;let r=o[t];if(t==="ref"){y(r)?r(s):r.current=s;continue}if(i&&t.startsWith("xlink:")){r==null?s.removeAttributeNS("http://www.w3.org/1999/xlink",t.slice(6)):s.setAttributeNS("http://www.w3.org/1999/xlink",t.slice(6),r);continue}if(t.startsWith("on")){let l=t.slice(2).toLowerCase();s.addEventListener(l,r);let u=()=>s.removeEventListener(l,r);s._cleanups.add(u),N(u)}else if(y(r)){let l=T(()=>{let u=M(t,r());if(t==="class")s.className=u||"";else if(u==null)s.removeAttribute(t);else if(t in s&&!i)s[t]=u;else s.setAttribute(t,u===!0?"":u)});if(l(),s._cleanups.add(()=>E(l)),N(()=>E(l)),/^(INPUT|TEXTAREA|SELECT)$/.test(s.tagName)&&(t==="value"||t==="checked")){let u=t==="checked"?"change":"input";s.addEventListener(u,(a)=>r(a.target[t]))}}else{let l=M(t,r);if(l!=null)if(t in s&&!i)s[t]=l;else s.setAttribute(t,l===!0?"":l)}}let c=(t)=>{if(b(t))return t.forEach(c);if(y(t)){let r=g.createTextNode("");s.appendChild(r);let l=[],u=T(()=>{let a=t(),f=(b(a)?a:[a]).map(k);l.forEach((d)=>{if(d._isRuntime)d.destroy();else L(d);if(d.parentNode)d.remove()});let h=r;for(let d=f.length-1;d>=0;d--){let m=f[d];if(m.parentNode!==h.parentNode)h.parentNode?.insertBefore(m,h);if(m._mounts)m._mounts.forEach((U)=>U());h=m}l=f});u(),s._cleanups.add(()=>E(u)),N(()=>E(u))}else{let r=k(t);if(s.appendChild(r),r._mounts)r._mounts.forEach((l)=>l())}};return c(n),s},j=(e)=>{let o=new Set,n=_,i=p,s=g.createElement("div");s.style.display="contents",s.setAttribute("role","presentation"),_={_cleanups:o},p=null;let c=(t)=>{if(!t)return;if(t._isRuntime)o.add(t.destroy),s.appendChild(t.container);else if(b(t))t.forEach(c);else s.appendChild(t instanceof Node?t:g.createTextNode(String(t==null?"":t)))};try{c(e({onCleanup:(t)=>o.add(t)}))}finally{_=n,p=i}return{_isRuntime:!0,container:s,destroy:()=>{o.forEach((t)=>t()),L(s),s.remove()}}},z=(e,o,n=null)=>{let i=g.createTextNode(""),s=O("div",{style:"display:contents"},[i]),c=null;return R(()=>!!(y(e)?e():e),(t)=>{if(c)c.destroy(),c=null;let r=t?o:n;if(r)c=j(()=>y(r)?r():r),s.insertBefore(c.container,i)}),N(()=>c?.destroy()),s},G=({name:e,duration:o=200,scale:n,slide:i,rotate:s,blur:c},t)=>{let r=typeof t==="function"?t():t;if(!(r instanceof Node))return r;if(e)return r.style.animation=`${e}-in ${o}ms`,r;let l=n||i||s||c,u=[n?"scale(0.95)":"",i?"translateY(-10px)":"",s?"rotate(-2deg)":""].filter(Boolean).join(" ");if(r.style.transition=`all ${o}ms ease`,r.style.opacity="0",l)r.style.transform=u;if(c)r.style.filter="blur(4px)";return requestAnimationFrame(()=>{if(r.style.opacity="1",l)r.style.transform="none";if(c)r.style.filter="none"}),r},K=(e,o,n)=>{let i=g.createTextNode(""),s=O("div",{style:"display:contents"},[i]),c=new Map;return R(()=>(y(e)?e():e)||[],(t)=>{let r=new Map,l=[],u=t||[];for(let f=0;fo(h,f));else c.delete(d);r.set(d,m),l.push(m)}c.forEach((f)=>f.destroy());let a=i;for(let f=l.length-1;f>=0;f--){let d=l[f].container;if(d.nextSibling!==a)s.insertBefore(d,a);a=d}c=r}),s},v=(e)=>{let o=()=>window.location.hash.slice(1)||"/",n=S(o()),i=()=>n(o());window.addEventListener("hashchange",i),N(()=>window.removeEventListener("hashchange",i));let s=O("div",{class:"router-hook"}),c=null;return R([n],()=>{let t=n(),r=e.find((l)=>{let u=l.path.split("/").filter(Boolean),a=t.split("/").filter(Boolean);return u.length===a.length&&u.every((f,h)=>f[0]===":"||f===a[h])})||e.find((l)=>l.path==="*");if(r){c?.destroy();let l={};r.path.split("/").filter(Boolean).forEach((u,a)=>{if(u[0]===":")l[u.slice(1)]=t.split("/").filter(Boolean)[a]}),v.params(l),c=j(()=>y(r.component)?r.component(l):r.component),s.replaceChildren(c.container)}}),s};v.params=S({});v.to=(e)=>window.location.hash=e.replace(/^#?\/?/,"#/");v.back=()=>window.history.back();v.path=()=>window.location.hash.replace(/^#/,"")||"/";var Q=({url:e,method:o="GET",headers:n={}})=>{let i=S(!1),s=S(null),c=S(null),t=null,r=null;return{run:async(a=null)=>{t?.abort(),clearTimeout(r),t=new AbortController,r=setTimeout(()=>t.abort(),1e4),i(!0),s(null);try{let f=a instanceof FormData,h=await fetch(e,{method:o,headers:f?n:{"Content-Type":"application/json",...n},body:f?a:a?JSON.stringify(a):void 0,signal:t.signal}),d=await h.text(),m=d?JSON.parse(d):null;if(!h.ok)throw Error(m?.message||h.statusText);return c(m),m}catch(f){if(f.name!=="AbortError")s(f.message);throw f}finally{i(!1),clearTimeout(r),t=null,r=null}},abort:()=>t?.abort(),loading:i,error:s,data:c}},H=(e,o)=>{let n=typeof o==="string"?g.querySelector(o):o;if(!n)return;if(B.has(n))B.get(n).destroy();let i=j(y(e)?e:()=>e);return n.replaceChildren(i.container),B.set(n,i),i},X=Object.freeze({$:S,$$:I,watch:R,h:O,when:z,each:K,fx:G,router:v,req:Q,mount:H,batch:W});if(typeof window<"u")Object.assign(window,X),"a abbr article aside audio b blockquote br button canvas caption cite code col colgroup datalist dd del details dfn dialog div dl dt em embed fieldset figcaption figure footer form h1 h2 h3 h4 h5 h6 header hr i iframe img input ins kbd label legend li main mark meter nav object ol optgroup option output p picture pre progress section select slot small source span strong sub summary sup svg table tbody td template textarea tfoot th thead time tr u ul video".split(" ").forEach((e)=>{window[e]=(o,n)=>O(e,o,n)});export{z as when,R as watch,v as router,Q as req,H as mount,O as h,G as fx,K as each,W as batch,I as $$,S as $}; diff --git a/dist/sigpro.js b/dist/sigpro.js index 1ef3710..df3523c 100644 --- a/dist/sigpro.js +++ b/dist/sigpro.js @@ -286,7 +286,7 @@ effect(); return () => dispose(effect); }; - var cleanupNode = (node, skipLeave = false) => { + var cleanupNode = (node) => { if (!node) return; if (node._cleanups) { @@ -295,15 +295,8 @@ } if (node._ownerEffect) dispose(node._ownerEffect); - if (!skipLeave && node._sig_leave) { - return node._sig_leave(() => { - if (node.childNodes) - node.childNodes.forEach((n) => cleanupNode(n, true)); - node.remove(); - }); - } if (node.childNodes) - node.childNodes.forEach((n) => cleanupNode(n, false)); + node.childNodes.forEach((n) => cleanupNode(n)); }; var DANGEROUS_PROTOCOL = /^\s*(javascript|data|vbscript):/i; var isDangerousAttr = (key) => key === "src" || key === "href" || key.startsWith("on"); @@ -474,8 +467,7 @@ destroy: () => { cleanups.forEach((fn) => fn()); cleanupNode(container); - if (!container._sig_leave) - container.remove(); + container.remove(); } }; }; @@ -503,10 +495,6 @@ return el; if (name) { el.style.animation = `${name}-in ${duration}ms`; - el._sig_leave = (done) => { - el.style.animation = `${name}-out ${duration}ms`; - el.addEventListener("animationend", done, { once: true }); - }; return el; } const hasTransform = scale || slide || rotate || blur; @@ -528,18 +516,6 @@ if (blur) el.style.filter = "none"; }); - el._sig_leave = (done) => { - el.style.opacity = "0"; - if (hasTransform) - el.style.transform = initialTransform; - if (blur) - el.style.filter = "blur(4px)"; - const timer = setTimeout(done, duration + 20); - el.addEventListener("transitionend", () => { - clearTimeout(timer); - done(); - }, { once: true }); - }; return el; }; var each = (src, itemFn, keyFn) => { diff --git a/dist/sigpro.min.js b/dist/sigpro.min.js index 7577770..a1cfcf9 100644 --- a/dist/sigpro.min.js +++ b/dist/sigpro.min.js @@ -1 +1 @@ -(()=>{var{defineProperty:L,getOwnPropertyNames:H,getOwnPropertyDescriptor:X}=Object,Y=Object.prototype.hasOwnProperty;function Z(e){return this[e]}var ee=(e)=>{var s=(M??=new WeakMap).get(e),t;if(s)return s;if(s=L({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function"){for(var i of H(e))if(!Y.call(s,i))L(s,i,{get:Z.bind(e,i),enumerable:!(t=X(e,i))||t.enumerable})}return M.set(e,s),s},M;var te=(e)=>e;function ne(e,s){this[e]=te.bind(null,s)}var se=(e,s)=>{for(var t in s)L(e,t,{get:s[t],enumerable:!0,configurable:!0,set:ne.bind(s,t)})};var le={};se(le,{when:()=>F,watch:()=>A,router:()=>v,req:()=>G,mount:()=>K,h:()=>x,fx:()=>J,each:()=>z,batch:()=>W,$$:()=>D,$:()=>b});var y=(e)=>typeof e==="function",k=(e)=>e&&typeof e==="object",N=Array.isArray,g=typeof document<"u"?document:null,q=(e)=>e?._isRuntime?e.container:e instanceof Node?e:g.createTextNode(e==null?"":String(e)),p=null,_=null,T=!1,C=0,R=new Set,I=new WeakMap,B=Symbol("iter"),P=new WeakMap,E=(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((i)=>i()),t._cleanups.clear();if(t._children)t._children.forEach((i)=>s.push(i)),t._children.clear();if(t._deps)t._deps.forEach((i)=>i.delete(t)),t._deps.clear()}},S=(e)=>{if(_)(_._cleanups||=new Set).add(e)},oe=(e)=>{let s=p;p=null;try{return e()}finally{p=s}},O=(e,s=!1)=>{let t=()=>{if(t._disposed)return;if(t._deps)t._deps.forEach((c)=>c.delete(t));if(t._cleanups)t._cleanups.forEach((c)=>c()),t._cleanups.clear();let i=p,r=_;p=_=t;try{return t._result=e()}catch(c){console.error("[SigPro]",c)}finally{p=i,_=r}};if(t._deps=t._cleanups=t._children=null,t._disposed=!1,t._isComputed=s,t._depth=p?p._depth+1:0,t._mounts=[],t._parent=_,_)(_._children||=new Set).add(t);return t},V=()=>{if(T)return;T=!0;let e=Array.from(R).sort((s,t)=>s._depth-t._depth);R.clear();for(let s of e)if(!s._disposed)s();T=!1},W=(e)=>{C++;try{return e()}finally{if(C--,C===0&&R.size>0&&!T)V()}},w=(e,s=!1)=>{if(!s&&p&&!p._disposed)e.add(p),(p._deps||=new Set).add(e);else if(s&&e.size>0){let t=!1;for(let i of e){if(i===p||i._disposed)continue;if(i._isComputed){if(i._dirty=!0,i._subs)w(i._subs,!0)}else R.add(i),t=!0}if(t&&!T&&C===0)queueMicrotask(V)}},b=(e,s=null)=>{let t=new Set;if(y(e)){let i,r=()=>{if(r._dirty){let c=p;p=r;try{let n=e();if(!Object.is(i,n))i=n,w(t,!0)}finally{p=c}r._dirty=!1}return w(t),i};if(r._isComputed=!0,r._subs=t,r._dirty=!0,r._deps=null,r._disposed=!1,r.stop=()=>{},_)S(r.stop);return r}if(s)try{e=JSON.parse(localStorage.getItem(s))??e}catch(i){}return(...i)=>{if(i.length){let r=y(i[0])?i[0](e):i[0];if(!Object.is(e,r)){if(e=r,s)localStorage.setItem(s,JSON.stringify(e));w(t,!0)}}return w(t),e}},D=(e)=>{if(!k(e))return e;let s=I.get(e);if(s)return s;let t=new Map,i=(c)=>{let n=t.get(c);if(!n)t.set(c,n=new Set);return n},r=new Proxy(e,{get(c,n,o){if(typeof n!=="symbol")w(i(n));return D(Reflect.get(c,n,o))},set(c,n,o,l){let u=Reflect.has(c,n),a=Reflect.get(c,n,l),f=Reflect.set(c,n,o,l);if(f&&!Object.is(a,o)){if(w(i(n),!0),!u)w(i(B),!0)}return f},deleteProperty(c,n){let o=Reflect.deleteProperty(c,n);if(o)w(i(n),!0),w(i(B),!0);return o},ownKeys(c){return w(i(B)),Reflect.ownKeys(c)}});return I.set(e,r),r},A=(e,s)=>{if(s===void 0){let i=O(e);return i(),()=>E(i)}let t=O(()=>{let i=Array.isArray(e)?e.map((r)=>r()):e();oe(()=>s(i))});return t(),()=>E(t)},j=(e,s=!1)=>{if(!e)return;if(e._cleanups)e._cleanups.forEach((t)=>t()),e._cleanups.clear();if(e._ownerEffect)E(e._ownerEffect);if(!s&&e._sig_leave)return e._sig_leave(()=>{if(e.childNodes)e.childNodes.forEach((t)=>j(t,!0));e.remove()});if(e.childNodes)e.childNodes.forEach((t)=>j(t,!1))},re=/^\s*(javascript|data|vbscript):/i,ie=(e)=>e==="src"||e==="href"||e.startsWith("on"),U=(e,s)=>{if(s==null||s===!1)return null;if(ie(e)){let t=String(s);if(re.test(t))return console.warn(`[SigPro] Bloqueado protocolo peligroso en ${e}`),"#"}return s},x=(e,s={},t=[])=>{if(s instanceof Node||N(s)||!k(s))t=s,s={};if(y(e)){let n=O(()=>{let a=e(s,{children:t,emit:(f,...h)=>s[`on${f[0].toUpperCase()}${f.slice(1)}`]?.(...h)});return n._result=a,a});n();let o=n._result;if(o==null)return null;let l=o instanceof Node||N(o)&&o.every((a)=>a instanceof Node)?o:g.createTextNode(String(o)),u=(a)=>{if(k(a)&&!a._isRuntime)a._mounts=n._mounts||[],a._cleanups=n._cleanups||new Set,a._ownerEffect=n};return N(l)?l.forEach(u):u(l),l}let i=/^(svg|path|circle|rect|line|poly(line|gon)|g|defs|text(path)?|tspan|use|symbol|image|marker|ellipse)$/i.test(e),r=i?g.createElementNS("http://www.w3.org/2000/svg",e):g.createElement(e);r._cleanups=new Set;for(let n in s){if(!s.hasOwnProperty(n))continue;let o=s[n];if(n==="ref"){y(o)?o(r):o.current=r;continue}if(i&&n.startsWith("xlink:")){o==null?r.removeAttributeNS("http://www.w3.org/1999/xlink",n.slice(6)):r.setAttributeNS("http://www.w3.org/1999/xlink",n.slice(6),o);continue}if(n.startsWith("on")){let l=n.slice(2).toLowerCase();r.addEventListener(l,o);let u=()=>r.removeEventListener(l,o);r._cleanups.add(u),S(u)}else if(y(o)){let l=O(()=>{let u=U(n,o());if(n==="class")r.className=u||"";else if(u==null)r.removeAttribute(n);else if(n in r&&!i)r[n]=u;else r.setAttribute(n,u===!0?"":u)});if(l(),r._cleanups.add(()=>E(l)),S(()=>E(l)),/^(INPUT|TEXTAREA|SELECT)$/.test(r.tagName)&&(n==="value"||n==="checked")){let u=n==="checked"?"change":"input";r.addEventListener(u,(a)=>o(a.target[n]))}}else{let l=U(n,o);if(l!=null)if(n in r&&!i)r[n]=l;else r.setAttribute(n,l===!0?"":l)}}let c=(n)=>{if(N(n))return n.forEach(c);if(y(n)){let o=g.createTextNode("");r.appendChild(o);let l=[],u=O(()=>{let a=n(),f=(N(a)?a:[a]).map(q);l.forEach((d)=>{if(d._isRuntime)d.destroy();else j(d);if(d.parentNode)d.remove()});let h=o;for(let d=f.length-1;d>=0;d--){let m=f[d];if(m.parentNode!==h.parentNode)h.parentNode?.insertBefore(m,h);if(m._mounts)m._mounts.forEach((Q)=>Q());h=m}l=f});u(),r._cleanups.add(()=>E(u)),S(()=>E(u))}else{let o=q(n);if(r.appendChild(o),o._mounts)o._mounts.forEach((l)=>l())}};return c(t),r},$=(e)=>{let s=new Set,t=_,i=p,r=g.createElement("div");r.style.display="contents",r.setAttribute("role","presentation"),_={_cleanups:s},p=null;let c=(n)=>{if(!n)return;if(n._isRuntime)s.add(n.destroy),r.appendChild(n.container);else if(N(n))n.forEach(c);else r.appendChild(n instanceof Node?n:g.createTextNode(String(n==null?"":n)))};try{c(e({onCleanup:(n)=>s.add(n)}))}finally{_=t,p=i}return{_isRuntime:!0,container:r,destroy:()=>{if(s.forEach((n)=>n()),j(r),!r._sig_leave)r.remove()}}},F=(e,s,t=null)=>{let i=g.createTextNode(""),r=x("div",{style:"display:contents"},[i]),c=null;return A(()=>!!(y(e)?e():e),(n)=>{if(c)c.destroy(),c=null;let o=n?s:t;if(o)c=$(()=>y(o)?o():o),r.insertBefore(c.container,i)}),S(()=>c?.destroy()),r},J=({name:e,duration:s=200,scale:t,slide:i,rotate:r,blur:c},n)=>{let o=typeof n==="function"?n():n;if(!(o instanceof Node))return o;if(e)return o.style.animation=`${e}-in ${s}ms`,o._sig_leave=(a)=>{o.style.animation=`${e}-out ${s}ms`,o.addEventListener("animationend",a,{once:!0})},o;let l=t||i||r||c,u=[t?"scale(0.95)":"",i?"translateY(-10px)":"",r?"rotate(-2deg)":""].filter(Boolean).join(" ");if(o.style.transition=`all ${s}ms ease`,o.style.opacity="0",l)o.style.transform=u;if(c)o.style.filter="blur(4px)";return requestAnimationFrame(()=>{if(o.style.opacity="1",l)o.style.transform="none";if(c)o.style.filter="none"}),o._sig_leave=(a)=>{if(o.style.opacity="0",l)o.style.transform=u;if(c)o.style.filter="blur(4px)";let f=setTimeout(a,s+20);o.addEventListener("transitionend",()=>{clearTimeout(f),a()},{once:!0})},o},z=(e,s,t)=>{let i=g.createTextNode(""),r=x("div",{style:"display:contents"},[i]),c=new Map;return A(()=>(y(e)?e():e)||[],(n)=>{let o=new Map,l=[],u=n||[];for(let f=0;fs(h,f));else c.delete(d);o.set(d,m),l.push(m)}c.forEach((f)=>f.destroy());let a=i;for(let f=l.length-1;f>=0;f--){let d=l[f].container;if(d.nextSibling!==a)r.insertBefore(d,a);a=d}c=o}),r},v=(e)=>{let s=()=>window.location.hash.slice(1)||"/",t=b(s()),i=()=>t(s());window.addEventListener("hashchange",i),S(()=>window.removeEventListener("hashchange",i));let r=x("div",{class:"router-hook"}),c=null;return A([t],()=>{let n=t(),o=e.find((l)=>{let u=l.path.split("/").filter(Boolean),a=n.split("/").filter(Boolean);return u.length===a.length&&u.every((f,h)=>f[0]===":"||f===a[h])})||e.find((l)=>l.path==="*");if(o){c?.destroy();let l={};o.path.split("/").filter(Boolean).forEach((u,a)=>{if(u[0]===":")l[u.slice(1)]=n.split("/").filter(Boolean)[a]}),v.params(l),c=$(()=>y(o.component)?o.component(l):o.component),r.replaceChildren(c.container)}}),r};v.params=b({});v.to=(e)=>window.location.hash=e.replace(/^#?\/?/,"#/");v.back=()=>window.history.back();v.path=()=>window.location.hash.replace(/^#/,"")||"/";var G=({url:e,method:s="GET",headers:t={}})=>{let i=b(!1),r=b(null),c=b(null),n=null,o=null;return{run:async(a=null)=>{n?.abort(),clearTimeout(o),n=new AbortController,o=setTimeout(()=>n.abort(),1e4),i(!0),r(null);try{let f=a instanceof FormData,h=await fetch(e,{method:s,headers:f?t:{"Content-Type":"application/json",...t},body:f?a:a?JSON.stringify(a):void 0,signal:n.signal}),d=await h.text(),m=d?JSON.parse(d):null;if(!h.ok)throw Error(m?.message||h.statusText);return c(m),m}catch(f){if(f.name!=="AbortError")r(f.message);throw f}finally{i(!1),clearTimeout(o),n=null,o=null}},abort:()=>n?.abort(),loading:i,error:r,data:c}},K=(e,s)=>{let t=typeof s==="string"?g.querySelector(s):s;if(!t)return;if(P.has(t))P.get(t).destroy();let i=$(y(e)?e:()=>e);return t.replaceChildren(i.container),P.set(t,i),i},ce=Object.freeze({$:b,$$:D,watch:A,h:x,when:F,each:z,fx:J,router:v,req:G,mount:K,batch:W});if(typeof window<"u")Object.assign(window,ce),"a abbr article aside audio b blockquote br button canvas caption cite code col colgroup datalist dd del details dfn dialog div dl dt em embed fieldset figcaption figure footer form h1 h2 h3 h4 h5 h6 header hr i iframe img input ins kbd label legend li main mark meter nav object ol optgroup option output p picture pre progress section select slot small source span strong sub summary sup svg table tbody td template textarea tfoot th thead time tr u ul video".split(" ").forEach((e)=>{window[e]=(s,t)=>x(e,s,t)});})(); +(()=>{var{defineProperty:$,getOwnPropertyNames:H,getOwnPropertyDescriptor:X}=Object,Y=Object.prototype.hasOwnProperty;function Z(e){return this[e]}var ee=(e)=>{var o=(M??=new WeakMap).get(e),n;if(o)return o;if(o=$({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function"){for(var s of H(e))if(!Y.call(o,s))$(o,s,{get:Z.bind(e,s),enumerable:!(n=X(e,s))||n.enumerable})}return M.set(e,o),o},M;var te=(e)=>e;function ne(e,o){this[e]=te.bind(null,o)}var oe=(e,o)=>{for(var n in o)$(e,n,{get:o[n],enumerable:!0,configurable:!0,set:ne.bind(o,n)})};var le={};oe(le,{when:()=>F,watch:()=>A,router:()=>N,req:()=>G,mount:()=>K,h:()=>x,fx:()=>J,each:()=>z,batch:()=>W,$$:()=>k,$:()=>b});var y=(e)=>typeof e==="function",L=(e)=>e&&typeof e==="object",S=Array.isArray,g=typeof document<"u"?document:null,q=(e)=>e?._isRuntime?e.container:e instanceof Node?e:g.createTextNode(e==null?"":String(e)),p=null,_=null,T=!1,C=0,R=new Set,I=new WeakMap,B=Symbol("iter"),P=new WeakMap,E=(e)=>{if(!e||e._disposed)return;e._disposed=!0;let o=[e];while(o.length){let n=o.pop();if(n._cleanups)n._cleanups.forEach((s)=>s()),n._cleanups.clear();if(n._children)n._children.forEach((s)=>o.push(s)),n._children.clear();if(n._deps)n._deps.forEach((s)=>s.delete(n)),n._deps.clear()}},v=(e)=>{if(_)(_._cleanups||=new Set).add(e)},se=(e)=>{let o=p;p=null;try{return e()}finally{p=o}},O=(e,o=!1)=>{let n=()=>{if(n._disposed)return;if(n._deps)n._deps.forEach((c)=>c.delete(n));if(n._cleanups)n._cleanups.forEach((c)=>c()),n._cleanups.clear();let s=p,r=_;p=_=n;try{return n._result=e()}catch(c){console.error("[SigPro]",c)}finally{p=s,_=r}};if(n._deps=n._cleanups=n._children=null,n._disposed=!1,n._isComputed=o,n._depth=p?p._depth+1:0,n._mounts=[],n._parent=_,_)(_._children||=new Set).add(n);return n},V=()=>{if(T)return;T=!0;let e=Array.from(R).sort((o,n)=>o._depth-n._depth);R.clear();for(let o of e)if(!o._disposed)o();T=!1},W=(e)=>{C++;try{return e()}finally{if(C--,C===0&&R.size>0&&!T)V()}},w=(e,o=!1)=>{if(!o&&p&&!p._disposed)e.add(p),(p._deps||=new Set).add(e);else if(o&&e.size>0){let n=!1;for(let s of e){if(s===p||s._disposed)continue;if(s._isComputed){if(s._dirty=!0,s._subs)w(s._subs,!0)}else R.add(s),n=!0}if(n&&!T&&C===0)queueMicrotask(V)}},b=(e,o=null)=>{let n=new Set;if(y(e)){let s,r=()=>{if(r._dirty){let c=p;p=r;try{let t=e();if(!Object.is(s,t))s=t,w(n,!0)}finally{p=c}r._dirty=!1}return w(n),s};if(r._isComputed=!0,r._subs=n,r._dirty=!0,r._deps=null,r._disposed=!1,r.stop=()=>{},_)v(r.stop);return r}if(o)try{e=JSON.parse(localStorage.getItem(o))??e}catch(s){}return(...s)=>{if(s.length){let r=y(s[0])?s[0](e):s[0];if(!Object.is(e,r)){if(e=r,o)localStorage.setItem(o,JSON.stringify(e));w(n,!0)}}return w(n),e}},k=(e)=>{if(!L(e))return e;let o=I.get(e);if(o)return o;let n=new Map,s=(c)=>{let t=n.get(c);if(!t)n.set(c,t=new Set);return t},r=new Proxy(e,{get(c,t,i){if(typeof t!=="symbol")w(s(t));return k(Reflect.get(c,t,i))},set(c,t,i,l){let u=Reflect.has(c,t),a=Reflect.get(c,t,l),f=Reflect.set(c,t,i,l);if(f&&!Object.is(a,i)){if(w(s(t),!0),!u)w(s(B),!0)}return f},deleteProperty(c,t){let i=Reflect.deleteProperty(c,t);if(i)w(s(t),!0),w(s(B),!0);return i},ownKeys(c){return w(s(B)),Reflect.ownKeys(c)}});return I.set(e,r),r},A=(e,o)=>{if(o===void 0){let s=O(e);return s(),()=>E(s)}let n=O(()=>{let s=Array.isArray(e)?e.map((r)=>r()):e();se(()=>o(s))});return n(),()=>E(n)},D=(e)=>{if(!e)return;if(e._cleanups)e._cleanups.forEach((o)=>o()),e._cleanups.clear();if(e._ownerEffect)E(e._ownerEffect);if(e.childNodes)e.childNodes.forEach((o)=>D(o))},re=/^\s*(javascript|data|vbscript):/i,ie=(e)=>e==="src"||e==="href"||e.startsWith("on"),U=(e,o)=>{if(o==null||o===!1)return null;if(ie(e)){let n=String(o);if(re.test(n))return console.warn(`[SigPro] Bloqueado protocolo peligroso en ${e}`),"#"}return o},x=(e,o={},n=[])=>{if(o instanceof Node||S(o)||!L(o))n=o,o={};if(y(e)){let t=O(()=>{let a=e(o,{children:n,emit:(f,...h)=>o[`on${f[0].toUpperCase()}${f.slice(1)}`]?.(...h)});return t._result=a,a});t();let i=t._result;if(i==null)return null;let l=i instanceof Node||S(i)&&i.every((a)=>a instanceof Node)?i:g.createTextNode(String(i)),u=(a)=>{if(L(a)&&!a._isRuntime)a._mounts=t._mounts||[],a._cleanups=t._cleanups||new Set,a._ownerEffect=t};return S(l)?l.forEach(u):u(l),l}let s=/^(svg|path|circle|rect|line|poly(line|gon)|g|defs|text(path)?|tspan|use|symbol|image|marker|ellipse)$/i.test(e),r=s?g.createElementNS("http://www.w3.org/2000/svg",e):g.createElement(e);r._cleanups=new Set;for(let t in o){if(!o.hasOwnProperty(t))continue;let i=o[t];if(t==="ref"){y(i)?i(r):i.current=r;continue}if(s&&t.startsWith("xlink:")){i==null?r.removeAttributeNS("http://www.w3.org/1999/xlink",t.slice(6)):r.setAttributeNS("http://www.w3.org/1999/xlink",t.slice(6),i);continue}if(t.startsWith("on")){let l=t.slice(2).toLowerCase();r.addEventListener(l,i);let u=()=>r.removeEventListener(l,i);r._cleanups.add(u),v(u)}else if(y(i)){let l=O(()=>{let u=U(t,i());if(t==="class")r.className=u||"";else if(u==null)r.removeAttribute(t);else if(t in r&&!s)r[t]=u;else r.setAttribute(t,u===!0?"":u)});if(l(),r._cleanups.add(()=>E(l)),v(()=>E(l)),/^(INPUT|TEXTAREA|SELECT)$/.test(r.tagName)&&(t==="value"||t==="checked")){let u=t==="checked"?"change":"input";r.addEventListener(u,(a)=>i(a.target[t]))}}else{let l=U(t,i);if(l!=null)if(t in r&&!s)r[t]=l;else r.setAttribute(t,l===!0?"":l)}}let c=(t)=>{if(S(t))return t.forEach(c);if(y(t)){let i=g.createTextNode("");r.appendChild(i);let l=[],u=O(()=>{let a=t(),f=(S(a)?a:[a]).map(q);l.forEach((d)=>{if(d._isRuntime)d.destroy();else D(d);if(d.parentNode)d.remove()});let h=i;for(let d=f.length-1;d>=0;d--){let m=f[d];if(m.parentNode!==h.parentNode)h.parentNode?.insertBefore(m,h);if(m._mounts)m._mounts.forEach((Q)=>Q());h=m}l=f});u(),r._cleanups.add(()=>E(u)),v(()=>E(u))}else{let i=q(t);if(r.appendChild(i),i._mounts)i._mounts.forEach((l)=>l())}};return c(n),r},j=(e)=>{let o=new Set,n=_,s=p,r=g.createElement("div");r.style.display="contents",r.setAttribute("role","presentation"),_={_cleanups:o},p=null;let c=(t)=>{if(!t)return;if(t._isRuntime)o.add(t.destroy),r.appendChild(t.container);else if(S(t))t.forEach(c);else r.appendChild(t instanceof Node?t:g.createTextNode(String(t==null?"":t)))};try{c(e({onCleanup:(t)=>o.add(t)}))}finally{_=n,p=s}return{_isRuntime:!0,container:r,destroy:()=>{o.forEach((t)=>t()),D(r),r.remove()}}},F=(e,o,n=null)=>{let s=g.createTextNode(""),r=x("div",{style:"display:contents"},[s]),c=null;return A(()=>!!(y(e)?e():e),(t)=>{if(c)c.destroy(),c=null;let i=t?o:n;if(i)c=j(()=>y(i)?i():i),r.insertBefore(c.container,s)}),v(()=>c?.destroy()),r},J=({name:e,duration:o=200,scale:n,slide:s,rotate:r,blur:c},t)=>{let i=typeof t==="function"?t():t;if(!(i instanceof Node))return i;if(e)return i.style.animation=`${e}-in ${o}ms`,i;let l=n||s||r||c,u=[n?"scale(0.95)":"",s?"translateY(-10px)":"",r?"rotate(-2deg)":""].filter(Boolean).join(" ");if(i.style.transition=`all ${o}ms ease`,i.style.opacity="0",l)i.style.transform=u;if(c)i.style.filter="blur(4px)";return requestAnimationFrame(()=>{if(i.style.opacity="1",l)i.style.transform="none";if(c)i.style.filter="none"}),i},z=(e,o,n)=>{let s=g.createTextNode(""),r=x("div",{style:"display:contents"},[s]),c=new Map;return A(()=>(y(e)?e():e)||[],(t)=>{let i=new Map,l=[],u=t||[];for(let f=0;fo(h,f));else c.delete(d);i.set(d,m),l.push(m)}c.forEach((f)=>f.destroy());let a=s;for(let f=l.length-1;f>=0;f--){let d=l[f].container;if(d.nextSibling!==a)r.insertBefore(d,a);a=d}c=i}),r},N=(e)=>{let o=()=>window.location.hash.slice(1)||"/",n=b(o()),s=()=>n(o());window.addEventListener("hashchange",s),v(()=>window.removeEventListener("hashchange",s));let r=x("div",{class:"router-hook"}),c=null;return A([n],()=>{let t=n(),i=e.find((l)=>{let u=l.path.split("/").filter(Boolean),a=t.split("/").filter(Boolean);return u.length===a.length&&u.every((f,h)=>f[0]===":"||f===a[h])})||e.find((l)=>l.path==="*");if(i){c?.destroy();let l={};i.path.split("/").filter(Boolean).forEach((u,a)=>{if(u[0]===":")l[u.slice(1)]=t.split("/").filter(Boolean)[a]}),N.params(l),c=j(()=>y(i.component)?i.component(l):i.component),r.replaceChildren(c.container)}}),r};N.params=b({});N.to=(e)=>window.location.hash=e.replace(/^#?\/?/,"#/");N.back=()=>window.history.back();N.path=()=>window.location.hash.replace(/^#/,"")||"/";var G=({url:e,method:o="GET",headers:n={}})=>{let s=b(!1),r=b(null),c=b(null),t=null,i=null;return{run:async(a=null)=>{t?.abort(),clearTimeout(i),t=new AbortController,i=setTimeout(()=>t.abort(),1e4),s(!0),r(null);try{let f=a instanceof FormData,h=await fetch(e,{method:o,headers:f?n:{"Content-Type":"application/json",...n},body:f?a:a?JSON.stringify(a):void 0,signal:t.signal}),d=await h.text(),m=d?JSON.parse(d):null;if(!h.ok)throw Error(m?.message||h.statusText);return c(m),m}catch(f){if(f.name!=="AbortError")r(f.message);throw f}finally{s(!1),clearTimeout(i),t=null,i=null}},abort:()=>t?.abort(),loading:s,error:r,data:c}},K=(e,o)=>{let n=typeof o==="string"?g.querySelector(o):o;if(!n)return;if(P.has(n))P.get(n).destroy();let s=j(y(e)?e:()=>e);return n.replaceChildren(s.container),P.set(n,s),s},ce=Object.freeze({$:b,$$:k,watch:A,h:x,when:F,each:z,fx:J,router:N,req:G,mount:K,batch:W});if(typeof window<"u")Object.assign(window,ce),"a abbr article aside audio b blockquote br button canvas caption cite code col colgroup datalist dd del details dfn dialog div dl dt em embed fieldset figcaption figure footer form h1 h2 h3 h4 h5 h6 header hr i iframe img input ins kbd label legend li main mark meter nav object ol optgroup option output p picture pre progress section select slot small source span strong sub summary sup svg table tbody td template textarea tfoot th thead time tr u ul video".split(" ").forEach((e)=>{window[e]=(o,n)=>x(e,o,n)});})(); diff --git a/docs/sigpro.js b/docs/sigpro.js index 1ef3710..df3523c 100644 --- a/docs/sigpro.js +++ b/docs/sigpro.js @@ -286,7 +286,7 @@ effect(); return () => dispose(effect); }; - var cleanupNode = (node, skipLeave = false) => { + var cleanupNode = (node) => { if (!node) return; if (node._cleanups) { @@ -295,15 +295,8 @@ } if (node._ownerEffect) dispose(node._ownerEffect); - if (!skipLeave && node._sig_leave) { - return node._sig_leave(() => { - if (node.childNodes) - node.childNodes.forEach((n) => cleanupNode(n, true)); - node.remove(); - }); - } if (node.childNodes) - node.childNodes.forEach((n) => cleanupNode(n, false)); + node.childNodes.forEach((n) => cleanupNode(n)); }; var DANGEROUS_PROTOCOL = /^\s*(javascript|data|vbscript):/i; var isDangerousAttr = (key) => key === "src" || key === "href" || key.startsWith("on"); @@ -474,8 +467,7 @@ destroy: () => { cleanups.forEach((fn) => fn()); cleanupNode(container); - if (!container._sig_leave) - container.remove(); + container.remove(); } }; }; @@ -503,10 +495,6 @@ return el; if (name) { el.style.animation = `${name}-in ${duration}ms`; - el._sig_leave = (done) => { - el.style.animation = `${name}-out ${duration}ms`; - el.addEventListener("animationend", done, { once: true }); - }; return el; } const hasTransform = scale || slide || rotate || blur; @@ -528,18 +516,6 @@ if (blur) el.style.filter = "none"; }); - el._sig_leave = (done) => { - el.style.opacity = "0"; - if (hasTransform) - el.style.transform = initialTransform; - if (blur) - el.style.filter = "blur(4px)"; - const timer = setTimeout(done, duration + 20); - el.addEventListener("transitionend", () => { - clearTimeout(timer); - done(); - }, { once: true }); - }; return el; }; var each = (src, itemFn, keyFn) => { diff --git a/package.json b/package.json index 766744d..3898311 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sigpro", - "version": "1.2.17", + "version": "1.2.18", "type": "module", "license": "MIT", "main": "./dist/sigpro.esm.min.js", diff --git a/sigpro.js b/sigpro.js index c8f59c1..cd9f03d 100644 --- a/sigpro.js +++ b/sigpro.js @@ -1,4 +1,4 @@ -// sigpro 1.2.17 +// sigpro 1.2.18 const isFunc = f => typeof f === "function" const isObj = o => o && typeof o === "object" const isArr = Array.isArray @@ -164,7 +164,6 @@ const $ = (val, key = null) => { const $$ = (target) => { if (!isObj(target)) return target - const cached = proxyCache.get(target) if (cached) return cached @@ -222,20 +221,14 @@ const watch = (sources, cb) => { return () => dispose(effect) } -const cleanupNode = (node, skipLeave = false) => { +const cleanupNode = (node) => { if (!node) return; if (node._cleanups) { node._cleanups.forEach(fn => fn()); node._cleanups.clear(); } if (node._ownerEffect) dispose(node._ownerEffect); - if (!skipLeave && node._sig_leave) { - return node._sig_leave(() => { - if (node.childNodes) node.childNodes.forEach(n => cleanupNode(n, true)); - node.remove(); - }); - } - if (node.childNodes) node.childNodes.forEach(n => cleanupNode(n, false)); + if (node.childNodes) node.childNodes.forEach(n => cleanupNode(n)); }; const DANGEROUS_PROTOCOL = /^\s*(javascript|data|vbscript):/i @@ -405,7 +398,7 @@ const render = renderFn => { destroy: () => { cleanups.forEach(fn => fn()) cleanupNode(container) - if (!container._sig_leave) container.remove() + container.remove() } } } @@ -435,16 +428,12 @@ const when = (cond, SIP, NOP = null) => { return root } -var fx = ({ name, duration = 200, scale, slide, rotate, blur }, child) => { +const fx = ({ name, duration = 200, scale, slide, rotate, blur }, child) => { const el = typeof child === "function" ? child() : child; if (!(el instanceof Node)) return el; if (name) { el.style.animation = `${name}-in ${duration}ms`; - el._sig_leave = (done) => { - el.style.animation = `${name}-out ${duration}ms`; - el.addEventListener("animationend", done, { once: true }); - }; return el; } @@ -466,18 +455,6 @@ var fx = ({ name, duration = 200, scale, slide, rotate, blur }, child) => { if (blur) el.style.filter = "none"; }); - el._sig_leave = (done) => { - el.style.opacity = "0"; - if (hasTransform) el.style.transform = initialTransform; - if (blur) el.style.filter = "blur(4px)"; - - const timer = setTimeout(done, duration + 20); - el.addEventListener("transitionend", () => { - clearTimeout(timer); - done(); - }, { once: true }); - }; - return el; };