@nordcraft/runtime 1.0.78 → 1.0.79

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.
@@ -4,5 +4,5 @@ var Go=Object.create;var De=Object.defineProperty;var Qo=Object.getOwnPropertyDe
4
4
 
5
5
  `,`\r
6
6
  \r
7
- `],componentData:h,workflowCallback:E})}async function O({api:f,res:S,performance:y,streamType:h,useTextDecoder:E,parseChunk:R,parseChunksForData:N,delimiters:L,componentData:M,workflowCallback:q}){let I={chunks:[],currentChunk:"",add(G){let W=R(G);this.chunks.push(W),W&&(r.dataSignal.set({...r.dataSignal.get(),Apis:{...r.dataSignal.get().Apis,[f.name]:{isLoading:!0,data:N(this.chunks),error:null,response:{headers:Y(S.headers)}}}}),(f.client?.onMessage?.actions??[]).length>0&&i({eventName:"message",api:f,data:{body:W},componentData:M,workflowCallback:q}))},processChunk(G){let W=L?.find(Re=>G.includes(Re)),Gr=this.currentChunk+G,Qr=W?Gr.split(W):[Gr];this.currentChunk=Qr.pop()??"",Qr.forEach(Re=>this.add(Re))}},ee=E?S.body?.pipeThrough(new TextDecoderStream).getReader():S.body?.getReader();for(;ee;){let{done:G,value:W}=await ee.read();if(G)break;L?I.processChunk(W):I.add(W)}I.currentChunk&&I.add(I.currentChunk);let de={isLoading:!1,data:I.chunks,error:null,response:{status:S.status,headers:Y(S.headers)}};try{if(h==="json"){let G=JSON.parse(I.chunks.join(""));de.data=G}else h==="text"&&(de.data=I.chunks.join(""))}catch{throw new Error("Error occurred while parsing the json chunk.",{cause:I.chunks.join("")})}return k({api:f,apiStatus:de,componentData:M,performance:y,workflowCallback:q})}function k({api:f,apiStatus:S,componentData:y,performance:h,workflowCallback:E}){h.responseEnd=Date.now();let R={body:S.data,status:S.response?.status,headers:S.response?.headers??void 0};ao({apiName:f.name,response:{body:R.body,ok:!!(!S.error&&S.response?.status&&S.response.status<400),status:R.status,headers:R.headers},formulaContext:s(f,y),errorFormula:f.isError,performance:h})?(!R.body&&S.error&&(R.body=S.error),p({api:f,componentData:y,data:R,performance:h}),i({eventName:"failed",api:f,componentData:y,data:R,workflowCallback:E})):(u({api:f,componentData:y,data:R,performance:h}),i({eventName:"success",api:f,componentData:y,data:R,workflowCallback:E}))}function F(f){return Yr(f,[["client","onCompleted"],["client","onFailed"],["client","onMessage"],["service"],["server","ssr"]])}let T;return T=r.dataSignal.map(f=>{let S=s(n,f),y=a(n,f);return{request:y,api:F(n),headers:Array.from(y.requestSettings.headers.entries()),autoFetch:n.autoFetch?b(n.autoFetch,S):!1,proxy:b(n.server?.proxy?.enabled.formula,S)}}),T.subscribe(async f=>{let{url:S,requestSettings:y}=f.request,h=D(n.autoFetch)&&(n.autoFetch.type!=="value"||n.autoFetch.value===!0)&&(window?.__toddle?.isPageLoaded??!1)===!1?r.toddle.pageState.Apis?.[no(S,y)]:void 0;h?h.error?p({api:n,data:{body:h.error,status:h.response?.status,headers:h.response?.headers??void 0},performance:{requestStart:h.response?.performance?.requestStart??null,responseStart:h.response?.performance?.responseStart??null,responseEnd:h.response?.performance?.responseEnd??null},componentData:t}):u({api:n,data:{body:h.data,status:h.response?.status,headers:h.response?.headers??void 0},performance:{requestStart:h.response?.performance?.requestStart??null,responseStart:h.response?.performance?.responseStart??null,responseEnd:h.response?.performance?.responseEnd??null},componentData:t}):b(n.autoFetch,s(n,t))?await d({api:n,url:S,requestSettings:y,componentData:t}):r.dataSignal.get().Apis?.[n.name]||r.dataSignal.update(E=>({...E,Apis:{...E.Apis??{},[n.name]:{isLoading:!1,data:null,error:null}}}))}),{fetch:({actionInputs:f,actionModels:S,componentData:y,workflowCallback:h})=>{let E=Object.entries(f??{}).reduce((M,[q,I])=>(I!==null&&typeof I=="object"&&"formula"in I?M[q]=I:M[q]={formula:{type:"value",value:I}},M),{}),R={...n,inputs:{...n.inputs,...E},client:{...n.client,parserMode:n.client?.parserMode??"auto",onCompleted:{trigger:n.client?.onCompleted?.trigger??"success",actions:[...n.client?.onCompleted?.actions??[],...S?.onCompleted??[]]},onFailed:{trigger:n.client?.onFailed?.trigger??"failed",actions:[...n.client?.onFailed?.actions??[],...S?.onFailed??[]]},onMessage:{trigger:n.client?.onMessage?.trigger??"message",actions:[...n.client?.onMessage?.actions??[],...S?.onMessage??[]]}}},{url:N,requestSettings:L}=a(R,y);return d({api:R,url:N,requestSettings:L,componentData:y,workflowCallback:h})},update:(f,S)=>{n=f;let y=s(n,S),h=n.autoFetch&&b(n.autoFetch,y);if(h){let E=a(f,S);T?.set({request:E,api:F(f),autoFetch:h,proxy:b(f.server?.proxy?.enabled.formula,y),headers:Array.from(E.requestSettings.headers.entries())})}},triggerActions:f=>{let S=r.dataSignal.get().Apis?.[n.name];S===void 0||S.data===null&&S.error===null||(S.error?i({eventName:"failed",api:n,data:{body:S.error,status:S.response?.status},componentData:f}):i({eventName:"success",api:n,data:{body:S.data},componentData:f}))},destroy:()=>T?.destroy()}}var Vo=ce(le(),1);var Se=class{batchQueue=[];isProcessing=!1;processBatch(){this.isProcessing||(this.isProcessing=!0,requestAnimationFrame(()=>{for(;this.batchQueue.length>0;)this.batchQueue.shift()?.();this.isProcessing=!1}))}add(t){this.batchQueue.push(t),this.processBatch()}};var Vr=ce(le(),1),Hr=class{value;subscribers;subscriptions;destroying=!1;constructor(t){this.value=t,this.subscribers=new Set,this.subscriptions=[]}get(){return this.value}set(t){if(this.subscribers.size===0){this.value=t;return}if((0,Vr.default)(t,this.value)===!1){this.value=t;for(let r of this.subscribers)r.notify(this.value)}}update(t){this.set(t(this.value))}subscribe(t,r){let o={notify:t,destroy:r?.destroy};return this.subscribers.add(o),t(this.value),()=>{this.subscribers.delete(o)}}destroy(){if(!this.destroying){this.destroying=!0;for(let t of this.subscribers)t.destroy?.();this.subscribers.clear();for(let t of this.subscriptions)t();this.subscriptions.splice(0,this.subscriptions.length),this.destroying=!1}}cleanSubscribers(){for(let t of this.subscribers)t.destroy?.();this.subscribers.clear()}map(t){let r=B(t(this.value));return r.subscriptions.push(this.subscribe(o=>r.set(t(o)),{destroy:()=>r.destroy()})),r}};function B(e){return new Hr(e)}typeof window<"u"&&(window.signal=B,window.deepEqual=Vr.default);var Kr=(e,t)=>{let o=e.split(".").slice(-1)[0],n=parseInt(o),a=parseInt(String(o.split("(")[1]));for(let s of t.children){let i=s.getAttribute("data-id")?.split(".").slice(-1)[0],u=parseInt(String(i));if(u===n&&parseInt(String(i?.split("(")[1]))>a||u>n)return s}return null};function Oo(e,t,r=null){let o=r,n=o?o.previousSibling:e.lastChild;for(let a=t.length-1;a>=0;a--){let s=t[a];s===n?n=s.previousSibling:e.insertBefore(s,o),o=s}}var oe=(e,t)=>D(e)&&D(t)&&!String(e).endsWith(t)?`${e}${t}`:e;var ko=e=>[(e.className??e.class)&&`.${e.className}`,(e.evenChild??e["even-child"]??e["nth-child(even)"])&&":nth-child(even)",(e.firstChild??e["first-child"])&&":first-child",(e.focusWithin??e["focus-within"])&&":focus-within",(e.lastChild??e["last-child"])&&":last-child",e.active&&":active",e.autofill&&":is(:-webkit-autofill, :autofill)",e.checked&&":checked",e.disabled&&":disabled",e.empty&&":empty",e.focus&&":focus",e.hover&&":hover",e.invalid&&":invalid",e.link&&":link",e.visited&&":visited",e["first-of-type"]&&":first-of-type",e["focus-visible"]&&":focus-visible",e["last-of-type"]&&":last-of-type",e["popover-open"]&&":popover-open",e.pseudoElement&&`::${e.pseudoElement}`].filter(Boolean).join("");function Z(e,{componentName:t,nodeId:r,variant:o}={}){let n=`[data-id="${e}"]`;return t&&(n+=`.${t}`),r&&(n+=`\\:${r}`),o&&(n+=ko(o)),n}var Ce=e=>e.formulas&&Object.values(e.formulas).some(({exposeInContext:t})=>t)||e.workflows&&Object.values(e.workflows).some(({exposeInContext:t})=>t);function No(e,t,r){Object.entries(t.contexts??{}).forEach(([o,n])=>{let a=r.providers[[r.package,o].filter(D).join("/")];if(a)n.formulas.forEach(s=>{let l=a.formulaDataSignals[s];if(!l){console.warn(`Component error(${t.name}): Provider ${o} does not expose a formula named "${s}". Available formulas are: ["${Object.keys(a.formulaDataSignals).join('", "')}"]`);return}l.subscribe(i=>{e.update(u=>({...u,Contexts:{...u.Contexts,[o]:{...u.Contexts?.[o],[s]:i}}}))})});else if(!a&&r.env.runtime==="preview"&&r.toddle._preview){let s=r.components?.find(u=>u.name===[r.package,o].filter(D).join("/"));if(!s){console.error(`Component error(${t.name}): Could not find provider "${o}". No such component exist.`);return}let[,l]=o.split("/").reverse(),i={data:{Attributes:$(s.attributes??{},([u,p])=>[u,p.testValue])},component:s,root:r?.root,formulaCache:{},package:l??r?.package,toddle:r.toddle,env:r.env};s.route&&(i.data["URL parameters"]={...Object.fromEntries(s.route.path.filter(u=>u.type==="param").map(u=>[u.name,u.testValue])),...$(s.route.query,([u,{testValue:p}])=>[u,p])}),i.data.Variables=$(s.variables??{},([u,p])=>[u,b(p.initialValue,i)]),e.update(u=>({...u,Contexts:{...u.Contexts,[o]:Object.fromEntries(n.formulas.map(p=>{let d=s.formulas?.[p];return d?[p,b(d.formula,i)]:(console.warn(`Component error(${t.name}): Could not find formula "${p}" in provider "${o}"`),[p,null])}))}}))}})}function jo(){window.logState=()=>{console.table(Object.entries(window.__components??{}).map(([e,t])=>({name:e,...t.get()})))}}function Ee(e,t){window.__components||(window.__components={}),window.__components[e.name]=t}function To(e){return D(e.formulas)?$(e.formulas,([t,r])=>{let{canCache:o,keys:n}=r.memoize?$l(r.formula,e):{canCache:!1,keys:[]},a,s;return[t,{get:l=>o&&a&&n.every(i=>pe(l,i)===pe(a,i))?{hit:!0,data:s}:{hit:!1},set:(l,i)=>{o&&(a=l,s=i)}}]}):{}}function $l(e,t){let r=[];function o(a){if(a&&(a.type==="path"&&a.path[0]!=="Args"&&r.push(a.path),Array.isArray(a?.arguments)&&a?.arguments.forEach(s=>o(s.formula)),a.type==="record"&&Array.isArray(a.entries)&&a.entries.forEach(s=>o(s.formula)),a.type==="apply")){if(!t.formulas?.[a.name]?.memoize)throw new Error("Cannot memoize");o(t.formulas?.[a.name]?.formula)}}try{o(e)}catch{return{canCache:!1,keys:[]}}let n=[];return r.sort((a,s)=>a.length-s.length).forEach(a=>{n.some(s=>s.every((l,i)=>l===a[i]))||n.push(a)}),{canCache:!0,keys:n}}var we=class e{styleSheet;ruleMap;constructor(t,r){r?this.styleSheet=r:(this.styleSheet=new CSSStyleSheet,t.adoptedStyleSheets.push(this.getStyleSheet()))}registerProperty(t,r,o){this.ruleMap??=this.hydrateFromBase();let n=e.getFullSelector(t,o),a=this.ruleMap.get(n);if(!a){let s=this.styleSheet.insertRule(n,this.styleSheet.cssRules.length),l=this.styleSheet.cssRules[s];for(;l.cssRules&&l.cssRules.length>0;)l=l.cssRules[0];a=l,this.ruleMap.set(n,a)}return s=>{a.style.setProperty(r,s)}}unregisterProperty(t,r,o){if(!this.ruleMap)return;let n=e.getFullSelector(t,o),a=this.ruleMap.get(n);a&&(a.style.removeProperty(r),o?.deepClean&&a.style.length===0&&(this.styleSheet.deleteRule(Array.from(this.ruleMap.keys()).indexOf(n)),this.ruleMap.delete(n)))}getStyleSheet(){return this.styleSheet}hydrateFromBase(){let t=new Map;for(let r=0;r<this.styleSheet.cssRules.length;r++){let o=this.styleSheet.cssRules[r],n=e.selectorFromCSSRule(o);for(;o.cssRules&&o.cssRules.length>0;)o=o.cssRules[0];t.set(n,o)}return t}static selectorFromCSSRule(t){switch(t.constructor.name){case"CSSStyleRule":return`${t.selectorText} { ${Array.from(t.cssRules).map(e.selectorFromCSSRule).join(", ")}}`;case"CSSStartingStyleRule":return`@starting-style { ${Array.from(t.cssRules).map(e.selectorFromCSSRule).join(", ")}}`;case"CSSMediaRule":return`@media ${t.media.mediaText} { ${Array.from(t.cssRules).map(e.selectorFromCSSRule).join(", ")}}`;case"CSSNestedDeclarations":return"";default:return console.warn(`Unsupported CSS rule type: ${t.constructor.name}. Returning empty selector.`),""}}static getFullSelector(t,r){let o=t+(r?.startingStyle?" { @starting-style { }}":" { }");return r?.mediaQuery&&(o=`@media (${Object.entries(r.mediaQuery).map(([n,a])=>`${n}: ${a}`).filter(Boolean).join(") and (")}) { ${o}}`),o}};var Wr;function ne({selector:e,customPropertyName:t,signal:r,variant:o,root:n,runtime:a}){Wr??=new we(n,n.getElementById(so)?.sheet),r.subscribe(Wr.registerProperty(e,t,o),{destroy:()=>{Wr?.unregisterProperty(e,t,{deepClean:a==="preview",mediaQuery:o?.mediaQuery,startingStyle:o?.startingStyle})}})}function Po({node:e,path:t,dataSignal:r,ctx:o,parentElement:n,instance:a,namespace:s}){let l=[o.package,e.name].filter(D).join("/"),i=o.components?.find(A=>A.name===l);if(!i)return console.warn(`Could not find component "${l}" for component "${o.component.name}". Available components are: ["${o.components.map(A=>A.name).join('", "')}"]`),[];let u=r.map(A=>$(e.attrs,([O,k])=>[O,k?.type!=="value"?b(k,{data:A,component:o.component,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env}):k?.value]));Object.entries(e.customProperties??{}).forEach(([A,O])=>ne({selector:Z(t,{componentName:o.component.name,nodeId:e.id}),signal:r.map(k=>oe(b(O.formula,{data:k,component:o.component,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env}),O.unit)),customPropertyName:A,root:o.root,runtime:o.env.runtime})),e.variants?.forEach(A=>{Object.entries(A.customProperties??{}).forEach(([O,k])=>ne({selector:Z(t,{componentName:o.component.name,nodeId:e.id,variant:A}),signal:r.map(F=>oe(b(k.formula,{data:F,component:o.component,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env}),k.unit)),customPropertyName:O,variant:A,root:o.root,runtime:o.env.runtime}))});let p=B({Location:r.get().Location,Attributes:u.get(),Apis:$(i.apis??{},([A,O])=>[A,{data:null,isLoading:!!(O.autoFetch&&b(O.autoFetch,{data:r.get(),component:i,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env})),error:null}])});No(p,i,o),p.update(A=>({...A,Variables:$(i.variables??{},([O,k])=>[O,b(k.initialValue,{data:p.get(),component:i,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env})])})),Ee(i,p);let d=new AbortController;p.subscribe(()=>{},{destroy:()=>d.abort(`Component ${i.name} unmounted`)});let c=To(i),m={};be(Object.entries(i.apis??{})).forEach(([A,O])=>{he(O)?m[A]=ve(O,{...o,apis:m,component:i,dataSignal:p,abortSignal:d.signal,isRootComponent:!1,formulaCache:c,package:e.package??o.package,triggerEvent:(k,F)=>{let T=Object.values(e.events).find(f=>f.trigger===k);T&&T.actions?.forEach(f=>x(f,{...r.get(),Event:F},o))}}):m[A]=Ae({apiRequest:O,ctx:{...o,apis:m,component:i,dataSignal:p,abortSignal:d.signal,isRootComponent:!1,formulaCache:c,package:e.package??o.package,triggerEvent:(k,F)=>{let T=Object.values(e.events).find(f=>f.trigger===k);T&&T.actions?.forEach(f=>x(f,{...r.get(),Event:F},o))}},componentData:p.get()})}),Object.values(m).filter(re).forEach(A=>{A.triggerActions(p.get())});let v=(A,O)=>{let k=Object.values(e.events).find(F=>F.trigger===A);k&&k.actions?.forEach(F=>x(F,{...r.get(),Event:O},o))},C=o.providers;if(Ce(i)){let A=Object.fromEntries(Object.entries(i.formulas??{}).filter(([,O])=>O.exposeInContext).map(([O,k])=>[O,p.map(F=>b(k.formula,{data:F,component:i,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env}))]));C={...C,[i.name]:{component:i,formulaDataSignals:A,ctx:{...o,apis:m,component:i,dataSignal:p,abortSignal:d.signal,triggerEvent:v}}}}let w={};for(let A=0;A<e.children.length;A++){let O=e.children[A],F=o.component.nodes?.[O]?.slot??"default";w[F]=w[F]??[],w[F].push({id:O,path:`${t}.${A}[${F}]`,dataSignal:r,ctx:{...o,package:e.package??o.package}})}return o.stores.theme.subscribe(A=>{p.update(O=>({...O,Page:{...O.Page,Theme:A}}))}),u.subscribe(A=>p.update(O=>({...O,Attributes:A})),{destroy:()=>p.destroy()}),Fe({dataSignal:p,component:i,components:o.components,path:t,root:o.root,isRootComponent:!1,children:w,formulaCache:c,providers:C,stores:o.stores,apis:m,abortSignal:d.signal,package:e.package??o.package,parentElement:n,onEvent:v,toddle:o.toddle,env:o.env,namespace:s,instance:e.id==="root"?{...a,[o.component.name]:"root"}:{[o.component.name]:e.id??""}})}var _l=(e,t)=>{let r=t.length;for(;r;)e=e*33^t.charCodeAt(--r);return e},Io=e=>_l(5381,e),Bl=/(a)(d)/gi;var xo=e=>String.fromCharCode(e+(e>25?39:97));function Lo(e){let t="",r;for(r=Math.abs(e);r>52;r=r/52|0)t=xo(r%52)+t;return(xo(r%52)+t).replace(Bl,"$1-$2")}var Mo=e=>Lo(Io(JSON.stringify(e))),qo=(e,t=!1)=>{let r=e.trim().replace(/\s+/g,"-");return t&&(r=r.replace(/[^a-zA-Z0-9-_]/g,o=>`\\${o}`)),/^[^a-zA-Z]/.test(r)&&(r=`_${r}`),r};function $o(e){if(e instanceof DragEvent)return Array.from(e.dataTransfer?.items??[]).reduce((t,r)=>(t[r.type]=e.dataTransfer?.getData(r.type),t),{})}function _o(e,t,r){return t.component.version===2&&r==="root"?`${t.package??t.toddle.project}-${e.tag}`:e.tag}function Jr(e,t,r){switch(t){case"srcObject":case"src":e instanceof HTMLMediaElement?e[t]=r:e.setAttribute(t,String(r));break;case"value":case"type":{if(e instanceof SVGElement)P(r)&&e.setAttribute(t,String(r));else{let o=r;e instanceof HTMLProgressElement&&(!D(r)||!Number.isFinite(Number(r)))&&(o=0),e[t]=P(o)?String(o):void 0}break}case"muted":case"autoplay":e instanceof HTMLMediaElement?e[t]=P(r):e.setAttribute(t,String(r));break;default:P(r)?(e.setAttribute(t,String(r)),t==="autofocus"&&document.body.getAttribute("data-mode")!=="design"&&setTimeout(()=>e.focus(),100)):e.removeAttribute(t)}}function Bo({node:e,dataSignal:t,id:r,path:o,ctx:n,namespace:a,instance:s}){let l=_o(e,n,r);switch(l){case"svg":{a="http://www.w3.org/2000/svg";break}case"math":{a="http://www.w3.org/1998/Math/MathML";break}}e.attrs.xmlns?.type==="value"&&(a=String(e.attrs.xmlns.value));let i=a?document.createElementNS(a,l):document.createElement(l);i.setAttribute("data-node-id",r),o&&i.setAttribute("data-id",o),n.isRootComponent===!1&&r!=="root"&&i.setAttribute("data-component",n.component.name);let u=Mo([e.style,e.variants]);i.classList.add(u),s&&r==="root"&&Object.entries(s).forEach(([c,m])=>{i.classList.add(qo(`${c}:${m}`))}),e.classes&&Object.entries(e.classes)?.forEach(([c,{formula:m}])=>{m?t.map(C=>P(b(m,{data:C,component:n.component,formulaCache:n.formulaCache,root:n.root,package:n.package,toddle:n.toddle,env:n.env}))).subscribe(C=>C?i.classList.add(c):i.classList.remove(c)):i.classList.add(c)}),Object.entries(e.attrs).forEach(([c,m])=>{if(!D(m))return;let v,C=()=>{m.type==="value"?Jr(i,c,m?.value):(v=t.map(w=>b(m,{data:w,component:n.component,formulaCache:n.formulaCache,root:n.root,package:n.package,toddle:n.toddle,env:n.env})),v.subscribe(w=>{Jr(i,c,w)}))};c==="autofocus"&&n.env.runtime==="preview"&&n.toddle._preview?n.toddle._preview.showSignal.subscribe(({testMode:w})=>{w?C():(v?.destroy(),i.removeAttribute(c))}):C()}),e["style-variables"]?.forEach(c=>{let{name:m,formula:v,unit:C}=c;t.map(A=>{let O=b(v,{data:A,component:n.component,formulaCache:n.formulaCache,root:n.root,package:n.package,toddle:n.toddle,env:n.env});return C?O+C:O}).subscribe(A=>i.style.setProperty(`--${m}`,A))}),Object.entries(e.customProperties??{}).forEach(([c,{formula:m,unit:v}])=>ne({customPropertyName:c,selector:n.env.runtime==="custom-element"&&n.isRootComponent&&o==="0"?`${Z(o)}, :host`:Z(o),signal:t.map(C=>oe(b(m,{data:C,component:n.component,formulaCache:n.formulaCache,root:n.root,package:n.package,toddle:n.toddle,env:n.env}),v)),root:n.root,runtime:n.env.runtime})),e.variants?.forEach(c=>{Object.entries(c.customProperties??{}).forEach(([m,{formula:v,unit:C}])=>{ne({customPropertyName:m,selector:Z(o,{variant:c}),variant:c,signal:t.map(w=>oe(b(v,{data:w,component:n.component,formulaCache:n.formulaCache,root:n.root,package:n.package,toddle:n.toddle,env:n.env}),C)),root:n.root,runtime:n.env.runtime})})});let p=[];Object.values(e.events).forEach(c=>{c&&p.push([c.trigger,Ul({event:c,dataSignal:t,ctx:n})])}),p.forEach(([c,m])=>{i.addEventListener(c,m,{signal:n.abortSignal})});let d=e.tag.toLocaleLowerCase();if(d==="script"||d==="style"){let c=[];e.children.map(m=>n.component.nodes?.[m]).filter(m=>m?.type==="text").forEach(m=>{if(m.value.type==="value")c.push(String(m.value.value));else{let v=t.map(C=>String(b(m.value,{data:C,component:n.component,formulaCache:n.formulaCache,root:n.root,package:n.package,toddle:n.toddle,env:n.env})));c.push(v)}}),c.every(m=>typeof m=="string")&&(i.textContent=c.join("")),c.filter(m=>typeof m!="string").forEach(m=>{m.subscribe(()=>{i.textContent=c.map(v=>typeof v=="string"?v:v.get()).join("")})})}else{let c=[];e.children.forEach((m,v)=>{c.push(...X({parentElement:i,id:m,path:o+"."+v,dataSignal:t,ctx:n,namespace:a,instance:s}))}),i.append(...c)}return t.subscribe(()=>{},{destroy:()=>{i.parentNode?.removeChild(i)}}),i}var Ul=({event:e,dataSignal:t,ctx:r})=>o=>(e?.actions?.forEach(n=>{if(o instanceof DragEvent&&(o.data=$o(o)),o instanceof ClipboardEvent)try{o.data=Array.from(o.clipboardData?.items??[]).reduce((a,s)=>{try{a[s.type]=JSON.parse(o.clipboardData?.getData(s.type))}catch{a[s.type]=o.clipboardData?.getData(s.type)}return a},{})}catch(a){console.error("Could not get paste data",a)}x(n,{...t.get(),Event:o},r,o)}),!1);function Uo({path:e,node:t,dataSignal:r,ctx:o,parentElement:n,instance:a,namespace:s}){let l=t.name??"default",i=[];if(o.children[l]?i=o.children[l].flatMap(u=>{let p=u.dataSignal.map(d=>d);return r.subscribe(d=>d,{destroy:()=>p.destroy()}),X({...u,dataSignal:p,parentElement:n,ctx:{...u.ctx,providers:o.providers},instance:a,namespace:s})}):i=t.children.flatMap((u,p)=>X({id:u,path:e+"."+p,dataSignal:r,ctx:o,parentElement:n,instance:a,namespace:s})),o.env.runtime==="custom-element"&&o.isRootComponent){let u=document.createElement("slot");return u.setAttribute("name",l),i.forEach(p=>{u.appendChild(p)}),[u]}return i}function Ho({node:e,id:t,path:r,dataSignal:o,namespace:n,ctx:a}){if(n&&n!=="http://www.w3.org/1999/xhtml")return Hl({node:e,dataSignal:o,ctx:a});let{value:s}=e,l=document.createElement("span");return l.setAttribute("data-node-id",t),typeof t=="string"&&l.setAttribute("data-id",r),a.isRootComponent===!1&&l.setAttribute("data-component",a.component.name),l.setAttribute("data-node-type","text"),s.type!=="value"?o.map(u=>String(b(s,{data:u,component:a.component,formulaCache:a.formulaCache,root:a.root,package:a.package,toddle:a.toddle,env:a.env}))).subscribe(u=>{l.innerText=u}):l.innerText=String(s.value),l}function Hl({node:e,dataSignal:t,ctx:r}){let{value:o}=e,n=document.createTextNode("");return o.type!=="value"?t.map(s=>String(b(o,{data:s,component:r.component,formulaCache:r.formulaCache,root:r.root,package:r.package,toddle:r.toddle,env:r.env}))).subscribe(s=>{n.nodeValue=s}):n.nodeValue=String(o.value),n}function X({id:e,dataSignal:t,path:r,ctx:o,namespace:n,parentElement:a,instance:s}){let l=o.component.nodes?.[e];if(!l)return[];let i=({node:d,...c})=>{switch(d.type){case"element":return[Bo({node:d,...c})];case"component":let m=o.components.some(v=>v.name===d.name);return Po({node:{...d,id:e},...c,ctx:{...o,package:d.package??(m?void 0:o.package)},parentElement:a});case"text":return[Ho({...c,node:d})];case"slot":return Uo({...c,node:d})}};function u({node:d,dataSignal:c,id:m,path:v,ctx:C,namespace:w,parentElement:A,instance:O}){let k=!0,F=null,T=c.map(y=>P(b(d.condition,{data:y,component:C.component,formulaCache:C.formulaCache,root:C.root,package:C.package,toddle:C.toddle,env:C.env}))),f=[],S=y=>{if(y&&f.length===0){if(F?.destroy(),F=c.map(E=>E),f.push(...i({node:d,dataSignal:F,path:v,id:m,ctx:C,namespace:w,parentElement:A,instance:O})),k)return;if(!A||C.root.contains(A)===!1){console.error(`Conditional: Parent element does not exist for "${v}" This is likely due to the DOM being modified outside of Nordcraft.`);return}if(A.querySelector(`[data-id="${v}"]`)){console.warn(`Conditional: Element with data-id="${v}" already exists. This is likely due to the DOM being modified outside of Nordcraft`);return}let h=Kr(v,A);for(let E of f)A.insertBefore(E,h)}else y||(F?.destroy(),f.forEach(h=>h.remove()),f.splice(0,f.length))};return T.subscribe(S,{destroy:()=>{F?.destroy()}}),C.env.runtime==="preview"&&C.toddle._preview&&C.toddle._preview.showSignal.subscribe(({displayedNodes:y,testMode:h})=>{y.includes(v)&&!h?S(!0):S(T.get())}),k=!1,f}function p(){let d=!0,c=new Map;return t.map(v=>{let C=b(l?.repeat,{data:v,component:o.component,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env});return typeof C!="object"?[]:Object.entries(C??{})}).subscribe(v=>{let C=new Map;for(let w=0;w<v.length;w++){let[A,O]=v[w],k={...t.get(),ListItem:{...t.get().ListItem?{Parent:t.get().ListItem}:{},Item:O,Index:Number(w),Key:A}},F=l?.repeatKey?b(l.repeatKey,{data:k,component:o.component,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env}):A;C.has(F)&&(console.warn(`Duplicate key "${F}" found in repeat. Fallback to index as key. This will cause a re-render of the duplicated children on every change.`),F=A);let T=c.get(F);if(T)C.set(F,T),T.dataSignal.update(f=>({...f,ListItem:{...t.get().ListItem?{Parent:t.get().ListItem}:{},Item:O,Index:Number(w),Key:A}}));else{let f=B(k),S=t.subscribe(E=>{d||f.update(({ListItem:R})=>({...E,ListItem:R}))},{destroy:()=>f.destroy()}),y={node:l,id:e,dataSignal:f,path:A==="0"?r:`${r}(${A})`,ctx:o,namespace:n,parentElement:a,instance:s},h=l.condition?u(y):i(y);C.set(F,{dataSignal:f,cleanup:S,elements:h})}}if(Array.from(c.entries()).forEach(([w,A])=>{C.has(w)||(A.cleanup(),A.dataSignal.destroy(),A.elements.forEach(O=>O.remove()))}),c=C,!(d||c.size===0)){if(!a||o.root.contains(a)===!1){console.error(`Repeat: Parent element does not exist for ${r}. This is likely due to the DOM being modified outside of Nordcraft.`);return}Oo(a,Array.from(c.values()).flatMap(w=>w.elements),Kr(r,a))}},{destroy:()=>Array.from(c.values()).forEach(v=>{v.cleanup(),v.dataSignal.destroy(),v.elements.forEach(C=>C.remove())})}),d=!1,Array.from(c.values()).flatMap(v=>v.elements)}return l.repeat?p():l.condition?u({node:l,dataSignal:t,ctx:o,id:e,path:r,namespace:n,parentElement:a,instance:s}):i({node:l,dataSignal:t,ctx:o,id:e,path:r,namespace:n,parentElement:a,instance:s})}var Vl=new Se;function Fe({component:e,dataSignal:t,onEvent:r,isRootComponent:o,path:n,children:a,formulaCache:s,components:l,apis:i,abortSignal:u,root:p,providers:d,package:c,stores:m,parentElement:v,instance:C,toddle:w,namespace:A,env:O}){let k={triggerEvent:r,component:e,components:l,dataSignal:t,isRootComponent:o,apis:i,formulaCache:s,children:a,abortSignal:u,root:p,providers:d,stores:m,package:c,toddle:w,env:O},F=X({id:"root",path:n,dataSignal:t,ctx:k,parentElement:v,namespace:A,instance:C});return Vl.add(()=>{let T;e.onAttributeChange?.actions&&e.onAttributeChange.actions.length>0&&t.map(f=>f.Attributes).subscribe(f=>{T&&e.onAttributeChange?.actions?.forEach(S=>{x(S,t.get(),k,new CustomEvent("attribute-change",{detail:Object.entries(f).reduce((y,[h,E])=>((0,Vo.default)(E,T[h])===!1&&e.attributes?.[h]?.name&&(y[e.attributes?.[h]?.name]={current:T[h],new:E}),y),{})}))}),T=f}),e.onLoad?.actions?.forEach(f=>{x(f,t.get(),k)})}),F}var Ko=(e,t,r)=>{let n=e.route?.info?.theme?.formula;if(n&&n.type!=="value")return t.map(()=>b(n,{data:t.get(),component:e,root:document,package:void 0,toddle:window.toddle,env:r}));if(D(n))return B(n.value);{let s=document.cookie.split("; ").find(i=>i.startsWith(`${te}=`))?.split("=")[1]??null,l=B(s);return cookieStore.addEventListener("change",i=>{for(let u of i.changed)u.name===te&&l.set(u.value??null);for(let u of i.deleted)u.name===te&&l.set(null)}),l}};jo();var K,sp=e=>{let t=window.__toddle.component,{params:r,hash:o,query:n}=Jo(t);K={isServer:!1,branchName:window.__toddle.branch,request:void 0,runtime:"page",logErrors:!0},window.toddle=(()=>{let a={},s={},l={},i={isEqual:Wo.default,errors:[],project:window.__toddle.project,branch:window.__toddle.branch,commit:window.__toddle.commit,components:window.__toddle.components,formulas:e?.formulas??{},actions:e?.actions??{},registerAction:(u,p)=>{if(a[u]){console.error("There already exists an action with the name ",u);return}a[u]=p},getAction:u=>a[u],registerFormula:(u,p,d)=>{if(s[u]){console.error("There already exists a formula with the name ",u);return}s[u]=p,d&&(l[u]=d)},getFormula:u=>s[u],getCustomAction:(u,p)=>i.actions[p??window.__toddle.project]?.[u]??i.actions[window.__toddle.project]?.[u],getCustomFormula:(u,p)=>i.formulas[p??window.__toddle.project]?.[u]??i.formulas[window.__toddle.project]?.[u],getArgumentInputData:(u,p,d,c)=>l[u]?.(p,d,c)||c,data:{},locationSignal:B({route:t.route,page:t.page,path:window.location.pathname,params:r,query:n,hash:o}),eventLog:[],pageState:window.__toddle.pageState,env:K};return i})(),Object.entries(Br).forEach(([a,s])=>window.toddle.registerFormula("@toddle/"+a,s.default,"getArgumentInputData"in s?s.getArgumentInputData:void 0)),Object.entries(ze).forEach(([a,s])=>window.toddle.registerAction("@toddle/"+a,s.default))},ip=e=>{let t=window.__toddle.component;if(!e)throw new Error("Cant find root domNode");if(!window.toddle.components)throw new Error("Missing components");window.addEventListener("popstate",()=>{if(!t)return;let{params:i,hash:u,query:p}=Jo(t);window.toddle.locationSignal.update(()=>({route:t?.route,page:t.page,path:window.location.pathname,params:i,query:p,hash:u}))});let r=window.toddle.locationSignal.map(({query:i,params:u})=>({...i,...u})),o=B({...window.toddle.pageState,Variables:$(t.variables??{},([i,u])=>[i,b(u.initialValue,{data:window.toddle.pageState,component:t,formulaCache:{},root:document,package:void 0,toddle:window.toddle,env:K})])});Ee(t,o),r.subscribe(i=>o.update(u=>({...u,"URL parameters":i,Attributes:i})));let n=new AbortController;o.subscribe(()=>{},{destroy:()=>n.abort(`Component ${t.name} unmounted`)});let a={component:t,components:window.toddle.components,root:document,isRootComponent:!0,dataSignal:o,abortSignal:n.signal,children:{},formulaCache:{},providers:{},stores:{theme:Ko(t,o,K)},apis:{},toddle:window.toddle,triggerEvent:(i,u)=>console.info("EVENT FIRED",i,u),package:void 0,env:K};be(Object.entries(t.apis??{})).forEach(([i,u])=>{he(u)?a.apis[i]=ve(u,a):a.apis[i]=Ae({apiRequest:u,ctx:a,componentData:o.get()})}),Object.values(a.apis).filter(re).forEach(i=>{i.triggerActions(o.get())});let s=a.providers;if(Ce(t)){let i=Object.fromEntries(Object.entries(t.formulas??{}).filter(([,u])=>u.exposeInContext).map(([u,p])=>[u,o.map(d=>b(p.formula,{data:d,component:t,formulaCache:a.formulaCache,root:a.root,package:a.package,toddle:window.toddle,env:K}))]));s={...s,[t.name]:{component:t,formulaDataSignals:i,ctx:a}}}a.stores.theme.subscribe(i=>{D(i)?document.documentElement.setAttribute(Ne,i):document.documentElement.removeAttribute(Ne)}),Wl(t,o);let l=Fe({...a,providers:s,path:"0",package:void 0,onEvent:a.triggerEvent,parentElement:e,instance:{}});e.innerText="",l.forEach(i=>{e.appendChild(i)}),window.__toddle.isPageLoaded=!0};function Jo(e){let t=window.location.pathname.split("/").slice(1),r={};e.route?e.route.path.forEach((s,l)=>{s.type==="param"?D(t[l])&&t[l]!==""?r[s.name]=decodeURIComponent(t[l]):r[s.name]=null:r[s.name]=s.name}):r=(Co(e.page??"",{decode:decodeURIComponent})(window.location.pathname)||{params:{}}).params;let[o]=window.location.hash.split("?"),n=Kl(window.location.search),a=Object.keys(e.route?.query??{}).reduce((s,l)=>({...s,[l]:null}),{});return{params:r,hash:o?.slice(1),query:{...a,...n}}}var Kl=e=>Object.fromEntries(e.replace("?","").split("&").filter(t=>t!=="").map(t=>t.split("=").map(decodeURIComponent))),Wl=(e,t)=>{let r=e.route?.info?.language?.formula;r&&r.type!=="value"&&t.map(()=>e?b(r,{data:t.get(),component:e,root:document,package:void 0,toddle:window.toddle,env:K}):null).subscribe(p=>{D(p)&&document.documentElement.lang!==p&&document.documentElement.setAttribute("lang",p)});let n=e.route?.info?.title?.formula;n&&n.type!=="value"&&t.map(()=>e?b(n,{data:t.get(),component:e,root:document,package:void 0,toddle:window.toddle,env:K}):null).subscribe(p=>{D(p)&&document.title!==p&&(document.title=p)});let s=e.route?.info?.description?.formula,l=e.route?.info?.meta,i=s&&s.type!=="value",u=Object.values(l??{}).some(p=>Object.values(p.attrs??{}).some(d=>d.type!=="value"));if(i||u){let p=c=>[...document.getElementsByTagName("meta")].find(m=>m.name===c||m.getAttribute("property")===c)??null,d=(c,m)=>{let v=null;if(D(m))v=document.querySelector(`[data-toddle-id="${m}"]`);else{let C=Object.entries(c.attrs??{}).find(([w])=>["property","name"].includes(w.toLowerCase()))?.[1];D(C)&&(v=p(C))}v||(v=document.createElement(c.tag),D(m)&&v.setAttribute("data-toddle-id",m),document.getElementsByTagName("head")[0].appendChild(v)),Object.entries(c.attrs??{}).forEach(([C,w])=>{e&&v.setAttribute(C,w)})};i&&t.map(c=>e?b(s,{data:c,component:e,root:document,package:void 0,toddle:window.toddle,env:K}):null).subscribe(c=>{if(D(c)){let m=document.getElementsByTagName("meta").namedItem("description");m||(m=document.createElement("meta"),m.name="description"),m.content=c,document.getElementsByTagName("head")[0].appendChild(m),l&&!Object.values(l).some(v=>Object.entries(v.attrs??{}).some(([C,w])=>C.toLowerCase()==="property"&&w.type==="value"&&typeof w.value=="string"&&w.value.toLowerCase()==="og:description"))&&d({tag:"meta",attrs:{property:"og:description",content:c}})}}),u&&Object.entries(l??{}).filter(([c,m])=>Object.values(m.attrs??{}).some(v=>v.type!=="value")).forEach(([c,m])=>{t.map(v=>Object.entries(m.attrs??{}).reduce((w,[A,O])=>e?{...w,[A]:b(O,{data:v,component:e,root:document,package:void 0,toddle:window.toddle,env:K})}:w,{})).subscribe(v=>d({tag:m.tag,attrs:v},c))})}};export{ip as createRoot,sp as initGlobalObject};
7
+ `],componentData:h,workflowCallback:E})}async function O({api:f,res:S,performance:y,streamType:h,useTextDecoder:E,parseChunk:R,parseChunksForData:N,delimiters:L,componentData:M,workflowCallback:q}){let I={chunks:[],currentChunk:"",add(G){let W=R(G);this.chunks.push(W),W&&(r.dataSignal.set({...r.dataSignal.get(),Apis:{...r.dataSignal.get().Apis,[f.name]:{isLoading:!0,data:N(this.chunks),error:null,response:{headers:Y(S.headers)}}}}),(f.client?.onMessage?.actions??[]).length>0&&i({eventName:"message",api:f,data:{body:W},componentData:M,workflowCallback:q}))},processChunk(G){let W=L?.find(Re=>G.includes(Re)),Gr=this.currentChunk+G,Qr=W?Gr.split(W):[Gr];this.currentChunk=Qr.pop()??"",Qr.forEach(Re=>this.add(Re))}},ee=E?S.body?.pipeThrough(new TextDecoderStream).getReader():S.body?.getReader();for(;ee;){let{done:G,value:W}=await ee.read();if(G)break;L?I.processChunk(W):I.add(W)}I.currentChunk&&I.add(I.currentChunk);let de={isLoading:!1,data:I.chunks,error:null,response:{status:S.status,headers:Y(S.headers)}};try{if(h==="json"){let G=JSON.parse(I.chunks.join(""));de.data=G}else h==="text"&&(de.data=I.chunks.join(""))}catch{throw new Error("Error occurred while parsing the json chunk.",{cause:I.chunks.join("")})}return k({api:f,apiStatus:de,componentData:M,performance:y,workflowCallback:q})}function k({api:f,apiStatus:S,componentData:y,performance:h,workflowCallback:E}){h.responseEnd=Date.now();let R={body:S.data,status:S.response?.status,headers:S.response?.headers??void 0};ao({apiName:f.name,response:{body:R.body,ok:!!(!S.error&&S.response?.status&&S.response.status<400),status:R.status,headers:R.headers},formulaContext:s(f,y),errorFormula:f.isError,performance:h})?(!R.body&&S.error&&(R.body=S.error),p({api:f,componentData:y,data:R,performance:h}),i({eventName:"failed",api:f,componentData:y,data:R,workflowCallback:E})):(u({api:f,componentData:y,data:R,performance:h}),i({eventName:"success",api:f,componentData:y,data:R,workflowCallback:E}))}function F(f){return Yr(f,[["client","onCompleted"],["client","onFailed"],["client","onMessage"],["service"],["server","ssr"]])}let T;return T=r.dataSignal.map(f=>{let S=s(n,f),y=a(n,f);return{request:y,api:F(n),headers:Array.from(y.requestSettings.headers.entries()),autoFetch:n.autoFetch?b(n.autoFetch,S):!1,proxy:b(n.server?.proxy?.enabled.formula,S)}}),T.subscribe(async f=>{let{url:S,requestSettings:y}=f.request,h=D(n.autoFetch)&&(n.autoFetch.type!=="value"||n.autoFetch.value===!0)&&(window?.__toddle?.isPageLoaded??!1)===!1?r.toddle.pageState.Apis?.[no(S,y)]:void 0;h?h.error?p({api:n,data:{body:h.error,status:h.response?.status,headers:h.response?.headers??void 0},performance:{requestStart:h.response?.performance?.requestStart??null,responseStart:h.response?.performance?.responseStart??null,responseEnd:h.response?.performance?.responseEnd??null},componentData:t}):u({api:n,data:{body:h.data,status:h.response?.status,headers:h.response?.headers??void 0},performance:{requestStart:h.response?.performance?.requestStart??null,responseStart:h.response?.performance?.responseStart??null,responseEnd:h.response?.performance?.responseEnd??null},componentData:t}):b(n.autoFetch,s(n,t))?await d({api:n,url:S,requestSettings:y,componentData:t}):r.dataSignal.get().Apis?.[n.name]||r.dataSignal.update(E=>({...E,Apis:{...E.Apis??{},[n.name]:{isLoading:!1,data:null,error:null}}}))}),{fetch:({actionInputs:f,actionModels:S,componentData:y,workflowCallback:h})=>{let E=Object.entries(f??{}).reduce((M,[q,I])=>(I!==null&&typeof I=="object"&&"formula"in I?M[q]=I:M[q]={formula:{type:"value",value:I}},M),{}),R={...n,inputs:{...n.inputs,...E},client:{...n.client,parserMode:n.client?.parserMode??"auto",onCompleted:{trigger:n.client?.onCompleted?.trigger??"success",actions:[...n.client?.onCompleted?.actions??[],...S?.onCompleted??[]]},onFailed:{trigger:n.client?.onFailed?.trigger??"failed",actions:[...n.client?.onFailed?.actions??[],...S?.onFailed??[]]},onMessage:{trigger:n.client?.onMessage?.trigger??"message",actions:[...n.client?.onMessage?.actions??[],...S?.onMessage??[]]}}},{url:N,requestSettings:L}=a(R,y);return d({api:R,url:N,requestSettings:L,componentData:y,workflowCallback:h})},update:(f,S)=>{n=f;let y=s(n,S),h=n.autoFetch&&b(n.autoFetch,y);if(h){let E=a(f,S);T?.set({request:E,api:F(f),autoFetch:h,proxy:b(f.server?.proxy?.enabled.formula,y),headers:Array.from(E.requestSettings.headers.entries())})}},triggerActions:f=>{let S=r.dataSignal.get().Apis?.[n.name];S===void 0||S.data===null&&S.error===null||(S.error?i({eventName:"failed",api:n,data:{body:S.error,status:S.response?.status},componentData:f}):i({eventName:"success",api:n,data:{body:S.data},componentData:f}))},destroy:()=>T?.destroy()}}var Vo=ce(le(),1);var Se=class{batchQueue=[];isProcessing=!1;processBatch(){this.isProcessing||(this.isProcessing=!0,requestAnimationFrame(()=>{for(;this.batchQueue.length>0;)this.batchQueue.shift()?.();this.isProcessing=!1}))}add(t){this.batchQueue.push(t),this.processBatch()}};var Vr=ce(le(),1),Hr=class{value;subscribers;subscriptions;destroying=!1;constructor(t){this.value=t,this.subscribers=new Set,this.subscriptions=[]}get(){return this.value}set(t){if(this.subscribers.size===0){this.value=t;return}if((0,Vr.default)(t,this.value)===!1){this.value=t;for(let r of this.subscribers)r.notify(this.value)}}update(t){this.set(t(this.value))}subscribe(t,r){let o={notify:t,destroy:r?.destroy};return this.subscribers.add(o),t(this.value),()=>{this.subscribers.delete(o)}}destroy(){if(!this.destroying){this.destroying=!0;for(let t of this.subscribers)t.destroy?.();this.subscribers.clear();for(let t of this.subscriptions)t();this.subscriptions.splice(0,this.subscriptions.length),this.destroying=!1}}cleanSubscribers(){for(let t of this.subscribers)t.destroy?.();this.subscribers.clear()}map(t){let r=B(t(this.value));return r.subscriptions.push(this.subscribe(o=>r.set(t(o)),{destroy:()=>r.destroy()})),r}};function B(e){return new Hr(e)}typeof window<"u"&&(window.signal=B,window.deepEqual=Vr.default);var Kr=(e,t)=>{let o=e.split(".").slice(-1)[0],n=parseInt(o),a=parseInt(String(o.split("(")[1]));for(let s of t.children){let i=s.getAttribute("data-id")?.split(".").slice(-1)[0],u=parseInt(String(i));if(u===n&&parseInt(String(i?.split("(")[1]))>a||u>n)return s}return null};function Oo(e,t,r=null){let o=r,n=o?o.previousSibling:e.lastChild;for(let a=t.length-1;a>=0;a--){let s=t[a];s===n?n=s.previousSibling:e.insertBefore(s,o),o=s}}var oe=(e,t)=>D(e)&&D(t)&&!String(e).endsWith(t)?`${e}${t}`:e;var ko=e=>[(e.className??e.class)&&`.${e.className}`,(e.evenChild??e["even-child"]??e["nth-child(even)"])&&":nth-child(even)",(e.firstChild??e["first-child"])&&":first-child",(e.focusWithin??e["focus-within"])&&":focus-within",(e.lastChild??e["last-child"])&&":last-child",e.active&&":active",e.autofill&&":is(:-webkit-autofill, :autofill)",e.checked&&":checked",e.disabled&&":disabled",e.empty&&":empty",e.focus&&":focus",e.hover&&":hover",e.invalid&&":invalid",e.link&&":link",e.visited&&":visited",e["first-of-type"]&&":first-of-type",e["focus-visible"]&&":focus-visible",e["last-of-type"]&&":last-of-type",e["popover-open"]&&":popover-open",e.pseudoElement&&`::${e.pseudoElement}`].filter(Boolean).join("");function Z(e,{componentName:t,nodeId:r,variant:o}={}){let n=`[data-id="${e}"]`;return t&&(n+=`.${t}`),r&&(n+=`\\:${r}`),o&&(n+=ko(o)),n}var Ce=e=>e.formulas&&Object.values(e.formulas).some(({exposeInContext:t})=>t)||e.workflows&&Object.values(e.workflows).some(({exposeInContext:t})=>t);function No(e,t,r){Object.entries(t.contexts??{}).forEach(([o,n])=>{let a=r.providers[[r.package,o].filter(D).join("/")];if(a)n.formulas.forEach(s=>{let l=a.formulaDataSignals[s];if(!l){console.warn(`Component error(${t.name}): Provider ${o} does not expose a formula named "${s}". Available formulas are: ["${Object.keys(a.formulaDataSignals).join('", "')}"]`);return}l.subscribe(i=>{e.update(u=>({...u,Contexts:{...u.Contexts,[o]:{...u.Contexts?.[o],[s]:i}}}))})});else if(!a&&r.env.runtime==="preview"&&r.toddle._preview){let s=r.components?.find(u=>u.name===[r.package,o].filter(D).join("/"));if(!s){console.error(`Component error(${t.name}): Could not find provider "${o}". No such component exist.`);return}let[,l]=o.split("/").reverse(),i={data:{Attributes:$(s.attributes??{},([u,p])=>[u,p.testValue])},component:s,root:r?.root,formulaCache:{},package:l??r?.package,toddle:r.toddle,env:r.env};s.route&&(i.data["URL parameters"]={...Object.fromEntries(s.route.path.filter(u=>u.type==="param").map(u=>[u.name,u.testValue])),...$(s.route.query,([u,{testValue:p}])=>[u,p])}),i.data.Variables=$(s.variables??{},([u,p])=>[u,b(p.initialValue,i)]),e.update(u=>({...u,Contexts:{...u.Contexts,[o]:Object.fromEntries(n.formulas.map(p=>{let d=s.formulas?.[p];return d?[p,b(d.formula,i)]:(console.warn(`Component error(${t.name}): Could not find formula "${p}" in provider "${o}"`),[p,null])}))}}))}})}function jo(){window.logState=()=>{console.table(Object.entries(window.__components??{}).map(([e,t])=>({name:e,...t.get()})))}}function Ee(e,t){window.__components||(window.__components={}),window.__components[e.name]=t}function To(e){return D(e.formulas)?$(e.formulas,([t,r])=>{let{canCache:o,keys:n}=r.memoize?$l(r.formula,e):{canCache:!1,keys:[]},a,s;return[t,{get:l=>o&&a&&n.every(i=>pe(l,i)===pe(a,i))?{hit:!0,data:s}:{hit:!1},set:(l,i)=>{o&&(a=l,s=i)}}]}):{}}function $l(e,t){let r=[];function o(a){if(a&&(a.type==="path"&&a.path[0]!=="Args"&&r.push(a.path),Array.isArray(a?.arguments)&&a?.arguments.forEach(s=>o(s.formula)),a.type==="record"&&Array.isArray(a.entries)&&a.entries.forEach(s=>o(s.formula)),a.type==="apply")){if(!t.formulas?.[a.name]?.memoize)throw new Error("Cannot memoize");o(t.formulas?.[a.name]?.formula)}}try{o(e)}catch{return{canCache:!1,keys:[]}}let n=[];return r.sort((a,s)=>a.length-s.length).forEach(a=>{n.some(s=>s.every((l,i)=>l===a[i]))||n.push(a)}),{canCache:!0,keys:n}}var we=class e{styleSheet;ruleMap;constructor(t,r){r?this.styleSheet=r:(this.styleSheet=new CSSStyleSheet,t.adoptedStyleSheets.push(this.getStyleSheet()))}registerProperty(t,r,o){this.ruleMap??=this.hydrateFromBase();let n=e.getFullSelector(t,o),a=this.ruleMap.get(n);if(!a){let s=this.styleSheet.insertRule(n,this.styleSheet.cssRules.length),l=this.styleSheet.cssRules[s];for(;l.cssRules&&l.cssRules.length>0;)l=l.cssRules[0];a=l,this.ruleMap.set(n,a)}return s=>{a.style.setProperty(r,s)}}unregisterProperty(t,r,o){if(!this.ruleMap)return;let n=e.getFullSelector(t,o),a=this.ruleMap.get(n);a&&(a.style.removeProperty(r),o?.deepClean&&a.style.length===0&&(this.styleSheet.deleteRule(Array.from(this.ruleMap.keys()).indexOf(n)),this.ruleMap.delete(n)))}getStyleSheet(){return this.styleSheet}hydrateFromBase(){let t=new Map;for(let r=0;r<this.styleSheet.cssRules.length;r++){let o=this.styleSheet.cssRules[r],n=e.selectorFromCSSRule(o);for(;o.cssRules&&o.cssRules.length>0;)o=o.cssRules[0];t.set(n,o)}return t}static selectorFromCSSRule(t){switch(t.constructor.name){case"CSSStyleRule":return`${t.selectorText} { ${Array.from(t.cssRules).map(e.selectorFromCSSRule).join(", ")}}`;case"CSSStartingStyleRule":return`@starting-style { ${Array.from(t.cssRules).map(e.selectorFromCSSRule).join(", ")}}`;case"CSSMediaRule":return`@media ${t.media.mediaText} { ${Array.from(t.cssRules).map(e.selectorFromCSSRule).join(", ")}}`;case"CSSNestedDeclarations":return"";default:return console.warn(`Unsupported CSS rule type: ${t.constructor.name}. Returning empty selector.`),""}}static getFullSelector(t,r){let o=t+(r?.startingStyle?" { @starting-style { }}":" { }");return r?.mediaQuery&&(o=`@media (${Object.entries(r.mediaQuery).map(([n,a])=>`${n}: ${a}`).filter(Boolean).join(") and (")}) { ${o}}`),o}};var Wr;function ne({selector:e,customPropertyName:t,signal:r,variant:o,root:n,runtime:a}){Wr??=new we(n,n.getElementById(so)?.sheet),r.subscribe(Wr.registerProperty(e,t,o),{destroy:()=>{Wr?.unregisterProperty(e,t,{deepClean:a==="preview",mediaQuery:o?.mediaQuery,startingStyle:o?.startingStyle})}})}function Po({node:e,path:t,dataSignal:r,ctx:o,parentElement:n,instance:a,namespace:s}){let l=[o.package,e.name].filter(D).join("/"),i=o.components?.find(A=>A.name===l);if(!i)return console.warn(`Could not find component "${l}" for component "${o.component.name}". Available components are: ["${o.components.map(A=>A.name).join('", "')}"]`),[];let u=r.map(A=>$(e.attrs,([O,k])=>[O,k?.type!=="value"?b(k,{data:A,component:o.component,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env}):k?.value]));Object.entries(e.customProperties??{}).forEach(([A,O])=>ne({selector:Z(t,{componentName:o.component.name,nodeId:e.id}),signal:r.map(k=>oe(b(O.formula,{data:k,component:o.component,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env}),O.unit)),customPropertyName:A,root:o.root,runtime:o.env.runtime})),e.variants?.forEach(A=>{Object.entries(A.customProperties??{}).forEach(([O,k])=>ne({selector:Z(t,{componentName:o.component.name,nodeId:e.id,variant:A}),signal:r.map(F=>oe(b(k.formula,{data:F,component:o.component,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env}),k.unit)),customPropertyName:O,variant:A,root:o.root,runtime:o.env.runtime}))});let p=B({Location:r.get().Location,Attributes:u.get(),Apis:$(i.apis??{},([A,O])=>[A,{data:null,isLoading:!!(O.autoFetch&&b(O.autoFetch,{data:r.get(),component:i,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env})),error:null}])});No(p,i,o),p.update(A=>({...A,Variables:$(i.variables??{},([O,k])=>[O,b(k.initialValue,{data:p.get(),component:i,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env})])})),Ee(i,p);let d=new AbortController;p.subscribe(()=>{},{destroy:()=>d.abort(`Component ${i.name} unmounted`)});let c=To(i),m={};be(Object.entries(i.apis??{})).forEach(([A,O])=>{he(O)?m[A]=ve(O,{...o,apis:m,component:i,dataSignal:p,abortSignal:d.signal,isRootComponent:!1,formulaCache:c,package:e.package??o.package,triggerEvent:(k,F)=>{let T=Object.values(e.events).find(f=>f.trigger===k);T&&T.actions?.forEach(f=>x(f,{...r.get(),Event:F},o))}}):m[A]=Ae({apiRequest:O,ctx:{...o,apis:m,component:i,dataSignal:p,abortSignal:d.signal,isRootComponent:!1,formulaCache:c,package:e.package??o.package,triggerEvent:(k,F)=>{let T=Object.values(e.events).find(f=>f.trigger===k);T&&T.actions?.forEach(f=>x(f,{...r.get(),Event:F},o))}},componentData:p.get()})}),Object.values(m).filter(re).forEach(A=>{A.triggerActions(p.get())});let v=(A,O)=>{let k=Object.values(e.events).find(F=>F.trigger===A);k&&k.actions?.forEach(F=>x(F,{...r.get(),Event:O},o))},C=o.providers;if(Ce(i)){let A=Object.fromEntries(Object.entries(i.formulas??{}).filter(([,O])=>O.exposeInContext).map(([O,k])=>[O,p.map(F=>b(k.formula,{data:F,component:i,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env}))]));C={...C,[i.name]:{component:i,formulaDataSignals:A,ctx:{...o,apis:m,component:i,dataSignal:p,abortSignal:d.signal,triggerEvent:v}}}}let w={};for(let A=0;A<e.children.length;A++){let O=e.children[A],F=o.component.nodes?.[O]?.slot??"default";w[F]=w[F]??[],w[F].push({id:O,path:`${t}.${A}[${F}]`,dataSignal:r,ctx:{...o,package:e.package??o.package}})}return o.stores.theme.subscribe(A=>{p.update(O=>({...O,Page:{...O.Page,Theme:A}}))}),u.subscribe(A=>p.update(O=>({...O,Attributes:A})),{destroy:()=>p.destroy()}),Fe({dataSignal:p,component:i,components:o.components,path:t,root:o.root,isRootComponent:!1,children:w,formulaCache:c,providers:C,stores:o.stores,apis:m,abortSignal:d.signal,package:e.package??o.package,parentElement:n,onEvent:v,toddle:o.toddle,env:o.env,namespace:s,instance:e.id==="root"?{...a,[o.component.name]:"root"}:{[o.component.name]:e.id??""}})}var _l=(e,t)=>{let r=t.length;for(;r;)e=e*33^t.charCodeAt(--r);return e},Io=e=>_l(5381,e),Bl=/(a)(d)/gi;var xo=e=>String.fromCharCode(e+(e>25?39:97));function Lo(e){let t="",r;for(r=Math.abs(e);r>52;r=r/52|0)t=xo(r%52)+t;return(xo(r%52)+t).replace(Bl,"$1-$2")}var Mo=e=>Lo(Io(JSON.stringify(e))),qo=(e,t=!1)=>{let r=e.trim().replace(/\s+/g,"-");return t&&(r=r.replace(/[^a-zA-Z0-9-_]/g,o=>`\\${o}`)),/^[^a-zA-Z]/.test(r)&&(r=`_${r}`),r};function $o(e){if(e instanceof DragEvent)return Array.from(e.dataTransfer?.items??[]).reduce((t,r)=>(t[r.type]=e.dataTransfer?.getData(r.type),t),{})}function _o(e,t,r){return t.component.version===2&&r==="root"?`${t.package??t.toddle.project}-${e.tag}`:e.tag}function Jr(e,t,r){switch(t){case"srcObject":case"src":e instanceof HTMLMediaElement?e[t]=r:e.setAttribute(t,String(r));break;case"value":case"type":{if(e instanceof SVGElement)P(r)&&e.setAttribute(t,String(r));else{let o=r;e instanceof HTMLProgressElement&&(!D(r)||!Number.isFinite(Number(r)))&&(o=0),e[t]=P(o)?String(o):void 0}break}case"muted":case"autoplay":e instanceof HTMLMediaElement?e[t]=P(r):e.setAttribute(t,String(r));break;default:P(r)?(e.setAttribute(t,String(r)),t==="autofocus"&&document.body.getAttribute("data-mode")!=="design"&&setTimeout(()=>e.focus(),100)):e.removeAttribute(t)}}function Bo({node:e,dataSignal:t,id:r,path:o,ctx:n,namespace:a,instance:s}){let l=_o(e,n,r);switch(l){case"svg":{a="http://www.w3.org/2000/svg";break}case"math":{a="http://www.w3.org/1998/Math/MathML";break}}e.attrs.xmlns?.type==="value"&&(a=String(e.attrs.xmlns.value));let i=a?document.createElementNS(a,l):document.createElement(l);i.setAttribute("data-node-id",r),o&&i.setAttribute("data-id",o),n.isRootComponent===!1&&r!=="root"&&i.setAttribute("data-component",n.component.name);let u=Mo([e.style,e.variants]);i.classList.add(u),s&&r==="root"&&Object.entries(s).forEach(([c,m])=>{i.classList.add(qo(`${c}:${m}`))}),e.classes&&Object.entries(e.classes)?.forEach(([c,{formula:m}])=>{m?t.map(C=>P(b(m,{data:C,component:n.component,formulaCache:n.formulaCache,root:n.root,package:n.package,toddle:n.toddle,env:n.env}))).subscribe(C=>C?i.classList.add(c):i.classList.remove(c)):i.classList.add(c)}),Object.entries(e.attrs).forEach(([c,m])=>{if(!D(m))return;let v,C=()=>{m.type==="value"?Jr(i,c,m?.value):(v=t.map(w=>b(m,{data:w,component:n.component,formulaCache:n.formulaCache,root:n.root,package:n.package,toddle:n.toddle,env:n.env})),v.subscribe(w=>{Jr(i,c,w)}))};c==="autofocus"&&n.env.runtime==="preview"&&n.toddle._preview?n.toddle._preview.showSignal.subscribe(({testMode:w})=>{w?C():(v?.destroy(),i.removeAttribute(c))}):C()}),e["style-variables"]?.forEach(c=>{let{name:m,formula:v,unit:C}=c;t.map(A=>{let O=b(v,{data:A,component:n.component,formulaCache:n.formulaCache,root:n.root,package:n.package,toddle:n.toddle,env:n.env});return C?O+C:O}).subscribe(A=>i.style.setProperty(`--${m}`,A))}),Object.entries(e.customProperties??{}).forEach(([c,{formula:m,unit:v}])=>ne({customPropertyName:c,selector:n.env.runtime==="custom-element"&&n.isRootComponent&&o==="0"?`${Z(o)}, :host`:Z(o),signal:t.map(C=>oe(b(m,{data:C,component:n.component,formulaCache:n.formulaCache,root:n.root,package:n.package,toddle:n.toddle,env:n.env}),v)),root:n.root,runtime:n.env.runtime})),e.variants?.forEach(c=>{Object.entries(c.customProperties??{}).forEach(([m,{formula:v,unit:C}])=>{ne({customPropertyName:m,selector:Z(o,{variant:c}),variant:c,signal:t.map(w=>oe(b(v,{data:w,component:n.component,formulaCache:n.formulaCache,root:n.root,package:n.package,toddle:n.toddle,env:n.env}),C)),root:n.root,runtime:n.env.runtime})})});let p=[];Object.values(e.events).forEach(c=>{c&&p.push([c.trigger,Ul({event:c,dataSignal:t,ctx:n})])}),p.forEach(([c,m])=>{i.addEventListener(c,m,{signal:n.abortSignal})});let d=e.tag.toLocaleLowerCase();if(d==="script"||d==="style"){let c=[];e.children.map(m=>n.component.nodes?.[m]).filter(m=>m?.type==="text").forEach(m=>{if(m.value.type==="value")c.push(String(m.value.value));else{let v=t.map(C=>String(b(m.value,{data:C,component:n.component,formulaCache:n.formulaCache,root:n.root,package:n.package,toddle:n.toddle,env:n.env})));c.push(v)}}),c.every(m=>typeof m=="string")&&(i.textContent=c.join("")),c.filter(m=>typeof m!="string").forEach(m=>{m.subscribe(()=>{i.textContent=c.map(v=>typeof v=="string"?v:v.get()).join("")})})}else{let c=[];e.children.forEach((m,v)=>{c.push(...X({parentElement:i,id:m,path:o+"."+v,dataSignal:t,ctx:n,namespace:a,instance:s}))}),i.append(...c)}return t.subscribe(()=>{},{destroy:()=>{i.parentNode?.removeChild(i)}}),i}var Ul=({event:e,dataSignal:t,ctx:r})=>o=>(e?.actions?.forEach(n=>{if(o instanceof DragEvent&&(o.data=$o(o)),o instanceof ClipboardEvent)try{o.data=Array.from(o.clipboardData?.items??[]).reduce((a,s)=>{try{a[s.type]=JSON.parse(o.clipboardData?.getData(s.type))}catch{a[s.type]=o.clipboardData?.getData(s.type)}return a},{})}catch(a){console.error("Could not get paste data",a)}x(n,{...t.get(),Event:o},r,o)}),!1);function Uo({path:e,node:t,dataSignal:r,ctx:o,parentElement:n,instance:a,namespace:s}){let l=t.name??"default",i=[];if(o.children[l]?i=o.children[l].flatMap(u=>{let p=u.dataSignal.map(d=>d);return r.subscribe(d=>d,{destroy:()=>p.destroy()}),X({...u,dataSignal:p,parentElement:n,ctx:{...u.ctx,providers:o.providers},instance:a,namespace:s})}):i=t.children.flatMap((u,p)=>X({id:u,path:e+"."+p,dataSignal:r,ctx:o,parentElement:n,instance:a,namespace:s})),o.env.runtime==="custom-element"&&o.isRootComponent){let u=document.createElement("slot");return u.setAttribute("name",l),i.forEach(p=>{u.appendChild(p)}),[u]}return i}function Ho({node:e,id:t,path:r,dataSignal:o,namespace:n,ctx:a}){if(n&&n!=="http://www.w3.org/1999/xhtml")return Hl({node:e,dataSignal:o,ctx:a});let{value:s}=e,l=document.createElement("span");return l.setAttribute("data-node-id",t),typeof t=="string"&&l.setAttribute("data-id",r),a.isRootComponent===!1&&l.setAttribute("data-component",a.component.name),l.setAttribute("data-node-type","text"),s.type!=="value"?o.map(u=>String(b(s,{data:u,component:a.component,formulaCache:a.formulaCache,root:a.root,package:a.package,toddle:a.toddle,env:a.env}))).subscribe(u=>{l.innerText=u}):l.innerText=String(s.value),l}function Hl({node:e,dataSignal:t,ctx:r}){let{value:o}=e,n=document.createTextNode("");return o.type!=="value"?t.map(s=>String(b(o,{data:s,component:r.component,formulaCache:r.formulaCache,root:r.root,package:r.package,toddle:r.toddle,env:r.env}))).subscribe(s=>{n.nodeValue=s}):n.nodeValue=String(o.value),n}function X({id:e,dataSignal:t,path:r,ctx:o,namespace:n,parentElement:a,instance:s}){let l=o.component.nodes?.[e];if(!l)return[];let i=({node:d,...c})=>{switch(d.type){case"element":return[Bo({node:d,...c})];case"component":let m=o.components.some(v=>v.name===d.name);return Po({node:{...d,id:e},...c,ctx:{...o,package:d.package??(m?void 0:o.package)},parentElement:a});case"text":return[Ho({...c,node:d})];case"slot":return Uo({...c,node:d})}};function u({node:d,dataSignal:c,id:m,path:v,ctx:C,namespace:w,parentElement:A,instance:O}){let k=!0,F=null,T=c.map(y=>P(b(d.condition,{data:y,component:C.component,formulaCache:C.formulaCache,root:C.root,package:C.package,toddle:C.toddle,env:C.env}))),f=[],S=y=>{if(y&&f.length===0){if(F?.destroy(),F=c.map(E=>E),f.push(...i({node:d,dataSignal:F,path:v,id:m,ctx:C,namespace:w,parentElement:A,instance:O})),k)return;if(!A||C.root.contains(A)===!1){console.error(`Conditional: Parent element does not exist for "${v}" This is likely due to the DOM being modified outside of Nordcraft.`);return}if(A.querySelector(`[data-id="${v}"]`)){console.warn(`Conditional: Element with data-id="${v}" already exists. This is likely due to the DOM being modified outside of Nordcraft`);return}let h=Kr(v,A);for(let E of f)A.insertBefore(E,h)}else y||(F?.destroy(),f.forEach(h=>h.remove()),f.splice(0,f.length))};return T.subscribe(S,{destroy:()=>{F?.destroy()}}),C.env.runtime==="preview"&&C.toddle._preview&&C.toddle._preview.showSignal.subscribe(({displayedNodes:y,testMode:h})=>{y.includes(v)&&!h?S(!0):S(T.get())}),k=!1,f}function p(){let d=!0,c=new Map;return t.map(v=>{let C=b(l?.repeat,{data:v,component:o.component,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env});return typeof C!="object"?[]:Object.entries(C??{})}).subscribe(v=>{let C=new Map;for(let w=0;w<v.length;w++){let[A,O]=v[w],k={...t.get(),ListItem:{...t.get().ListItem?{Parent:t.get().ListItem}:{},Item:O,Index:Number(w),Key:A}},F=l?.repeatKey?b(l.repeatKey,{data:k,component:o.component,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env}):A;C.has(F)&&(console.warn(`Duplicate key "${F}" found in repeat. Fallback to index as key. This will cause a re-render of the duplicated children on every change.`),F=A);let T=c.get(F);if(T)C.set(F,T),T.dataSignal.update(f=>({...f,ListItem:{...t.get().ListItem?{Parent:t.get().ListItem}:{},Item:O,Index:Number(w),Key:A}}));else{let f=B(k),S=t.subscribe(E=>{d||f.update(({ListItem:R})=>({...E,ListItem:R}))},{destroy:()=>f.destroy()}),y={node:l,id:e,dataSignal:f,path:A==="0"?r:`${r}(${A})`,ctx:o,namespace:n,parentElement:a,instance:s},h=l.condition?u(y):i(y);C.set(F,{dataSignal:f,cleanup:S,elements:h})}}if(Array.from(c.entries()).forEach(([w,A])=>{C.has(w)||(A.cleanup(),A.dataSignal.destroy(),A.elements.forEach(O=>O.remove()))}),c=C,!(d||c.size===0)){if(!a||o.root.contains(a)===!1){console.error(`Repeat: Parent element does not exist for ${r}. This is likely due to the DOM being modified outside of Nordcraft.`);return}Oo(a,Array.from(c.values()).flatMap(w=>w.elements),Kr(r,a))}},{destroy:()=>Array.from(c.values()).forEach(v=>{v.cleanup(),v.dataSignal.destroy(),v.elements.forEach(C=>C.remove())})}),d=!1,Array.from(c.values()).flatMap(v=>v.elements)}return l.repeat?p():l.condition?u({node:l,dataSignal:t,ctx:o,id:e,path:r,namespace:n,parentElement:a,instance:s}):i({node:l,dataSignal:t,ctx:o,id:e,path:r,namespace:n,parentElement:a,instance:s})}var Vl=new Se;function Fe({component:e,dataSignal:t,onEvent:r,isRootComponent:o,path:n,children:a,formulaCache:s,components:l,apis:i,abortSignal:u,root:p,providers:d,package:c,stores:m,parentElement:v,instance:C,toddle:w,namespace:A,env:O}){let k={triggerEvent:r,component:e,components:l,dataSignal:t,isRootComponent:o,apis:i,formulaCache:s,children:a,abortSignal:u,root:p,providers:d,stores:m,package:c,toddle:w,env:O},F=X({id:"root",path:n,dataSignal:t,ctx:k,parentElement:v,namespace:A,instance:C});return Vl.add(()=>{let T;e.onAttributeChange?.actions&&e.onAttributeChange.actions.length>0&&t.map(f=>f.Attributes).subscribe(f=>{T&&e.onAttributeChange?.actions?.forEach(S=>{x(S,t.get(),k,new CustomEvent("attribute-change",{detail:Object.entries(f).reduce((y,[h,E])=>((0,Vo.default)(E,T[h])===!1&&e.attributes?.[h]?.name&&(y[e.attributes?.[h]?.name]={current:T[h],new:E}),y),{})}))}),T=f}),e.onLoad?.actions?.forEach(f=>{x(f,t.get(),k)})}),F}var Ko=(e,t,r)=>{let n=e.route?.info?.theme?.formula;if(n&&n.type!=="value")return t.map(()=>b(n,{data:t.get(),component:e,root:document,package:void 0,toddle:window.toddle,env:r}));if(D(n))return B(n.value);{let s=document.cookie.split("; ").find(i=>i.startsWith(`${te}=`))?.split("=")[1]??null,l=B(s);return"cookieStore"in window&&cookieStore.addEventListener("change",i=>{for(let u of i.changed)u.name===te&&l.set(u.value??null);for(let u of i.deleted)u.name===te&&l.set(null)}),l}};jo();var K,sp=e=>{let t=window.__toddle.component,{params:r,hash:o,query:n}=Jo(t);K={isServer:!1,branchName:window.__toddle.branch,request:void 0,runtime:"page",logErrors:!0},window.toddle=(()=>{let a={},s={},l={},i={isEqual:Wo.default,errors:[],project:window.__toddle.project,branch:window.__toddle.branch,commit:window.__toddle.commit,components:window.__toddle.components,formulas:e?.formulas??{},actions:e?.actions??{},registerAction:(u,p)=>{if(a[u]){console.error("There already exists an action with the name ",u);return}a[u]=p},getAction:u=>a[u],registerFormula:(u,p,d)=>{if(s[u]){console.error("There already exists a formula with the name ",u);return}s[u]=p,d&&(l[u]=d)},getFormula:u=>s[u],getCustomAction:(u,p)=>i.actions[p??window.__toddle.project]?.[u]??i.actions[window.__toddle.project]?.[u],getCustomFormula:(u,p)=>i.formulas[p??window.__toddle.project]?.[u]??i.formulas[window.__toddle.project]?.[u],getArgumentInputData:(u,p,d,c)=>l[u]?.(p,d,c)||c,data:{},locationSignal:B({route:t.route,page:t.page,path:window.location.pathname,params:r,query:n,hash:o}),eventLog:[],pageState:window.__toddle.pageState,env:K};return i})(),Object.entries(Br).forEach(([a,s])=>window.toddle.registerFormula("@toddle/"+a,s.default,"getArgumentInputData"in s?s.getArgumentInputData:void 0)),Object.entries(ze).forEach(([a,s])=>window.toddle.registerAction("@toddle/"+a,s.default))},ip=e=>{let t=window.__toddle.component;if(!e)throw new Error("Cant find root domNode");if(!window.toddle.components)throw new Error("Missing components");window.addEventListener("popstate",()=>{if(!t)return;let{params:i,hash:u,query:p}=Jo(t);window.toddle.locationSignal.update(()=>({route:t?.route,page:t.page,path:window.location.pathname,params:i,query:p,hash:u}))});let r=window.toddle.locationSignal.map(({query:i,params:u})=>({...i,...u})),o=B({...window.toddle.pageState,Variables:$(t.variables??{},([i,u])=>[i,b(u.initialValue,{data:window.toddle.pageState,component:t,formulaCache:{},root:document,package:void 0,toddle:window.toddle,env:K})])});Ee(t,o),r.subscribe(i=>o.update(u=>({...u,"URL parameters":i,Attributes:i})));let n=new AbortController;o.subscribe(()=>{},{destroy:()=>n.abort(`Component ${t.name} unmounted`)});let a={component:t,components:window.toddle.components,root:document,isRootComponent:!0,dataSignal:o,abortSignal:n.signal,children:{},formulaCache:{},providers:{},stores:{theme:Ko(t,o,K)},apis:{},toddle:window.toddle,triggerEvent:(i,u)=>console.info("EVENT FIRED",i,u),package:void 0,env:K};be(Object.entries(t.apis??{})).forEach(([i,u])=>{he(u)?a.apis[i]=ve(u,a):a.apis[i]=Ae({apiRequest:u,ctx:a,componentData:o.get()})}),Object.values(a.apis).filter(re).forEach(i=>{i.triggerActions(o.get())});let s=a.providers;if(Ce(t)){let i=Object.fromEntries(Object.entries(t.formulas??{}).filter(([,u])=>u.exposeInContext).map(([u,p])=>[u,o.map(d=>b(p.formula,{data:d,component:t,formulaCache:a.formulaCache,root:a.root,package:a.package,toddle:window.toddle,env:K}))]));s={...s,[t.name]:{component:t,formulaDataSignals:i,ctx:a}}}a.stores.theme.subscribe(i=>{D(i)?document.documentElement.setAttribute(Ne,i):document.documentElement.removeAttribute(Ne)}),Wl(t,o);let l=Fe({...a,providers:s,path:"0",package:void 0,onEvent:a.triggerEvent,parentElement:e,instance:{}});e.innerText="",l.forEach(i=>{e.appendChild(i)}),window.__toddle.isPageLoaded=!0};function Jo(e){let t=window.location.pathname.split("/").slice(1),r={};e.route?e.route.path.forEach((s,l)=>{s.type==="param"?D(t[l])&&t[l]!==""?r[s.name]=decodeURIComponent(t[l]):r[s.name]=null:r[s.name]=s.name}):r=(Co(e.page??"",{decode:decodeURIComponent})(window.location.pathname)||{params:{}}).params;let[o]=window.location.hash.split("?"),n=Kl(window.location.search),a=Object.keys(e.route?.query??{}).reduce((s,l)=>({...s,[l]:null}),{});return{params:r,hash:o?.slice(1),query:{...a,...n}}}var Kl=e=>Object.fromEntries(e.replace("?","").split("&").filter(t=>t!=="").map(t=>t.split("=").map(decodeURIComponent))),Wl=(e,t)=>{let r=e.route?.info?.language?.formula;r&&r.type!=="value"&&t.map(()=>e?b(r,{data:t.get(),component:e,root:document,package:void 0,toddle:window.toddle,env:K}):null).subscribe(p=>{D(p)&&document.documentElement.lang!==p&&document.documentElement.setAttribute("lang",p)});let n=e.route?.info?.title?.formula;n&&n.type!=="value"&&t.map(()=>e?b(n,{data:t.get(),component:e,root:document,package:void 0,toddle:window.toddle,env:K}):null).subscribe(p=>{D(p)&&document.title!==p&&(document.title=p)});let s=e.route?.info?.description?.formula,l=e.route?.info?.meta,i=s&&s.type!=="value",u=Object.values(l??{}).some(p=>Object.values(p.attrs??{}).some(d=>d.type!=="value"));if(i||u){let p=c=>[...document.getElementsByTagName("meta")].find(m=>m.name===c||m.getAttribute("property")===c)??null,d=(c,m)=>{let v=null;if(D(m))v=document.querySelector(`[data-toddle-id="${m}"]`);else{let C=Object.entries(c.attrs??{}).find(([w])=>["property","name"].includes(w.toLowerCase()))?.[1];D(C)&&(v=p(C))}v||(v=document.createElement(c.tag),D(m)&&v.setAttribute("data-toddle-id",m),document.getElementsByTagName("head")[0].appendChild(v)),Object.entries(c.attrs??{}).forEach(([C,w])=>{e&&v.setAttribute(C,w)})};i&&t.map(c=>e?b(s,{data:c,component:e,root:document,package:void 0,toddle:window.toddle,env:K}):null).subscribe(c=>{if(D(c)){let m=document.getElementsByTagName("meta").namedItem("description");m||(m=document.createElement("meta"),m.name="description"),m.content=c,document.getElementsByTagName("head")[0].appendChild(m),l&&!Object.values(l).some(v=>Object.entries(v.attrs??{}).some(([C,w])=>C.toLowerCase()==="property"&&w.type==="value"&&typeof w.value=="string"&&w.value.toLowerCase()==="og:description"))&&d({tag:"meta",attrs:{property:"og:description",content:c}})}}),u&&Object.entries(l??{}).filter(([c,m])=>Object.values(m.attrs??{}).some(v=>v.type!=="value")).forEach(([c,m])=>{t.map(v=>Object.entries(m.attrs??{}).reduce((w,[A,O])=>e?{...w,[A]:b(O,{data:v,component:e,root:document,package:void 0,toddle:window.toddle,env:K})}:w,{})).subscribe(v=>d({tag:m.tag,attrs:v},c))})}};export{ip as createRoot,sp as initGlobalObject};
8
8
  //# sourceMappingURL=page.main.esm.js.map