From 0df4b3912ddd1374a88b7ced57c358f92737be6a Mon Sep 17 00:00:00 2001 From: natxocc Date: Wed, 29 Apr 2026 16:54:54 +0200 Subject: [PATCH] 1.2.26 add style option to h() --- dist/sigpro.esm.js | 7 ++++++- dist/sigpro.esm.min.js | 2 +- dist/sigpro.js | 7 ++++++- dist/sigpro.min.js | 2 +- docs/sigpro.js | 7 ++++++- package.json | 2 +- sigpro.js | 4 +++- 7 files changed, 24 insertions(+), 7 deletions(-) diff --git a/dist/sigpro.esm.js b/dist/sigpro.esm.js index 55bfa63..94e11dc 100644 --- a/dist/sigpro.esm.js +++ b/dist/sigpro.esm.js @@ -314,6 +314,8 @@ var h = (tag, props = {}, children = []) => { el.className = val || ""; else if (val == null) el.removeAttribute(k); + else if (k === "style" && typeof val === "string") + el.setAttribute("style", val); else if (k in el && !isSVG) el[k] = val; else @@ -329,7 +331,9 @@ var h = (tag, props = {}, children = []) => { } else { const val = validateAttr(k, v); if (val != null) { - if (k in el && !isSVG) + if (k === "style" && typeof val === "string") + el.setAttribute("style", val); + else if (k in el && !isSVG) el[k] = val; else el.setAttribute(k, val === true ? "" : val); @@ -519,6 +523,7 @@ export { when, watch, router, + onUnmount, mount, h, each, diff --git a/dist/sigpro.esm.min.js b/dist/sigpro.esm.min.js index babdc09..9ff93a3 100644 --- a/dist/sigpro.esm.min.js +++ b/dist/sigpro.esm.min.js @@ -1 +1 @@ -var w=(e)=>typeof e==="function",B=(e)=>e&&typeof e==="object",b=Array.isArray,E=typeof document<"u"?document:null,V=(e)=>e?._isRuntime?e.container:e instanceof Node?e:E.createTextNode(e==null?"":String(e)),u=null,_=null,N=!1,R=0,O=new Set,I=new WeakMap,j=Symbol("iter"),k=new WeakMap,W="http://www.w3.org/2000/svg",M="http://www.w3.org/1999/xlink",q=new Set("svg,path,circle,rect,line,polyline,polygon,g,defs,text,textPath,tspan,use,symbol,image,marker,ellipse".split(",")),S=(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((r)=>r()),n._cleanups.clear();if(n._children)n._children.forEach((r)=>o.push(r)),n._children.clear();if(n._deps)n._deps.forEach((r)=>r.delete(n)),n._deps.clear()}},v=(e)=>{if(_)(_._cleanups||=new Set).add(e)},K=(e)=>{let o=u;u=null;try{return e()}finally{u=o}},x=(e,o=!1)=>{let n=()=>{if(n._disposed)return;if(n._deps)n._deps.forEach((i)=>i.delete(n));if(n._cleanups)n._cleanups.forEach((i)=>i()),n._cleanups.clear();let r=u,s=_;u=_=n;try{return n._result=e()}catch(i){console.error("[SigPro]",i)}finally{u=r,_=s}};if(n._deps=n._cleanups=n._children=null,n._disposed=!1,n._isComputed=o,n._depth=u?u._depth+1:0,n._mounts=[],n._parent=_,_)(_._children||=new Set).add(n);return n},$=()=>{if(N)return;N=!0;let e=Array.from(O).sort((o,n)=>o._depth-n._depth);O.clear();for(let o of e)if(!o._disposed)o();N=!1},z=(e)=>{R++;try{return e()}finally{if(R--,R===0&&O.size>0&&!N)$()}},m=(e,o=!1)=>{if(!o&&u&&!u._disposed)e.add(u),(u._deps||=new Set).add(e);else if(o&&e.size>0){let n=!1;for(let r of e){if(r===u||r._disposed)continue;if(r._isComputed){if(r._dirty=!0,r._subs)m(r._subs,!0)}else O.add(r),n=!0}if(n&&!N&&R===0)queueMicrotask($)}},P=(e,o=null)=>{let n=new Set;if(w(e)){let r,s=()=>{if(s._dirty){let i=u;u=s;try{let t=e();if(!Object.is(r,t))r=t,m(n,!0)}finally{u=i}s._dirty=!1}return m(n),r};return s._isComputed=!0,s._subs=n,s._dirty=!0,s._deps=null,s._disposed=!1,s}if(o)try{e=JSON.parse(localStorage.getItem(o))??e}catch(r){}return(...r)=>{if(r.length){let s=w(r[0])?r[0](e):r[0];if(!Object.is(e,s)){if(e=s,o)localStorage.setItem(o,JSON.stringify(e));m(n,!0)}}return m(n),e}},D=(e)=>{if(!B(e))return e;let o=I.get(e);if(o)return o;let n=new Map,r=(i)=>{let t=n.get(i);if(!t)n.set(i,t=new Set);return t},s=new Proxy(e,{get(i,t,c){if(typeof t!=="symbol")m(r(t));return D(Reflect.get(i,t,c))},set(i,t,c,l){let a=Reflect.has(i,t),f=Reflect.get(i,t,l),d=Reflect.set(i,t,c,l);if(d&&!Object.is(f,c)){if(m(r(t),!0),!a)m(r(j),!0)}return d},deleteProperty(i,t){let c=Reflect.deleteProperty(i,t);if(c)m(r(t),!0),m(r(j),!0);return c},ownKeys(i){return m(r(j)),Reflect.ownKeys(i)}});return I.set(e,s),s},T=(e,o)=>{if(o===void 0){let r=x(e);return r(),()=>S(r)}let n=x(()=>{let r=Array.isArray(e)?e.map((s)=>s()):e();K(()=>o(r))});return n(),()=>S(n)},U=(e)=>{if(!e)return;if(e._cleanups)e._cleanups.forEach((o)=>o()),e._cleanups.clear();if(e._ownerEffect)S(e._ownerEffect);if(e.childNodes)e.childNodes.forEach((o)=>U(o))},J=/^\s*(javascript|data|vbscript):/i,Q=new Set(["src","href","formaction","action","background","code","archive"]),X=(e)=>Q.has(e)||e.startsWith("on"),L=(e,o)=>{if(o==null||o===!1)return null;if(X(e)){let n=String(o);if(J.test(n))return console.warn(`[SigPro] Bloqueado protocolo peligroso en ${e}`),"#"}return o},A=(e,o={},n=[])=>{if(o instanceof Node||b(o)||!B(o))n=o,o={};if(w(e)){let t=x(()=>{let f=e(o,{children:n,emit:(d,...h)=>o[`on${d[0].toUpperCase()}${d.slice(1)}`]?.(...h)});return t._result=f,f});t();let c=t._result;if(c==null)return null;let l=c instanceof Node||b(c)&&c.every((f)=>f instanceof Node)?c:E.createTextNode(String(c)),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 r=q.has(e),s=r?E.createElementNS(W,e):E.createElement(e);s._cleanups=new Set;for(let t of Object.keys(o)){let c=o[t];if(t==="ref"){w(c)?c(s):c.current=s;continue}if(r&&t.startsWith("xlink:")){let l=L(t.slice(6),c);l==null?s.removeAttributeNS(M,t.slice(6)):s.setAttributeNS(M,t.slice(6),l);continue}if(t.startsWith("on")){let l=t.slice(2).toLowerCase();s.addEventListener(l,c);let a=()=>s.removeEventListener(l,c);s._cleanups.add(a),v(a)}else if(w(c)){let l=x(()=>{let a=L(t,c());if(t==="class")s.className=a||"";else if(a==null)s.removeAttribute(t);else if(t in s&&!r)s[t]=a;else s.setAttribute(t,a===!0?"":a)});if(l(),s._cleanups.add(()=>S(l)),v(()=>S(l)),/^(INPUT|TEXTAREA|SELECT)$/.test(s.tagName)&&(t==="value"||t==="checked")){let a=t==="checked"?"change":"input";s.addEventListener(a,(f)=>c(f.target[t]))}}else{let l=L(t,c);if(l!=null)if(t in s&&!r)s[t]=l;else s.setAttribute(t,l===!0?"":l)}}let i=(t)=>{if(b(t))return t.forEach(i);if(w(t)){let c=E.createTextNode("");s.appendChild(c);let l=[],a=x(()=>{let f=t(),d=(b(f)?f:[f]).map(V);l.forEach((p)=>{if(p._isRuntime)p.destroy();else U(p);if(p.parentNode)p.remove()});let h=c;for(let p=d.length-1;p>=0;p--){let y=d[p];if(y.parentNode!==h.parentNode)h.parentNode?.insertBefore(y,h);if(y._mounts)y._mounts.forEach((G)=>G());h=y}l=d});a(),s._cleanups.add(()=>S(a)),v(()=>S(a))}else{let c=V(t);if(s.appendChild(c),c._mounts)c._mounts.forEach((l)=>l())}};return i(n),s},C=(e)=>{let o=new Set,n=_,r=u,s=E.createElement("div");s.style.display="contents",s.setAttribute("role","presentation"),_={_cleanups:o},u=null;let i=(t)=>{if(!t)return;if(t._isRuntime)o.add(t.destroy),s.appendChild(t.container);else if(b(t))t.forEach(i);else s.appendChild(t instanceof Node?t:E.createTextNode(String(t==null?"":t)))};try{i(e({onCleanup:(t)=>o.add(t)}))}finally{_=n,u=r}return{_isRuntime:!0,container:s,destroy:()=>{o.forEach((t)=>t()),U(s),s.remove()}}},F=(e,o,n=null)=>{let r=E.createTextNode(""),s=A("div",{style:"display:contents"},[r]),i=null;return T(()=>!!(w(e)?e():e),(t)=>{if(i)i.destroy(),i=null;let c=t?o:n;if(c)i=C(()=>w(c)?c():c),s.insertBefore(i.container,r)}),v(()=>i?.destroy()),s},H=(e,o,n)=>{let r=E.createTextNode(""),s=A("div",{style:"display:contents"},[r]),i=new Map;return T(()=>(w(e)?e():e)||[],(t)=>{let c=new Map,l=[],a=t||[];for(let d=0;do(h,d));else i.delete(p);c.set(p,y),l.push(y)}i.forEach((d)=>d.destroy());let f=r;for(let d=l.length-1;d>=0;d--){let p=l[d].container;if(p.nextSibling!==f)s.insertBefore(p,f);f=p}i=c}),s},g=(e)=>{let o=()=>window.location.hash.slice(1)||"/",n=P(o()),r=()=>n(o());window.addEventListener("hashchange",r),v(()=>window.removeEventListener("hashchange",r));let s=A("div",{class:"router-hook"}),i=null;return T([n],()=>{let t=n(),c=e.find((l)=>{let a=l.path.split("/").filter(Boolean),f=t.split("/").filter(Boolean);return a.length===f.length&&a.every((d,h)=>d[0]===":"||d===f[h])})||e.find((l)=>l.path==="*");if(c){i?.destroy();let l={};c.path.split("/").filter(Boolean).forEach((a,f)=>{if(a[0]===":")l[a.slice(1)]=t.split("/").filter(Boolean)[f]}),g.params(l),i=C(()=>w(c.component)?c.component(l):c.component),s.replaceChildren(i.container)}}),s};g.params=P({});g.to=(e)=>window.location.hash=e.replace(/^#?\/?/,"#/");g.back=()=>window.history.back();g.path=()=>window.location.hash.replace(/^#/,"")||"/";var Y=(e,o)=>{let n=typeof o==="string"?E.querySelector(o):o;if(!n)return;if(k.has(n))k.get(n).destroy();let r=C(w(e)?e:()=>e);return n.replaceChildren(r.container),k.set(n,r),r};if(typeof window<"u")Object.assign(window,{$:P,$$:D,watch:T,h:A,when:F,each:H,router:g,mount:Y,batch:z}),"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)=>A(e,o,n)});export{F as when,T as watch,g as router,Y as mount,A as h,H as each,z as batch,D as $$,P as $}; +var w=(e)=>typeof e==="function",B=(e)=>e&&typeof e==="object",g=Array.isArray,E=typeof document<"u"?document:null,V=(e)=>e?._isRuntime?e.container:e instanceof Node?e:E.createTextNode(e==null?"":String(e)),d=null,_=null,N=!1,R=0,O=new Set,I=new WeakMap,j=Symbol("iter"),k=new WeakMap,W="http://www.w3.org/2000/svg",M="http://www.w3.org/1999/xlink",q=new Set("svg,path,circle,rect,line,polyline,polygon,g,defs,text,textPath,tspan,use,symbol,image,marker,ellipse".split(",")),b=(e)=>{if(!e||e._disposed)return;e._disposed=!0;let s=[e];while(s.length){let n=s.pop();if(n._cleanups)n._cleanups.forEach((r)=>r()),n._cleanups.clear();if(n._children)n._children.forEach((r)=>s.push(r)),n._children.clear();if(n._deps)n._deps.forEach((r)=>r.delete(n)),n._deps.clear()}},v=(e)=>{if(_)(_._cleanups||=new Set).add(e)},K=(e)=>{let s=d;d=null;try{return e()}finally{d=s}},x=(e,s=!1)=>{let n=()=>{if(n._disposed)return;if(n._deps)n._deps.forEach((i)=>i.delete(n));if(n._cleanups)n._cleanups.forEach((i)=>i()),n._cleanups.clear();let r=d,o=_;d=_=n;try{return n._result=e()}catch(i){console.error("[SigPro]",i)}finally{d=r,_=o}};if(n._deps=n._cleanups=n._children=null,n._disposed=!1,n._isComputed=s,n._depth=d?d._depth+1:0,n._mounts=[],n._parent=_,_)(_._children||=new Set).add(n);return n},$=()=>{if(N)return;N=!0;let e=Array.from(O).sort((s,n)=>s._depth-n._depth);O.clear();for(let s of e)if(!s._disposed)s();N=!1},z=(e)=>{R++;try{return e()}finally{if(R--,R===0&&O.size>0&&!N)$()}},m=(e,s=!1)=>{if(!s&&d&&!d._disposed)e.add(d),(d._deps||=new Set).add(e);else if(s&&e.size>0){let n=!1;for(let r of e){if(r===d||r._disposed)continue;if(r._isComputed){if(r._dirty=!0,r._subs)m(r._subs,!0)}else O.add(r),n=!0}if(n&&!N&&R===0)queueMicrotask($)}},P=(e,s=null)=>{let n=new Set;if(w(e)){let r,o=()=>{if(o._dirty){let i=d;d=o;try{let t=e();if(!Object.is(r,t))r=t,m(n,!0)}finally{d=i}o._dirty=!1}return m(n),r};return o._isComputed=!0,o._subs=n,o._dirty=!0,o._deps=null,o._disposed=!1,o}if(s)try{e=JSON.parse(localStorage.getItem(s))??e}catch(r){}return(...r)=>{if(r.length){let o=w(r[0])?r[0](e):r[0];if(!Object.is(e,o)){if(e=o,s)localStorage.setItem(s,JSON.stringify(e));m(n,!0)}}return m(n),e}},D=(e)=>{if(!B(e))return e;let s=I.get(e);if(s)return s;let n=new Map,r=(i)=>{let t=n.get(i);if(!t)n.set(i,t=new Set);return t},o=new Proxy(e,{get(i,t,c){if(typeof t!=="symbol")m(r(t));return D(Reflect.get(i,t,c))},set(i,t,c,l){let a=Reflect.has(i,t),f=Reflect.get(i,t,l),u=Reflect.set(i,t,c,l);if(u&&!Object.is(f,c)){if(m(r(t),!0),!a)m(r(j),!0)}return u},deleteProperty(i,t){let c=Reflect.deleteProperty(i,t);if(c)m(r(t),!0),m(r(j),!0);return c},ownKeys(i){return m(r(j)),Reflect.ownKeys(i)}});return I.set(e,o),o},T=(e,s)=>{if(s===void 0){let r=x(e);return r(),()=>b(r)}let n=x(()=>{let r=Array.isArray(e)?e.map((o)=>o()):e();K(()=>s(r))});return n(),()=>b(n)},U=(e)=>{if(!e)return;if(e._cleanups)e._cleanups.forEach((s)=>s()),e._cleanups.clear();if(e._ownerEffect)b(e._ownerEffect);if(e.childNodes)e.childNodes.forEach((s)=>U(s))},J=/^\s*(javascript|data|vbscript):/i,Q=new Set(["src","href","formaction","action","background","code","archive"]),X=(e)=>Q.has(e)||e.startsWith("on"),L=(e,s)=>{if(s==null||s===!1)return null;if(X(e)){let n=String(s);if(J.test(n))return console.warn(`[SigPro] Bloqueado protocolo peligroso en ${e}`),"#"}return s},A=(e,s={},n=[])=>{if(s instanceof Node||g(s)||!B(s))n=s,s={};if(w(e)){let t=x(()=>{let f=e(s,{children:n,emit:(u,...h)=>s[`on${u[0].toUpperCase()}${u.slice(1)}`]?.(...h)});return t._result=f,f});t();let c=t._result;if(c==null)return null;let l=c instanceof Node||g(c)&&c.every((f)=>f instanceof Node)?c:E.createTextNode(String(c)),a=(f)=>{if(B(f)&&!f._isRuntime)f._mounts=t._mounts||[],f._cleanups=t._cleanups||new Set,f._ownerEffect=t};return g(l)?l.forEach(a):a(l),l}let r=q.has(e),o=r?E.createElementNS(W,e):E.createElement(e);o._cleanups=new Set;for(let t of Object.keys(s)){let c=s[t];if(t==="ref"){w(c)?c(o):c.current=o;continue}if(r&&t.startsWith("xlink:")){let l=L(t.slice(6),c);l==null?o.removeAttributeNS(M,t.slice(6)):o.setAttributeNS(M,t.slice(6),l);continue}if(t.startsWith("on")){let l=t.slice(2).toLowerCase();o.addEventListener(l,c);let a=()=>o.removeEventListener(l,c);o._cleanups.add(a),v(a)}else if(w(c)){let l=x(()=>{let a=L(t,c());if(t==="class")o.className=a||"";else if(a==null)o.removeAttribute(t);else if(t==="style"&&typeof a==="string")o.setAttribute("style",a);else if(t in o&&!r)o[t]=a;else o.setAttribute(t,a===!0?"":a)});if(l(),o._cleanups.add(()=>b(l)),v(()=>b(l)),/^(INPUT|TEXTAREA|SELECT)$/.test(o.tagName)&&(t==="value"||t==="checked")){let a=t==="checked"?"change":"input";o.addEventListener(a,(f)=>c(f.target[t]))}}else{let l=L(t,c);if(l!=null)if(t==="style"&&typeof l==="string")o.setAttribute("style",l);else if(t in o&&!r)o[t]=l;else o.setAttribute(t,l===!0?"":l)}}let i=(t)=>{if(g(t))return t.forEach(i);if(w(t)){let c=E.createTextNode("");o.appendChild(c);let l=[],a=x(()=>{let f=t(),u=(g(f)?f:[f]).map(V);l.forEach((p)=>{if(p._isRuntime)p.destroy();else U(p);if(p.parentNode)p.remove()});let h=c;for(let p=u.length-1;p>=0;p--){let y=u[p];if(y.parentNode!==h.parentNode)h.parentNode?.insertBefore(y,h);if(y._mounts)y._mounts.forEach((G)=>G());h=y}l=u});a(),o._cleanups.add(()=>b(a)),v(()=>b(a))}else{let c=V(t);if(o.appendChild(c),c._mounts)c._mounts.forEach((l)=>l())}};return i(n),o},C=(e)=>{let s=new Set,n=_,r=d,o=E.createElement("div");o.style.display="contents",o.setAttribute("role","presentation"),_={_cleanups:s},d=null;let i=(t)=>{if(!t)return;if(t._isRuntime)s.add(t.destroy),o.appendChild(t.container);else if(g(t))t.forEach(i);else o.appendChild(t instanceof Node?t:E.createTextNode(String(t==null?"":t)))};try{i(e({onCleanup:(t)=>s.add(t)}))}finally{_=n,d=r}return{_isRuntime:!0,container:o,destroy:()=>{s.forEach((t)=>t()),U(o),o.remove()}}},F=(e,s,n=null)=>{let r=E.createTextNode(""),o=A("div",{style:"display:contents"},[r]),i=null;return T(()=>!!(w(e)?e():e),(t)=>{if(i)i.destroy(),i=null;let c=t?s:n;if(c)i=C(()=>w(c)?c():c),o.insertBefore(i.container,r)}),v(()=>i?.destroy()),o},H=(e,s,n)=>{let r=E.createTextNode(""),o=A("div",{style:"display:contents"},[r]),i=new Map;return T(()=>(w(e)?e():e)||[],(t)=>{let c=new Map,l=[],a=t||[];for(let u=0;us(h,u));else i.delete(p);c.set(p,y),l.push(y)}i.forEach((u)=>u.destroy());let f=r;for(let u=l.length-1;u>=0;u--){let p=l[u].container;if(p.nextSibling!==f)o.insertBefore(p,f);f=p}i=c}),o},S=(e)=>{let s=()=>window.location.hash.slice(1)||"/",n=P(s()),r=()=>n(s());window.addEventListener("hashchange",r),v(()=>window.removeEventListener("hashchange",r));let o=A("div",{class:"router-hook"}),i=null;return T([n],()=>{let t=n(),c=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(c){i?.destroy();let l={};c.path.split("/").filter(Boolean).forEach((a,f)=>{if(a[0]===":")l[a.slice(1)]=t.split("/").filter(Boolean)[f]}),S.params(l),i=C(()=>w(c.component)?c.component(l):c.component),o.replaceChildren(i.container)}}),o};S.params=P({});S.to=(e)=>window.location.hash=e.replace(/^#?\/?/,"#/");S.back=()=>window.history.back();S.path=()=>window.location.hash.replace(/^#/,"")||"/";var Y=(e,s)=>{let n=typeof s==="string"?E.querySelector(s):s;if(!n)return;if(k.has(n))k.get(n).destroy();let r=C(w(e)?e:()=>e);return n.replaceChildren(r.container),k.set(n,r),r};if(typeof window<"u")Object.assign(window,{$:P,$$:D,watch:T,h:A,when:F,each:H,router:S,mount:Y,batch:z}),"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,n)=>A(e,s,n)});export{F as when,T as watch,S as router,v as onUnmount,Y as mount,A as h,H as each,z as batch,D as $$,P as $}; diff --git a/dist/sigpro.js b/dist/sigpro.js index b509278..626417f 100644 --- a/dist/sigpro.js +++ b/dist/sigpro.js @@ -43,6 +43,7 @@ when: () => when, watch: () => watch, router: () => router, + onUnmount: () => onUnmount, mount: () => mount, h: () => h, each: () => each, @@ -367,6 +368,8 @@ el.className = val || ""; else if (val == null) el.removeAttribute(k); + else if (k === "style" && typeof val === "string") + el.setAttribute("style", val); else if (k in el && !isSVG) el[k] = val; else @@ -382,7 +385,9 @@ } else { const val = validateAttr(k, v); if (val != null) { - if (k in el && !isSVG) + if (k === "style" && typeof val === "string") + el.setAttribute("style", val); + else if (k in el && !isSVG) el[k] = val; else el.setAttribute(k, val === true ? "" : val); diff --git a/dist/sigpro.min.js b/dist/sigpro.min.js index 31d5906..e3590a5 100644 --- a/dist/sigpro.min.js +++ b/dist/sigpro.min.js @@ -1 +1 @@ -(()=>{var{defineProperty:k,getOwnPropertyNames:X,getOwnPropertyDescriptor:F}=Object,H=Object.prototype.hasOwnProperty;function Y(e){return this[e]}var Z=(e)=>{var n=(M??=new WeakMap).get(e),t;if(n)return n;if(n=k({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function"){for(var s of X(e))if(!H.call(n,s))k(n,s,{get:Y.bind(e,s),enumerable:!(t=F(e,s))||t.enumerable})}return M.set(e,n),n},M;var ee=(e)=>e;function te(e,n){this[e]=ee.bind(null,n)}var ne=(e,n)=>{for(var t in n)k(e,t,{get:n[t],enumerable:!0,configurable:!0,set:te.bind(n,t)})};var ae={};ne(ae,{when:()=>K,watch:()=>R,router:()=>b,mount:()=>J,h:()=>N,each:()=>z,batch:()=>q,$$:()=>V,$:()=>C});var w=(e)=>typeof e==="function",U=(e)=>e&&typeof e==="object",g=Array.isArray,E=typeof document<"u"?document:null,$=(e)=>e?._isRuntime?e.container:e instanceof Node?e:E.createTextNode(e==null?"":String(e)),u=null,_=null,v=!1,O=0,T=new Set,D=new WeakMap,L=Symbol("iter"),B=new WeakMap,oe="http://www.w3.org/2000/svg",G="http://www.w3.org/1999/xlink",se=new Set("svg,path,circle,rect,line,polyline,polygon,g,defs,text,textPath,tspan,use,symbol,image,marker,ellipse".split(",")),S=(e)=>{if(!e||e._disposed)return;e._disposed=!0;let n=[e];while(n.length){let t=n.pop();if(t._cleanups)t._cleanups.forEach((s)=>s()),t._cleanups.clear();if(t._children)t._children.forEach((s)=>n.push(s)),t._children.clear();if(t._deps)t._deps.forEach((s)=>s.delete(t)),t._deps.clear()}},x=(e)=>{if(_)(_._cleanups||=new Set).add(e)},re=(e)=>{let n=u;u=null;try{return e()}finally{u=n}},A=(e,n=!1)=>{let t=()=>{if(t._disposed)return;if(t._deps)t._deps.forEach((i)=>i.delete(t));if(t._cleanups)t._cleanups.forEach((i)=>i()),t._cleanups.clear();let s=u,r=_;u=_=t;try{return t._result=e()}catch(i){console.error("[SigPro]",i)}finally{u=s,_=r}};if(t._deps=t._cleanups=t._children=null,t._disposed=!1,t._isComputed=n,t._depth=u?u._depth+1:0,t._mounts=[],t._parent=_,_)(_._children||=new Set).add(t);return t},W=()=>{if(v)return;v=!0;let e=Array.from(T).sort((n,t)=>n._depth-t._depth);T.clear();for(let n of e)if(!n._disposed)n();v=!1},q=(e)=>{O++;try{return e()}finally{if(O--,O===0&&T.size>0&&!v)W()}},m=(e,n=!1)=>{if(!n&&u&&!u._disposed)e.add(u),(u._deps||=new Set).add(e);else if(n&&e.size>0){let t=!1;for(let s of e){if(s===u||s._disposed)continue;if(s._isComputed){if(s._dirty=!0,s._subs)m(s._subs,!0)}else T.add(s),t=!0}if(t&&!v&&O===0)queueMicrotask(W)}},C=(e,n=null)=>{let t=new Set;if(w(e)){let s,r=()=>{if(r._dirty){let i=u;u=r;try{let o=e();if(!Object.is(s,o))s=o,m(t,!0)}finally{u=i}r._dirty=!1}return m(t),s};return r._isComputed=!0,r._subs=t,r._dirty=!0,r._deps=null,r._disposed=!1,r}if(n)try{e=JSON.parse(localStorage.getItem(n))??e}catch(s){}return(...s)=>{if(s.length){let r=w(s[0])?s[0](e):s[0];if(!Object.is(e,r)){if(e=r,n)localStorage.setItem(n,JSON.stringify(e));m(t,!0)}}return m(t),e}},V=(e)=>{if(!U(e))return e;let n=D.get(e);if(n)return n;let t=new Map,s=(i)=>{let o=t.get(i);if(!o)t.set(i,o=new Set);return o},r=new Proxy(e,{get(i,o,c){if(typeof o!=="symbol")m(s(o));return V(Reflect.get(i,o,c))},set(i,o,c,l){let a=Reflect.has(i,o),f=Reflect.get(i,o,l),d=Reflect.set(i,o,c,l);if(d&&!Object.is(f,c)){if(m(s(o),!0),!a)m(s(L),!0)}return d},deleteProperty(i,o){let c=Reflect.deleteProperty(i,o);if(c)m(s(o),!0),m(s(L),!0);return c},ownKeys(i){return m(s(L)),Reflect.ownKeys(i)}});return D.set(e,r),r},R=(e,n)=>{if(n===void 0){let s=A(e);return s(),()=>S(s)}let t=A(()=>{let s=Array.isArray(e)?e.map((r)=>r()):e();re(()=>n(s))});return t(),()=>S(t)},I=(e)=>{if(!e)return;if(e._cleanups)e._cleanups.forEach((n)=>n()),e._cleanups.clear();if(e._ownerEffect)S(e._ownerEffect);if(e.childNodes)e.childNodes.forEach((n)=>I(n))},ce=/^\s*(javascript|data|vbscript):/i,ie=new Set(["src","href","formaction","action","background","code","archive"]),le=(e)=>ie.has(e)||e.startsWith("on"),P=(e,n)=>{if(n==null||n===!1)return null;if(le(e)){let t=String(n);if(ce.test(t))return console.warn(`[SigPro] Bloqueado protocolo peligroso en ${e}`),"#"}return n},N=(e,n={},t=[])=>{if(n instanceof Node||g(n)||!U(n))t=n,n={};if(w(e)){let o=A(()=>{let f=e(n,{children:t,emit:(d,...h)=>n[`on${d[0].toUpperCase()}${d.slice(1)}`]?.(...h)});return o._result=f,f});o();let c=o._result;if(c==null)return null;let l=c instanceof Node||g(c)&&c.every((f)=>f instanceof Node)?c:E.createTextNode(String(c)),a=(f)=>{if(U(f)&&!f._isRuntime)f._mounts=o._mounts||[],f._cleanups=o._cleanups||new Set,f._ownerEffect=o};return g(l)?l.forEach(a):a(l),l}let s=se.has(e),r=s?E.createElementNS(oe,e):E.createElement(e);r._cleanups=new Set;for(let o of Object.keys(n)){let c=n[o];if(o==="ref"){w(c)?c(r):c.current=r;continue}if(s&&o.startsWith("xlink:")){let l=P(o.slice(6),c);l==null?r.removeAttributeNS(G,o.slice(6)):r.setAttributeNS(G,o.slice(6),l);continue}if(o.startsWith("on")){let l=o.slice(2).toLowerCase();r.addEventListener(l,c);let a=()=>r.removeEventListener(l,c);r._cleanups.add(a),x(a)}else if(w(c)){let l=A(()=>{let a=P(o,c());if(o==="class")r.className=a||"";else if(a==null)r.removeAttribute(o);else if(o in r&&!s)r[o]=a;else r.setAttribute(o,a===!0?"":a)});if(l(),r._cleanups.add(()=>S(l)),x(()=>S(l)),/^(INPUT|TEXTAREA|SELECT)$/.test(r.tagName)&&(o==="value"||o==="checked")){let a=o==="checked"?"change":"input";r.addEventListener(a,(f)=>c(f.target[o]))}}else{let l=P(o,c);if(l!=null)if(o in r&&!s)r[o]=l;else r.setAttribute(o,l===!0?"":l)}}let i=(o)=>{if(g(o))return o.forEach(i);if(w(o)){let c=E.createTextNode("");r.appendChild(c);let l=[],a=A(()=>{let f=o(),d=(g(f)?f:[f]).map($);l.forEach((p)=>{if(p._isRuntime)p.destroy();else I(p);if(p.parentNode)p.remove()});let h=c;for(let p=d.length-1;p>=0;p--){let y=d[p];if(y.parentNode!==h.parentNode)h.parentNode?.insertBefore(y,h);if(y._mounts)y._mounts.forEach((Q)=>Q());h=y}l=d});a(),r._cleanups.add(()=>S(a)),x(()=>S(a))}else{let c=$(o);if(r.appendChild(c),c._mounts)c._mounts.forEach((l)=>l())}};return i(t),r},j=(e)=>{let n=new Set,t=_,s=u,r=E.createElement("div");r.style.display="contents",r.setAttribute("role","presentation"),_={_cleanups:n},u=null;let i=(o)=>{if(!o)return;if(o._isRuntime)n.add(o.destroy),r.appendChild(o.container);else if(g(o))o.forEach(i);else r.appendChild(o instanceof Node?o:E.createTextNode(String(o==null?"":o)))};try{i(e({onCleanup:(o)=>n.add(o)}))}finally{_=t,u=s}return{_isRuntime:!0,container:r,destroy:()=>{n.forEach((o)=>o()),I(r),r.remove()}}},K=(e,n,t=null)=>{let s=E.createTextNode(""),r=N("div",{style:"display:contents"},[s]),i=null;return R(()=>!!(w(e)?e():e),(o)=>{if(i)i.destroy(),i=null;let c=o?n:t;if(c)i=j(()=>w(c)?c():c),r.insertBefore(i.container,s)}),x(()=>i?.destroy()),r},z=(e,n,t)=>{let s=E.createTextNode(""),r=N("div",{style:"display:contents"},[s]),i=new Map;return R(()=>(w(e)?e():e)||[],(o)=>{let c=new Map,l=[],a=o||[];for(let d=0;dn(h,d));else i.delete(p);c.set(p,y),l.push(y)}i.forEach((d)=>d.destroy());let f=s;for(let d=l.length-1;d>=0;d--){let p=l[d].container;if(p.nextSibling!==f)r.insertBefore(p,f);f=p}i=c}),r},b=(e)=>{let n=()=>window.location.hash.slice(1)||"/",t=C(n()),s=()=>t(n());window.addEventListener("hashchange",s),x(()=>window.removeEventListener("hashchange",s));let r=N("div",{class:"router-hook"}),i=null;return R([t],()=>{let o=t(),c=e.find((l)=>{let a=l.path.split("/").filter(Boolean),f=o.split("/").filter(Boolean);return a.length===f.length&&a.every((d,h)=>d[0]===":"||d===f[h])})||e.find((l)=>l.path==="*");if(c){i?.destroy();let l={};c.path.split("/").filter(Boolean).forEach((a,f)=>{if(a[0]===":")l[a.slice(1)]=o.split("/").filter(Boolean)[f]}),b.params(l),i=j(()=>w(c.component)?c.component(l):c.component),r.replaceChildren(i.container)}}),r};b.params=C({});b.to=(e)=>window.location.hash=e.replace(/^#?\/?/,"#/");b.back=()=>window.history.back();b.path=()=>window.location.hash.replace(/^#/,"")||"/";var J=(e,n)=>{let t=typeof n==="string"?E.querySelector(n):n;if(!t)return;if(B.has(t))B.get(t).destroy();let s=j(w(e)?e:()=>e);return t.replaceChildren(s.container),B.set(t,s),s};if(typeof window<"u")Object.assign(window,{$:C,$$:V,watch:R,h:N,when:K,each:z,router:b,mount:J,batch:q}),"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]=(n,t)=>N(e,n,t)});})(); +(()=>{var{defineProperty:k,getOwnPropertyNames:X,getOwnPropertyDescriptor:F}=Object,H=Object.prototype.hasOwnProperty;function Y(e){return this[e]}var Z=(e)=>{var s=(M??=new WeakMap).get(e),t;if(s)return s;if(s=k({},"__esModule",{value:!0}),e&&typeof e==="object"||typeof e==="function"){for(var o of X(e))if(!H.call(s,o))k(s,o,{get:Y.bind(e,o),enumerable:!(t=F(e,o))||t.enumerable})}return M.set(e,s),s},M;var ee=(e)=>e;function te(e,s){this[e]=ee.bind(null,s)}var ne=(e,s)=>{for(var t in s)k(e,t,{get:s[t],enumerable:!0,configurable:!0,set:te.bind(s,t)})};var ae={};ne(ae,{when:()=>K,watch:()=>R,router:()=>g,onUnmount:()=>N,mount:()=>J,h:()=>v,each:()=>z,batch:()=>q,$$:()=>V,$:()=>C});var w=(e)=>typeof e==="function",U=(e)=>e&&typeof e==="object",S=Array.isArray,E=typeof document<"u"?document:null,$=(e)=>e?._isRuntime?e.container:e instanceof Node?e:E.createTextNode(e==null?"":String(e)),d=null,_=null,x=!1,O=0,T=new Set,D=new WeakMap,L=Symbol("iter"),B=new WeakMap,se="http://www.w3.org/2000/svg",G="http://www.w3.org/1999/xlink",oe=new Set("svg,path,circle,rect,line,polyline,polygon,g,defs,text,textPath,tspan,use,symbol,image,marker,ellipse".split(",")),b=(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((o)=>o()),t._cleanups.clear();if(t._children)t._children.forEach((o)=>s.push(o)),t._children.clear();if(t._deps)t._deps.forEach((o)=>o.delete(t)),t._deps.clear()}},N=(e)=>{if(_)(_._cleanups||=new Set).add(e)},re=(e)=>{let s=d;d=null;try{return e()}finally{d=s}},A=(e,s=!1)=>{let t=()=>{if(t._disposed)return;if(t._deps)t._deps.forEach((i)=>i.delete(t));if(t._cleanups)t._cleanups.forEach((i)=>i()),t._cleanups.clear();let o=d,r=_;d=_=t;try{return t._result=e()}catch(i){console.error("[SigPro]",i)}finally{d=o,_=r}};if(t._deps=t._cleanups=t._children=null,t._disposed=!1,t._isComputed=s,t._depth=d?d._depth+1:0,t._mounts=[],t._parent=_,_)(_._children||=new Set).add(t);return t},W=()=>{if(x)return;x=!0;let e=Array.from(T).sort((s,t)=>s._depth-t._depth);T.clear();for(let s of e)if(!s._disposed)s();x=!1},q=(e)=>{O++;try{return e()}finally{if(O--,O===0&&T.size>0&&!x)W()}},m=(e,s=!1)=>{if(!s&&d&&!d._disposed)e.add(d),(d._deps||=new Set).add(e);else if(s&&e.size>0){let t=!1;for(let o of e){if(o===d||o._disposed)continue;if(o._isComputed){if(o._dirty=!0,o._subs)m(o._subs,!0)}else T.add(o),t=!0}if(t&&!x&&O===0)queueMicrotask(W)}},C=(e,s=null)=>{let t=new Set;if(w(e)){let o,r=()=>{if(r._dirty){let i=d;d=r;try{let n=e();if(!Object.is(o,n))o=n,m(t,!0)}finally{d=i}r._dirty=!1}return m(t),o};return r._isComputed=!0,r._subs=t,r._dirty=!0,r._deps=null,r._disposed=!1,r}if(s)try{e=JSON.parse(localStorage.getItem(s))??e}catch(o){}return(...o)=>{if(o.length){let r=w(o[0])?o[0](e):o[0];if(!Object.is(e,r)){if(e=r,s)localStorage.setItem(s,JSON.stringify(e));m(t,!0)}}return m(t),e}},V=(e)=>{if(!U(e))return e;let s=D.get(e);if(s)return s;let t=new Map,o=(i)=>{let n=t.get(i);if(!n)t.set(i,n=new Set);return n},r=new Proxy(e,{get(i,n,c){if(typeof n!=="symbol")m(o(n));return V(Reflect.get(i,n,c))},set(i,n,c,l){let a=Reflect.has(i,n),f=Reflect.get(i,n,l),u=Reflect.set(i,n,c,l);if(u&&!Object.is(f,c)){if(m(o(n),!0),!a)m(o(L),!0)}return u},deleteProperty(i,n){let c=Reflect.deleteProperty(i,n);if(c)m(o(n),!0),m(o(L),!0);return c},ownKeys(i){return m(o(L)),Reflect.ownKeys(i)}});return D.set(e,r),r},R=(e,s)=>{if(s===void 0){let o=A(e);return o(),()=>b(o)}let t=A(()=>{let o=Array.isArray(e)?e.map((r)=>r()):e();re(()=>s(o))});return t(),()=>b(t)},I=(e)=>{if(!e)return;if(e._cleanups)e._cleanups.forEach((s)=>s()),e._cleanups.clear();if(e._ownerEffect)b(e._ownerEffect);if(e.childNodes)e.childNodes.forEach((s)=>I(s))},ce=/^\s*(javascript|data|vbscript):/i,ie=new Set(["src","href","formaction","action","background","code","archive"]),le=(e)=>ie.has(e)||e.startsWith("on"),P=(e,s)=>{if(s==null||s===!1)return null;if(le(e)){let t=String(s);if(ce.test(t))return console.warn(`[SigPro] Bloqueado protocolo peligroso en ${e}`),"#"}return s},v=(e,s={},t=[])=>{if(s instanceof Node||S(s)||!U(s))t=s,s={};if(w(e)){let n=A(()=>{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 c=n._result;if(c==null)return null;let l=c instanceof Node||S(c)&&c.every((f)=>f instanceof Node)?c:E.createTextNode(String(c)),a=(f)=>{if(U(f)&&!f._isRuntime)f._mounts=n._mounts||[],f._cleanups=n._cleanups||new Set,f._ownerEffect=n};return S(l)?l.forEach(a):a(l),l}let o=oe.has(e),r=o?E.createElementNS(se,e):E.createElement(e);r._cleanups=new Set;for(let n of Object.keys(s)){let c=s[n];if(n==="ref"){w(c)?c(r):c.current=r;continue}if(o&&n.startsWith("xlink:")){let l=P(n.slice(6),c);l==null?r.removeAttributeNS(G,n.slice(6)):r.setAttributeNS(G,n.slice(6),l);continue}if(n.startsWith("on")){let l=n.slice(2).toLowerCase();r.addEventListener(l,c);let a=()=>r.removeEventListener(l,c);r._cleanups.add(a),N(a)}else if(w(c)){let l=A(()=>{let a=P(n,c());if(n==="class")r.className=a||"";else if(a==null)r.removeAttribute(n);else if(n==="style"&&typeof a==="string")r.setAttribute("style",a);else if(n in r&&!o)r[n]=a;else r.setAttribute(n,a===!0?"":a)});if(l(),r._cleanups.add(()=>b(l)),N(()=>b(l)),/^(INPUT|TEXTAREA|SELECT)$/.test(r.tagName)&&(n==="value"||n==="checked")){let a=n==="checked"?"change":"input";r.addEventListener(a,(f)=>c(f.target[n]))}}else{let l=P(n,c);if(l!=null)if(n==="style"&&typeof l==="string")r.setAttribute("style",l);else if(n in r&&!o)r[n]=l;else r.setAttribute(n,l===!0?"":l)}}let i=(n)=>{if(S(n))return n.forEach(i);if(w(n)){let c=E.createTextNode("");r.appendChild(c);let l=[],a=A(()=>{let f=n(),u=(S(f)?f:[f]).map($);l.forEach((p)=>{if(p._isRuntime)p.destroy();else I(p);if(p.parentNode)p.remove()});let h=c;for(let p=u.length-1;p>=0;p--){let y=u[p];if(y.parentNode!==h.parentNode)h.parentNode?.insertBefore(y,h);if(y._mounts)y._mounts.forEach((Q)=>Q());h=y}l=u});a(),r._cleanups.add(()=>b(a)),N(()=>b(a))}else{let c=$(n);if(r.appendChild(c),c._mounts)c._mounts.forEach((l)=>l())}};return i(t),r},j=(e)=>{let s=new Set,t=_,o=d,r=E.createElement("div");r.style.display="contents",r.setAttribute("role","presentation"),_={_cleanups:s},d=null;let i=(n)=>{if(!n)return;if(n._isRuntime)s.add(n.destroy),r.appendChild(n.container);else if(S(n))n.forEach(i);else r.appendChild(n instanceof Node?n:E.createTextNode(String(n==null?"":n)))};try{i(e({onCleanup:(n)=>s.add(n)}))}finally{_=t,d=o}return{_isRuntime:!0,container:r,destroy:()=>{s.forEach((n)=>n()),I(r),r.remove()}}},K=(e,s,t=null)=>{let o=E.createTextNode(""),r=v("div",{style:"display:contents"},[o]),i=null;return R(()=>!!(w(e)?e():e),(n)=>{if(i)i.destroy(),i=null;let c=n?s:t;if(c)i=j(()=>w(c)?c():c),r.insertBefore(i.container,o)}),N(()=>i?.destroy()),r},z=(e,s,t)=>{let o=E.createTextNode(""),r=v("div",{style:"display:contents"},[o]),i=new Map;return R(()=>(w(e)?e():e)||[],(n)=>{let c=new Map,l=[],a=n||[];for(let u=0;us(h,u));else i.delete(p);c.set(p,y),l.push(y)}i.forEach((u)=>u.destroy());let f=o;for(let u=l.length-1;u>=0;u--){let p=l[u].container;if(p.nextSibling!==f)r.insertBefore(p,f);f=p}i=c}),r},g=(e)=>{let s=()=>window.location.hash.slice(1)||"/",t=C(s()),o=()=>t(s());window.addEventListener("hashchange",o),N(()=>window.removeEventListener("hashchange",o));let r=v("div",{class:"router-hook"}),i=null;return R([t],()=>{let n=t(),c=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(c){i?.destroy();let l={};c.path.split("/").filter(Boolean).forEach((a,f)=>{if(a[0]===":")l[a.slice(1)]=n.split("/").filter(Boolean)[f]}),g.params(l),i=j(()=>w(c.component)?c.component(l):c.component),r.replaceChildren(i.container)}}),r};g.params=C({});g.to=(e)=>window.location.hash=e.replace(/^#?\/?/,"#/");g.back=()=>window.history.back();g.path=()=>window.location.hash.replace(/^#/,"")||"/";var J=(e,s)=>{let t=typeof s==="string"?E.querySelector(s):s;if(!t)return;if(B.has(t))B.get(t).destroy();let o=j(w(e)?e:()=>e);return t.replaceChildren(o.container),B.set(t,o),o};if(typeof window<"u")Object.assign(window,{$:C,$$:V,watch:R,h:v,when:K,each:z,router:g,mount:J,batch:q}),"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)=>v(e,s,t)});})(); diff --git a/docs/sigpro.js b/docs/sigpro.js index b509278..626417f 100644 --- a/docs/sigpro.js +++ b/docs/sigpro.js @@ -43,6 +43,7 @@ when: () => when, watch: () => watch, router: () => router, + onUnmount: () => onUnmount, mount: () => mount, h: () => h, each: () => each, @@ -367,6 +368,8 @@ el.className = val || ""; else if (val == null) el.removeAttribute(k); + else if (k === "style" && typeof val === "string") + el.setAttribute("style", val); else if (k in el && !isSVG) el[k] = val; else @@ -382,7 +385,9 @@ } else { const val = validateAttr(k, v); if (val != null) { - if (k in el && !isSVG) + if (k === "style" && typeof val === "string") + el.setAttribute("style", val); + else if (k in el && !isSVG) el[k] = val; else el.setAttribute(k, val === true ? "" : val); diff --git a/package.json b/package.json index 09fe9e6..b1c546a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sigpro", - "version": "1.2.25", + "version": "1.2.26", "type": "module", "license": "MIT", "main": "./dist/sigpro.esm.min.js", diff --git a/sigpro.js b/sigpro.js index b4e3dff..25db2ba 100644 --- a/sigpro.js +++ b/sigpro.js @@ -312,6 +312,7 @@ const h = (tag, props = {}, children = []) => { const val = validateAttr(k, v()) if (k === "class") el.className = val || "" else if (val == null) el.removeAttribute(k) + else if (k === "style" && typeof val === "string") el.setAttribute("style", val) else if (k in el && !isSVG) el[k] = val else el.setAttribute(k, val === true ? "" : val) }) @@ -325,7 +326,8 @@ const h = (tag, props = {}, children = []) => { } else { const val = validateAttr(k, v) if (val != null) { - if (k in el && !isSVG) el[k] = val + if (k === "style" && typeof val === "string") el.setAttribute("style", val) + else if (k in el && !isSVG) el[k] = val else el.setAttribute(k, val === true ? "" : val) } }