sigment 1.1.0 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- var D=Object.defineProperty;var l=(e,t)=>D(e,"name",{value:t,configurable:!0});var y={cleanHtml:G,cleanhtml:!0,setMaxCacheSize:J,maxCacheSize:10},g={funcname:[],dataMap:new Map},C=null,w={},M=new Map,v=new Map,x={innerHTMLElements:["div","p","span","h1","h2","h3","h4","h5","h6","a","ul","ol","li","table","tr","td","th","thead","tbody","tfoot","form","label","button","section","article","header","footer","nav","aside","main","figure","figcaption","blockquote","cite","code","pre","em","strong","i","b","u","s","small","mark","time","abbr","q","dl","dt","dd","fieldset","legend","textarea","output","progress","meter","fragment","details","summary","dialog","menu","slot","template"],valueElements:["input","textarea","select","button","option","progress","meter"],srcElements:["img","script","iframe","audio","video","source","track","embed","frame","input"],hrefElements:["a","link","area","base"],voidElements:["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr","frame"]};Object.values(x).flat().forEach(e=>{globalThis[e]=(...t)=>S(e,...t)});var P=new Set(x.valueElements),Y=new Set(x.srcElements),Q=new Set(x.hrefElements),I=new Set(x.voidElements);function X(e,t){w[e]||(w[e]=K(t))}l(X,"createGlobalSignal");function Z(e){return w[e]}l(Z,"getGlobalSignal");function R(e,t){g.dataMap.has(e)&&g.dataMap.delete(e),g.dataMap.set(e,t)}l(R,"addEntry");function E(e){A(E.name);let t=g.dataMap.get(e);return t?t.value:null}l(E,"gve");function ee(e,t,n){let o;if(t instanceof HTMLElement?o=t.outerHTML:typeof t=="object"?o=JSON.stringify(t):o=t.toString(),o.length>4096){console.error("Cookie size exceeds 4KB limit. Data not stored.");return}document.cookie=e+"="+o+"; max-age="+n+" ; path=/ ;",setTimeout(()=>{document.cookie="testCookie=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/;"},n*1e3)}l(ee,"setCookie");function te(e){let n=`; ${document.cookie}`.split(`; ${e}=`);if(n.length===2){let o=n.pop().split(";").shift();try{let i=JSON.parse(o);return typeof i=="object"&&i!==null&&"nodeType"in i&&i.nodeType===1,i}catch{return o}}return null}l(te,"getCookie");function ne(e,t){let n;t instanceof HTMLElement?n=t.outerHTML:typeof t=="object"?n=JSON.stringify(t):n=t.toString(),localStorage.setItem(e,n)}l(ne,"setStorage");function oe(e){let t=localStorage.getItem(e);if(t!==null)try{let n=JSON.parse(t);return typeof n=="object"&&n!==null&&"nodeType"in n&&n.nodeType===1,n}catch{return t}}l(oe,"getStorage");function L(e,t=void 0){A(L.name),g.createInstance=L.name;let n="";t===void 0?n=e():n=e(t)}l(L,"createInstance");function z(e,t){A(z.name),g.rpc=z.name;let n={};for(let[o,i]of Object.entries(t))e[o]?n[o]=e[o].apply(null,i):(console.error(`Function ${o} not found!`),n[o]=null);return n}l(z,"rpc");function H(e,t=!1,n){A(H.name),g.gvec=H.name;let o=Object.keys(e),i=o[0],c=o[1],r=o[2];var a=e[i];a=a.name;var p=e[c];let f=e[c];var h=E(c)===null;if(h||t===!1){var m=""+c;g.dataMap.delete(m),L(p,e[r])}p=E(c);var s=E(i);if(s===null)throw new Error(` source id '${i} is not found in source component `);if(p===null)throw new Error(` target id '${c} is not found in target component `);if(s.replaceWith(p),n!==void 0)for(let b in f){let O=b.toString();if(typeof n=="object"){for(var u in n)if(O===u){var d=n[u];typeof d=="object"?f[b].apply(null,d):f[b].apply(null,[])}}else if(n.indexOf(",">-1)){let j=n.split(",");for(let T=0;T<j.length;T++)O===j[T]&&f[b].apply(null,[])}else O===n&&f[b].apply(null,[])}}l(H,"gvec");async function re(e,t={}){let{passRestriction:n=[]}=t,o=window.location.pathname.replace(/^\/|\/$/g,"").toLowerCase(),i=e.replace(/^\/|\/$/g,"").toLowerCase();if(!new RegExp("^"+i.replace(/:[^\/]+/g,"[^/]+")+"$").test(o))return!1;let r=Array.isArray(n)?n:[n];for(let a of r)try{let p=typeof a=="function"?a():a;if(p instanceof Promise){if(!await p)return!1}else if(!p)return!1}catch(p){return console.error("Route check failed:",p),!1}return!0}l(re,"Route");function ie(e){return e==null||e===""}l(ie,"IsEmpty");function se(e){window.history.pushState(e,e,e)}l(se,"Navigate");function J(e){y.maxCacheSize=e}l(J,"setMaxCacheSize");function G(e){y.cleanhtml=e}l(G,"cleanHtml");async function le(e,t){let n=t.replace(/\//g,"").toLowerCase(),o=Object.keys(e).find(i=>i.toLowerCase()===n);if(!o){let i=Object.keys(e).join(", ");throw new Error(`Unknown component: "${t}".
1
+ var P=Object.defineProperty;var l=(e,t)=>P(e,"name",{value:t,configurable:!0});var y={cleanHtml:G,cleanhtml:!0,setMaxCacheSize:J,maxCacheSize:10},g={funcname:[],dataMap:new Map},C=null,w={},M=new Map,v=new Map,x={innerHTMLElements:["div","p","span","h1","h2","h3","h4","h5","h6","a","ul","ol","li","table","tr","td","th","thead","tbody","tfoot","form","label","button","section","article","header","footer","nav","aside","main","figure","figcaption","blockquote","cite","code","pre","em","strong","i","b","u","s","small","mark","time","abbr","q","dl","dt","dd","fieldset","legend","textarea","output","progress","meter","fragment","details","summary","dialog","menu","slot","template"],valueElements:["input","textarea","select","button","option","progress","meter"],srcElements:["img","script","iframe","audio","video","source","track","embed","frame","input"],hrefElements:["a","link","area","base"],voidElements:["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr","frame"]};Object.values(x).flat().forEach(e=>{globalThis[e]=(...t)=>S(e,...t)});var D=new Set(x.valueElements),Y=new Set(x.srcElements),Q=new Set(x.hrefElements),I=new Set(x.voidElements);function X(e,t){w[e]||(w[e]=K(t))}l(X,"createGlobalSignal");function Z(e){return w[e]}l(Z,"getGlobalSignal");function j(e,t){g.dataMap.has(e)&&g.dataMap.delete(e),g.dataMap.set(e,t)}l(j,"addEntry");function E(e){A(E.name);let t=g.dataMap.get(e);return t?t.value:null}l(E,"gve");function ee(e,t,n){let o;if(t instanceof HTMLElement?o=t.outerHTML:typeof t=="object"?o=JSON.stringify(t):o=t.toString(),o.length>4096){console.error("Cookie size exceeds 4KB limit. Data not stored.");return}document.cookie=e+"="+o+"; max-age="+n+" ; path=/ ;",setTimeout(()=>{document.cookie="testCookie=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/;"},n*1e3)}l(ee,"setCookie");function te(e){let n=`; ${document.cookie}`.split(`; ${e}=`);if(n.length===2){let o=n.pop().split(";").shift();try{let i=JSON.parse(o);return typeof i=="object"&&i!==null&&"nodeType"in i&&i.nodeType===1,i}catch{return o}}return null}l(te,"getCookie");function ne(e,t){let n;t instanceof HTMLElement?n=t.outerHTML:typeof t=="object"?n=JSON.stringify(t):n=t.toString(),localStorage.setItem(e,n)}l(ne,"setStorage");function oe(e){let t=localStorage.getItem(e);if(t!==null)try{let n=JSON.parse(t);return typeof n=="object"&&n!==null&&"nodeType"in n&&n.nodeType===1,n}catch{return t}}l(oe,"getStorage");function L(e,t=void 0){A(L.name),g.createInstance=L.name;let n="";t===void 0?n=e():n=e(t)}l(L,"createInstance");function z(e,t){A(z.name),g.rpc=z.name;let n={};for(let[o,i]of Object.entries(t))e[o]?n[o]=e[o].apply(null,i):(console.error(`Function ${o} not found!`),n[o]=null);return n}l(z,"rpc");function H(e,t=!1,n){A(H.name),g.gvec=H.name;let o=Object.keys(e),i=o[0],c=o[1],r=o[2];var a=e[i];a=a.name;var m=e[c];let f=e[c];var p=E(c)===null;if(p||t===!1){var h=""+c;g.dataMap.delete(h),L(m,e[r])}m=E(c);var s=E(i);if(s===null)throw new Error(` source id '${i} is not found in source component `);if(m===null)throw new Error(` target id '${c} is not found in target component `);if(s.replaceWith(m),n!==void 0)for(let b in f){let O=b.toString();if(typeof n=="object"){for(var u in n)if(O===u){var d=n[u];typeof d=="object"?f[b].apply(null,d):f[b].apply(null,[])}}else if(n.indexOf(",">-1)){let R=n.split(",");for(let T=0;T<R.length;T++)O===R[T]&&f[b].apply(null,[])}else O===n&&f[b].apply(null,[])}}l(H,"gvec");async function re(e,t={}){let{passRestriction:n=[]}=t,o=window.location.pathname.replace(/^\/|\/$/g,"").toLowerCase(),i=e.replace(/^\/|\/$/g,"").toLowerCase();if(!new RegExp("^"+i.replace(/:[^\/]+/g,"[^/]+")+"$").test(o))return!1;let r=Array.isArray(n)?n:[n];for(let a of r)try{let m=typeof a=="function"?a():a;if(m instanceof Promise){if(!await m)return!1}else if(!m)return!1}catch(m){return console.error("Route check failed:",m),!1}return!0}l(re,"Route");function ie(e){return e==null||e===""}l(ie,"IsEmpty");function se(e){window.history.pushState(e,e,e)}l(se,"Navigate");function J(e){y.maxCacheSize=e}l(J,"setMaxCacheSize");function G(e){y.cleanhtml=e}l(G,"cleanHtml");async function le(e,t){let n=t.replace(/\//g,"").toLowerCase(),o=Object.keys(e).find(i=>i.toLowerCase()===n);if(!o){let i=Object.keys(e).join(", ");throw new Error(`Unknown component: "${t}".
2
2
  Available components: ${i}
3
3
 
4
4
  To add this component:
@@ -6,6 +6,6 @@ To add this component:
6
6
  const loadAsyncComponents = {
7
7
  ...existingComponents,
8
8
  "${t}": () => import('./${t}.js')
9
- };`)}if(v.has(o))return v.get(o);try{let c=(await e[o]()).default;return v.set(o,c),c}catch(i){throw new Error(`Failed to load component "${o}": ${i.message}`)}}l(le,"loadFunc");function ce(e){if(e){let t=e.toLowerCase(),n=!1;for(let o of v.keys())o.toLowerCase()===t&&(v.delete(o),n=!0);return n}else return v.clear(),!0}l(ce,"clearComponentCache");function ae(e){var a,p;let n=window.location.pathname.split("/").filter(Boolean),o=n[0]||"home",i=n.slice(1),c=(p=(a=e[o])==null?void 0:a.urlParam)==null?void 0:p.split(":"),r={};return c&&c.length&&c[0].includes("{")?(c.forEach((f,h)=>{f=f.replace(/[{}]/g,""),r[f]=i[h]}),{componentName:o,params:r}):{componentName:o,params:i}}l(ae,"parsePath");function k(e){return new DOMParser().parseFromString(e,"text/html").body.firstChild}l(k,"parseHTML");async function ue(e,t,n=null,o=null){let i=e[t.toLowerCase()];if(i||(typeof e.fallback=="string"?i=e[e.fallback]:i=e.fallback),!i)return k("<h1>404 - Component not found</h1>");let{loader:c,guard:r,cacheExpiration:a=null,...p}=i;if(o===null&&typeof i.logic=="function"&&(o=i.logic),typeof r=="function"&&!await r(n))return k("<h1>403 - Forbidden</h1><p>You do not have access to this page.</p>");for(let f in p){let h=p[f];if(typeof h=="function")try{await h()}catch(m){console.error(m)}}try{let f=Date.now(),h=v.get(t);h&&a!==null&&f-h.cachedAt>a&&(v.delete(t),h=null);let m;if(h)m=h.component,v.set(t,{component:m,cachedAt:f});else{if(m=(await c()).default,v.size>=y.maxCacheSize){let u=v.keys().next().value;v.delete(u)}v.set(t,{component:m,cachedAt:f})}return typeof m!="function"?k("<h1>Invalid component</h1>"):typeof n=="object"&&!Array.isArray(n)?m(n):n?m(...n):m()}catch(f){return console.error(f),k("<h1>Error loading component</h1>")}}l(ue,"loadRunFunc");function F(e=""){var i,c;A(F.name),g.buildRoadMap=F.name;var t="";let n=(i=new Error().stack)==null?void 0:i.toString();navigator.userAgent.toLowerCase().indexOf("firefox")>0?n=n.split("@"):n=n.split(`
9
+ };`)}if(v.has(o))return v.get(o);try{let c=(await e[o]()).default;return v.set(o,c),c}catch(i){throw new Error(`Failed to load component "${o}": ${i.message}`)}}l(le,"loadFunc");function ce(e){if(e){let t=e.toLowerCase(),n=!1;for(let o of v.keys())o.toLowerCase()===t&&(v.delete(o),n=!0);return n}else return v.clear(),!0}l(ce,"clearComponentCache");function ae(e){var a,m;let n=window.location.pathname.split("/").filter(Boolean),o=n[0]||"home",i={},c=(m=(a=e[o])==null?void 0:a.urlParam)==null?void 0:m.split("/");return c&&c.length&&c.forEach((f,p)=>{f=f.replace(/[{}]/g,""),n[p+1]&&(i[f]=n[p+1])}),new URL(window.location.href).searchParams.forEach((f,p)=>{i[p]=f}),{componentName:o,params:i}}l(ae,"parsePath");function k(e){return new DOMParser().parseFromString(e,"text/html").body.firstChild}l(k,"parseHTML");async function fe(e,t,n=null,o=null){let i=e[t.toLowerCase()];if(i||(typeof e.fallback=="string"?i=e[e.fallback]:i=e.fallback),!i)return k("<h1>404 - Component not found</h1>");let{loader:c,guard:r,cacheExpiration:a=null,...m}=i;if(o===null&&typeof i.logic=="function"&&(o=i.logic),typeof r=="function"&&!await r(n))return k("<h1>403 - Forbidden</h1><p>You do not have access to this page.</p>");for(let f in m){let p=m[f];if(typeof p=="function")try{await p()}catch(h){console.error(h)}}try{let f=Date.now(),p=v.get(t);p&&a!==null&&f-p.cachedAt>a&&(v.delete(t),p=null);let h;if(p)h=p.component,v.set(t,{component:h,cachedAt:f});else{if(h=(await c()).default,v.size>=y.maxCacheSize){let u=v.keys().next().value;v.delete(u)}v.set(t,{component:h,cachedAt:f})}return typeof h!="function"?k("<h1>Invalid component</h1>"):typeof n=="object"&&!Array.isArray(n)?h(n):n?h(...n):h()}catch(f){return console.error(f),k("<h1>Error loading component</h1>")}}l(fe,"loadRunFunc");function F(e=""){var i,c;A(F.name),g.buildRoadMap=F.name;var t="";let n=(i=new Error().stack)==null?void 0:i.toString();navigator.userAgent.toLowerCase().indexOf("firefox")>0?n=n.split("@"):n=n.split(`
10
10
  `);for(let r=0;r<n.length;r++){var o="";if(navigator.userAgent.indexOf("Firefox")>0){let a=n[r].lastIndexOf(`
11
- `);if(a===-1)continue;o=n[r].slice(a+1),o===""?(a=n[r].lastIndexOf("/")+1,a>-1&&(o=n[r].substr(a),o=o.substr(0,o.indexOf(".")))):o.indexOf("/")>-1&&(o=o.substr(0,o.indexOf("/")))}else o=(c=n[r])==null?void 0:c.trim().split(" ")[1];if(!g.funcname.includes(o)&&!(o===void 0||o==="")&&!(o.indexOf("http://")>-1||o.indexOf("https://")>-1)){if(g.gvec!==void 0&&o.indexOf(g.gvec)>-1)break;t.indexOf("|"+o)>-1||(t+="|"+o.replace(".","|"))}}return e+t}l(F,"buildRoadMap");function A(e){!g.funcname.includes(e)&&g.funcname.push(e)}l(A,"setFuncName");function K(e){let t=e,n=new Set;function o(){return C&&n.add(C),t}l(o,"get");function i(c,r=!1){(r||t!==c)&&(t=c,n.forEach(a=>a()))}return l(i,"set"),[o,i]}l(K,"createSignal");function $(e){function t(){C=t,e(),C=null}l(t,"wrapped"),t()}l($,"createEffect");function V(e){e=e.toLowerCase(),x.innerHTMLElements.includes(e)||(x.innerHTMLElements.push(e),globalThis[e]=(...t)=>S(e,...t))}l(V,"createTypeElement");function B(e){e=e.toLowerCase(),x.innerHTMLElements.includes(e)||(x.innerHTMLElements.push(e),globalThis[e]=(...t)=>S(e,...t))}l(B,"createSigment");function fe(e){B(e)}l(fe,"addSigment");function de(e,...t){if(V(e),t.length!==0)return globalThis[e](...t)}l(de,"createElement");function U(e){let t=document.createTextNode("");return $(()=>{if(typeof w!="object"||w===null){t.textContent=e;return}let n=e.replace(/{{(.*?)}}/g,(o,i)=>{let c=i.trim();if(w.hasOwnProperty(c)){let r=w[c];if(r&&typeof r[0]=="function")return r[0]()??""}return""});t.textContent=n}),t}l(U,"interpolateReactiveText");function pe(e,t=5e3,n={}){let o=JSON.stringify([e,n,t]);if(!M.has(o)){let i=q(async()=>{let c=await fetch(e,n);if(!c.ok)throw new Error(`Fetch failed: ${c.status}`);return c.json()},t);M.set(o,i)}return M.get(o)()}l(pe,"fetchCache");function N(e){if(Array.isArray(e))return e.map(N);if(e&&typeof e=="object"){let t={};return Object.keys(e).sort().forEach(n=>{t[n]=N(e[n])}),t}return e}l(N,"sortObjectDeep");function _(e){if(e&&typeof e=="object"&&!Array.isArray(e)){let t={};return Object.keys(e).sort().forEach(n=>{t[n]=e[n]}),t}return e}l(_,"sortObjectShallow");function q(e,t=5e3,n={}){let o=new Map,i=l((...c)=>{let{deepSort:r}=n,a;r===!0?a=c.map(s=>s&&typeof s=="object"?N(s):s):r===!1?a=c.map(s=>s&&typeof s=="object"?_(s):s):a=c;let p=JSON.stringify(a),f=Date.now(),h=o.get(p);if(h&&f-h.timestamp<t)return h.value;let m=e(...c);return o.set(p,{value:m,timestamp:f}),m instanceof Promise&&m.catch(()=>o.delete(p)),m},"wrapped");return i.clear=()=>o.clear(),i}l(q,"memoizeFunc");function S(e,...t){let n={},o=[];A(S.name);var i="";i=F();var c=i.split("|");if(c.includes(g.rpc))return;t[0]&&typeof t[0]=="object"&&!Array.isArray(t[0])&&!(t[0]instanceof Node)?(n=t[0],o=t.slice(1)):o=t;let r=null,a=e.toLowerCase()==="fragment";a?r=document.createDocumentFragment():r=document.createElement(e);let p=I.has(e),f=P.has(e),h=e==="input"||e==="option",m=e==="option";if(!a)for(let s in n){let u=n[s];s.startsWith("on")&&typeof u=="function"?r.addEventListener(s.slice(2).toLowerCase(),u):typeof u=="function"&&s!=="children"?$(()=>{let d=u();d==null||d===!1?(r.removeAttribute(s),s==="value"&&f&&(r.value="",y.cleanhtml||r.removeAttribute("value")),s==="checked"&&h&&(r.checked=!1,y.cleanhtml||r.removeAttribute("checked")),s==="selected"&&m&&(r.selected=!1,y.cleanhtml||r.removeAttribute("selected")),s==="id"&&(r.iid="",y.cleanhtml||r.removeAttribute("id"))):s==="id"?(r.iid=d,y.cleanhtml?r.setAttribute("id",d):r.removeAttribute("id"),R(d,{name:d,caller:d+i,value:r})):s==="value"&&f?(r.value=d,y.cleanhtml?r.setAttribute("value",d):r.removeAttribute("value")):s==="checked"&&h?(r.checked=d,y.cleanhtml&&d?r.setAttribute("checked",""):r.removeAttribute("checked")):s==="selected"&&m?(r.selected=d,y.cleanhtml&&d?r.setAttribute("selected",""):r.removeAttribute("selected")):r.setAttribute(s,d)}):u!=null&&u!==!1&&(s==="id"?(r.iid=u,y.cleanhtml?r.setAttribute("id",u):r.removeAttribute("id"),R(u,{name:u,caller:u+i,value:r})):s==="value"&&f?(r.value=u,y.cleanhtml?r.setAttribute("value",u):r.removeAttribute("value")):s==="checked"&&h?(r.checked=u,y.cleanhtml?r.setAttribute("checked",""):r.removeAttribute("checked")):s==="selected"&&m?(r.selected=u,y.cleanhtml?r.setAttribute("selected",""):r.removeAttribute("selected")):r.setAttribute(s,u))}return p?o.length===1&&(typeof o[0]=="string"||typeof o[0]=="number")?f&&(r.value=o[0],y.cleanhtml?r.setAttribute("value",o[0]):r.removeAttribute("value")):o.length>0&&console.warn(`Void element <${e}> should not have children.`):o.flat().forEach(s=>{if(typeof s=="function"){let u=document.createTextNode("");r.appendChild(u),$(()=>{let d=s();if(d instanceof Node){let b=u.parentNode;if(!b)return;b.nodeType===Node.DOCUMENT_FRAGMENT_NODE?b.replaceChildren(d):b.replaceChild(d,u),u=d}else{let b=d==null?"":String(d);u.textContent!==b&&(u.textContent=b)}})}else if(typeof s=="string"&&s.includes("{{")&&!s.includes("function"))r.appendChild(U(s));else if(typeof s=="string"||typeof s=="number"){if(s.includes("function get(")||s.includes("function (")||s.includes("[native code]"))throw new Error("Detected reactive getter function used inside a template string. Use a function instead like: div(() => `Your text is: ${someState()}`)");r.appendChild(document.createTextNode(s))}else(s instanceof DocumentFragment||s instanceof Node)&&r.appendChild(s)}),r}l(S,"h");export{ie as IsEmpty,y as MyApp,se as Navigate,re as Route,fe as addSigment,ce as clearComponentCache,$ as createEffect,de as createElement,X as createGlobalSignal,B as createSigment,K as createSignal,pe as fetchCache,te as getCookie,Z as getGlobalSignal,oe as getStorage,E as getVirtualElementById,X as globalSignal,E as gve,H as gvec,S as h,le as loadFunc,ue as loadRunFunc,q as memoizeFunc,ae as parsePath,z as rpc,ee as setCookie,ne as setStorage,K as signal,Z as useGlobalSignal};
11
+ `);if(a===-1)continue;o=n[r].slice(a+1),o===""?(a=n[r].lastIndexOf("/")+1,a>-1&&(o=n[r].substr(a),o=o.substr(0,o.indexOf(".")))):o.indexOf("/")>-1&&(o=o.substr(0,o.indexOf("/")))}else o=(c=n[r])==null?void 0:c.trim().split(" ")[1];if(!g.funcname.includes(o)&&!(o===void 0||o==="")&&!(o.indexOf("http://")>-1||o.indexOf("https://")>-1)){if(g.gvec!==void 0&&o.indexOf(g.gvec)>-1)break;t.indexOf("|"+o)>-1||(t+="|"+o.replace(".","|"))}}return e+t}l(F,"buildRoadMap");function A(e){!g.funcname.includes(e)&&g.funcname.push(e)}l(A,"setFuncName");function K(e){let t=e,n=new Set;function o(){return C&&n.add(C),t}l(o,"get");function i(c,r=!1){(r||t!==c)&&(t=c,n.forEach(a=>a()))}return l(i,"set"),[o,i]}l(K,"createSignal");function $(e){function t(){C=t,e(),C=null}l(t,"wrapped"),t()}l($,"createEffect");function V(e){e=e.toLowerCase(),x.innerHTMLElements.includes(e)||(x.innerHTMLElements.push(e),globalThis[e]=(...t)=>S(e,...t))}l(V,"createTypeElement");function U(e){e=e.toLowerCase(),x.innerHTMLElements.includes(e)||(x.innerHTMLElements.push(e),globalThis[e]=(...t)=>S(e,...t))}l(U,"createSigment");function ue(e){U(e)}l(ue,"addSigment");function de(e,...t){if(V(e),t.length!==0)return globalThis[e](...t)}l(de,"createElement");function B(e){let t=document.createTextNode("");return $(()=>{if(typeof w!="object"||w===null){t.textContent=e;return}let n=e.replace(/{{(.*?)}}/g,(o,i)=>{let c=i.trim();if(w.hasOwnProperty(c)){let r=w[c];if(r&&typeof r[0]=="function")return r[0]()??""}return""});t.textContent=n}),t}l(B,"interpolateReactiveText");function pe(e,t=5e3,n={}){let o=JSON.stringify([e,n,t]);if(!M.has(o)){let i=q(async()=>{let c=await fetch(e,n);if(!c.ok)throw new Error(`Fetch failed: ${c.status}`);return c.json()},t);M.set(o,i)}return M.get(o)()}l(pe,"fetchCache");function N(e){if(Array.isArray(e))return e.map(N);if(e&&typeof e=="object"){let t={};return Object.keys(e).sort().forEach(n=>{t[n]=N(e[n])}),t}return e}l(N,"sortObjectDeep");function _(e){if(e&&typeof e=="object"&&!Array.isArray(e)){let t={};return Object.keys(e).sort().forEach(n=>{t[n]=e[n]}),t}return e}l(_,"sortObjectShallow");function q(e,t=5e3,n={}){let o=new Map,i=l((...c)=>{let{deepSort:r}=n,a;r===!0?a=c.map(s=>s&&typeof s=="object"?N(s):s):r===!1?a=c.map(s=>s&&typeof s=="object"?_(s):s):a=c;let m=JSON.stringify(a),f=Date.now(),p=o.get(m);if(p&&f-p.timestamp<t)return p.value;let h=e(...c);return o.set(m,{value:h,timestamp:f}),h instanceof Promise&&h.catch(()=>o.delete(m)),h},"wrapped");return i.clear=()=>o.clear(),i}l(q,"memoizeFunc");function S(e,...t){let n={},o=[];A(S.name);var i="";i=F();var c=i.split("|");if(c.includes(g.rpc))return;t[0]&&typeof t[0]=="object"&&!Array.isArray(t[0])&&!(t[0]instanceof Node)?(n=t[0],o=t.slice(1)):o=t;let r=null,a=e.toLowerCase()==="fragment";a?r=document.createDocumentFragment():r=document.createElement(e);let m=I.has(e),f=D.has(e),p=e==="input"||e==="option",h=e==="option";if(!a)for(let s in n){let u=n[s];s.startsWith("on")&&typeof u=="function"?r.addEventListener(s.slice(2).toLowerCase(),u):typeof u=="function"&&s!=="children"?$(()=>{let d=u();d==null||d===!1?(r.removeAttribute(s),s==="value"&&f&&(r.value="",y.cleanhtml||r.removeAttribute("value")),s==="checked"&&p&&(r.checked=!1,y.cleanhtml||r.removeAttribute("checked")),s==="selected"&&h&&(r.selected=!1,y.cleanhtml||r.removeAttribute("selected")),s==="id"&&(r.iid="",y.cleanhtml||r.removeAttribute("id"))):s==="id"?(r.iid=d,y.cleanhtml?r.setAttribute("id",d):r.removeAttribute("id"),j(d,{name:d,caller:d+i,value:r})):s==="value"&&f?(r.value=d,y.cleanhtml?r.setAttribute("value",d):r.removeAttribute("value")):s==="checked"&&p?(r.checked=d,y.cleanhtml&&d?r.setAttribute("checked",""):r.removeAttribute("checked")):s==="selected"&&h?(r.selected=d,y.cleanhtml&&d?r.setAttribute("selected",""):r.removeAttribute("selected")):r.setAttribute(s,d)}):u!=null&&u!==!1&&(s==="id"?(r.iid=u,y.cleanhtml?r.setAttribute("id",u):r.removeAttribute("id"),j(u,{name:u,caller:u+i,value:r})):s==="value"&&f?(r.value=u,y.cleanhtml?r.setAttribute("value",u):r.removeAttribute("value")):s==="checked"&&p?(r.checked=u,y.cleanhtml?r.setAttribute("checked",""):r.removeAttribute("checked")):s==="selected"&&h?(r.selected=u,y.cleanhtml?r.setAttribute("selected",""):r.removeAttribute("selected")):r.setAttribute(s,u))}return m?o.length===1&&(typeof o[0]=="string"||typeof o[0]=="number")?f&&(r.value=o[0],y.cleanhtml?r.setAttribute("value",o[0]):r.removeAttribute("value")):o.length>0&&console.warn(`Void element <${e}> should not have children.`):o.flat().forEach(s=>{if(typeof s=="function"){let u=document.createTextNode("");r.appendChild(u),$(()=>{let d=s();if(d instanceof Node){let b=u.parentNode;if(!b)return;b.nodeType===Node.DOCUMENT_FRAGMENT_NODE?b.replaceChildren(d):b.replaceChild(d,u),u=d}else{let b=d==null?"":String(d);u.textContent!==b&&(u.textContent=b)}})}else if(typeof s=="string"&&s.includes("{{")&&!s.includes("function"))r.appendChild(B(s));else if(typeof s=="string"||typeof s=="number"){if(s.includes("function get(")||s.includes("function (")||s.includes("[native code]"))throw new Error("Detected reactive getter function used inside a template string. Use a function instead like: div(() => `Your text is: ${someState()}`)");r.appendChild(document.createTextNode(s))}else(s instanceof DocumentFragment||s instanceof Node)&&r.appendChild(s)}),r}l(S,"h");export{ie as IsEmpty,y as MyApp,se as Navigate,re as Route,ue as addSigment,ce as clearComponentCache,$ as createEffect,de as createElement,X as createGlobalSignal,U as createSigment,K as createSignal,pe as fetchCache,te as getCookie,Z as getGlobalSignal,oe as getStorage,E as getVirtualElementById,X as globalSignal,E as gve,H as gvec,S as h,le as loadFunc,fe as loadRunFunc,q as memoizeFunc,ae as parsePath,z as rpc,ee as setCookie,ne as setStorage,K as signal,Z as useGlobalSignal};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sigment",
3
- "version": "1.1.0",
3
+ "version": "1.1.2",
4
4
  "description": "A lightweight reactive JavaScript framework built with signals and vanilla JS — no virtual DOM, no JSX, no transpilation.",
5
5
  "main": "./dist/index.js",
6
6
  "repository": {
package/types/index.d.ts CHANGED
@@ -69,7 +69,8 @@ export function memoizeFunc<
69
69
 
70
70
  export type Route = {
71
71
  loader: () => Promise<any>;
72
- urlParam?: string;
72
+ // `urlParam` allows a string pattern like '{id}/{pageid}' for dynamic route parameters
73
+ urlParam?: string;
73
74
  guard?: (params?: Record<string, any>) => boolean | Promise<boolean>;
74
75
  logic?: () => void;
75
76
  cacheExpiration?: number;
@@ -91,23 +92,14 @@ export declare function parsePath(
91
92
  /**
92
93
  * Loads a component and optionally runs logic, returning an HTMLElement.
93
94
  */
94
- export declare function loadRunFunc(
95
- componentMap: Record<
96
- string,
97
- | {
98
- loader: () => Promise<any>;
99
- urlParam?: string;
100
- guard?: (params: Record<string, any>) => Promise<boolean>;
101
- logic?: () => void;
102
- cacheExpiration?: number;
103
- }
104
- | string
105
- >,
95
+ export declare function loadRunFunc(
96
+ componentMap: RoutesMap,
106
97
  componentName: string,
107
98
  params?: Record<string, any> | null,
108
99
  logic?: (() => void) | null
109
100
  ): Promise<HTMLElement>;
110
101
 
102
+
111
103
  /**
112
104
  * Clears cached component for a given component name.
113
105
  */