From a59d26f18a193bbb645097e881b7d17b94e3c6e3 Mon Sep 17 00:00:00 2001 From: natxocc Date: Thu, 23 Apr 2026 11:19:17 +0200 Subject: [PATCH] fade out no funcionaba --- 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 | 40 ++++++++++++++++++++++++++-------------- 7 files changed, 92 insertions(+), 44 deletions(-) diff --git a/dist/sigpro.esm.js b/dist/sigpro.esm.js index d6105a5..7ece3be 100644 --- a/dist/sigpro.esm.js +++ b/dist/sigpro.esm.js @@ -455,23 +455,35 @@ var fx = ({ name, duration = 200, scale, slide, rotate, blur }, child) => { return el; } const hasTransform = scale || slide || rotate || blur; - el.style.transition = hasTransform ? `all ${duration}ms` : ""; + const initialTransform = [ + scale ? "scale(0.95)" : "", + slide ? "translateY(-10px)" : "", + rotate ? "rotate(-2deg)" : "" + ].filter(Boolean).join(" "); + el.style.transition = `all ${duration}ms ease`; el.style.opacity = "0"; - if (scale) - el.style.transform = "scale(0.95)"; - if (slide) - el.style.transform = "translateY(-10px)"; - if (rotate) - el.style.transform = "rotate(-2deg)"; + if (hasTransform) + el.style.transform = initialTransform; if (blur) el.style.filter = "blur(4px)"; requestAnimationFrame(() => { el.style.opacity = "1"; - el.style.transform = scale || slide || rotate || blur ? "" : "none"; + if (hasTransform) + el.style.transform = "none"; + if (blur) + el.style.filter = "none"; }); el._sig_leave = (done) => { el.style.opacity = "0"; - el.addEventListener("transitionend", done, { once: true }); + 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; }; diff --git a/dist/sigpro.esm.min.js b/dist/sigpro.esm.min.js index 8f888fd..4fbb8c4 100644 --- a/dist/sigpro.esm.min.js +++ b/dist/sigpro.esm.min.js @@ -1 +1 @@ -var y=(e)=>typeof e==="function",B=(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,m=null,x=!1,A=0,C=new Set,D=new WeakMap,L=Symbol("iter"),P=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(m)(m._cleanups||=new Set).add(e)},V=(e)=>{let r=p;p=null;try{return e()}finally{p=r}},O=(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=m;p=m=n;try{return n._result=e()}catch(c){console.error("[SigPro]",c)}finally{p=i,m=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=m,m)(m._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=()=>{},m)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(!B(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 a=Reflect.has(c,t),f=Reflect.get(c,t,l),u=Reflect.set(c,t,s,l);if(u&&!Object.is(f,s)){if(w(i(t),!0),!a)w(i(L),!0)}return u},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},$=(e,r)=>{if(r===void 0){let i=O(e);return i(),()=>E(i)}let n=O(()=>{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},T=(e,r={},n=[])=>{if(r instanceof Node||b(r)||!B(r))n=r,r={};if(y(e)){let t=O(()=>{let f=e(r,{children:n,emit:(u,...h)=>r[`on${u[0].toUpperCase()}${u.slice(1)}`]?.(...h)});return t._result=f,f});t();let s=t._result;if(s==null)return null;let l=s instanceof Node||b(s)&&s.every((f)=>f instanceof Node)?s:g.createTextNode(String(s)),a=(f)=>{if(B(f)&&!f._isRuntime)f._mounts=t._mounts||[],f._cleanups=t._cleanups||new Set,f._ownerEffect=t};return b(l)?l.forEach(a):a(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 a=()=>o.removeEventListener(l,s);o._cleanups.add(a),v(a)}else if(y(s)){let l=O(()=>{let a=M(t,s());if(t==="class")o.className=a||"";else if(a==null)o.removeAttribute(t);else if(t in o&&!i)o[t]=a;else o.setAttribute(t,a===!0?"":a)});if(l(),o._cleanups.add(()=>E(l)),v(()=>E(l)),/^(INPUT|TEXTAREA|SELECT)$/.test(o.tagName)&&(t==="value"||t==="checked")){let a=t==="checked"?"change":"input";o.addEventListener(a,(f)=>s(f.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=[],a=O(()=>{let f=t(),u=(b(f)?f:[f]).map(k);l.forEach((d)=>{if(d._isRuntime)d.destroy();else R(d);if(d.parentNode)d.remove()});let h=s;for(let d=u.length-1;d>=0;d--){let _=u[d];if(_.parentNode!==h.parentNode)h.parentNode?.insertBefore(_,h);if(_._mounts)_._mounts.forEach((U)=>U());h=_}l=u});a(),o._cleanups.add(()=>E(a)),v(()=>E(a))}else{let s=k(t);if(o.appendChild(s),s._mounts)s._mounts.forEach((l)=>l())}};return c(n),o},j=(e)=>{let r=new Set,n=m,i=p,o=g.createElement("div");o.style.display="contents",o.setAttribute("role","presentation"),m={_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{m=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=T("div",{style:"display:contents"},[i]),c=null;return $(()=>!!(y(e)?e():e),(t)=>{if(c)c.destroy(),c=null;let s=t?r:n;if(s)c=j(()=>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;if(s.style.transition=l?`all ${r}ms`:"",s.style.opacity="0",n)s.style.transform="scale(0.95)";if(i)s.style.transform="translateY(-10px)";if(o)s.style.transform="rotate(-2deg)";if(c)s.style.filter="blur(4px)";return requestAnimationFrame(()=>{s.style.opacity="1",s.style.transform=n||i||o||c?"":"none"}),s._sig_leave=(a)=>{s.style.opacity="0",s.addEventListener("transitionend",a,{once:!0})},s},K=(e,r,n)=>{let i=g.createTextNode(""),o=T("div",{style:"display:contents"},[i]),c=new Map;return $(()=>(y(e)?e():e)||[],(t)=>{let s=new Map,l=[],a=t||[];for(let u=0;ur(h,u));else c.delete(d);s.set(d,_),l.push(_)}c.forEach((u)=>u.destroy());let f=i;for(let u=l.length-1;u>=0;u--){let d=l[u].container;if(d.nextSibling!==f)o.insertBefore(d,f);f=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=T("div",{class:"router-hook"}),c=null;return $([n],()=>{let t=n(),s=e.find((l)=>{let a=l.path.split("/").filter(Boolean),f=t.split("/").filter(Boolean);return a.length===f.length&&a.every((u,h)=>u[0]===":"||u===f[h])})||e.find((l)=>l.path==="*");if(s){c?.destroy();let l={};s.path.split("/").filter(Boolean).forEach((a,f)=>{if(a[0]===":")l[a.slice(1)]=t.split("/").filter(Boolean)[f]}),S.params(l),c=j(()=>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(f=null)=>{t?.abort(),clearTimeout(s),t=new AbortController,s=setTimeout(()=>t.abort(),1e4),i(!0),o(null);try{let u=f instanceof FormData,h=await fetch(e,{method:r,headers:u?n:{"Content-Type":"application/json",...n},body:u?f:f?JSON.stringify(f):void 0,signal:t.signal}),d=await h.text(),_=d?JSON.parse(d):null;if(!h.ok)throw Error(_?.message||h.statusText);return c(_),_}catch(u){if(u.name!=="AbortError")o(u.message);throw u}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(P.has(n))P.get(n).destroy();let i=j(y(e)?e:()=>e);return n.replaceChildren(i.container),P.set(n,i),i},X=Object.freeze({$:N,$$:I,watch:$,h:T,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)=>T(e,r,n)});export{z as when,$ as watch,S as router,Q as req,H as mount,T 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,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 $}; diff --git a/dist/sigpro.js b/dist/sigpro.js index 5dcca77..1ef3710 100644 --- a/dist/sigpro.js +++ b/dist/sigpro.js @@ -510,23 +510,35 @@ return el; } const hasTransform = scale || slide || rotate || blur; - el.style.transition = hasTransform ? `all ${duration}ms` : ""; + const initialTransform = [ + scale ? "scale(0.95)" : "", + slide ? "translateY(-10px)" : "", + rotate ? "rotate(-2deg)" : "" + ].filter(Boolean).join(" "); + el.style.transition = `all ${duration}ms ease`; el.style.opacity = "0"; - if (scale) - el.style.transform = "scale(0.95)"; - if (slide) - el.style.transform = "translateY(-10px)"; - if (rotate) - el.style.transform = "rotate(-2deg)"; + if (hasTransform) + el.style.transform = initialTransform; if (blur) el.style.filter = "blur(4px)"; requestAnimationFrame(() => { el.style.opacity = "1"; - el.style.transform = scale || slide || rotate || blur ? "" : "none"; + if (hasTransform) + el.style.transform = "none"; + if (blur) + el.style.filter = "none"; }); el._sig_leave = (done) => { el.style.opacity = "0"; - el.addEventListener("transitionend", done, { once: true }); + 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; }; diff --git a/dist/sigpro.min.js b/dist/sigpro.min.js index f7d3f70..7577770 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,m=null,O=!1,C=0,R=new Set,I=new WeakMap,P=Symbol("iter"),B=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(m)(m._cleanups||=new Set).add(e)},oe=(e)=>{let s=p;p=null;try{return e()}finally{p=s}},T=(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=m;p=m=t;try{return t._result=e()}catch(c){console.error("[SigPro]",c)}finally{p=i,m=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=m,m)(m._children||=new Set).add(t);return t},V=()=>{if(O)return;O=!0;let e=Array.from(R).sort((s,t)=>s._depth-t._depth);R.clear();for(let s of e)if(!s._disposed)s();O=!1},W=(e)=>{C++;try{return e()}finally{if(C--,C===0&&R.size>0&&!O)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&&!O&&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=()=>{},m)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 a=Reflect.has(c,n),f=Reflect.get(c,n,l),u=Reflect.set(c,n,o,l);if(u&&!Object.is(f,o)){if(w(i(n),!0),!a)w(i(P),!0)}return u},deleteProperty(c,n){let o=Reflect.deleteProperty(c,n);if(o)w(i(n),!0),w(i(P),!0);return o},ownKeys(c){return w(i(P)),Reflect.ownKeys(c)}});return I.set(e,r),r},A=(e,s)=>{if(s===void 0){let i=T(e);return i(),()=>E(i)}let t=T(()=>{let i=Array.isArray(e)?e.map((r)=>r()):e();oe(()=>s(i))});return t(),()=>E(t)},$=(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)=>$(t,!0));e.remove()});if(e.childNodes)e.childNodes.forEach((t)=>$(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=T(()=>{let f=e(s,{children:t,emit:(u,...h)=>s[`on${u[0].toUpperCase()}${u.slice(1)}`]?.(...h)});return n._result=f,f});n();let o=n._result;if(o==null)return null;let l=o instanceof Node||N(o)&&o.every((f)=>f instanceof Node)?o:g.createTextNode(String(o)),a=(f)=>{if(k(f)&&!f._isRuntime)f._mounts=n._mounts||[],f._cleanups=n._cleanups||new Set,f._ownerEffect=n};return N(l)?l.forEach(a):a(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 a=()=>r.removeEventListener(l,o);r._cleanups.add(a),S(a)}else if(y(o)){let l=T(()=>{let a=U(n,o());if(n==="class")r.className=a||"";else if(a==null)r.removeAttribute(n);else if(n in r&&!i)r[n]=a;else r.setAttribute(n,a===!0?"":a)});if(l(),r._cleanups.add(()=>E(l)),S(()=>E(l)),/^(INPUT|TEXTAREA|SELECT)$/.test(r.tagName)&&(n==="value"||n==="checked")){let a=n==="checked"?"change":"input";r.addEventListener(a,(f)=>o(f.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=[],a=T(()=>{let f=n(),u=(N(f)?f:[f]).map(q);l.forEach((d)=>{if(d._isRuntime)d.destroy();else $(d);if(d.parentNode)d.remove()});let h=o;for(let d=u.length-1;d>=0;d--){let _=u[d];if(_.parentNode!==h.parentNode)h.parentNode?.insertBefore(_,h);if(_._mounts)_._mounts.forEach((Q)=>Q());h=_}l=u});a(),r._cleanups.add(()=>E(a)),S(()=>E(a))}else{let o=q(n);if(r.appendChild(o),o._mounts)o._mounts.forEach((l)=>l())}};return c(t),r},j=(e)=>{let s=new Set,t=m,i=p,r=g.createElement("div");r.style.display="contents",r.setAttribute("role","presentation"),m={_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{m=t,p=i}return{_isRuntime:!0,container:r,destroy:()=>{if(s.forEach((n)=>n()),$(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=j(()=>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;if(o.style.transition=l?`all ${s}ms`:"",o.style.opacity="0",t)o.style.transform="scale(0.95)";if(i)o.style.transform="translateY(-10px)";if(r)o.style.transform="rotate(-2deg)";if(c)o.style.filter="blur(4px)";return requestAnimationFrame(()=>{o.style.opacity="1",o.style.transform=t||i||r||c?"":"none"}),o._sig_leave=(a)=>{o.style.opacity="0",o.addEventListener("transitionend",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=[],a=n||[];for(let u=0;us(h,u));else c.delete(d);o.set(d,_),l.push(_)}c.forEach((u)=>u.destroy());let f=i;for(let u=l.length-1;u>=0;u--){let d=l[u].container;if(d.nextSibling!==f)r.insertBefore(d,f);f=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 a=l.path.split("/").filter(Boolean),f=n.split("/").filter(Boolean);return a.length===f.length&&a.every((u,h)=>u[0]===":"||u===f[h])})||e.find((l)=>l.path==="*");if(o){c?.destroy();let l={};o.path.split("/").filter(Boolean).forEach((a,f)=>{if(a[0]===":")l[a.slice(1)]=n.split("/").filter(Boolean)[f]}),v.params(l),c=j(()=>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(f=null)=>{n?.abort(),clearTimeout(o),n=new AbortController,o=setTimeout(()=>n.abort(),1e4),i(!0),r(null);try{let u=f instanceof FormData,h=await fetch(e,{method:s,headers:u?t:{"Content-Type":"application/json",...t},body:u?f:f?JSON.stringify(f):void 0,signal:n.signal}),d=await h.text(),_=d?JSON.parse(d):null;if(!h.ok)throw Error(_?.message||h.statusText);return c(_),_}catch(u){if(u.name!=="AbortError")r(u.message);throw u}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(B.has(t))B.get(t).destroy();let i=j(y(e)?e:()=>e);return t.replaceChildren(i.container),B.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: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)});})(); diff --git a/docs/sigpro.js b/docs/sigpro.js index 5dcca77..1ef3710 100644 --- a/docs/sigpro.js +++ b/docs/sigpro.js @@ -510,23 +510,35 @@ return el; } const hasTransform = scale || slide || rotate || blur; - el.style.transition = hasTransform ? `all ${duration}ms` : ""; + const initialTransform = [ + scale ? "scale(0.95)" : "", + slide ? "translateY(-10px)" : "", + rotate ? "rotate(-2deg)" : "" + ].filter(Boolean).join(" "); + el.style.transition = `all ${duration}ms ease`; el.style.opacity = "0"; - if (scale) - el.style.transform = "scale(0.95)"; - if (slide) - el.style.transform = "translateY(-10px)"; - if (rotate) - el.style.transform = "rotate(-2deg)"; + if (hasTransform) + el.style.transform = initialTransform; if (blur) el.style.filter = "blur(4px)"; requestAnimationFrame(() => { el.style.opacity = "1"; - el.style.transform = scale || slide || rotate || blur ? "" : "none"; + if (hasTransform) + el.style.transform = "none"; + if (blur) + el.style.filter = "none"; }); el._sig_leave = (done) => { el.style.opacity = "0"; - el.addEventListener("transitionend", done, { once: true }); + 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; }; diff --git a/package.json b/package.json index feb802a..766744d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sigpro", - "version": "1.2.15", + "version": "1.2.17", "type": "module", "license": "MIT", "main": "./dist/sigpro.esm.min.js", diff --git a/sigpro.js b/sigpro.js index badc138..c8f59c1 100644 --- a/sigpro.js +++ b/sigpro.js @@ -1,4 +1,4 @@ -// sigpro 1.2.16 +// sigpro 1.2.17 const isFunc = f => typeof f === "function" const isObj = o => o && typeof o === "object" const isArr = Array.isArray @@ -435,35 +435,47 @@ const when = (cond, SIP, NOP = null) => { return root } -const fx = ({ name, duration = 200, scale, slide, rotate, blur }, child) => { - const el = typeof child === 'function' ? child() : child; +var 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 }); + el.addEventListener("animationend", done, { once: true }); }; return el; } const hasTransform = scale || slide || rotate || blur; - el.style.transition = hasTransform ? `all ${duration}ms` : ''; - el.style.opacity = '0'; - if (scale) el.style.transform = 'scale(0.95)'; - if (slide) el.style.transform = 'translateY(-10px)'; - if (rotate) el.style.transform = 'rotate(-2deg)'; - if (blur) el.style.filter = 'blur(4px)'; + const initialTransform = [ + scale ? "scale(0.95)" : "", + slide ? "translateY(-10px)" : "", + rotate ? "rotate(-2deg)" : "" + ].filter(Boolean).join(" "); + + el.style.transition = `all ${duration}ms ease`; + el.style.opacity = "0"; + if (hasTransform) el.style.transform = initialTransform; + if (blur) el.style.filter = "blur(4px)"; requestAnimationFrame(() => { - el.style.opacity = '1'; - el.style.transform = scale || slide || rotate || blur ? '' : 'none'; + el.style.opacity = "1"; + if (hasTransform) el.style.transform = "none"; + if (blur) el.style.filter = "none"; }); el._sig_leave = (done) => { - el.style.opacity = '0'; - el.addEventListener('transitionend', done, { once: true }); + 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;