sigment 1.3.8 → 1.4.0

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,11 +1,11 @@
1
- var he=Object.defineProperty;var c=(e,t)=>he(e,"name",{value:t,configurable:!0});var w={cleanHtml:_e,cleanhtml:!0,setMaxCacheSize:Ee,maxCacheSize:10,setloadAtRunTime:Ae,loadAtRunTime:null,setRoute:we,route:null,setStopPropagation:Ce,stopPropagation:!1},C={funcname:[],dataMap:new Map},D=null,L={},z=new Map,S=new Map,V=new Map,P=new Map,ye=null,N=null,B=new Map,ge=null,F="",x=typeof window>"u",I=0;x||(F=window.location.href.replace(/^https?:\/\//,"").replace(/\/$/,""));globalThis.__CURRENT_COMPONENT__=null;var $=0,le=new Map;x&&(globalThis.__HANDLER_REGISTRY__||(globalThis.__HANDLER_REGISTRY__={}),globalThis.__HANDLER_ELEMENT_MAP__||(globalThis.__HANDLER_ELEMENT_MAP__=new Map));var b={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","svg","defs","linearGradient","text","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","path","circle","rect","wbr","polygon","ellipse","stop","canvas","frame"]};Object.values(b).flat().forEach(e=>{globalThis[e]||(globalThis[e]=(...t)=>W(e,...t),Object.defineProperty(globalThis,e,{writable:!1,configurable:!1}))});var G=new Set(b.valueElements),ee=new Set(b.srcElements),te=new Set(b.hrefElements),J=new Set(b.voidElements);function De(e,t){L[e]||(L[e]=fe(t))}c(De,"createGlobalSignal");function Ie(e){return L[e]}c(Ie,"getGlobalSignal");function ne(e,t){C.dataMap.has(e)&&C.dataMap.delete(e),C.dataMap.set(e,t)}c(ne,"addEntry");function H(e){M(H.name);let t=C.dataMap.get(e);if(t)if(typeof t.value.hydrate<"u"&&t.value.hydrate!==null){if(t.value.hydrate){let n=document.getElementById(e);return n||null}}else return t.value;else return null}c(H,"gve");function qe(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)}c(qe,"setCookie");function We(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}c(We,"getCookie");function ze(e,t){let n;t instanceof HTMLElement?n=t.outerHTML:typeof t=="object"?n=JSON.stringify(t):n=t.toString(),localStorage.setItem(e,n)}c(ze,"setStorage");function Ue(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}}c(Ue,"getStorage");function K(e,t=void 0){M(K.name),C.createInstance=K.name;let n="";t===void 0?n=e():n=e(t)}c(K,"createInstance");function oe(e,t){M(oe.name),C.rpc=oe.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}c(oe,"rpc");function re(e,t=!1,n){M(re.name),C.gvec=re.name;let o=Object.keys(e),i=o[0],s=o[1],u=o[2];var r=e[i];r=r.name;var d=e[s];let a=e[s];var f=H(s)===null;if(f||t===!1){var y=""+s;C.dataMap.delete(y),K(d,e[u])}d=H(s);var p=H(i);if(p===null)throw new Error(` source id '${i} is not found in source component `);if(d===null)throw new Error(` target id '${s} is not found in target component `);if(p.replaceWith(d),n!==void 0)for(let l in a){let m=l.toString();if(typeof n=="object"){for(var g in n)if(m===g){var h=n[g];typeof h=="object"?a[l].apply(null,h):a[l].apply(null,[])}}else if(n.indexOf(",">-1)){let _=n.split(",");for(let O=0;O<_.length;O++)m===_[O]&&a[l].apply(null,[])}else m===n&&a[l].apply(null,[])}}c(re,"gvec");async function Ve(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 u=Array.isArray(n)?n:[n];for(let r of u)try{let d=typeof r=="function"?r():r;if(d instanceof Promise){if(!await d)return!1}else if(!d)return!1}catch(d){return console.error("Route check failed:",d),!1}return!0}c(Ve,"Route");function Be(e){return e==null||e===""}c(Be,"IsEmpty");function be(e){let t=e.startsWith("/")?e:"/"+e;window.history.pushState({},"",t)}c(be,"Navigate");function Ee(e){w.maxCacheSize=e}c(Ee,"setMaxCacheSize");function _e(e){w.cleanhtml=e}c(_e,"cleanHtml");function we(e){w.route=e}c(we,"setRoute");function Ae(e){w.loadAtRunTime=e}c(Ae,"setloadAtRunTime");function Ce(e){w.stopPropagation=e}c(Ce,"setStopPropagation");async function Ge(e,t){let n;t==="/"?n=t:n=t.replace(/\//g,"").toLowerCase();let o=Object.keys(e).find(i=>i.toLowerCase()===n.toLowerCase());if(!o){let i=Object.keys(e).join(", ");throw new Error(`Unknown component: "${t}".
2
- Available components: ${i}
1
+ var ge=Object.defineProperty;var a=(e,t)=>ge(e,"name",{value:t,configurable:!0});var _={cleanHtml:Ae,cleanhtml:!0,setMaxCacheSize:_e,maxCacheSize:10,setloadAtRunTime:Ce,loadAtRunTime:null,setRoute:xe,route:null,setStopPropagation:Se,stopPropagation:!1},A={funcname:[],dataMap:new Map},H=null,M={},z=new Map,k=new Map,G=new Map,L=new Map,be=null,P=null,K=new Map;var W="",v=typeof window>"u",V=0;v||(W=window.location.href.replace(/^https?:\/\//,"").replace(/\/$/,""));function Ee(){try{let e=import.meta.glob("/src/components/*.js"),t=Object.fromEntries(Object.entries(e).map(([n,r])=>[n.split("/").pop().replace(".js",""),r]));t.defaultKey="/",_.loadAtRunTime=t}catch{_.loadAtRunTime={}}}a(Ee,"initLoadAtRunTime");globalThis.__CURRENT_COMPONENT__=null;var j=0,ce=new Map;v&&(globalThis.__HANDLER_REGISTRY__||(globalThis.__HANDLER_REGISTRY__={}),globalThis.__HANDLER_ELEMENT_MAP__||(globalThis.__HANDLER_ELEMENT_MAP__=new Map));var E={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","svg","defs","linearGradient","text","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","path","circle","rect","wbr","polygon","ellipse","stop","canvas","frame"]};Object.values(E).flat().forEach(e=>{globalThis[e]||(globalThis[e]=(...t)=>I(e,...t),Object.defineProperty(globalThis,e,{writable:!1,configurable:!1}))});var Y=new Set(E.valueElements),re=new Set(E.srcElements),oe=new Set(E.hrefElements),J=new Set(E.voidElements);function qe(e,t){M[e]||(M[e]=pe(t))}a(qe,"createGlobalSignal");function Ue(e){return M[e]}a(Ue,"getGlobalSignal");function X(e,t){A.dataMap.has(e)&&A.dataMap.delete(e),A.dataMap.set(e,t)}a(X,"addEntry");var R={destroy:a(function(){var n;let e=(n=this.parentNode)==null?void 0:n.iid,t=A.dataMap.get(e);if(this.parentNode&&this.remove(),t&&t.rows&&t.indexOrder){let r=t.indexOrder,s=r.indexOf(this.iid);s!==-1&&r.splice(s,1),t.rows.delete(this.iid)}},"destroy"),swapWith:a(function(e){var f;let t=(f=this.parentNode)==null?void 0:f.iid,n=A.dataMap.get(t);if(!n||!n.rows||!n.indexOrder)return this;let r=n.indexOrder,s=n.rows,i=r.indexOf(this.iid);if(i===-1||e<0||e>=r.length||i===e)return this;let c=r[e],o=s.get(c);if(!o||!o.value)return this;let u=o.value;[r[i],r[e]]=[r[e],r[i]],this.idx=e,u.idx=i;let d=document.createTextNode("");return u.before(d),this.before(u),d.replaceWith(this),this},"swapWith"),updateVal:a(function(e,t){var n;return(n=this.nodes)!=null&&n[e]&&(this.nodes[e].nodeValue=t),this},"updateVal"),addVal:a(function(e,t){var n;return(n=this.nodes)!=null&&n[e]&&(this.nodes[e].nodeValue+=t),this},"addVal"),clear:a(function(){if(this._map){let e=this._map.get(this.iid);e&&e.rows&&e.rows.clear(),e&&e.indexOrder&&(e.indexOrder.length=0)}this.replaceChildren()},"clear")},q=a((e,t,n,r)=>(e.destroy&&e.clear||(e.iid=e.iid||t.id,e._map=n,e._order=r,e.destroy=R.destroy,e.swapWith=R.swapWith,e.updateVal=R.updateVal,e.addVal=R.addVal,(t.rows||e.tagName==="TBODY")&&(e.clear=R.clear,e.get=s=>{var u;let i=e._map.get(e.iid);if(!i)return null;let c=typeof s=="number"?i.indexOrder[s]:s,o=(u=i.rows)==null?void 0:u.get(c);return o?D(o.value):null})),e),"upgradeElement");function D(e){var i,c;let t=e&&e.nodeType,n=t?e.iid:e,r=A.dataMap.get(n);if(t){let o=(i=e.parentNode)==null?void 0:i.id,u=A.dataMap.get(o),d=u&&u.rows?u.rows:A.dataMap,f=u&&u.indexOrder?u.indexOrder:null;return q(e,{nodes:e.nodes},d,f)}if(!r)return null;let s=(c=r.value)!=null&&c.hydrate?document.getElementById(n):r.value;return s?q(s,r,A.dataMap,null):null}a(D,"gve");var Ie=a(e=>{let t=[],n=e.content?e.content.firstElementChild:e;if(!n)return console.error("Sigment: Blueprint is invalid",e),null;let r=document.createTreeWalker(n,NodeFilter.SHOW_TEXT),s,i=0;for(;s=r.nextNode();)s.nodeValue.trim()==="?"&&t.push({type:"text",index:i}),i++;return{element:n,paths:t}},"createTemplate"),ze=a((e,t,n,r=1e3,s=!1)=>{let i=A.dataMap.get(n);if(!i)return;let c=i.value,o=i.rows||(i.rows=new Map),u=i.indexOrder||(i.indexOrder=[]);q(c,i,A.dataMap,u);let d=A.dataMap;s||c.clear();let{element:f,paths:p}=t,h=0,y=a(()=>{A.dataMap=o;let g=document.createDocumentFragment(),l=Math.min(h+r,e.length);for(;h<l;h++){let m=e[h],b=m[0],S=f.cloneNode(!0);q(S,{id:b,idx:h},o,u);let w=document.createTreeWalker(S,NodeFilter.SHOW_TEXT),x=0,O=0,T,N=[];for(;T=w.nextNode();)x<p.length&&O===p[x].index&&(T.nodeValue=m[x],N[x]=T,x++),O++;S.nodes=N,u.push(b),X(b,{value:S,nodes:N}),g.appendChild(S)}A.dataMap=d,c.appendChild(g),h<e.length&&requestAnimationFrame(y)},"renderChunk");y()},"batch");function Z(e,t=void 0){$(Z.name),A.createInstance=Z.name;let n="";t===void 0?n=e():n=e(t)}a(Z,"createInstance");function ie(e,t){$(ie.name),A.rpc=ie.name;let n={};for(let[r,s]of Object.entries(t))e[r]?n[r]=e[r].apply(null,s):(console.error(`Function ${r} not found!`),n[r]=null);return n}a(ie,"rpc");function se(e,t=!1,n){$(se.name),A.gvec=se.name;let r=Object.keys(e),s=r[0],i=r[1],c=r[2];var o=e[s];o=o.name;var u=e[i];let d=e[i];var f=D(i)===null;if(f||t===!1){var p=""+i;A.dataMap.delete(p),Z(u,e[c])}u=D(i);var h=D(s);if(h===null)throw new Error(` source id '${s} is not found in source component `);if(u===null)throw new Error(` target id '${i} is not found in target component `);if(h.replaceWith(u),n!==void 0)for(let l in d){let m=l.toString();if(typeof n=="object"){for(var y in n)if(m===y){var g=n[y];typeof g=="object"?d[l].apply(null,g):d[l].apply(null,[])}}else if(n.indexOf(",">-1)){let b=n.split(",");for(let S=0;S<b.length;S++)m===b[S]&&d[l].apply(null,[])}else m===n&&d[l].apply(null,[])}}a(se,"gvec");async function Be(e,t={}){let{passRestriction:n=[]}=t,r=window.location.pathname.replace(/^\/|\/$/g,"").toLowerCase(),s=e.replace(/^\/|\/$/g,"").toLowerCase();if(!new RegExp("^"+s.replace(/:[^\/]+/g,"[^/]+")+"$").test(r))return!1;let c=Array.isArray(n)?n:[n];for(let o of c)try{let u=typeof o=="function"?o():o;if(u instanceof Promise){if(!await u)return!1}else if(!u)return!1}catch(u){return console.error("Route check failed:",u),!1}return!0}a(Be,"Route");function Ge(e){return e==null||e===""}a(Ge,"IsEmpty");function we(e){let t=e.startsWith("/")?e:"/"+e;window.history.pushState({},"",t)}a(we,"Navigate");function _e(e){_.maxCacheSize=e}a(_e,"setMaxCacheSize");function Ae(e){_.cleanhtml=e}a(Ae,"cleanHtml");function xe(e){_.route=e}a(xe,"setRoute");function Ce(e){if(e===!0){Ee();return}if(typeof e=="object"&&e!==null&&!Array.isArray(e)){_.loadAtRunTime=e;return}throw new Error("setloadAtRunTime expects true or an object of dynamic modules")}a(Ce,"setloadAtRunTime");function Se(e){_.stopPropagation=e}a(Se,"setStopPropagation");async function Ke(e,t){let n;t==="/"?n=t:n=t.replace(/\//g,"").toLowerCase();let r=Object.keys(e).find(s=>s.toLowerCase()===n.toLowerCase());if(!r){let s=Object.keys(e).join(", ");throw new Error(`Unknown component: "${t}".
2
+ Available components: ${s}
3
3
 
4
4
  To add this component:
5
5
 
6
6
  const loadAsyncComponents = {
7
7
  ...existingComponents,
8
8
  "${t}": () => import('./${t}.js')
9
- };`)}if(S.has(o))return S.get(o);try{let s=(await e[o]()).default;return S.set(o,s),s}catch(i){throw new Error(`Failed to load component "${o}": ${i.message}`)}}c(Ge,"loadFunc");function Se(e){let t=null,n=-1;if(typeof e=="string")return{partName:e,index:n};let o=(e==null?void 0:e.target)instanceof Element?e.target.closest("[data-component]"):null;if(o){let i=o.closest("[data-part]");if(t=i==null?void 0:i.getAttribute("data-part"),i){let s=o.getAttribute("data-component");s&&i.querySelectorAll(`[data-component="${s}"]`).forEach((r,d)=>{r===o&&(n=d)})}}return{partName:t,index:n}}c(Se,"getTargetPartAndIndex");async function Je(e,t,n,o,i=null){if(x)return;let s=null,{partName:u,index:r}=Se(i);u&&(s=u);let d=window.location.host+"/"+e;if(s===null){if(F===d)return;F=d}let a;typeof t=="boolean"||typeof t=="string"?(n=t,t=w.route):t===void 0&&(t=w.route,n=!1),be(e);let{componentKey:f,params:y}=ae(t);(f===void 0||f==="")&&console.warn(`current path "${e}" not match in route map file , check if param path is match`);let p=Object.keys(t);if(typeof n=="string")f=n,a=!!o;else if(typeof n=="boolean"){if(p.length===1)f=p[0];else if(p.includes(f))f=f;else throw new Error(`Ambiguous component map: multiple components exist and no matching key for path '${e}' found. Provide component key explicitly.`);a=n}else{if(p.length===1)f=p[0];else if(p.includes(f))f=f;else throw new Error(`Ambiguous component map: multiple components exist and no matching key for path '${e}' found. Provide component key explicitly.`);a=!1}let g=await xe(t,f,y,null,!1);s&&(e=e+s+r);let h=B.get(e);if((!h||!a)&&(typeof g=="function"?($=le.get(g.name),I=0,Array.isArray(y)?h=g(...y):typeof y=="object"&&y!==null?h=g(y):h=g(),B.set(e,h)):h=g),N&&N.isConnected){var l=N.contains(h);l||N.replaceWith(h)}else{typeof rvs_map_sigment<"u"&&rvs_map_sigment!==null&&(f=q(rvs_map_sigment,f));let m=document.querySelectorAll('[data-part="'+s+'"] [data-component="'+f+'"]');h.setAttribute("data-component",f),m&&m.length===1?m[0].replaceWith(h):m&&m.length>1?m[r].replaceWith(h):document.body.replaceChildren(h)}s===null&&(N=h,ye=e),F=d}c(Je,"NavigateTo");function Ke(e=ge,t){let n=typeof e=="string"?document.getElementById(e):e;n.contains(t)||n.replaceChildren(t)}c(Ke,"updateNodeIfNeeded");function Ye(e){if(e){let t=e.toLowerCase(),n=!1;for(let o of S.keys())o.toLowerCase()===t&&(S.delete(o),n=!0);return n}else return S.clear(),!0}c(Ye,"clearComponentCache");function ae(e){if(x)return;let t=window.location.pathname.replace(/\/{2,}/g,"/");t.length>1&&t.endsWith("/")&&(t=t.slice(0,-1));let n=t.replace(/^\//,"").split("/").filter(Boolean);n[0]===void 0&&(n[0]="/");let o={},i=null,s=null,u=0;function r(a){return a.length>1&&a.endsWith("/")&&(a=a.slice(0,-1)),a.replace(/^\//,"").split("/").map(f=>{let y=f.startsWith(":"),p=y&&f.endsWith("?"),g=y?f.slice(1).replace("?",""):f;return g===""&&(g="/"),{isParam:y,isOptional:p,name:g}})}c(r,"parseRouteSegments");for(let[a,f]of Object.entries(e)){let y=f.path||`/${a}`,p=r(y),g=!0;for(let h=0;h<p.length;h++){let l=p[h],m=n[h];if(l.isParam){if(!m&&!l.isOptional){g=!1;break}}else if(l.name!==m){g=!1;break}}if(n.length<p.length){for(let h=n.length;h<p.length;h++)if(!p[h].isOptional){g=!1;break}}if(g){i=a,s=f,u=p.length,p.forEach((h,l)=>{if(h.isParam){let m=n[l];m!==void 0&&m!==""&&(o[h.name]=m)}});break}}return i||(i="",s=e[i]),s!=null&&s.urlParam&&s.urlParam.split("/").map(f=>f.replace(/[{}]/g,"")).forEach((f,y)=>{let p=n[u+y];p!==void 0&&p!==""&&(o[f]=p)}),new URL(window.location.href).searchParams.forEach((a,f)=>{o[f]=a}),{componentKey:i,componentName:i,params:o}}c(ae,"parsePath");function j(e){return new DOMParser().parseFromString(e,"text/html").body.firstChild}c(j,"parseHTML");async function xe(e,t,n=null,o=null,i=!0){if(x)return;let s=e[t.toLowerCase()];if(s||(typeof e.fallback=="string"?s=e[e.fallback]:s=e.fallback),!s)return j("<h1>404 - Component not found</h1>");let{loader:u,guard:r,cacheExpiration:d=null,...a}=s;if(o===null&&typeof s.logic=="function"&&(o=s.logic),typeof r=="function"&&!await r(n))return j("<h1>403 - Forbidden</h1><p>You do not have access to this page.</p>");for(let f in a){let y=a[f];if(typeof y=="function")try{await y()}catch(p){console.error(p)}}try{let f=Date.now(),y=S.get(t);y&&d!==null&&f-y.cachedAt>d&&(S.delete(t),y=null);let p;if(y)p=y.component,S.set(t,{component:p,cachedAt:f});else{if(p=(await u()).default,S.size>=w.maxCacheSize){let m=S.keys().next().value;S.delete(m)}S.set(t,{component:p,cachedAt:f})}if(typeof p!="function")return j("<h1>Invalid component</h1>");if(!i)return p;let g;Array.isArray(n)?g=p(...n):typeof n=="object"&&n!==null?g=p(n):g=p();let h="/";try{h=window.location.pathname.slice(1)+window.location.hash,h=h.endsWith("/")&&h!=="/"?h.slice(0,-1):h,h===""&&(h="/")}catch{h=t}return B.set(h,g),N=g,g}catch(f){return console.error(f),j("<h1>Error loading component</h1>")}}c(xe,"loadRunFunc");function Y(e=""){var i,s;if(x)return"";M(Y.name),C.buildRoadMap=Y.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
- `);for(let u=0;u<n.length;u++){var o="";if(navigator.userAgent.indexOf("Firefox")>0){let r=n[u].lastIndexOf(`
11
- `);if(r===-1)continue;o=n[u].slice(r+1),o===""?(r=n[u].lastIndexOf("/")+1,r>-1&&(o=n[u].substr(r),o=o.substr(0,o.indexOf(".")))):o.indexOf("/")>-1&&(o=o.substr(0,o.indexOf("/")))}else o=(s=n[u])==null?void 0:s.trim().split(" ")[1];if(!C.funcname.includes(o)&&!(o===void 0||o==="")&&!(o.indexOf("http://")>-1||o.indexOf("https://")>-1)){if(C.gvec!==void 0&&o.indexOf(C.gvec)>-1)break;t.indexOf("|"+o)>-1||(t+="|"+o.replace(".","|"))}}return e+t}c(Y,"buildRoadMap");function M(e){!C.funcname.includes(e)&&C.funcname.push(e)}c(M,"setFuncName");function ce(e){let t=typeof e=="object"&&e!==null&&!Array.isArray(e),n=!(typeof process<"u");t&&n&&console.warn("[Sigment] createSignal() is deprecated for objects. Use signal()."),t&&!n&&console.warn("[Sigment] createSignal() is deprecated for objects. Use signal().");let o=e,i=new Set;function s(){return D&&i.add(D),o}c(s,"get"),s.__isSignal=!0,s.__isPrimitiveSignal=!0;function u(d,a=!1){(a||o!==d)&&(o=d,i.forEach(f=>f()))}return c(u,"set"),[new Proxy(s,{get(d,a){if(a==="valueOf")return()=>o;if(a==="toString")return()=>String(o);if(a in d)return d[a]}}),u]}c(ce,"createSignal");function Te(e){return typeof e=="object"&&e!==null}c(Te,"isObject");function Ze(e){return fe(e)[0]}c(Ze,"store");function ue(e){let t=e,n=new Map,o=c(r=>Te(r)?ue(r)[0]:r,"wrap"),i=c(r=>{if(!n.has(r)){let[d,a]=ce(o(t[r])),f=new Proxy(d,{get(y,p){return p==="valueOf"?()=>d():p==="toString"?()=>String(d()):y[p]}});n.set(r,[f,a])}return n.get(r)},"getSignal"),s=new Proxy(t,{get(r,d){if(typeof d=="symbol")return t[d];let[a]=i(d);return a()},set(r,d,a){t[d]=a;let[,f]=i(d);return f(o(a)),!0}});function u(r){let d=typeof r=="function"?r(s):r;for(let a in d)s[a]=d[a]}return c(u,"setState"),[s,u]}c(ue,"signalObject");function fe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?ue(e):ce(e)}c(fe,"signal");function Z(e){function t(){D=t,e(),D=null}c(t,"wrapped"),t()}c(Z,"createEffect");function ke(e){e=e.toLowerCase(),b.innerHTMLElements.includes(e)||(b.innerHTMLElements.push(e),globalThis[e]=(...t)=>W(e,...t))}c(ke,"createTypeElement");function de(e){return e.replace(/-+/g,"-").replace(/-([a-z])/g,(t,n)=>n.toUpperCase())}c(de,"dashToCamel");function Xe(e,t=null){pe(e,t)}c(Xe,"createSigment");function Qe(e,t=null){pe(e,t)}c(Qe,"addSigment");function et(e,...t){if(ke(e),t.length!==0)return globalThis[e](...t)}c(et,"createElement");function ve(e){let t=document.createTextNode("");return Z(()=>{if(typeof L!="object"||L===null){t.nodeValue=e;return}let n=e.replace(/{{(.*?)}}/g,(o,i)=>{let s=i.trim();if(L.hasOwnProperty(s)){let u=L[s];if(u&&typeof u[0]=="function")return u[0]()??""}return""});t.nodeValue=n}),t}c(ve,"interpolateReactiveText");function tt(e,t=5e3,n={}){let o=JSON.stringify([e,n,t]);if(!z.has(o)){let i=Le(async()=>{let s=await fetch(e,n);if(!s.ok)throw new Error(`Fetch failed: ${s.status}`);return s.json()},t);z.set(o,i)}return z.get(o)()}c(tt,"fetchCache");function X(e){if(Array.isArray(e))return e.map(X);if(e&&typeof e=="object"){let t={};return Object.keys(e).sort().forEach(n=>{t[n]=X(e[n])}),t}return e}c(X,"sortObjectDeep");function Oe(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}c(Oe,"sortObjectShallow");function Le(e,t=null,n={}){let o=new Map,i=c((...s)=>{let{deepSort:u}=n,r;u===!0?r=s.map(g=>g&&typeof g=="object"?X(g):g):u===!1?r=s.map(g=>g&&typeof g=="object"?Oe(g):g):r=s;let d=JSON.stringify(r),a=Date.now();d.length===2&&(d=e.name);let y=o.get(d);if(y&&(t===null||a-y.timestamp<t))return y.value;let p=e(...s);return o.set(d,{value:p,timestamp:a}),p instanceof Promise&&p.catch(()=>o.delete(d)),p},"wrapped");return i.clear=()=>o.clear(),i}c(Le,"memoizeFunc");function U(e){let t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"};return e.replace(/[&<>"']/g,n=>t[n])}c(U,"escapeHtml");function Ne(e){let t="";function n(o,i=0){let s=" ".repeat(i);if(o==null||o===!1||o===!0)return;if(Array.isArray(o)){o.forEach(r=>n(r,i+1));return}let u=o;typeof u=="function"&&(u=u()),typeof u=="function"&&u.__isSignal&&(u=u()),!(u==null||u===!1||u===!0)&&(t+=String(u))}return c(n,"process"),e.forEach(o=>n(o)),t}c(Ne,"renderChildren");function Pe(e){let t=[];for(let n=0;n<e.length;n++){let o=e[n],i=e[n+1];typeof o=="string"&&typeof i=="function"?(t.push(()=>o+i()),n++):t.push(o)}return t}c(Pe,"normalizeChildren");function W(e,...t){var h;let n={},o=[];if(t[0]&&typeof t[0]=="object"&&!Array.isArray(t[0])&&t[0]!==null&&!(t[0]instanceof String)&&(x||!(t[0]instanceof Node))?(n=t[0],o=t.slice(1)):o=t,x&&typeof document>"u"){let l=globalThis.__CURRENT_COMPONENT__;globalThis.__HANDLER_REGISTRY__||(globalThis.__HANDLER_REGISTRY__={}),(h=globalThis.__HANDLER_REGISTRY__)[l]||(h[l]=[]);let m=[];for(let[v,k]of Object.entries(n))if(v==="style"&&typeof k=="object"){let R=Object.entries(k).map(([A,me])=>`${A.replace(/([A-Z])/g,"-$1").toLowerCase()}:${me}`).join(";");m.push(` style="${U(R)}"`)}else v!=="className"&&v!=="class"&&!v.startsWith("on")&&m.push(` ${v}="${U(String(k))}"`);(n.className||n.class)&&m.push(` class="${U(n.className||n.class)}"`);let _=Ne(o);if(["input","img","br","hr","meta","link"].includes(e))return`<${e}${m.join("")} />`;if(e==="fragment")return _;var i;let E=V.get(e);return E&&(i=E.tagName,E.nativeTag!==null&&(i=E.nativeTag)),i!==void 0&&(e=i),`<${e}${m.join("")}>${_}</${e}>`}M(W.name);var s="";s=Y();var u=s.split("|");if(u.includes(C.rpc))return;let r=null,d=e.toLowerCase()==="fragment";if(d)r=document.createDocumentFragment();else{var i;let m=V.get(e);m&&(i=m.tagName,m.nativeTag!==null&&(i=m.nativeTag)),i!==void 0&&(e=i),r=document.createElement(e)}if(globalThis.__CURRENT_COMPONENT__){I++;let l=I;r.dataIndex=l,r.realtedComponent=globalThis.__CURRENT_COMPONENT__,r.cmpNbr=$}let a=[];for(let[l,m]of Object.entries(n))if(l.startsWith("on")&&typeof m=="function"){let _=l.slice(2).toLowerCase();a.push({type:_,val:m})}a.length&&(r._handlers=a);let f=J.has(e),y=G.has(de(e)),p=e==="input"||e==="option",g=e==="option";if(!d)for(let l in n){let m=n[l];if(l.startsWith("on")&&typeof m=="function"){let _=l.slice(2).toLowerCase();r.addEventListener(_,O=>{w.stopPropagation&&O.stopPropagation(),m(O)})}else typeof m=="function"&&l!=="children"?Z(()=>{let _=m();_==null||_===!1?(r.removeAttribute(l),l==="value"&&y&&(r.value="",w.cleanhtml||r.removeAttribute("value")),l==="checked"&&p&&(r.checked=!1,w.cleanhtml||r.removeAttribute("checked")),l==="selected"&&g&&(r.selected=!1,w.cleanhtml||r.removeAttribute("selected")),l==="id"&&(r.iid="",w.cleanhtml||r.removeAttribute("id"))):l==="id"?(r.iid=_,w.cleanhtml?r.removeAttribute("id"):r.setAttribute("id",_),ne(_,{name:_,caller:_+s,value:r})):l==="value"&&y?(r.value=_,w.cleanhtml?r.removeAttribute("value"):r.setAttribute("value",_)):l==="checked"&&p?(r.checked=_,w.cleanhtml?r.removeAttribute("checked"):_?r.setAttribute("checked",""):r.removeAttribute("checked")):l==="selected"&&g?(r.selected=_,w.cleanhtml?r.removeAttribute("selected"):_?r.setAttribute("selected",""):r.removeAttribute("selected")):r.setAttribute(l,_)}):m!=null&&m!==!1&&(l==="id"?(r.iid=m,w.cleanhtml?r.removeAttribute("id"):r.setAttribute("id",m),ne(m,{name:m,caller:m+s,value:r})):l==="value"&&y?(r.value=m,w.cleanhtml?r.removeAttribute("value"):r.setAttribute("value",m)):l==="checked"&&p?(r.checked=m,w.cleanhtml?r.removeAttribute("checked"):r.setAttribute("checked","")):l==="selected"&&g?(r.selected=m,w.cleanhtml?r.removeAttribute("selected"):r.setAttribute("selected","")):r.setAttribute(l,m))}return f?o.length===1&&(typeof o[0]=="string"||typeof o[0]=="number")?y&&(r.value=o[0],w.cleanhtml?r.removeAttribute("value"):r.setAttribute("value",o[0])):o.length>0&&console.warn(`Void element <${e}> should not have children.`):(o=Pe(o),o.flat().forEach((l,m)=>{if(l&&l.__isSignal&&l.__isPrimitiveSignal&&!l.__isWrapped){let _=l;_.__isWrapped=!0,l=c(()=>_(),"child")}if(typeof l=="function"){let _=l(),E=_===!1||_===null||_===!0?document.createComment(""):document.createTextNode("");r.appendChild(E),Z(()=>{let T=l();if(Array.isArray(T)){let k=E.parentNode;if(!k)return;E._insertedNodes&&(E._insertedNodes.forEach(A=>A.remove()),E._insertedNodes=null);let R=T.flat().filter(Boolean).map(A=>A instanceof Node?A:typeof A=="string"||typeof A=="number"?document.createTextNode(String(A)):typeof A=="object"?A.__isNode?A:div(A.name??JSON.stringify(A)):null).filter(Boolean);R.forEach(A=>k.insertBefore(A,E)),E._insertedNodes=R,E.nodeValue="";return}if(T instanceof Node){let k=E.parentNode;if(!k)return;E._insertedNode&&(E._insertedNode._boundNode&&E._insertedNode._boundNode.remove(),E._insertedNode.remove(),E._insertedNode=null),k.insertBefore(T,E),E._insertedNode=T;return}let v=T==null||T===!1||T===!0?"":String(T);if(E._insertedNode&&(E._insertedNode._boundNode&&E._insertedNode._boundNode.remove(),E._insertedNode.remove(),E._insertedNode=null),E.nodeValue!==v){if(!E.parentNode)return;E!=null&&E._boundNode?E._boundNode.nodeValue=v:E.nodeValue=v}})}else if(typeof l=="string"&&l.includes("{{")&&!l.includes("function"))r.appendChild(ve(l));else if(typeof l=="string"||typeof l=="number"){if(typeof l=="string"&&(l.includes("function get(")||l.includes("function (")||l.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(l))}else(l instanceof DocumentFragment||l instanceof Node)&&r.appendChild(l)})),r}c(W,"h");function Me(e){return e.replace(/([a-z])([A-Z])/g,"$1-$2").replace(/-+/g,"-").toLowerCase()}c(Me,"camelToDash");function pe(e,t=null){if(b.innerHTMLElements.includes(e)||b.valueElements.includes(e)||b.srcElements.includes(e)||b.hrefElements.includes(e)||b.voidElements.includes(e))return;let o=/[A-Z]/.test(e)?Me(e):e.toLowerCase();o.includes("-")||(o="s-"+o),e.includes("-")&&(o=e,e=de(e)),V.set(e,{tagName:o,nativeTag:t}),!b.innerHTMLElements.includes(e)&&t===null?b.innerHTMLElements.push(e):!b.innerHTMLElements.includes(e)&&t!==null&&(b.innerHTMLElements.includes(t)||b.innerHTMLElements.push(e)),!b.valueElements.includes(e)&&t===null?(b.valueElements.push(e),G.add(e)):!b.valueElements.includes(e)&&t!==null&&(b.valueElements.includes(t)||(b.valueElements.push(e),G.add(e))),!b.srcElements.includes(e)&&t===null?(b.srcElements.push(e),ee.add(e)):!b.srcElements.includes(e)&&t!==null&&(b.srcElements.includes(t)||(b.srcElements.push(e),ee.add(e))),!b.hrefElements.includes(e)&&t===null?(b.hrefElements.push(e),te.add(e)):!b.hrefElements.includes(e)&&t!==null&&(b.hrefElements.includes(t)||(b.hrefElements.push(e),te.add(e))),!b.voidElements.includes(e)&&t===null?(b.voidElements.push(e),J.add(e)):!b.voidElements.includes(e)&&t!==null&&(b.voidElements.includes(t)||(b.voidElements.push(e),J.add(e))),globalThis[e]=(...i)=>W(e,...i)}c(pe,"defineElement");function $e(e){x||requestAnimationFrame(()=>{requestAnimationFrame(e)})}c($e,"onPaint");function nt(e){if(x)return;let t=!1;$e(()=>{t||(t=!0,e())})}c(nt,"paintFinish");function ie(e){let t={};for(let n of e.attributes)if(n.name.startsWith("data-")&&n.name!=="data-component"){let o=n.name.slice(5);try{t[o]=JSON.parse(n.value)}catch{t[o]=n.value}}return t}c(ie,"getPropsFromDataAttributes");async function Re(){let e=document.querySelector("layout[data-layout]");if(!e)return!1;let t=e.getAttribute("data-layout");if(!t)return!1;try{x||(t="/"+t);let n=await fetch(t);if(!n.ok)throw new Error("Failed to load layout");let o=await n.text(),s=new DOMParser().parseFromString(o,"text/html"),u=document.querySelector("description[data-description]");if(u){let a=s.querySelector('meta[name="description"]');a||(a=s.createElement("meta"),a.name="description",s.head.appendChild(a)),a.content=u.getAttribute("data-description")}let r=document.querySelector("keywords[data-keywords]");if(r){let a=s.querySelector('meta[name="keywords"]');a||(a=s.createElement("meta"),a.name="keywords",s.head.appendChild(a)),a.content=r.getAttribute("data-keywords")}return document.querySelectorAll("[data-part]").forEach(a=>{let f=a.getAttribute("data-part"),y=s.querySelector(`[data-part="${f}"]`);y&&(y.innerHTML="",[...a.childNodes].forEach(p=>{y.appendChild(p.cloneNode(!0))}))}),document.documentElement.innerHTML=s.documentElement.innerHTML,!0}catch(n){return console.error("Failed to inject layout:",n),!1}}c(Re,"injectLayout");function q(e,t){if(!t)return;let n=t.trim();if(e[n])return e[n];let o=n[0].toUpperCase()+n.slice(1).toLowerCase();if(e[o])return e[o];let i=n.toUpperCase();if(e[i])return e[i];let s=n.toLowerCase(),u=Object.entries(e).find(([r,d])=>r.toLowerCase()===s);if(u)return u[1]}c(q,"lookupComponent");async function se(e){var d;let t=e||w.route;await Re();let{componentKey:n,componentName:o,params:i}=ae(t),s=new Set,u=o,r=document.querySelectorAll("[data-component]");for(let a of r){let f=a.getAttribute("data-component"),y=f==null?void 0:f.toLowerCase();if(typeof rvs_map_sigment<"u"&&rvs_map_sigment!==null?u=q(rvs_map_sigment,f):u=y,!u||s.has(u))continue;let p=q(t,u);try{a.hasChildNodes()&&(globalThis.__CURRENT_COMPONENT__=f);let g=p?await je(p):await Fe(w.loadAtRunTime,u),h=p?{...i,...ie(a)}:ie(a),l=g.default(h);l.funcName=o.toLowerCase();let m=(d=a.closest("[data-part]"))==null?void 0:d.getAttribute("data-part");l.datapart=m,l.setAttribute("data-component",f),l.hydrate=!0,a.cmpNbr=$,Q(a,l),le.set(u,$),$++,I=0}catch(g){console.warn(`Component "${y}" failed to load`,g)}}}c(se,"hydrateComponent");async function je(e){if(!P.has(e)){let t=await e.loader();P.set(e,t)}return P.get(e)}c(je,"loadModule");async function Fe(e,t){let n=q(e,t);if(n){if(P.has(n))return P.get(n);try{let o=await n();return P.set(n,o),o}catch(o){console.error(`Component "${t}" failed to load`,o)}}}c(Fe,"loadModuleFromFile");function ot(e,t){if(e===void 0){se();return}if(typeof e=="object"&&t===void 0){se(e);return}let n=typeof e=="string"?document.getElementById(e):e;if(!n)throw new Error("Mount target not found: "+e);n.hasChildNodes()?Q(n,t):n.replaceChildren(t)}c(ot,"mount");function Q(e,t){(async()=>{try{if(!e||!t)return;if(t._boundNode=e,e.nodeName!==t.nodeName){e.replaceWith(t);return}if(e.nodeType===Node.TEXT_NODE||e.nodeType===Node.COMMENT_NODE){e.nodeValue!==t.nodeValue&&(e.nodeValue=t.nodeValue);return}if(e.nodeType===Node.ELEMENT_NODE&&t.nodeType===Node.ELEMENT_NODE){for(let i of Array.from(t.attributes))e.setAttribute(i.name,i.value);for(let i of Array.from(e.attributes))t.hasAttribute(i.name)||e.removeAttribute(i.name);t._handlers&&t._handlers.forEach(({type:i,val:s})=>{e.addEventListener(i,u=>{w.stopPropagation&&u.stopPropagation(),s(u)})})}let n=Array.from(t.childNodes),o=Array.from(e.childNodes);for(let i=0;i<Math.max(n.length,o.length);i++){let s=o[i],u=n[i];s&&u?Q(s,u):u?e.appendChild(u):s&&e.removeChild(s)}}catch(n){console.error("Hydration failed:",n)}})()}c(Q,"hydrate");export{Be as IsEmpty,w as MyApp,be as Navigate,Je as NavigateTo,Ve as Route,Qe as addSigment,Ye as clearComponentCache,Z as createEffect,et as createElement,De as createGlobalSignal,Xe as createSigment,ce as createSignal,tt as fetchCache,We as getCookie,Ie as getGlobalSignal,Ue as getStorage,H as getVirtualElementById,De as globalSignal,H as gve,re as gvec,W as h,se as hydrateComponent,Ge as loadFunc,xe as loadRunFunc,Le as memoizeFunc,ot as mount,$e as onPaint,nt as paintFinish,ae as parsePath,oe as rpc,qe as setCookie,ze as setStorage,fe as sig,fe as signal,Ze as store,Ke as updateNodeIfNeeded,Ie as useGlobalSignal};
9
+ };`)}if(k.has(r))return k.get(r);try{let i=(await e[r]()).default;return k.set(r,i),i}catch(s){throw new Error(`Failed to load component "${r}": ${s.message}`)}}a(Ke,"loadFunc");function Te(e){let t=null,n=-1;if(typeof e=="string")return{partName:e,index:n};let r=(e==null?void 0:e.target)instanceof Element?e.target.closest("[data-component]"):null;if(r){let s=r.closest("[data-part]");if(t=s==null?void 0:s.getAttribute("data-part"),s){let i=r.getAttribute("data-component");i&&s.querySelectorAll(`[data-component="${i}"]`).forEach((o,u)=>{o===r&&(n=u)})}}return{partName:t,index:n}}a(Te,"getTargetPartAndIndex");async function Ye(e,t,n,r,s=null){if(v)return;let i=null,{partName:c,index:o}=Te(s);c&&(i=c);let u=window.location.host+"/"+e;if(i===null){if(W===u)return;W=u}let d;typeof t=="boolean"||typeof t=="string"?(n=t,t=_.route):t===void 0&&(t=_.route,n=!1),we(e);let{componentKey:f,params:p}=ue(t);(f===void 0||f==="")&&console.warn(`current path "${e}" not match in route map file , check if param path is match`);let h=Object.keys(t);if(typeof n=="string")f=n,d=!!r;else if(typeof n=="boolean"){if(h.length===1)f=h[0];else if(h.includes(f))f=f;else throw new Error(`Ambiguous component map: multiple components exist and no matching key for path '${e}' found. Provide component key explicitly.`);d=n}else{if(h.length===1)f=h[0];else if(h.includes(f))f=f;else throw new Error(`Ambiguous component map: multiple components exist and no matching key for path '${e}' found. Provide component key explicitly.`);d=!1}let y=await Oe(t,f,p,null,!1);i&&(e=e+i+o);let g=K.get(e);if((!g||!d)&&(typeof y=="function"?(j=ce.get(y.name),V=0,Array.isArray(p)?g=y(...p):typeof p=="object"&&p!==null?g=y(p):g=y(),K.set(e,g)):g=y),P&&P.isConnected){var l=P.contains(g);l||P.replaceWith(g)}else{typeof rvs_map_sigment<"u"&&rvs_map_sigment!==null&&(f=U(rvs_map_sigment,f));let m=document.querySelectorAll('[data-part="'+i+'"] [data-component="'+f+'"]');g.setAttribute("data-component",f),m&&m.length===1?m[0].replaceWith(g):m&&m.length>1?m[o].replaceWith(g):document.body.replaceChildren(g)}i===null&&(P=g,be=e),W=u}a(Ye,"NavigateTo");function ue(e){if(v)return;let t=window.location.pathname.replace(/\/{2,}/g,"/");t.length>1&&t.endsWith("/")&&(t=t.slice(0,-1));let n=t.replace(/^\//,"").split("/").filter(Boolean);n[0]===void 0&&(n[0]="/");let r={},s=null,i=null,c=0;function o(f){return f.length>1&&f.endsWith("/")&&(f=f.slice(0,-1)),f.replace(/^\//,"").split("/").map(p=>{let h=p.startsWith(":"),y=h&&p.endsWith("?"),g=h?p.slice(1).replace("?",""):p;return g===""&&(g="/"),{isParam:h,isOptional:y,name:g}})}a(o,"parseRouteSegments");for(let[f,p]of Object.entries(e)){let h=p.path||`/${f}`,y=o(h),g=!0;for(let l=0;l<y.length;l++){let m=y[l],b=n[l];if(m.isParam){if(!b&&!m.isOptional){g=!1;break}}else if(m.name!==b){g=!1;break}}if(n.length<y.length){for(let l=n.length;l<y.length;l++)if(!y[l].isOptional){g=!1;break}}if(g){s=f,i=p,c=y.length,y.forEach((l,m)=>{if(l.isParam){let b=n[m];b!==void 0&&b!==""&&(r[l.name]=b)}});break}}s||(s="",i=e[s]),i!=null&&i.urlParam&&i.urlParam.split("/").map(p=>p.replace(/[{}]/g,"")).forEach((p,h)=>{let y=n[c+h];y!==void 0&&y!==""&&(r[p]=y)}),new URL(window.location.href).searchParams.forEach((f,p)=>{r[p]=f});let d=s;return i!=null&&i.loader&&(Object.defineProperty(r,"_componentNamePromise",{value:i.loader().then(f=>{let p=f.default||Object.values(f)[0];return typeof p=="function"&&p.name?p.name:s})}),Object.defineProperty(r,"componentName",{get(){return d}})),{componentKey:s,componentName:d,params:r}}a(ue,"parsePath");function F(e){return new DOMParser().parseFromString(e,"text/html").body.firstChild}a(F,"parseHTML");async function Oe(e,t,n=null,r=null,s=!0){if(v)return;let i=e[t.toLowerCase()];if(i||(typeof e.fallback=="string"?i=e[e.fallback]:i=e.fallback),!i)return F("<h1>404 - Component not found</h1>");let{loader:c,guard:o,cacheExpiration:u=null,...d}=i;if(r===null&&typeof i.logic=="function"&&(r=i.logic),typeof o=="function"&&!await o(n))return F("<h1>403 - Forbidden</h1><p>You do not have access to this page.</p>");for(let f in d){let p=d[f];if(typeof p=="function")try{await p()}catch(h){console.error(h)}}try{let f=Date.now(),p=k.get(t);p&&u!==null&&f-p.cachedAt>u&&(k.delete(t),p=null);let h;if(p)h=p.component,k.set(t,{component:h,cachedAt:f});else{if(h=(await c()).default,k.size>=_.maxCacheSize){let m=k.keys().next().value;k.delete(m)}k.set(t,{component:h,cachedAt:f})}if(typeof h!="function")return F("<h1>Invalid component</h1>");if(!s)return h;let y;Array.isArray(n)?y=h(...n):typeof n=="object"&&n!==null?y=h(n):y=h();let g="/";try{g=window.location.pathname.slice(1)+window.location.hash,g=g.endsWith("/")&&g!=="/"?g.slice(0,-1):g,g===""&&(g="/")}catch{g=t}return K.set(g,y),P=y,y}catch(f){return console.error(f),F("<h1>Error loading component</h1>")}}a(Oe,"loadRunFunc");function Q(e=""){var s,i;if(v)return"";$(Q.name),A.buildRoadMap=Q.name;var t="";let n=(s=new Error().stack)==null?void 0:s.toString();navigator.userAgent.toLowerCase().indexOf("firefox")>0?n=n.split("@"):n=n.split(`
10
+ `);for(let c=0;c<n.length;c++){var r="";if(navigator.userAgent.indexOf("Firefox")>0){let o=n[c].lastIndexOf(`
11
+ `);if(o===-1)continue;r=n[c].slice(o+1),r===""?(o=n[c].lastIndexOf("/")+1,o>-1&&(r=n[c].substr(o),r=r.substr(0,r.indexOf(".")))):r.indexOf("/")>-1&&(r=r.substr(0,r.indexOf("/")))}else r=(i=n[c])==null?void 0:i.trim().split(" ")[1];if(!A.funcname.includes(r)&&!(r===void 0||r==="")&&!(r.indexOf("http://")>-1||r.indexOf("https://")>-1)){if(A.gvec!==void 0&&r.indexOf(A.gvec)>-1)break;t.indexOf("|"+r)>-1||(t+="|"+r.replace(".","|"))}}return e+t}a(Q,"buildRoadMap");function $(e){!A.funcname.includes(e)&&A.funcname.push(e)}a($,"setFuncName");function fe(e){let t=typeof e=="object"&&e!==null&&!Array.isArray(e),n=!(typeof process<"u");t&&n&&console.warn("[Sigment] createSignal() is deprecated for objects. Use signal()."),t&&!n&&console.warn("[Sigment] createSignal() is deprecated for objects. Use signal().");let r=e,s=new Set;function i(){return H&&s.add(H),r}a(i,"get"),i.__isSignal=!0,i.__isPrimitiveSignal=!0;function c(u,d=!1){(d||r!==u)&&(r=u,s.forEach(f=>f()))}return a(c,"set"),[new Proxy(i,{get(u,d){if(d==="valueOf")return()=>r;if(d==="toString")return()=>String(r);if(d in u)return u[d]}}),c]}a(fe,"createSignal");function ve(e){return typeof e=="object"&&e!==null}a(ve,"isObject");function Je(e){return pe(e)[0]}a(Je,"store");function de(e){let t=e,n=new Map,r=a(o=>ve(o)?de(o)[0]:o,"wrap"),s=a(o=>{if(!n.has(o)){let[u,d]=fe(r(t[o])),f=new Proxy(u,{get(p,h){return h==="valueOf"?()=>u():h==="toString"?()=>String(u()):p[h]}});n.set(o,[f,d])}return n.get(o)},"getSignal"),i=new Proxy(t,{get(o,u){if(typeof u=="symbol")return t[u];let[d]=s(u);return d()},set(o,u,d){t[u]=d;let[,f]=s(u);return f(r(d)),!0}});function c(o){let u=typeof o=="function"?o(i):o;for(let d in u)i[d]=u[d]}return a(c,"setState"),[i,c]}a(de,"signalObject");function pe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?de(e):fe(e)}a(pe,"signal");function ee(e){function t(){H=t,e(),H=null}a(t,"wrapped"),t()}a(ee,"createEffect");function ke(e){e=e.toLowerCase(),E.innerHTMLElements.includes(e)||(E.innerHTMLElements.push(e),globalThis[e]=(...t)=>I(e,...t))}a(ke,"createTypeElement");function me(e){return e.replace(/-+/g,"-").replace(/-([a-z])/g,(t,n)=>n.toUpperCase())}a(me,"dashToCamel");function Xe(e,t=null){he(e,t)}a(Xe,"createSigment");function Ze(e,t=null){he(e,t)}a(Ze,"addSigment");function Qe(e,...t){if(ke(e),t.length!==0)return globalThis[e](...t)}a(Qe,"createElement");function Ne(e){let t=document.createTextNode("");return ee(()=>{if(typeof M!="object"||M===null){t.nodeValue=e;return}let n=e.replace(/{{(.*?)}}/g,(r,s)=>{let i=s.trim();if(M.hasOwnProperty(i)){let c=M[i];if(c&&typeof c[0]=="function")return c[0]()??""}return""});t.nodeValue=n}),t}a(Ne,"interpolateReactiveText");function et(e,t=5e3,n={}){let r=JSON.stringify([e,n,t]);if(!z.has(r)){let s=Pe(async()=>{let i=await fetch(e,n);if(!i.ok)throw new Error(`Fetch failed: ${i.status}`);return i.json()},t);z.set(r,s)}return z.get(r)()}a(et,"fetchCache");function te(e){if(Array.isArray(e))return e.map(te);if(e&&typeof e=="object"){let t={};return Object.keys(e).sort().forEach(n=>{t[n]=te(e[n])}),t}return e}a(te,"sortObjectDeep");function Me(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}a(Me,"sortObjectShallow");function Pe(e,t=null,n={}){let r=new Map,s=a((...i)=>{let{deepSort:c}=n,o;c===!0?o=i.map(y=>y&&typeof y=="object"?te(y):y):c===!1?o=i.map(y=>y&&typeof y=="object"?Me(y):y):o=i;let u=JSON.stringify(o),d=Date.now();u.length===2&&(u=e.name);let p=r.get(u);if(p&&(t===null||d-p.timestamp<t))return p.value;let h=e(...i);return r.set(u,{value:h,timestamp:d}),h instanceof Promise&&h.catch(()=>r.delete(u)),h},"wrapped");return s.clear=()=>r.clear(),s}a(Pe,"memoizeFunc");function B(e){let t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#039;"};return e.replace(/[&<>"']/g,n=>t[n])}a(B,"escapeHtml");function Le(e){let t="";function n(r,s=0){let i=" ".repeat(s);if(r==null||r===!1||r===!0)return;if(Array.isArray(r)){r.forEach(o=>n(o,s+1));return}let c=r;typeof c=="function"&&(c=c()),typeof c=="function"&&c.__isSignal&&(c=c()),!(c==null||c===!1||c===!0)&&(t+=String(c))}return a(n,"process"),e.forEach(r=>n(r)),t}a(Le,"renderChildren");function Re(e){let t=[];for(let n=0;n<e.length;n++){let r=e[n],s=e[n+1];typeof r=="string"&&typeof s=="function"?(t.push(()=>r+s()),n++):t.push(r)}return t}a(Re,"normalizeChildren");function I(e,...t){var g;let n={},r=[];if(t[0]&&typeof t[0]=="object"&&!Array.isArray(t[0])&&t[0]!==null&&!(t[0]instanceof String)&&(v||!(t[0]instanceof Node))?(n=t[0],r=t.slice(1)):r=t,v&&typeof document>"u"){let l=globalThis.__CURRENT_COMPONENT__;globalThis.__HANDLER_REGISTRY__||(globalThis.__HANDLER_REGISTRY__={}),(g=globalThis.__HANDLER_REGISTRY__)[l]||(g[l]=[]);let m=[];for(let[O,T]of Object.entries(n))if(O==="style"&&typeof T=="object"){let N=Object.entries(T).map(([C,ye])=>`${C.replace(/([A-Z])/g,"-$1").toLowerCase()}:${ye}`).join(";");m.push(` style="${B(N)}"`)}else O!=="className"&&O!=="class"&&!O.startsWith("on")&&m.push(` ${O}="${B(String(T))}"`);(n.className||n.class)&&m.push(` class="${B(n.className||n.class)}"`);let b=Le(r);if(["input","img","br","hr","meta","link"].includes(e))return`<${e}${m.join("")} />`;if(e==="fragment")return b;var s;let w=G.get(e);return w&&(s=w.tagName,w.nativeTag!==null&&(s=w.nativeTag)),s!==void 0&&(e=s),`<${e}${m.join("")}>${b}</${e}>`}$(I.name);var i="";i=Q();var c=i.split("|");if(c.includes(A.rpc))return;let o=null,u=e.toLowerCase()==="fragment";if(u)o=document.createDocumentFragment();else{var s;let m=G.get(e);m&&(s=m.tagName,m.nativeTag!==null&&(s=m.nativeTag)),s!==void 0&&(e=s),o=document.createElement(e)}if(globalThis.__CURRENT_COMPONENT__){V++;let l=V;o.dataIndex=l,o.realtedComponent=globalThis.__CURRENT_COMPONENT__,o.cmpNbr=j}let d=[];for(let[l,m]of Object.entries(n))if(l.startsWith("on")&&typeof m=="function"){let b=l.slice(2).toLowerCase();d.push({type:b,val:m})}d.length&&(o._handlers=d);let f=J.has(e),p=Y.has(me(e)),h=e==="input"||e==="option",y=e==="option";if(!u)for(let l in n){let m=n[l];if(l.startsWith("on")&&typeof m=="function"){let b=l.slice(2).toLowerCase();o.addEventListener(b,S=>{_.stopPropagation&&S.stopPropagation(),m(S)})}else typeof m=="function"&&l!=="children"?ee(()=>{let b=m();b==null||b===!1?(o.removeAttribute(l),l==="value"&&p&&(o.value="",_.cleanhtml||o.removeAttribute("value")),l==="checked"&&h&&(o.checked=!1,_.cleanhtml||o.removeAttribute("checked")),l==="selected"&&y&&(o.selected=!1,_.cleanhtml||o.removeAttribute("selected")),l==="id"&&(o.iid="",_.cleanhtml||o.removeAttribute("id"))):l==="id"?(o.iid=b,_.cleanhtml?o.removeAttribute("id"):o.setAttribute("id",b),X(b,{name:b,caller:b+i,value:o})):l==="value"&&p?(o.value=b,_.cleanhtml?o.removeAttribute("value"):o.setAttribute("value",b)):l==="checked"&&h?(o.checked=b,_.cleanhtml?o.removeAttribute("checked"):b?o.setAttribute("checked",""):o.removeAttribute("checked")):l==="selected"&&y?(o.selected=b,_.cleanhtml?o.removeAttribute("selected"):b?o.setAttribute("selected",""):o.removeAttribute("selected")):o.setAttribute(l,b)}):m!=null&&m!==!1&&(l==="id"?(o.iid=m,_.cleanhtml?o.removeAttribute("id"):o.setAttribute("id",m),X(m,{name:m,caller:m+i,value:o})):l==="value"&&p?(o.value=m,_.cleanhtml?o.removeAttribute("value"):o.setAttribute("value",m)):l==="checked"&&h?(o.checked=m,_.cleanhtml?o.removeAttribute("checked"):o.setAttribute("checked","")):l==="selected"&&y?(o.selected=m,_.cleanhtml?o.removeAttribute("selected"):o.setAttribute("selected","")):o.setAttribute(l,m))}return f?r.length===1&&(typeof r[0]=="string"||typeof r[0]=="number")?p&&(o.value=r[0],_.cleanhtml?o.removeAttribute("value"):o.setAttribute("value",r[0])):r.length>0&&console.warn(`Void element <${e}> should not have children.`):(r=Re(r),r.flat().forEach((l,m)=>{if(l&&l.__isSignal&&l.__isPrimitiveSignal&&!l.__isWrapped){let b=l;b.__isWrapped=!0,l=a(()=>b(),"child")}if(typeof l=="function"){let b=l(),w=b===!1||b===null||b===!0?document.createComment(""):document.createTextNode("");o.appendChild(w),ee(()=>{let x=l();if(Array.isArray(x)){let T=w.parentNode;if(!T)return;w._insertedNodes&&(w._insertedNodes.forEach(C=>C.remove()),w._insertedNodes=null);let N=x.flat().filter(Boolean).map(C=>C instanceof Node?C:typeof C=="string"||typeof C=="number"?document.createTextNode(String(C)):typeof C=="object"?C.__isNode?C:div(C.name??JSON.stringify(C)):null).filter(Boolean);N.forEach(C=>T.insertBefore(C,w)),w._insertedNodes=N,w.nodeValue="";return}if(x instanceof Node){let T=w.parentNode;if(!T)return;w._insertedNode&&(w._insertedNode._boundNode&&w._insertedNode._boundNode.remove(),w._insertedNode.remove(),w._insertedNode=null),T.insertBefore(x,w),w._insertedNode=x;return}let O=x==null||x===!1||x===!0?"":String(x);if(w._insertedNode&&(w._insertedNode._boundNode&&w._insertedNode._boundNode.remove(),w._insertedNode.remove(),w._insertedNode=null),w.nodeValue!==O){if(!w.parentNode)return;w!=null&&w._boundNode?w._boundNode.nodeValue=O:w.nodeValue=O}})}else if(typeof l=="string"&&l.includes("{{")&&!l.includes("function"))o.appendChild(Ne(l));else if(typeof l=="string"||typeof l=="number"){if(typeof l=="string"&&(l.includes("function get(")||l.includes("function (")||l.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()}`)");o.appendChild(document.createTextNode(l))}else(l instanceof DocumentFragment||l instanceof Node)&&o.appendChild(l)})),o}a(I,"h");function je(e){return e.replace(/([a-z])([A-Z])/g,"$1-$2").replace(/-+/g,"-").toLowerCase()}a(je,"camelToDash");function he(e,t=null){if(E.innerHTMLElements.includes(e)||E.valueElements.includes(e)||E.srcElements.includes(e)||E.hrefElements.includes(e)||E.voidElements.includes(e))return;let r=/[A-Z]/.test(e)?je(e):e.toLowerCase();r.includes("-")||(r="s-"+r),e.includes("-")&&(r=e,e=me(e)),G.set(e,{tagName:r,nativeTag:t}),!E.innerHTMLElements.includes(e)&&t===null?E.innerHTMLElements.push(e):!E.innerHTMLElements.includes(e)&&t!==null&&(E.innerHTMLElements.includes(t)||E.innerHTMLElements.push(e)),!E.valueElements.includes(e)&&t===null?(E.valueElements.push(e),Y.add(e)):!E.valueElements.includes(e)&&t!==null&&(E.valueElements.includes(t)||(E.valueElements.push(e),Y.add(e))),!E.srcElements.includes(e)&&t===null?(E.srcElements.push(e),re.add(e)):!E.srcElements.includes(e)&&t!==null&&(E.srcElements.includes(t)||(E.srcElements.push(e),re.add(e))),!E.hrefElements.includes(e)&&t===null?(E.hrefElements.push(e),oe.add(e)):!E.hrefElements.includes(e)&&t!==null&&(E.hrefElements.includes(t)||(E.hrefElements.push(e),oe.add(e))),!E.voidElements.includes(e)&&t===null?(E.voidElements.push(e),J.add(e)):!E.voidElements.includes(e)&&t!==null&&(E.voidElements.includes(t)||(E.voidElements.push(e),J.add(e))),globalThis[e]=(...s)=>I(e,...s)}a(he,"defineElement");function $e(e){v||requestAnimationFrame(()=>{requestAnimationFrame(e)})}a($e,"onPaint");function tt(e){if(v)return;let t=!1;$e(()=>{t||(t=!0,e())})}a(tt,"paintFinish");function le(e){let t={};for(let n of e.attributes)if(n.name.startsWith("data-")&&n.name!=="data-component"){let r=n.name.slice(5);try{t[r]=JSON.parse(n.value)}catch{t[r]=n.value}}return t}a(le,"getPropsFromDataAttributes");async function Fe(){let e=document.querySelector("layout[data-layout]");if(!e)return!1;let t=e.getAttribute("data-layout");if(!t)return!1;try{v||(t="/"+t);let n=await fetch(t);if(!n.ok)throw new Error("Failed to load layout");let r=await n.text(),i=new DOMParser().parseFromString(r,"text/html"),c=document.querySelector("description[data-description]");if(c){let d=i.querySelector('meta[name="description"]');d||(d=i.createElement("meta"),d.name="description",i.head.appendChild(d)),d.content=c.getAttribute("data-description")}let o=document.querySelector("keywords[data-keywords]");if(o){let d=i.querySelector('meta[name="keywords"]');d||(d=i.createElement("meta"),d.name="keywords",i.head.appendChild(d)),d.content=o.getAttribute("data-keywords")}return document.querySelectorAll("[data-part]").forEach(d=>{let f=d.getAttribute("data-part"),p=i.querySelector(`[data-part="${f}"]`);p&&(p.innerHTML="",[...d.childNodes].forEach(h=>{p.appendChild(h.cloneNode(!0))}))}),document.documentElement.innerHTML=i.documentElement.innerHTML,!0}catch(n){return console.error("Failed to inject layout:",n),!1}}a(Fe,"injectLayout");function U(e,t){if(!t)return;let n=t.trim();if(e[n])return e[n];let r=n[0].toUpperCase()+n.slice(1).toLowerCase();if(e[r])return e[r];let s=n.toUpperCase();if(e[s])return e[s];let i=n.toLowerCase(),c=Object.entries(e).find(([o,u])=>o.toLowerCase()===i);if(c)return c[1]}a(U,"lookupComponent");async function We(e,t){let n=t.trim();for(let[r,s]of Object.entries(e))if(s.loader)try{let i=await s.loader(),c=i.default||Object.values(i)[0];if(typeof c=="function"&&c.name===n)return s._componentName=c.name,s}catch(i){console.warn(`Failed to load route "${r}":`,i);continue}}a(We,"findRouteByComponentName");async function ae(e){var d;let t=e||_.route;await Fe();let{componentKey:n,componentNme:r,params:s}=ue(t),i=new Set,c=await s._componentNamePromise,o=n,u=document.querySelectorAll("[data-component]");for(let f of u){let p=f.getAttribute("data-component"),h=p==null?void 0:p.toLowerCase();if(typeof rvs_map_sigment<"u"&&rvs_map_sigment!==null?o=U(rvs_map_sigment,p):o=h,!o||i.has(o))continue;let y=U(t,o);y===void 0&&(y=await We(t,o));try{f.hasChildNodes()&&(globalThis.__CURRENT_COMPONENT__=p);let g=y?await De(y):await He(_.loadAtRunTime,o),l=y?{...s,...le(f)}:le(f),m=g.default(l);m.funcName=c.toLowerCase();let b=(d=f.closest("[data-part]"))==null?void 0:d.getAttribute("data-part");m.datapart=b,m.setAttribute("data-component",p),m.hydrate=!0,f.cmpNbr=j,ne(f,m),ce.set(o,j),j++,V=0}catch(g){console.warn(`Component "${h}" failed to load`,g)}}}a(ae,"hydrateComponent");async function De(e){if(!L.has(e)){let t=await e.loader();L.set(e,t)}return L.get(e)}a(De,"loadModule");async function He(e,t){let n=U(e,t);if(n){if(L.has(n))return L.get(n);try{let r=await n();return L.set(n,r),r}catch(r){console.error(`Component "${t}" failed to load`,r)}}}a(He,"loadModuleFromFile");function nt(e,t){if(e===void 0){ae();return}if(typeof e=="object"&&t===void 0){ae(e);return}let n=typeof e=="string"?document.getElementById(e):e;if(!n)throw new Error("Mount target not found: "+e);n.hasChildNodes()?ne(n,t):n.replaceChildren(t)}a(nt,"mount");function ne(e,t){(async()=>{try{if(!e||!t)return;if(t._boundNode=e,e.nodeName!==t.nodeName){e.replaceWith(t);return}if(e.nodeType===Node.TEXT_NODE||e.nodeType===Node.COMMENT_NODE){e.nodeValue!==t.nodeValue&&(e.nodeValue=t.nodeValue);return}if(e.nodeType===Node.ELEMENT_NODE&&t.nodeType===Node.ELEMENT_NODE){for(let s of Array.from(t.attributes))e.setAttribute(s.name,s.value);for(let s of Array.from(e.attributes))t.hasAttribute(s.name)||e.removeAttribute(s.name);t._handlers&&t._handlers.forEach(({type:s,val:i})=>{e.addEventListener(s,c=>{_.stopPropagation&&c.stopPropagation(),i(c)})})}let n=Array.from(t.childNodes),r=Array.from(e.childNodes);for(let s=0;s<Math.max(n.length,r.length);s++){let i=r[s],c=n[s];i&&c?ne(i,c):c?e.appendChild(c):i&&e.removeChild(i)}}catch(n){console.error("Hydration failed:",n)}})()}a(ne,"hydrate");export{Ge as IsEmpty,_ as MyApp,we as Navigate,Ye as NavigateTo,Be as Route,Ze as addSigment,ze as batch,ee as createEffect,Qe as createElement,qe as createGlobalSignal,Xe as createSigment,fe as createSignal,Ie as createTemplate,et as fetchCache,Ue as getGlobalSignal,D as getVirtualElementById,qe as globalSignal,D as gve,se as gvec,I as h,ae as hydrateComponent,Ke as loadFunc,Oe as loadRunFunc,Pe as memoizeFunc,nt as mount,$e as onPaint,tt as paintFinish,ue as parsePath,ie as rpc,pe as sig,pe as signal,Je as store,Ue as useGlobalSignal};
package/dist/ssr.js CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
- import g from"fs";import h from"fs/promises";import a from"path";import{pathToFileURL as R,fileURLToPath as q}from"url";import{execSync as v}from"child_process";import{createRequire as $}from"module";var C=$(import.meta.url),M=q(import.meta.url),ie=a.dirname(M),I={COMPONENTS_PATH:"src/components",HTML_FOLDER_PATH:"src/html",OUT_DIR:"dist"},E=a.resolve(process.cwd(),"ssr.config.js"),j={};try{await g.promises.access(E);let e=await import(R(E).href);j=e.default||e}catch{console.warn("\u26A0\uFE0F No ssr.config.js found, using defaults")}var f={...I,...j};function U(){return parseInt(process.versions.node.split(".")[0],10)<20?"4":"latest"}function P(e,t="latest"){try{C.resolve(e),console.log(`\u2705 ${e} is already installed.`)}catch{console.log(`\u{1F4E6} ${e} not found, installing ${t}...`),v(`npm install ${e}@${t}`,{stdio:"inherit"}),console.log(`\u2705 ${e} installed successfully.`),console.log("\u{1F501} Restarting script to load newly installed modules..."),v(`node "${M}"`,{stdio:"inherit"}),process.exit()}}P("vite",U());P("jsdom");var G=C.resolve("vite"),T=await import(R(G).href),{build:V}=T.build?T:T.default,Y=f.COMPONENTS_PATH.split("/")[0]||f.COMPONENTS_PATH,x=f.OUT_DIR.split("/")[0]||f.OUT_DIR,B=a.resolve("./"+Y),b=a.resolve("./"+x);g.mkdirSync(b,{recursive:!0});function J(e){let t="";for(;e>=0;)t=String.fromCharCode(e%26+65)+t,e=Math.floor(e/26)-1;return t}async function W(){await V({build:{minify:!0,rollupOptions:{input:a.join(B,"Main.js"),output:{dir:b,entryFileNames:"bundle.js",chunkFileNames:"chunks/chunk-[name]-[hash].js",assetFileNames:"assets/[name]-[hash][extname]"}}},plugins:[{name:"component-map-generator",generateBundle(e,t){let r={},o={},n=0;for(let i of Object.values(t))if(i.type==="chunk"){let s=J(n++);r[i.name]=s,o[s]=i.name}let c={...r,...o},m=`
2
+ import g from"fs";import y from"fs/promises";import a from"path";import{pathToFileURL as R,fileURLToPath as k}from"url";import{execSync as v}from"child_process";import{createRequire as $}from"module";var C=$(import.meta.url),j=k(import.meta.url),ae=a.dirname(j),I={COMPONENTS_PATH:"src/components",HTML_FOLDER_PATH:"src/html",OUT_DIR:"dist"},E=a.resolve(process.cwd(),"ssr.config.js"),M={};try{await g.promises.access(E);let e=await import(R(E).href);M=e.default||e}catch{console.warn("\u26A0\uFE0F No ssr.config.js found, using defaults")}var f={...I,...M};function U(){return parseInt(process.versions.node.split(".")[0],10)<20?"4":"latest"}function P(e,t="latest"){try{C.resolve(e),console.log(`\u2705 ${e} is already installed.`)}catch{console.log(`\u{1F4E6} ${e} not found, installing ${t}...`),v(`npm install ${e}@${t}`,{stdio:"inherit"}),console.log(`\u2705 ${e} installed successfully.`),console.log("\u{1F501} Restarting script to load newly installed modules..."),v(`node "${j}"`,{stdio:"inherit"}),process.exit()}}P("vite",U());P("jsdom");var B=C.resolve("vite"),T=await import(R(B).href),{build:G}=T.build?T:T.default,V=f.COMPONENTS_PATH.split("/")[0]||f.COMPONENTS_PATH,Y=f.OUT_DIR.split("/")[0]||f.OUT_DIR,x=a.resolve("./"+V),b=a.resolve("./"+Y);g.mkdirSync(b,{recursive:!0});function J(e){let t="";for(;e>=0;)t=String.fromCharCode(e%26+65)+t,e=Math.floor(e/26)-1;return t}async function W(){await G({build:{minify:!0,rollupOptions:{input:a.join(x,"Main.js"),output:{dir:b,entryFileNames:"bundle.js",chunkFileNames:"chunks/chunk-[name]-[hash].js",assetFileNames:"assets/[name]-[hash][extname]"}}},plugins:[{name:"component-map-generator",generateBundle(e,t){let r={},n={},o=0;for(let i of Object.values(t))if(i.type==="chunk"){let s=J(o++);r[i.name]=s,n[s]=i.name}let c={...r,...n},p=`
3
3
 
4
4
  // --- bidirectional component map ---
5
5
  const rvs_map_sigment = ${JSON.stringify(c,null,2)};
6
6
  export { rvs_map_sigment };
7
- `;g.writeFileSync(a.join(b,"component-map.json"),JSON.stringify(c,null,2));let l=Object.values(t).find(i=>i.type==="chunk"&&i.isEntry);l&&(l.code+=m),console.log("\u2705 forward map saved to component-map.json"),console.log("\u2705 bidirectional rvs_map_sigment embedded into bundle.js")}}]}),console.log("\u2705 Build completed! bundle.js + chunks are ready in dist/")}var{createServer:z}=await import("vite"),{JSDOM:O}=await import("jsdom"),A=f.HTML_FOLDER_PATH,D=f.COMPONENTS_PATH,L=f.OUT_DIR;async function F(e){let t=[];for(let r of await h.readdir(e,{withFileTypes:!0})){let o=a.join(e,r.name);r.isDirectory()?r.name!=="layouts"&&t.push(...await F(o)):r.isFile()&&r.name.endsWith(".html")&&t.push(o)}return t}function H(e,t={}){let r=g.readdirSync(e,{withFileTypes:!0});for(let o of r){let n=a.join(e,o.name);if(o.isDirectory())H(n,t);else if(o.isFile()&&o.name.endsWith(".js")){let m=a.basename(o.name,".js").toLowerCase();t[m]="/"+n.replace(/\\/g,"/")}}return t}var K=H(D);async function Q(e,t,r,o={}){globalThis.__CURRENT_COMPONENT__=t,globalThis.__SSR_SIGNAL_REGISTRY__||={},globalThis.__HANDLER_REGISTRY__||={};let n=K[t.toLowerCase()];if(!n)throw new Error(`Component "${t}" not found in ${D}`);let c=await e.ssrLoadModule(n),m=typeof c.default=="function"?await c.default.call(r.defaultView,o):`Missing render fn in ${t}`,l=r.createElement("div");l.innerHTML=m.trim();let i=null;for(let d of l.childNodes)if(d.nodeType===1){i=d;break}i&&i.setAttribute("data-component",t);let s=r.createDocumentFragment();for(;l.firstChild;)s.appendChild(l.firstChild);return s}async function X(e,t){globalThis.__SSR_SIGNAL_REGISTRY__={},globalThis.__HANDLER_REGISTRY__={},globalThis.__SSR_EVENT_MAP__={};let o=new O(await h.readFile(t,"utf-8")).window.document,n,c=o.querySelector("layout");if(c){let s=c.getAttribute("data-layout");if(!s)throw new Error(`No data-layout in ${t}`);let d=a.resolve(A,s),u=await h.readFile(d,"utf-8");n=new O(u).window.document,c.remove();let p=o.querySelector("description")?.getAttribute("data-description");p&&n.querySelector('meta[name="description"]')?.setAttribute("content",p);let N=o.querySelector("keywords")?.getAttribute("data-keywords");N&&n.querySelector('meta[name="keywords"]')?.setAttribute("content",N),o.querySelectorAll("[data-part]").forEach(y=>{let w=y.getAttribute("data-part"),S=n.querySelector(`[data-part="${w}"]`);if(S){S.innerHTML="";for(let k of y.childNodes)S.appendChild(n.importNode(k,!0))}}),o.querySelectorAll("script[type='module']").forEach(y=>{let w=y.getAttribute("src");w&&!n.querySelector(`script[src="${w}"]`)&&n.body.appendChild(y.cloneNode(!0))})}else n=o;let m=n.querySelectorAll("[data-component][runAtServer]");for(let s of m){let d=s.getAttribute("data-component"),u={};for(let p of s.attributes)p.name.startsWith("data-prop-")&&(u[p.name.slice(10)]=p.value);let _=await Q(e,d,n,u);s.replaceWith(_)}let l=a.join(L,"component-map.json"),i=JSON.parse(await h.readFile(l,"utf-8"));return n.querySelectorAll("[data-component]").forEach(s=>{let d=s.getAttribute("data-component"),u=Object.keys(i).find(_=>_.toLowerCase()===d.toLowerCase());u&&(console.log("componentMap",i[u]),s.setAttribute("data-component",i[u]))}),n.querySelectorAll("layout, description, keywords").forEach(s=>s.remove()),`<!DOCTYPE html>
8
- `+n.documentElement.outerHTML}async function Z(){let e=await z({server:{middlewareMode:!0},root:process.cwd(),ssr:{noExternal:!0}}),t=await F(A);for(let r of t){let o=a.join(L,a.relative(A,r));await h.mkdir(a.dirname(o),{recursive:!0}),await h.writeFile(o,await X(e,r),"utf-8")}await e.close()}(async()=>{try{await W(),await Z().catch(e=>{console.error(e),process.exit(1)}),console.log("\u{1F389} All components built and HTML rendered successfully!")}catch(e){console.error("\u274C Build failed:",e),process.exit(1)}})();
7
+ `;g.writeFileSync(a.join(b,"component-map.json"),JSON.stringify(c,null,2));let l=Object.values(t).find(i=>i.type==="chunk"&&i.isEntry);l&&(l.code+=p),console.log("\u2705 forward map saved to component-map.json"),console.log("\u2705 bidirectional rvs_map_sigment embedded into bundle.js")}}]}),console.log("\u2705 Build completed! bundle.js + chunks are ready in dist/")}var{createServer:z}=await import("vite"),{JSDOM:O}=await import("jsdom"),A=f.HTML_FOLDER_PATH,D=f.COMPONENTS_PATH,L=f.OUT_DIR;async function F(e){let t=[];for(let r of await y.readdir(e,{withFileTypes:!0})){let n=a.join(e,r.name);r.isDirectory()?r.name!=="layouts"&&t.push(...await F(n)):r.isFile()&&r.name.endsWith(".html")&&t.push(n)}return t}function H(e,t={}){let r=g.readdirSync(e,{withFileTypes:!0});for(let n of r){let o=a.join(e,n.name);if(n.isDirectory())H(o,t);else if(n.isFile()&&n.name.endsWith(".js")){let p=a.basename(n.name,".js").toLowerCase();t[p]="/"+o.replace(/\\/g,"/")}}return t}var K=H(D);async function Q(e,t,r,n={}){globalThis.__CURRENT_COMPONENT__=t,globalThis.__SSR_SIGNAL_REGISTRY__||={},globalThis.__HANDLER_REGISTRY__||={};let o=K[t.toLowerCase()];if(!o)throw new Error(`Component "${t}" not found in ${D}`);let c=await e.ssrLoadModule(o),p=typeof c.default=="function"?await c.default.call(r.defaultView,n):`Missing render fn in ${t}`,l=r.createElement("div");l.innerHTML=p.trim();let i=null;for(let u of l.childNodes)if(u.nodeType===1){i=u;break}i&&i.setAttribute("data-component",t);let s=r.createDocumentFragment();for(;l.firstChild;)s.appendChild(l.firstChild);return s}async function X(e,t){globalThis.__SSR_SIGNAL_REGISTRY__={},globalThis.__HANDLER_REGISTRY__={},globalThis.__SSR_EVENT_MAP__={};let n=new O(await y.readFile(t,"utf-8")).window.document,o,c=n.querySelector("layout");if(c){let s=c.getAttribute("data-layout");if(!s)throw new Error(`No data-layout in ${t}`);let u=a.resolve(A,s),m=await y.readFile(u,"utf-8");o=new O(m).window.document,c.remove();let h=n.querySelector("description")?.getAttribute("data-description");h&&o.querySelector('meta[name="description"]')?.setAttribute("content",h);let N=n.querySelector("keywords")?.getAttribute("data-keywords");if(N&&o.querySelector('meta[name="keywords"]')?.setAttribute("content",N),n.querySelectorAll("[data-part]").forEach(d=>{let w=d.getAttribute("data-part"),S=o.querySelector(`[data-part="${w}"]`);if(S){S.innerHTML="";for(let q of d.childNodes)S.appendChild(o.importNode(q,!0))}}),n.querySelectorAll("script[type='module']").forEach(d=>{let w=d.getAttribute("src");w&&!o.querySelector(`script[src="${w}"]`)&&o.body.appendChild(d.cloneNode(!0))}),!o.querySelector(`script[type='module'][src="/bundle.js"]`)){let d=o.createElement("script");d.type="module",d.src="/bundle.js",o.body.appendChild(d)}}else o=n;let p=o.querySelectorAll("[data-component][runAtServer]");for(let s of p){let u=s.getAttribute("data-component"),m={};for(let h of s.attributes)h.name.startsWith("data-prop-")&&(m[h.name.slice(10)]=h.value);let _=await Q(e,u,o,m);s.replaceWith(_)}let l=a.join(L,"component-map.json"),i=JSON.parse(await y.readFile(l,"utf-8"));return o.querySelectorAll("[data-component]").forEach(s=>{let u=s.getAttribute("data-component"),m=Object.keys(i).find(_=>_.toLowerCase()===u.toLowerCase());m&&(console.log("componentMap",i[m]),s.setAttribute("data-component",i[m]))}),o.querySelectorAll("layout, description, keywords").forEach(s=>s.remove()),`<!DOCTYPE html>
8
+ `+o.documentElement.outerHTML}async function Z(){let e=await z({server:{middlewareMode:!0},root:process.cwd(),ssr:{noExternal:!0}}),t=await F(A);for(let r of t){let n=a.join(L,a.relative(A,r));await y.mkdir(a.dirname(n),{recursive:!0}),await y.writeFile(n,await X(e,r),"utf-8")}await e.close()}(async()=>{try{await W(),await Z().catch(e=>{console.error(e),process.exit(1)}),console.log("\u{1F389} All components built and HTML rendered successfully!")}catch(e){console.error("\u274C Build failed:",e),process.exit(1)}})();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sigment",
3
- "version": "1.3.8",
3
+ "version": "1.4.0",
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": {
@@ -38,11 +38,19 @@
38
38
  "engines": {
39
39
  "node": ">=14.8.0"
40
40
  },
41
- "keywords": [
42
- "Javascript",
43
- "Vanilla",
44
- "Reactive",
45
- "Sigment"
41
+ "keywords": [
42
+ "javascript",
43
+ "vanilla",
44
+ "reactive",
45
+ "signals",
46
+ "state-management",
47
+ "dom-performance",
48
+ "no-vdom",
49
+ "lightweight-framework",
50
+ "batch-rendering",
51
+ "sigment",
52
+ "ui-engine",
53
+ "fast-dom"
46
54
  ],
47
55
  "bugs": {
48
56
  "url": "https://github.com/sigmentjs/basic-sigment-typescript-vite/issues"
@@ -1 +1 @@
1
- throw new Error('@wappaa/jv is ESM-only. Use import instead of require.');
1
+ throw new Error('sigment is ESM-only. Use import instead of require.');
package/types/index.d.ts CHANGED
@@ -38,7 +38,7 @@ export declare const MyApp: {
38
38
  maxCacheSize: number;
39
39
  setRoute: (routes: RoutesMap) => void;
40
40
  route: RoutesMap | null;
41
- setloadAtRunTime: (loadAtRunTime: LoadAtRunTime) => void;
41
+ setloadAtRunTime: (loadAtRunTime: true | LoadAtRunTime) => void; // updated
42
42
  loadAtRunTime: LoadAtRunTime | null;
43
43
  setStopPropagation: (flag: boolean) => void;
44
44
  stopPropagation: boolean;
@@ -53,7 +53,6 @@ export type LoadAtRunTime = {
53
53
 
54
54
 
55
55
 
56
-
57
56
  /**
58
57
  * Creates a reactive effect that runs the given function and tracks dependencies.
59
58
  */
@@ -144,10 +143,7 @@ export declare function parsePath(
144
143
  ): Promise<HTMLElement>;
145
144
 
146
145
 
147
- /**
148
- * Clears cached component for a given component name.
149
- */
150
- export declare function clearComponentCache(componentName: string): void;
146
+
151
147
 
152
148
  export declare function createGlobalSignal<T>(key: string, initialValue: T): [() => T, (v: T) => void];
153
149
 
@@ -218,40 +214,75 @@ export { signal as sig };
218
214
  export declare function store<T extends object>(value: T): T;
219
215
 
220
216
 
221
-
222
217
  /**
223
- * Function gve creates an HTML element with the given name.
218
+ * Sigment UI Engine - Type Definitions
224
219
  */
225
- export declare function gve(name: string): HTMLElement | null;
226
- export { gve as getVirtualElementById };
227
-
228
-
229
-
230
- export function gve(name: string): HTMLElement | null;
231
-
232
- export { gve as getVirtualElementById };
233
220
 
221
+ /**
222
+ * Result of the createTemplate processing.
223
+ * Acts as a blueprint for high-speed batch rendering.
224
+ */
225
+ export interface SigmentTemplate {
226
+ element: HTMLElement;
227
+ paths: { type: string; index: number }[];
228
+ }
234
229
 
230
+ /**
231
+ * SigmentElement
232
+ * A standard HTMLElement enhanced with Sigment's high-performance methods.
233
+ */
234
+ export type SigmentElement = HTMLElement & {
235
+
236
+ /** Removes the element from the DOM and clears it from Sigment's internal data maps. */
237
+ destroy(): void;
238
+
239
+ /** Swaps positions with another element in the same container by target index. */
240
+ swapWith(targetIdx: number): SigmentElement;
241
+
242
+ /** Updates the content of a specific Node (TextNode) within the element. */
243
+ updateVal(nodeIdx: number, value: string | number): void;
244
+
245
+ /** Appends text to the existing content of a specific Node within the element. */
246
+ addVal(nodeIdx: number, value: string | number): void;
247
+
248
+ /** (For containers) Removes all children and clears associated internal data maps. */
249
+ clear(): void;
250
+
251
+ /** (For containers) Retrieves a child element by its ID (string) or current index (number). */
252
+ get(idOrIdx: string | number): SigmentElement | null;
253
+ };
235
254
 
236
255
  /**
237
- * Sets a cookie; value can be string or object (will be JSON.stringified).
256
+ * Core Functions
238
257
  */
239
- export declare function setCookie(k: string, v: any, t?: number): void;
240
258
 
241
259
  /**
242
- * Gets a cookie by key, returns string, parsed object, or null.
260
+ * Scans an element or template and creates a Blueprint for fast row generation.
261
+ * It maps all "?" placeholders found in TextNodes.
243
262
  */
244
- export declare function getCookie(k: string): any;
263
+ export function createTemplate(el: HTMLElement | HTMLTemplateElement): SigmentTemplate | null;
245
264
 
246
265
  /**
247
- * Sets localStorage item; value can be string, object, or HTMLElement (stored as outerHTML).
266
+ * Selects an element from the DOM and upgrades it with Sigment capabilities.
248
267
  */
249
- export declare function setStorage(key: string, value: any): void;
268
+ export function gve(id: string | HTMLElement): SigmentElement | null;
250
269
 
251
270
  /**
252
- * Gets localStorage item; parses JSON or returns string or HTMLElement-like object.
271
+ * Performs high-speed, chunked rendering of large datasets into a container.
272
+ * @param data - The raw data array.
273
+ * @param templateStructure - The blueprint object returned by createTemplate.
274
+ * @param containerId - The ID of the target container element (e.g., 'tbody').
275
+ * @param chunkSize - Number of elements to render per frame (default: 1000).
276
+ * @param mode - 'false' to clear container before rendering, 'true' to append.
253
277
  */
254
- export declare function getStorage(key: string): any;
278
+ export function batch(
279
+ data: any[],
280
+ templateStructure: SigmentTemplate,
281
+ containerId: string,
282
+ chunkSize?: number,
283
+ mode?: boolean
284
+ ): void;
285
+
255
286
 
256
287
  /**
257
288
  * Hyperscript-style function to create elements or components.
@@ -616,16 +647,7 @@ export function onPaint(fn: () => void): void;
616
647
  */
617
648
  export function paintFinish(fn: () => void): void;
618
649
 
619
- /**
620
- * Updates the DOM element matching the selector with the given node,
621
- * only if needed.
622
- * @param target - A CSS selector string for the target element.
623
- * @param node - The new DOM Node to compare or replace.
624
- */
625
- export function updateNodeIfNeeded(
626
- target: string,
627
- node: Node
628
- ): void;
650
+
629
651
 
630
652
 
631
653