@nordcraft/runtime 1.0.43 → 1.0.45
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/components/createElement.js +4 -2
- package/dist/components/createElement.js.map +1 -1
- package/dist/custom-element.main.esm.js +35 -42
- package/dist/custom-element.main.esm.js.map +3 -3
- package/dist/page.main.esm.js +1 -1
- package/dist/page.main.esm.js.map +2 -2
- package/dist/styles/style.js +1 -25
- package/dist/styles/style.js.map +1 -1
- package/package.json +3 -3
- package/src/components/createElement.ts +4 -2
- package/src/styles/style.ts +1 -35
package/dist/page.main.esm.js
CHANGED
|
@@ -4,5 +4,5 @@ var Bo=Object.create;var Fe=Object.defineProperty;var _o=Object.getOwnPropertyDe
|
|
|
4
4
|
|
|
5
5
|
`,`\r
|
|
6
6
|
\r
|
|
7
|
-
`],componentData:v})}async function R({api:p,res:C,performance:A,streamType:v,useTextDecoder:w,parseChunk:D,parseChunksForData:P,delimiters:L,componentData:M}){let x={chunks:[],currentChunk:"",add(W){let H=D(W);this.chunks.push(H),H&&(t.dataSignal.set({...t.dataSignal.get(),Apis:{...t.dataSignal.get().Apis,[p.name]:{isLoading:!0,data:P(this.chunks),error:null,response:{headers:z(C.headers)}}}}),(p.client?.onMessage?.actions??[]).length>0&&u({eventName:"message",api:p,data:{body:H},componentData:M}))},processChunk(W){let H=L?.find(we=>W.includes(we)),_t=this.currentChunk+W,Ut=H?_t.split(H):[_t];this.currentChunk=Ut.pop()??"",Ut.forEach(we=>this.add(we))}},X=w?C.body?.pipeThrough(new TextDecoderStream).getReader():C.body?.getReader();for(;X;){let{done:W,value:H}=await X.read();if(W)break;L?x.processChunk(H):x.add(H)}x.currentChunk&&x.add(x.currentChunk);let ie={isLoading:!1,data:x.chunks,error:null,response:{status:C.status,headers:z(C.headers)}};try{if(v==="json"){let W=JSON.parse(x.chunks.join(""));ie.data=W}else v==="text"&&(ie.data=x.chunks.join(""))}catch{throw new Error("Error occurred while parsing the json chunk.",{cause:x.chunks.join("")})}return j({api:p,apiStatus:ie,componentData:M,performance:A})}function j({api:p,apiStatus:C,componentData:A,performance:v}){v.responseEnd=Date.now();let w={body:C.data,status:C.response?.status,headers:C.response?.headers??void 0};Zt({apiName:p.name,response:{body:w.body,ok:!!(!C.error&&C.response?.status&&C.response.status<400),status:w.status,headers:w.headers},formulaContext:s(p,A),errorFormula:p.isError,performance:v})?(!w.body&&C.error&&(w.body=C.error),g({api:p,componentData:A,data:w,performance:v}),u({eventName:"failed",api:p,componentData:A,data:w})):(d({api:p,componentData:A,data:w,performance:v}),u({eventName:"success",api:p,componentData:A,data:w}))}function E(p){return Vt(p,[["client","onCompleted"],["client","onFailed"],["client","onMessage"],["service"],["server","ssr"]])}let k;return k=t.dataSignal.map(p=>{let C=s(n,r);return{request:a(n,r),api:E(n),autoFetch:n.autoFetch?S(n.autoFetch,C):!1,proxy:S(n.server?.proxy?.enabled.formula,C)}}),k.subscribe(async p=>{let{url:C,requestSettings:A}=a(n,r),v=O(n.autoFetch)&&(n.autoFetch.type!=="value"||n.autoFetch.value===!0)&&(window?.__toddle?.isPageLoaded??!1)===!1?t.toddle.pageState.Apis?.[Yt(C,A)]:void 0;v?v.error?g({api:n,data:{body:v.error,status:v.response?.status,headers:v.response?.headers??void 0},performance:{requestStart:v.response?.performance?.requestStart??null,responseStart:v.response?.performance?.responseStart??null,responseEnd:v.response?.performance?.responseEnd??null},componentData:r}):d({api:n,data:{body:v.data,status:v.response?.status,headers:v.response?.headers??void 0},performance:{requestStart:v.response?.performance?.requestStart??null,responseStart:v.response?.performance?.responseStart??null,responseEnd:v.response?.performance?.responseEnd??null},componentData:r}):S(n.autoFetch,s(n,r))?await i({api:n,url:C,requestSettings:A,componentData:r}):t.dataSignal.get().Apis?.[n.name]||t.dataSignal.update(w=>({...w,Apis:{...w.Apis??{},[n.name]:{isLoading:!1,data:null,error:null}}}))}),{fetch:({actionInputs:p,actionModels:C,componentData:A})=>{let v=Object.entries(p??{}).reduce((L,[M,x])=>(x!==null&&typeof x=="object"&&"formula"in x?L[M]=x:L[M]={formula:{type:"value",value:x}},L),{}),w={...n,inputs:{...n.inputs,...v},client:{...n.client,parserMode:n.client?.parserMode??"auto",onCompleted:{trigger:n.client?.onCompleted?.trigger??"success",actions:[...n.client?.onCompleted?.actions??[],...C?.onCompleted??[]]},onFailed:{trigger:n.client?.onFailed?.trigger??"failed",actions:[...n.client?.onFailed?.actions??[],...C?.onFailed??[]]},onMessage:{trigger:n.client?.onMessage?.trigger??"message",actions:[...n.client?.onMessage?.actions??[],...C?.onMessage??[]]}}},{url:D,requestSettings:P}=a(w,A);return i({api:w,url:D,requestSettings:P,componentData:A})},update:(p,C)=>{n=p;let A=s(n,C),v=n.autoFetch&&S(n.autoFetch,A);v&&k?.set({request:a(p,C),api:E(p),autoFetch:v,proxy:S(p.server?.proxy?.enabled.formula,A)})},triggerActions:p=>{let C=t.dataSignal.get().Apis?.[n.name];C===void 0||C.data===null&&C.error===null||(C.error?u({eventName:"failed",api:n,data:{body:C.error,status:C.response?.status},componentData:p}):u({eventName:"success",api:n,data:{body:C.data},componentData:p}))},destroy:()=>k?.destroy()}}var Mo=le(ae(),1);var ve=class{batchQueue=[];isProcessing=!1;processBatch(){this.isProcessing||(this.isProcessing=!0,requestAnimationFrame(()=>{for(;this.batchQueue.length>0;)this.batchQueue.shift()?.();this.isProcessing=!1}))}add(r){this.batchQueue.push(r),this.processBatch()}};var Mt=le(ae(),1),Lt=class{value;subscribers;subscriptions;constructor(r){this.value=r,this.subscribers=new Set,this.subscriptions=[]}get(){return this.value}set(r){if(this.subscribers.size===0){this.value=r;return}(0,Mt.default)(r,this.value)===!1&&(this.value=r,this.subscribers.forEach(({notify:t})=>t(this.value)))}update(r){this.set(r(this.value))}subscribe(r,t){let o={notify:r,destroy:t?.destroy};return this.subscribers.add(o),r(this.value),()=>{this.subscribers.delete(o)}}destroy(){this.subscribers.forEach(({destroy:r})=>{r?.()}),this.subscribers.clear(),this.subscriptions?.forEach(r=>r())}cleanSubscribers(){this.subscribers.forEach(({destroy:r})=>{r?.()}),this.subscribers.clear()}map(r){let t=K(r(this.value));return t.subscriptions.push(this.subscribe(o=>t.set(r(o)),{destroy:()=>t.destroy()})),t}};function K(e){return new Lt(e)}typeof window<"u"&&(window.signal=K,window.deepEqual=Mt.default);var qt=(e,r)=>{let o=e.split(".").slice(-1)[0],n=parseInt(o),a=parseInt(String(o.split("(")[1]));for(let s of r.children){let u=s.getAttribute("data-id")?.split(".").slice(-1)[0],d=parseInt(String(u));if(d===n&&parseInt(String(u?.split("(")[1]))>a||d>n)return s}return null};function Ao(e,r,t=null){let o=t,n=o?o.previousSibling:e.lastChild;for(let a=r.length-1;a>=0;a--){let s=r[a];s===n?n=s.previousSibling:e.insertBefore(s,o),o=s}}var So=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 Y(e,{componentName:r,nodeId:t,variant:o}={}){let n=`[data-id="${e}"]`;return r&&(n+=`.${r}`),t&&(n+=`\\:${t}`),o&&(n+=So(o)),n}var Ae=e=>e.formulas&&Object.values(e.formulas).some(({exposeInContext:r})=>r)||e.workflows&&Object.values(e.workflows).some(({exposeInContext:r})=>r);function Co(e,r,t){Object.entries(r.contexts??{}).forEach(([o,n])=>{let a=t.providers[[t.package,o].filter(O).join("/")];if(a)n.formulas.forEach(s=>{let l=a.formulaDataSignals[s];if(!l){console.warn(`Provider ${o} does not expose a formula named "${s}". Available formulas are: ["${Object.keys(a.formulaDataSignals).join('", "')}"]`);return}l.subscribe(u=>{e.update(d=>({...d,Contexts:{...d.Contexts,[o]:{...d.Contexts?.[o],[s]:u}}}))})});else if(!a&&t.env.runtime==="preview"&&t.toddle._preview){let s=t.components?.find(d=>d.name===[t.package,o].filter(O).join("/"));if(!s){console.error(`Could not find provider "${o}". No such component exist.`);return}let[,l]=o.split("/").reverse(),u={data:{Attributes:q(s.attributes,([d,g])=>[d,g.testValue])},component:s,root:t?.root,formulaCache:{},package:l??t?.package,toddle:t.toddle,env:t.env};s.route&&(u.data["URL parameters"]={...Object.fromEntries(s.route.path.filter(d=>d.type==="param").map(d=>[d.name,d.testValue])),...q(s.route.query,([d,{testValue:g}])=>[d,g])}),u.data.Variables=q(s.variables,([d,g])=>[d,S(g.initialValue,u)]),e.update(d=>({...d,Contexts:{...d.Contexts,[o]:Object.fromEntries(n.formulas.map(g=>{let i=s.formulas?.[g];return i?[g,S(i.formula,u)]:(console.warn(`Could not find formula "${g}" in component "${o}"`),[g,null])}))}}))}})}function Eo(){window.logState=()=>{console.table(Object.entries(window.__components??{}).map(([e,r])=>({name:e,...r.get()})))}}function Se(e,r){window.__components||(window.__components={}),window.__components[e.name]=r}function wo(e){return O(e.formulas)?q(e.formulas,([r,t])=>{let{canCache:o,keys:n}=t.memoize?Tl(t.formula,e):{canCache:!1,keys:[]},a,s;return[r,{get:l=>o&&a&&n.every(u=>de(l,u)===de(a,u))?{hit:!0,data:s}:{hit:!1},set:(l,u)=>{o&&(a=l,s=u)}}]}):{}}function Tl(e,r){let t=[];function o(a){if(a&&(a.type=="path"&&a.path[0]!=="Args"&&t.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(!r.formulas?.[a.name]?.memoize)throw new Error("Cannot memoize");o(r.formulas?.[a.name]?.formula)}}try{o(e)}catch{return{canCache:!1,keys:[]}}let n=[];return t.sort((a,s)=>a.length-s.length).forEach(a=>{n.some(s=>s.every((l,u)=>l===a[u]))||n.push(a)}),{canCache:!0,keys:n}}var Fo="nc-custom-properties";var Ce=class e{styleSheet;ruleMap;constructor(r,t){t?this.styleSheet=t:(this.styleSheet=new CSSStyleSheet,r.adoptedStyleSheets.push(this.getStyleSheet()))}registerProperty(r,t,o){this.ruleMap??=this.hydrateFromBase();let n=e.getFullSelector(r,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(t,s)}}unregisterProperty(r,t,o){if(!this.ruleMap)return;let n=e.getFullSelector(r,o),a=this.ruleMap.get(n);a&&(a.style.removeProperty(t),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 r=new Map;for(let t=0;t<this.styleSheet.cssRules.length;t++){let o=this.styleSheet.cssRules[t],n=e.selectorFromCSSRule(o);for(;o.cssRules&&o.cssRules.length>0;)o=o.cssRules[0];r.set(n,o)}return r}static selectorFromCSSRule(r){switch(r.constructor.name){case"CSSStyleRule":return`${r.selectorText} { ${Array.from(r.cssRules).map(e.selectorFromCSSRule).join(", ")}}`;case"CSSStartingStyleRule":return`@starting-style { ${Array.from(r.cssRules).map(e.selectorFromCSSRule).join(", ")}}`;case"CSSMediaRule":return`@media ${r.media.mediaText} { ${Array.from(r.cssRules).map(e.selectorFromCSSRule).join(", ")}}`;case"CSSNestedDeclarations":return"";default:return console.warn(`Unsupported CSS rule type: ${r.constructor.name}. Returning empty selector.`),""}}static getFullSelector(r,t){let o=r+(t?.startingStyle?" { @starting-style { }}":" { }");return t?.mediaQuery&&(o=`@media (${Object.entries(t.mediaQuery).map(([n,a])=>`${n}: ${a}`).filter(Boolean).join(") and (")}) { ${o}}`),o}};var $t;function re({selector:e,customPropertyName:r,signal:t,variant:o,root:n,runtime:a}){$t??=new Ce(n,n.getElementById(Fo)?.sheet),t.subscribe($t.registerProperty(e,r,o),{destroy:()=>{$t?.unregisterProperty(e,r,{deepClean:a==="preview",mediaQuery:o?.mediaQuery,startingStyle:o?.startingStyle})}})}function Ro({node:e,path:r,dataSignal:t,ctx:o,parentElement:n,instance:a,namespace:s}){let l=[o.package,e.name].filter(O).join("/"),u=o.components?.find(h=>h.name===l);if(!u)return console.warn(`Could not find component "${l}" for component "${o.component.name}". Available components are: ["${o.components.map(h=>h.name).join('", "')}"]`),[];let d=t.map(h=>q(e.attrs,([R,j])=>[R,j?.type!=="value"?S(j,{data:h,component:o.component,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env}):j?.value]));Object.entries(e.customProperties??{}).forEach(([h,R])=>re({selector:Y(r,{componentName:o.component.name,nodeId:e.id}),signal:t.map(j=>S(R.formula,{data:j,component:o.component,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env})),customPropertyName:h,root:o.root,runtime:o.env.runtime})),e.variants?.forEach(h=>{Object.entries(h.customProperties??{}).forEach(([R,j])=>re({selector:Y(r,{componentName:o.component.name,nodeId:e.id,variant:h}),signal:t.map(E=>S(j.formula,{data:E,component:o.component,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env})),customPropertyName:R,variant:h,root:o.root,runtime:o.env.runtime}))});let g=K({Location:t.get().Location,Attributes:d.get(),Apis:q(u.apis,([h,R])=>[h,{data:null,isLoading:!!(R.autoFetch&&S(R.autoFetch,{data:t.get(),component:u,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env})),error:null}])});Co(g,u,o),g.update(h=>({...h,Variables:q(u.variables,([R,j])=>[R,S(j.initialValue,{data:g.get(),component:u,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env})])})),Se(u,g);let i=new AbortController;g.subscribe(()=>{},{destroy:()=>i.abort(`Component ${u.name} unmounted`)});let c=wo(u),m={};he(Object.entries(u.apis)).forEach(([h,R])=>{me(R)?m[h]=ye(R,{...o,apis:m,component:u,dataSignal:g,abortSignal:i.signal,isRootComponent:!1,formulaCache:c,package:e.package??o.package,triggerEvent:(j,E)=>{let k=Object.values(e.events).find(p=>p.trigger===j);k&&k.actions.forEach(p=>I(p,{...t.get(),Event:E},o))}}):m[h]=be({apiRequest:R,ctx:{...o,apis:m,component:u,dataSignal:g,abortSignal:i.signal,isRootComponent:!1,formulaCache:c,package:e.package??o.package,triggerEvent:(j,E)=>{let k=Object.values(e.events).find(p=>p.trigger===j);k&&k.actions.forEach(p=>I(p,{...t.get(),Event:E},o))}},componentData:g.get()})}),Object.values(m).filter(ee).forEach(h=>{h.triggerActions(g.get())});let y=(h,R)=>{let j=Object.values(e.events).find(E=>E.trigger===h);j&&j.actions.forEach(E=>I(E,{...t.get(),Event:R},o))},b=o.providers;if(Ae(u)){let h=Object.fromEntries(Object.entries(u.formulas??{}).filter(([,R])=>R.exposeInContext).map(([R,j])=>[R,g.map(E=>S(j.formula,{data:E,component:u,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env}))]));b={...b,[u.name]:{component:u,formulaDataSignals:h,ctx:{...o,apis:m,component:u,dataSignal:g,abortSignal:i.signal,triggerEvent:y}}}}let F={};for(let h=0;h<e.children.length;h++){let R=e.children[h],E=o.component.nodes[R].slot??"default";F[E]=F[E]??[],F[E].push({id:R,path:`${r}.${h}[${E}]`,dataSignal:t,ctx:{...o,package:e.package??o.package}})}return d.subscribe(h=>g.update(R=>({...R,Attributes:h})),{destroy:()=>g.destroy()}),Ee({dataSignal:g,component:u,components:o.components,path:r,root:o.root,isRootComponent:!1,children:F,formulaCache:c,providers:b,apis:m,abortSignal:i.signal,package:e.package??o.package,parentElement:n,onEvent:y,toddle:o.toddle,env:o.env,namespace:s,instance:e.id==="root"?{...a,[o.component.name]:"root"}:{[o.component.name]:e.id??""}})}var kl=(e,r)=>{let t=r.length;for(;t;)e=e*33^r.charCodeAt(--t);return e},jo=e=>kl(5381,e),Nl=/(a)(d)/gi;var Do=e=>String.fromCharCode(e+(e>25?39:97));function Oo(e){let r="",t;for(t=Math.abs(e);t>52;t=t/52|0)r=Do(t%52)+r;return(Do(t%52)+r).replace(Nl,"$1-$2")}var To=e=>Oo(jo(JSON.stringify(e))),ko=(e,r=!1)=>{let t=e.trim().replace(/\s+/g,"-");return r&&(t=t.replace(/[^a-zA-Z0-9-_]/g,o=>`\\${o}`)),/^[^a-zA-Z]/.test(t)&&(t=`_${t}`),t};function No(e){if(e instanceof DragEvent)return Array.from(e.dataTransfer?.items??[]).reduce((r,t)=>(r[t.type]=e.dataTransfer?.getData(t.type),r),{})}function Po(e,r,t){return r.component.version===2&&t==="root"?`${r.package??r.toddle.project}-${e.tag}`:e.tag}function Bt(e,r,t){switch(r){case"srcObject":case"src":e instanceof HTMLMediaElement?e[r]=t:e.setAttribute(r,String(t));break;case"value":case"type":{if(e instanceof SVGElement)N(t)&&e.setAttribute(r,String(t));else{let o=t;e instanceof HTMLProgressElement&&(!O(t)||!Number.isFinite(Number(t)))&&(o=0),e[r]=N(o)?String(o):void 0}break}case"muted":case"autoplay":e instanceof HTMLMediaElement?e[r]=N(t):e.setAttribute(r,String(t));break;default:N(t)?(e.setAttribute(r,String(t)),r==="autofocus"&&document.body.getAttribute("data-mode")!=="design"&&setTimeout(()=>e.focus(),100)):e.removeAttribute(r)}}function xo({node:e,dataSignal:r,id:t,path:o,ctx:n,namespace:a,instance:s}){let l=Po(e,n,t);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&&e.attrs.xmlns.type==="value"&&(a=String(e.attrs.xmlns.value));let u=a?document.createElementNS(a,l):document.createElement(l);u.setAttribute("data-node-id",t),o&&u.setAttribute("data-id",o),n.isRootComponent===!1&&t!=="root"&&u.setAttribute("data-component",n.component.name);let d=To([e.style,e.variants]);u.classList.add(d),s&&t==="root"&&Object.entries(s).forEach(([i,c])=>{u.classList.add(ko(`${i}:${c}`))}),e.classes&&Object.entries(e.classes)?.forEach(([i,{formula:c}])=>{c?r.map(y=>N(S(c,{data:y,component:n.component,formulaCache:n.formulaCache,root:n.root,package:n.package,toddle:n.toddle,env:n.env}))).subscribe(y=>y?u.classList.add(i):u.classList.remove(i)):u.classList.add(i)}),Object.entries(e.attrs).forEach(([i,c])=>{if(!O(c))return;let m,y=()=>{c.type==="value"?Bt(u,i,c?.value):(m=r.map(b=>S(c,{data:b,component:n.component,formulaCache:n.formulaCache,root:n.root,package:n.package,toddle:n.toddle,env:n.env})),m.subscribe(b=>{Bt(u,i,b)}))};i==="autofocus"&&n.env.runtime==="preview"&&n.toddle._preview?n.toddle._preview.showSignal.subscribe(({testMode:b})=>{b?y():(m?.destroy(),u.removeAttribute(i))}):y()}),e["style-variables"]?.forEach(i=>{let{name:c,formula:m,unit:y}=i;r.map(F=>{let h=S(m,{data:F,component:n.component,formulaCache:n.formulaCache,root:n.root,package:n.package,toddle:n.toddle,env:n.env});return y?h+y:h}).subscribe(F=>u.style.setProperty(`--${c}`,F))}),Object.entries(e.customProperties??{}).forEach(([i,{formula:c}])=>re({customPropertyName:i,selector:n.env.runtime==="custom-element"&&n.isRootComponent&&o==="0"?`${Y(o)}, :host`:Y(o),signal:r.map(m=>S(c,{data:m,component:n.component,formulaCache:n.formulaCache,root:n.root,package:n.package,toddle:n.toddle,env:n.env})),root:n.root,runtime:n.env.runtime})),e.variants?.forEach(i=>{Object.entries(i.customProperties??{}).forEach(([c,{formula:m}])=>{re({customPropertyName:c,selector:Y(o,{variant:i}),variant:i,signal:r.map(y=>S(m,{data:y,component:n.component,formulaCache:n.formulaCache,root:n.root,package:n.package,toddle:n.toddle,env:n.env})),root:n.root,runtime:n.env.runtime})})}),Object.values(e.events).forEach(i=>{let c=m=>(i.actions.forEach(y=>{if(m instanceof DragEvent&&(m.data=No(m)),m instanceof ClipboardEvent)try{m.data=Array.from(m.clipboardData?.items??[]).reduce((b,F)=>{try{b[F.type]=JSON.parse(m.clipboardData?.getData(F.type))}catch{b[F.type]=m.clipboardData?.getData(F.type)}return b},{})}catch(b){console.error("Could not get paste data",b)}I(y,{...r.get(),Event:m},n,m)}),!1);u.addEventListener(i.trigger,c)});let g=e.tag.toLocaleLowerCase();if(g==="script"||g==="style"){let i=[];e.children.map(c=>n.component.nodes[c]).filter(c=>c?.type==="text").forEach(c=>{if(c.value.type==="value")i.push(String(c.value.value));else{let m=r.map(y=>String(S(c.value,{data:y,component:n.component,formulaCache:n.formulaCache,root:n.root,package:n.package,toddle:n.toddle,env:n.env})));i.push(m)}}),i.every(c=>typeof c=="string")&&(u.textContent=i.join("")),i.filter(c=>typeof c!="string").forEach(c=>{c.subscribe(()=>{u.textContent=i.map(m=>typeof m=="string"?m:m.get()).join("")})})}else e.children.forEach((i,c)=>{Z({parentElement:u,id:i,path:o+"."+c,dataSignal:r,ctx:n,namespace:a,instance:s}).forEach(y=>u.appendChild(y))});return u}function Io({path:e,node:r,dataSignal:t,ctx:o,parentElement:n,instance:a,namespace:s}){let l=r.name??"default",u=[];if(o.children[l]?u=o.children[l].flatMap(d=>{let g=d.dataSignal.map(i=>i);return t.subscribe(i=>i,{destroy:()=>g.destroy()}),Z({...d,dataSignal:g,parentElement:n,ctx:{...d.ctx,providers:o.providers},instance:a,namespace:s})}):u=r.children.flatMap((d,g)=>Z({id:d,path:e+"."+g,dataSignal:t,ctx:o,parentElement:n,instance:a,namespace:s})),o.env.runtime==="custom-element"&&o.isRootComponent){let d=document.createElement("slot");return d.setAttribute("name",l),u.forEach(g=>{d.appendChild(g)}),[d]}return u}function Lo({node:e,id:r,path:t,dataSignal:o,namespace:n,ctx:a}){if(n&&n!=="http://www.w3.org/1999/xhtml")return Pl({node:e,dataSignal:o,ctx:a});let{value:s}=e,l=document.createElement("span");return l.setAttribute("data-node-id",r),typeof r=="string"&&l.setAttribute("data-id",t),a.isRootComponent===!1&&l.setAttribute("data-component",a.component.name),l.setAttribute("data-node-type","text"),s.type!=="value"?o.map(d=>String(S(s,{data:d,component:a.component,formulaCache:a.formulaCache,root:a.root,package:a.package,toddle:a.toddle,env:a.env}))).subscribe(d=>{l.innerText=d}):l.innerText=String(s.value),l}function Pl({node:e,dataSignal:r,ctx:t}){let{value:o}=e,n=document.createTextNode("");return o.type!=="value"?r.map(s=>String(S(o,{data:s,component:t.component,formulaCache:t.formulaCache,root:t.root,package:t.package,toddle:t.toddle,env:t.env}))).subscribe(s=>{n.nodeValue=s}):n.nodeValue=String(o.value),n}function Z({id:e,dataSignal:r,path:t,ctx:o,namespace:n,parentElement:a,instance:s}){let l=o.component.nodes[e];if(!l)return[];let u=({node:i,...c})=>{switch(i.type){case"element":return[xo({node:i,...c})];case"component":let m=o.components.some(y=>y.name===i.name);return Ro({node:{...i,id:e},...c,ctx:{...o,package:i.package??(m?void 0:o.package)},parentElement:a});case"text":return[Lo({...c,node:i})];case"slot":return Io({...c,node:i})}};function d({node:i,dataSignal:c,id:m,path:y,ctx:b,namespace:F,parentElement:h,instance:R}){let j=!0,E=null,k=c.map(A=>N(S(i.condition,{data:A,component:b.component,formulaCache:b.formulaCache,root:b.root,package:b.package,toddle:b.toddle,env:b.env}))),p=[],C=A=>{if(A&&p.length===0){if(E?.destroy(),E=c.map(w=>w),p.push(...u({node:i,dataSignal:E,path:y,id:m,ctx:b,namespace:F,parentElement:h,instance:R})),j)return;if(!h||b.root.contains(h)===!1){console.error(`Conditional: Parent element does not exist for "${y}" This is likely due to the DOM being modified outside of Nordcraft.`);return}if(h.querySelector(`[data-id="${y}"]`)){console.warn(`Conditional: Element with data-id="${y}" already exists. This is likely due to the DOM being modified outside of Nordcraft`);return}let v=qt(y,h);for(let w of p)h.insertBefore(w,v)}else A||(E?.destroy(),p.forEach(v=>v.remove()),p.splice(0,p.length))};return k.subscribe(C,{destroy:()=>{E?.destroy()}}),b.env.runtime==="preview"&&b.toddle._preview&&b.toddle._preview.showSignal.subscribe(({displayedNodes:A,testMode:v})=>{A.includes(y)&&!v?C(!0):C(k.get())}),j=!1,p}function g(){let i=!0,c=new Map;return r.map(y=>{let b=S(l.repeat,{data:y,component:o.component,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env});return typeof b!="object"?[]:Object.entries(b??{})}).subscribe(y=>{let b=new Map;for(let F=0;F<y.length;F++){let[h,R]=y[F],j={...r.get(),ListItem:{...r.get().ListItem?{Parent:r.get().ListItem}:{},Item:R,Index:Number(F),Key:h}},E=l.repeatKey?S(l.repeatKey,{data:j,component:o.component,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env}):h;b.has(E)&&(console.warn(`Duplicate key "${E}" found in repeat. Fallback to index as key. This will cause a re-render of the duplicated children on every change.`),E=h);let k=c.get(E);if(k)b.set(E,k),k.dataSignal.update(p=>({...p,ListItem:{...r.get().ListItem?{Parent:r.get().ListItem}:{},Item:R,Index:Number(F),Key:h}}));else{let p=K(j),C=r.subscribe(w=>{i||p.update(({ListItem:D})=>({...w,ListItem:D}))},{destroy:()=>p.destroy()}),A={node:l,id:e,dataSignal:p,path:h==="0"?t:`${t}(${h})`,ctx:o,namespace:n,parentElement:a,instance:s},v=l.condition?d(A):u(A);b.set(E,{dataSignal:p,cleanup:C,elements:v})}}if(Array.from(c.entries()).forEach(([F,h])=>{b.has(F)||(h.cleanup(),h.dataSignal.destroy(),h.elements.forEach(R=>R.remove()))}),c=b,!(i||c.size===0)){if(!a||o.root.contains(a)===!1){console.error(`Repeat: Parent element does not exist for ${t}. This is likely due to the DOM being modified outside of Nordcraft.`);return}Ao(a,Array.from(c.values()).flatMap(F=>F.elements),qt(t,a))}},{destroy:()=>Array.from(c.values()).forEach(y=>{y.cleanup(),y.dataSignal.destroy(),y.elements.forEach(b=>b.remove())})}),i=!1,Array.from(c.values()).flatMap(y=>y.elements)}return l.repeat?g():l.condition?d({node:l,dataSignal:r,ctx:o,id:e,path:t,namespace:n,parentElement:a,instance:s}):u({node:l,dataSignal:r,ctx:o,id:e,path:t,namespace:n,parentElement:a,instance:s})}var xl=new ve;function Ee({component:e,dataSignal:r,onEvent:t,isRootComponent:o,path:n,children:a,formulaCache:s,components:l,apis:u,abortSignal:d,root:g,providers:i,package:c,parentElement:m,instance:y,toddle:b,namespace:F,env:h}){let R={triggerEvent:t,component:e,components:l,dataSignal:r,isRootComponent:o,apis:u,formulaCache:s,children:a,abortSignal:d,root:g,providers:i,package:c,toddle:b,env:h},j=Z({id:"root",path:n,dataSignal:r,ctx:R,parentElement:m,namespace:F,instance:y});return xl.add(()=>{let E;e.onAttributeChange?.actions&&e.onAttributeChange.actions.length>0&&r.map(k=>k.Attributes).subscribe(k=>{E&&e.onAttributeChange?.actions.forEach(p=>{I(p,r.get(),R,new CustomEvent("attribute-change",{detail:Object.entries(k).reduce((C,[A,v])=>((0,Mo.default)(v,E[A])===!1&&e.attributes[A]?.name&&(C[e.attributes[A]?.name]={current:E[A],new:v}),C),{})}))}),E=k}),e.onLoad?.actions.forEach(k=>{I(k,r.get(),R)})}),j}Eo();var G,qc=e=>{let r=window.__toddle.component,{params:t,hash:o,query:n}=$o(r);G={isServer:!1,branchName:window.__toddle.branch,request:void 0,runtime:"page",logErrors:!0},window.toddle=(()=>{let a={},s={},l={},u={isEqual:qo.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:(d,g)=>{if(a[d]){console.error("There already exists an action with the name ",d);return}a[d]=g},getAction:d=>a[d],registerFormula:(d,g,i)=>{if(s[d]){console.error("There already exists a formula with the name ",d);return}s[d]=g,i&&(l[d]=i)},getFormula:d=>s[d],getCustomAction:(d,g)=>u.actions[g??window.__toddle.project]?.[d]??u.actions[window.__toddle.project]?.[d],getCustomFormula:(d,g)=>u.formulas[g??window.__toddle.project]?.[d]??u.formulas[window.__toddle.project]?.[d],getArgumentInputData:(d,g,i,c)=>l[d]?.(g,i,c)||c,data:{},locationSignal:K({route:r.route,page:r.page,path:window.location.pathname,params:t,query:n,hash:o}),eventLog:[],pageState:window.__toddle.pageState,env:G};return u})(),Object.entries(xt).forEach(([a,s])=>window.toddle.registerFormula("@toddle/"+a,s.default,"getArgumentInputData"in s?s.getArgumentInputData:void 0)),Object.entries(Ve).forEach(([a,s])=>window.toddle.registerAction("@toddle/"+a,s.default))},$c=e=>{let r=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(!r)return;let{params:y,hash:b,query:F}=$o(r);window.toddle.locationSignal.update(()=>({route:r?.route,page:r.page,path:window.location.pathname,params:y,query:F,hash:b}))});let t=window.toddle.locationSignal.map(({query:y,params:b})=>({...y,...b})),o=K({...window.toddle.pageState,Variables:q(r.variables,([y,b])=>[y,S(b.initialValue,{data:window.toddle.pageState,component:r,formulaCache:{},root:document,package:void 0,toddle:window.toddle,env:G})])}),n=r.route?.info?.title?.formula;n&&n.type!=="value"&&o.map(()=>r?S(n,{data:o.get(),component:r,root:document,package:void 0,toddle:window.toddle,env:G}):null).subscribe(y=>{O(y)&&document.title!==y&&(document.title=y)});let s=r.route?.info?.description?.formula,l=r.route?.info?.meta,u=s&&s.type!=="value",d=Object.values(l??{}).some(y=>Object.values(y.attrs??{}).some(b=>b.type!=="value"));if(u||d){let y=F=>[...document.getElementsByTagName("meta")].find(h=>h.name===F||h.getAttribute("property")===F)??null,b=(F,h)=>{let R=null;if(O(h))R=document.querySelector(`[data-toddle-id="${h}"]`);else{let j=Object.entries(F.attrs??{}).find(([E])=>["property","name"].includes(E.toLowerCase()))?.[1];O(j)&&(R=y(j))}R||(R=document.createElement(F.tag),O(h)&&R.setAttribute("data-toddle-id",h),document.getElementsByTagName("head")[0].appendChild(R)),Object.entries(F.attrs??{}).forEach(([j,E])=>{r&&R.setAttribute(j,E)})};u&&o.map(F=>r?S(s,{data:F,component:r,root:document,package:void 0,toddle:window.toddle,env:G}):null).subscribe(F=>{if(O(F)){let h=document.getElementsByTagName("meta").namedItem("description");h||(h=document.createElement("meta"),h.name="description"),h.content=F,document.getElementsByTagName("head")[0].appendChild(h),l&&!Object.values(l).some(R=>Object.entries(R.attrs??{}).some(([j,E])=>j.toLowerCase()==="property"&&E.type==="value"&&typeof E.value=="string"&&E.value.toLowerCase()==="og:description"))&&b({tag:"meta",attrs:{property:"og:description",content:F}})}}),d&&Object.entries(l??{}).filter(([F,h])=>Object.values(h.attrs??{}).some(R=>R.type!=="value")).forEach(([F,h])=>{o.map(R=>Object.entries(h.attrs??{}).reduce((E,[k,p])=>r?{...E,[k]:S(p,{data:R,component:r,root:document,package:void 0,toddle:window.toddle,env:G})}:E,{})).subscribe(R=>b({tag:h.tag,attrs:R},F))})}Se(r,o),t.subscribe(y=>o.update(b=>({...b,"URL parameters":y,Attributes:y})));let g=new AbortController;o.subscribe(()=>{},{destroy:()=>g.abort(`Component ${r.name} unmounted`)});let i={component:r,components:window.toddle.components,root:document,isRootComponent:!0,dataSignal:o,abortSignal:g.signal,children:{},formulaCache:{},providers:{},apis:{},toddle:window.toddle,triggerEvent:(y,b)=>console.info("EVENT FIRED",y,b),package:void 0,env:G};he(Object.entries(r.apis)).forEach(([y,b])=>{me(b)?i.apis[y]=ye(b,i):i.apis[y]=be({apiRequest:b,ctx:i,componentData:o.get()})}),Object.values(i.apis).filter(ee).forEach(y=>{y.triggerActions(o.get())});let c=i.providers;if(Ae(r)){let y=Object.fromEntries(Object.entries(r.formulas??{}).filter(([,b])=>b.exposeInContext).map(([b,F])=>[b,o.map(h=>S(F.formula,{data:h,component:r,formulaCache:i.formulaCache,root:i.root,package:i.package,toddle:window.toddle,env:G}))]));c={...c,[r.name]:{component:r,formulaDataSignals:y,ctx:i}}}let m=Ee({...i,providers:c,path:"0",package:void 0,onEvent:i.triggerEvent,parentElement:e,instance:{}});e.innerText="",m.forEach(y=>{e.appendChild(y)}),window.__toddle.isPageLoaded=!0};function $o(e){let r=window.location.pathname.split("/").slice(1),t={};e.route?e.route.path.forEach((s,l)=>{s.type==="param"?O(r[l])&&r[l]!==""?t[s.name]=decodeURIComponent(r[l]):t[s.name]=null:t[s.name]=s.name}):t=(mo(e.page??"",{decode:decodeURIComponent})(window.location.pathname)||{params:{}}).params;let[o]=window.location.hash.split("?"),n=Il(window.location.search),a=Object.keys(e.route?.query??{}).reduce((s,l)=>({...s,[l]:null}),{});return{params:t,hash:o?.slice(1),query:{...a,...n}}}var Il=e=>Object.fromEntries(e.replace("?","").split("&").filter(r=>r!=="").map(r=>r.split("=").map(decodeURIComponent)));export{$c as createRoot,qc as initGlobalObject};
|
|
7
|
+
`],componentData:v})}async function R({api:p,res:C,performance:A,streamType:v,useTextDecoder:w,parseChunk:D,parseChunksForData:P,delimiters:L,componentData:M}){let x={chunks:[],currentChunk:"",add(W){let H=D(W);this.chunks.push(H),H&&(t.dataSignal.set({...t.dataSignal.get(),Apis:{...t.dataSignal.get().Apis,[p.name]:{isLoading:!0,data:P(this.chunks),error:null,response:{headers:z(C.headers)}}}}),(p.client?.onMessage?.actions??[]).length>0&&u({eventName:"message",api:p,data:{body:H},componentData:M}))},processChunk(W){let H=L?.find(we=>W.includes(we)),_t=this.currentChunk+W,Ut=H?_t.split(H):[_t];this.currentChunk=Ut.pop()??"",Ut.forEach(we=>this.add(we))}},X=w?C.body?.pipeThrough(new TextDecoderStream).getReader():C.body?.getReader();for(;X;){let{done:W,value:H}=await X.read();if(W)break;L?x.processChunk(H):x.add(H)}x.currentChunk&&x.add(x.currentChunk);let ie={isLoading:!1,data:x.chunks,error:null,response:{status:C.status,headers:z(C.headers)}};try{if(v==="json"){let W=JSON.parse(x.chunks.join(""));ie.data=W}else v==="text"&&(ie.data=x.chunks.join(""))}catch{throw new Error("Error occurred while parsing the json chunk.",{cause:x.chunks.join("")})}return j({api:p,apiStatus:ie,componentData:M,performance:A})}function j({api:p,apiStatus:C,componentData:A,performance:v}){v.responseEnd=Date.now();let w={body:C.data,status:C.response?.status,headers:C.response?.headers??void 0};Zt({apiName:p.name,response:{body:w.body,ok:!!(!C.error&&C.response?.status&&C.response.status<400),status:w.status,headers:w.headers},formulaContext:s(p,A),errorFormula:p.isError,performance:v})?(!w.body&&C.error&&(w.body=C.error),g({api:p,componentData:A,data:w,performance:v}),u({eventName:"failed",api:p,componentData:A,data:w})):(d({api:p,componentData:A,data:w,performance:v}),u({eventName:"success",api:p,componentData:A,data:w}))}function E(p){return Vt(p,[["client","onCompleted"],["client","onFailed"],["client","onMessage"],["service"],["server","ssr"]])}let k;return k=t.dataSignal.map(p=>{let C=s(n,r);return{request:a(n,r),api:E(n),autoFetch:n.autoFetch?S(n.autoFetch,C):!1,proxy:S(n.server?.proxy?.enabled.formula,C)}}),k.subscribe(async p=>{let{url:C,requestSettings:A}=a(n,r),v=O(n.autoFetch)&&(n.autoFetch.type!=="value"||n.autoFetch.value===!0)&&(window?.__toddle?.isPageLoaded??!1)===!1?t.toddle.pageState.Apis?.[Yt(C,A)]:void 0;v?v.error?g({api:n,data:{body:v.error,status:v.response?.status,headers:v.response?.headers??void 0},performance:{requestStart:v.response?.performance?.requestStart??null,responseStart:v.response?.performance?.responseStart??null,responseEnd:v.response?.performance?.responseEnd??null},componentData:r}):d({api:n,data:{body:v.data,status:v.response?.status,headers:v.response?.headers??void 0},performance:{requestStart:v.response?.performance?.requestStart??null,responseStart:v.response?.performance?.responseStart??null,responseEnd:v.response?.performance?.responseEnd??null},componentData:r}):S(n.autoFetch,s(n,r))?await i({api:n,url:C,requestSettings:A,componentData:r}):t.dataSignal.get().Apis?.[n.name]||t.dataSignal.update(w=>({...w,Apis:{...w.Apis??{},[n.name]:{isLoading:!1,data:null,error:null}}}))}),{fetch:({actionInputs:p,actionModels:C,componentData:A})=>{let v=Object.entries(p??{}).reduce((L,[M,x])=>(x!==null&&typeof x=="object"&&"formula"in x?L[M]=x:L[M]={formula:{type:"value",value:x}},L),{}),w={...n,inputs:{...n.inputs,...v},client:{...n.client,parserMode:n.client?.parserMode??"auto",onCompleted:{trigger:n.client?.onCompleted?.trigger??"success",actions:[...n.client?.onCompleted?.actions??[],...C?.onCompleted??[]]},onFailed:{trigger:n.client?.onFailed?.trigger??"failed",actions:[...n.client?.onFailed?.actions??[],...C?.onFailed??[]]},onMessage:{trigger:n.client?.onMessage?.trigger??"message",actions:[...n.client?.onMessage?.actions??[],...C?.onMessage??[]]}}},{url:D,requestSettings:P}=a(w,A);return i({api:w,url:D,requestSettings:P,componentData:A})},update:(p,C)=>{n=p;let A=s(n,C),v=n.autoFetch&&S(n.autoFetch,A);v&&k?.set({request:a(p,C),api:E(p),autoFetch:v,proxy:S(p.server?.proxy?.enabled.formula,A)})},triggerActions:p=>{let C=t.dataSignal.get().Apis?.[n.name];C===void 0||C.data===null&&C.error===null||(C.error?u({eventName:"failed",api:n,data:{body:C.error,status:C.response?.status},componentData:p}):u({eventName:"success",api:n,data:{body:C.data},componentData:p}))},destroy:()=>k?.destroy()}}var Mo=le(ae(),1);var ve=class{batchQueue=[];isProcessing=!1;processBatch(){this.isProcessing||(this.isProcessing=!0,requestAnimationFrame(()=>{for(;this.batchQueue.length>0;)this.batchQueue.shift()?.();this.isProcessing=!1}))}add(r){this.batchQueue.push(r),this.processBatch()}};var Mt=le(ae(),1),Lt=class{value;subscribers;subscriptions;constructor(r){this.value=r,this.subscribers=new Set,this.subscriptions=[]}get(){return this.value}set(r){if(this.subscribers.size===0){this.value=r;return}(0,Mt.default)(r,this.value)===!1&&(this.value=r,this.subscribers.forEach(({notify:t})=>t(this.value)))}update(r){this.set(r(this.value))}subscribe(r,t){let o={notify:r,destroy:t?.destroy};return this.subscribers.add(o),r(this.value),()=>{this.subscribers.delete(o)}}destroy(){this.subscribers.forEach(({destroy:r})=>{r?.()}),this.subscribers.clear(),this.subscriptions?.forEach(r=>r())}cleanSubscribers(){this.subscribers.forEach(({destroy:r})=>{r?.()}),this.subscribers.clear()}map(r){let t=K(r(this.value));return t.subscriptions.push(this.subscribe(o=>t.set(r(o)),{destroy:()=>t.destroy()})),t}};function K(e){return new Lt(e)}typeof window<"u"&&(window.signal=K,window.deepEqual=Mt.default);var qt=(e,r)=>{let o=e.split(".").slice(-1)[0],n=parseInt(o),a=parseInt(String(o.split("(")[1]));for(let s of r.children){let u=s.getAttribute("data-id")?.split(".").slice(-1)[0],d=parseInt(String(u));if(d===n&&parseInt(String(u?.split("(")[1]))>a||d>n)return s}return null};function Ao(e,r,t=null){let o=t,n=o?o.previousSibling:e.lastChild;for(let a=r.length-1;a>=0;a--){let s=r[a];s===n?n=s.previousSibling:e.insertBefore(s,o),o=s}}var So=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 Y(e,{componentName:r,nodeId:t,variant:o}={}){let n=`[data-id="${e}"]`;return r&&(n+=`.${r}`),t&&(n+=`\\:${t}`),o&&(n+=So(o)),n}var Ae=e=>e.formulas&&Object.values(e.formulas).some(({exposeInContext:r})=>r)||e.workflows&&Object.values(e.workflows).some(({exposeInContext:r})=>r);function Co(e,r,t){Object.entries(r.contexts??{}).forEach(([o,n])=>{let a=t.providers[[t.package,o].filter(O).join("/")];if(a)n.formulas.forEach(s=>{let l=a.formulaDataSignals[s];if(!l){console.warn(`Provider ${o} does not expose a formula named "${s}". Available formulas are: ["${Object.keys(a.formulaDataSignals).join('", "')}"]`);return}l.subscribe(u=>{e.update(d=>({...d,Contexts:{...d.Contexts,[o]:{...d.Contexts?.[o],[s]:u}}}))})});else if(!a&&t.env.runtime==="preview"&&t.toddle._preview){let s=t.components?.find(d=>d.name===[t.package,o].filter(O).join("/"));if(!s){console.error(`Could not find provider "${o}". No such component exist.`);return}let[,l]=o.split("/").reverse(),u={data:{Attributes:q(s.attributes,([d,g])=>[d,g.testValue])},component:s,root:t?.root,formulaCache:{},package:l??t?.package,toddle:t.toddle,env:t.env};s.route&&(u.data["URL parameters"]={...Object.fromEntries(s.route.path.filter(d=>d.type==="param").map(d=>[d.name,d.testValue])),...q(s.route.query,([d,{testValue:g}])=>[d,g])}),u.data.Variables=q(s.variables,([d,g])=>[d,S(g.initialValue,u)]),e.update(d=>({...d,Contexts:{...d.Contexts,[o]:Object.fromEntries(n.formulas.map(g=>{let i=s.formulas?.[g];return i?[g,S(i.formula,u)]:(console.warn(`Could not find formula "${g}" in component "${o}"`),[g,null])}))}}))}})}function Eo(){window.logState=()=>{console.table(Object.entries(window.__components??{}).map(([e,r])=>({name:e,...r.get()})))}}function Se(e,r){window.__components||(window.__components={}),window.__components[e.name]=r}function wo(e){return O(e.formulas)?q(e.formulas,([r,t])=>{let{canCache:o,keys:n}=t.memoize?Tl(t.formula,e):{canCache:!1,keys:[]},a,s;return[r,{get:l=>o&&a&&n.every(u=>de(l,u)===de(a,u))?{hit:!0,data:s}:{hit:!1},set:(l,u)=>{o&&(a=l,s=u)}}]}):{}}function Tl(e,r){let t=[];function o(a){if(a&&(a.type=="path"&&a.path[0]!=="Args"&&t.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(!r.formulas?.[a.name]?.memoize)throw new Error("Cannot memoize");o(r.formulas?.[a.name]?.formula)}}try{o(e)}catch{return{canCache:!1,keys:[]}}let n=[];return t.sort((a,s)=>a.length-s.length).forEach(a=>{n.some(s=>s.every((l,u)=>l===a[u]))||n.push(a)}),{canCache:!0,keys:n}}var Fo="nc-custom-properties";var Ce=class e{styleSheet;ruleMap;constructor(r,t){t?this.styleSheet=t:(this.styleSheet=new CSSStyleSheet,r.adoptedStyleSheets.push(this.getStyleSheet()))}registerProperty(r,t,o){this.ruleMap??=this.hydrateFromBase();let n=e.getFullSelector(r,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(t,s)}}unregisterProperty(r,t,o){if(!this.ruleMap)return;let n=e.getFullSelector(r,o),a=this.ruleMap.get(n);a&&(a.style.removeProperty(t),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 r=new Map;for(let t=0;t<this.styleSheet.cssRules.length;t++){let o=this.styleSheet.cssRules[t],n=e.selectorFromCSSRule(o);for(;o.cssRules&&o.cssRules.length>0;)o=o.cssRules[0];r.set(n,o)}return r}static selectorFromCSSRule(r){switch(r.constructor.name){case"CSSStyleRule":return`${r.selectorText} { ${Array.from(r.cssRules).map(e.selectorFromCSSRule).join(", ")}}`;case"CSSStartingStyleRule":return`@starting-style { ${Array.from(r.cssRules).map(e.selectorFromCSSRule).join(", ")}}`;case"CSSMediaRule":return`@media ${r.media.mediaText} { ${Array.from(r.cssRules).map(e.selectorFromCSSRule).join(", ")}}`;case"CSSNestedDeclarations":return"";default:return console.warn(`Unsupported CSS rule type: ${r.constructor.name}. Returning empty selector.`),""}}static getFullSelector(r,t){let o=r+(t?.startingStyle?" { @starting-style { }}":" { }");return t?.mediaQuery&&(o=`@media (${Object.entries(t.mediaQuery).map(([n,a])=>`${n}: ${a}`).filter(Boolean).join(") and (")}) { ${o}}`),o}};var $t;function re({selector:e,customPropertyName:r,signal:t,variant:o,root:n,runtime:a}){$t??=new Ce(n,n.getElementById(Fo)?.sheet),t.subscribe($t.registerProperty(e,r,o),{destroy:()=>{$t?.unregisterProperty(e,r,{deepClean:a==="preview",mediaQuery:o?.mediaQuery,startingStyle:o?.startingStyle})}})}function Ro({node:e,path:r,dataSignal:t,ctx:o,parentElement:n,instance:a,namespace:s}){let l=[o.package,e.name].filter(O).join("/"),u=o.components?.find(h=>h.name===l);if(!u)return console.warn(`Could not find component "${l}" for component "${o.component.name}". Available components are: ["${o.components.map(h=>h.name).join('", "')}"]`),[];let d=t.map(h=>q(e.attrs,([R,j])=>[R,j?.type!=="value"?S(j,{data:h,component:o.component,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env}):j?.value]));Object.entries(e.customProperties??{}).forEach(([h,R])=>re({selector:Y(r,{componentName:o.component.name,nodeId:e.id}),signal:t.map(j=>S(R.formula,{data:j,component:o.component,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env})),customPropertyName:h,root:o.root,runtime:o.env.runtime})),e.variants?.forEach(h=>{Object.entries(h.customProperties??{}).forEach(([R,j])=>re({selector:Y(r,{componentName:o.component.name,nodeId:e.id,variant:h}),signal:t.map(E=>S(j.formula,{data:E,component:o.component,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env})),customPropertyName:R,variant:h,root:o.root,runtime:o.env.runtime}))});let g=K({Location:t.get().Location,Attributes:d.get(),Apis:q(u.apis,([h,R])=>[h,{data:null,isLoading:!!(R.autoFetch&&S(R.autoFetch,{data:t.get(),component:u,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env})),error:null}])});Co(g,u,o),g.update(h=>({...h,Variables:q(u.variables,([R,j])=>[R,S(j.initialValue,{data:g.get(),component:u,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env})])})),Se(u,g);let i=new AbortController;g.subscribe(()=>{},{destroy:()=>i.abort(`Component ${u.name} unmounted`)});let c=wo(u),m={};he(Object.entries(u.apis)).forEach(([h,R])=>{me(R)?m[h]=ye(R,{...o,apis:m,component:u,dataSignal:g,abortSignal:i.signal,isRootComponent:!1,formulaCache:c,package:e.package??o.package,triggerEvent:(j,E)=>{let k=Object.values(e.events).find(p=>p.trigger===j);k&&k.actions.forEach(p=>I(p,{...t.get(),Event:E},o))}}):m[h]=be({apiRequest:R,ctx:{...o,apis:m,component:u,dataSignal:g,abortSignal:i.signal,isRootComponent:!1,formulaCache:c,package:e.package??o.package,triggerEvent:(j,E)=>{let k=Object.values(e.events).find(p=>p.trigger===j);k&&k.actions.forEach(p=>I(p,{...t.get(),Event:E},o))}},componentData:g.get()})}),Object.values(m).filter(ee).forEach(h=>{h.triggerActions(g.get())});let y=(h,R)=>{let j=Object.values(e.events).find(E=>E.trigger===h);j&&j.actions.forEach(E=>I(E,{...t.get(),Event:R},o))},b=o.providers;if(Ae(u)){let h=Object.fromEntries(Object.entries(u.formulas??{}).filter(([,R])=>R.exposeInContext).map(([R,j])=>[R,g.map(E=>S(j.formula,{data:E,component:u,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env}))]));b={...b,[u.name]:{component:u,formulaDataSignals:h,ctx:{...o,apis:m,component:u,dataSignal:g,abortSignal:i.signal,triggerEvent:y}}}}let F={};for(let h=0;h<e.children.length;h++){let R=e.children[h],E=o.component.nodes[R].slot??"default";F[E]=F[E]??[],F[E].push({id:R,path:`${r}.${h}[${E}]`,dataSignal:t,ctx:{...o,package:e.package??o.package}})}return d.subscribe(h=>g.update(R=>({...R,Attributes:h})),{destroy:()=>g.destroy()}),Ee({dataSignal:g,component:u,components:o.components,path:r,root:o.root,isRootComponent:!1,children:F,formulaCache:c,providers:b,apis:m,abortSignal:i.signal,package:e.package??o.package,parentElement:n,onEvent:y,toddle:o.toddle,env:o.env,namespace:s,instance:e.id==="root"?{...a,[o.component.name]:"root"}:{[o.component.name]:e.id??""}})}var kl=(e,r)=>{let t=r.length;for(;t;)e=e*33^r.charCodeAt(--t);return e},jo=e=>kl(5381,e),Nl=/(a)(d)/gi;var Do=e=>String.fromCharCode(e+(e>25?39:97));function Oo(e){let r="",t;for(t=Math.abs(e);t>52;t=t/52|0)r=Do(t%52)+r;return(Do(t%52)+r).replace(Nl,"$1-$2")}var To=e=>Oo(jo(JSON.stringify(e))),ko=(e,r=!1)=>{let t=e.trim().replace(/\s+/g,"-");return r&&(t=t.replace(/[^a-zA-Z0-9-_]/g,o=>`\\${o}`)),/^[^a-zA-Z]/.test(t)&&(t=`_${t}`),t};function No(e){if(e instanceof DragEvent)return Array.from(e.dataTransfer?.items??[]).reduce((r,t)=>(r[t.type]=e.dataTransfer?.getData(t.type),r),{})}function Po(e,r,t){return r.component.version===2&&t==="root"?`${r.package??r.toddle.project}-${e.tag}`:e.tag}function Bt(e,r,t){switch(r){case"srcObject":case"src":e instanceof HTMLMediaElement?e[r]=t:e.setAttribute(r,String(t));break;case"value":case"type":{if(e instanceof SVGElement)N(t)&&e.setAttribute(r,String(t));else{let o=t;e instanceof HTMLProgressElement&&(!O(t)||!Number.isFinite(Number(t)))&&(o=0),e[r]=N(o)?String(o):void 0}break}case"muted":case"autoplay":e instanceof HTMLMediaElement?e[r]=N(t):e.setAttribute(r,String(t));break;default:N(t)?(e.setAttribute(r,String(t)),r==="autofocus"&&document.body.getAttribute("data-mode")!=="design"&&setTimeout(()=>e.focus(),100)):e.removeAttribute(r)}}function xo({node:e,dataSignal:r,id:t,path:o,ctx:n,namespace:a,instance:s}){let l=Po(e,n,t);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&&e.attrs.xmlns.type==="value"&&(a=String(e.attrs.xmlns.value));let u=a?document.createElementNS(a,l):document.createElement(l);u.setAttribute("data-node-id",t),o&&u.setAttribute("data-id",o),n.isRootComponent===!1&&t!=="root"&&u.setAttribute("data-component",n.component.name);let d=To([e.style,e.variants]);u.classList.add(d),s&&t==="root"&&Object.entries(s).forEach(([i,c])=>{u.classList.add(ko(`${i}:${c}`))}),e.classes&&Object.entries(e.classes)?.forEach(([i,{formula:c}])=>{c?r.map(y=>N(S(c,{data:y,component:n.component,formulaCache:n.formulaCache,root:n.root,package:n.package,toddle:n.toddle,env:n.env}))).subscribe(y=>y?u.classList.add(i):u.classList.remove(i)):u.classList.add(i)}),Object.entries(e.attrs).forEach(([i,c])=>{if(!O(c))return;let m,y=()=>{c.type==="value"?Bt(u,i,c?.value):(m=r.map(b=>S(c,{data:b,component:n.component,formulaCache:n.formulaCache,root:n.root,package:n.package,toddle:n.toddle,env:n.env})),m.subscribe(b=>{Bt(u,i,b)}))};i==="autofocus"&&n.env.runtime==="preview"&&n.toddle._preview?n.toddle._preview.showSignal.subscribe(({testMode:b})=>{b?y():(m?.destroy(),u.removeAttribute(i))}):y()}),e["style-variables"]?.forEach(i=>{let{name:c,formula:m,unit:y}=i;r.map(F=>{let h=S(m,{data:F,component:n.component,formulaCache:n.formulaCache,root:n.root,package:n.package,toddle:n.toddle,env:n.env});return y?h+y:h}).subscribe(F=>u.style.setProperty(`--${c}`,F))}),Object.entries(e.customProperties??{}).forEach(([i,{formula:c}])=>re({customPropertyName:i,selector:n.env.runtime==="custom-element"&&n.isRootComponent&&o==="0"?`${Y(o)}, :host`:Y(o),signal:r.map(m=>S(c,{data:m,component:n.component,formulaCache:n.formulaCache,root:n.root,package:n.package,toddle:n.toddle,env:n.env})),root:n.root,runtime:n.env.runtime})),e.variants?.forEach(i=>{Object.entries(i.customProperties??{}).forEach(([c,{formula:m}])=>{re({customPropertyName:c,selector:Y(o,{variant:i}),variant:i,signal:r.map(y=>S(m,{data:y,component:n.component,formulaCache:n.formulaCache,root:n.root,package:n.package,toddle:n.toddle,env:n.env})),root:n.root,runtime:n.env.runtime})})}),Object.values(e.events).forEach(i=>{let c=m=>(i?.actions.forEach(y=>{if(m instanceof DragEvent&&(m.data=No(m)),m instanceof ClipboardEvent)try{m.data=Array.from(m.clipboardData?.items??[]).reduce((b,F)=>{try{b[F.type]=JSON.parse(m.clipboardData?.getData(F.type))}catch{b[F.type]=m.clipboardData?.getData(F.type)}return b},{})}catch(b){console.error("Could not get paste data",b)}I(y,{...r.get(),Event:m},n,m)}),!1);i&&u.addEventListener(i.trigger,c)});let g=e.tag.toLocaleLowerCase();if(g==="script"||g==="style"){let i=[];e.children.map(c=>n.component.nodes[c]).filter(c=>c?.type==="text").forEach(c=>{if(c.value.type==="value")i.push(String(c.value.value));else{let m=r.map(y=>String(S(c.value,{data:y,component:n.component,formulaCache:n.formulaCache,root:n.root,package:n.package,toddle:n.toddle,env:n.env})));i.push(m)}}),i.every(c=>typeof c=="string")&&(u.textContent=i.join("")),i.filter(c=>typeof c!="string").forEach(c=>{c.subscribe(()=>{u.textContent=i.map(m=>typeof m=="string"?m:m.get()).join("")})})}else e.children.forEach((i,c)=>{Z({parentElement:u,id:i,path:o+"."+c,dataSignal:r,ctx:n,namespace:a,instance:s}).forEach(y=>u.appendChild(y))});return u}function Io({path:e,node:r,dataSignal:t,ctx:o,parentElement:n,instance:a,namespace:s}){let l=r.name??"default",u=[];if(o.children[l]?u=o.children[l].flatMap(d=>{let g=d.dataSignal.map(i=>i);return t.subscribe(i=>i,{destroy:()=>g.destroy()}),Z({...d,dataSignal:g,parentElement:n,ctx:{...d.ctx,providers:o.providers},instance:a,namespace:s})}):u=r.children.flatMap((d,g)=>Z({id:d,path:e+"."+g,dataSignal:t,ctx:o,parentElement:n,instance:a,namespace:s})),o.env.runtime==="custom-element"&&o.isRootComponent){let d=document.createElement("slot");return d.setAttribute("name",l),u.forEach(g=>{d.appendChild(g)}),[d]}return u}function Lo({node:e,id:r,path:t,dataSignal:o,namespace:n,ctx:a}){if(n&&n!=="http://www.w3.org/1999/xhtml")return Pl({node:e,dataSignal:o,ctx:a});let{value:s}=e,l=document.createElement("span");return l.setAttribute("data-node-id",r),typeof r=="string"&&l.setAttribute("data-id",t),a.isRootComponent===!1&&l.setAttribute("data-component",a.component.name),l.setAttribute("data-node-type","text"),s.type!=="value"?o.map(d=>String(S(s,{data:d,component:a.component,formulaCache:a.formulaCache,root:a.root,package:a.package,toddle:a.toddle,env:a.env}))).subscribe(d=>{l.innerText=d}):l.innerText=String(s.value),l}function Pl({node:e,dataSignal:r,ctx:t}){let{value:o}=e,n=document.createTextNode("");return o.type!=="value"?r.map(s=>String(S(o,{data:s,component:t.component,formulaCache:t.formulaCache,root:t.root,package:t.package,toddle:t.toddle,env:t.env}))).subscribe(s=>{n.nodeValue=s}):n.nodeValue=String(o.value),n}function Z({id:e,dataSignal:r,path:t,ctx:o,namespace:n,parentElement:a,instance:s}){let l=o.component.nodes[e];if(!l)return[];let u=({node:i,...c})=>{switch(i.type){case"element":return[xo({node:i,...c})];case"component":let m=o.components.some(y=>y.name===i.name);return Ro({node:{...i,id:e},...c,ctx:{...o,package:i.package??(m?void 0:o.package)},parentElement:a});case"text":return[Lo({...c,node:i})];case"slot":return Io({...c,node:i})}};function d({node:i,dataSignal:c,id:m,path:y,ctx:b,namespace:F,parentElement:h,instance:R}){let j=!0,E=null,k=c.map(A=>N(S(i.condition,{data:A,component:b.component,formulaCache:b.formulaCache,root:b.root,package:b.package,toddle:b.toddle,env:b.env}))),p=[],C=A=>{if(A&&p.length===0){if(E?.destroy(),E=c.map(w=>w),p.push(...u({node:i,dataSignal:E,path:y,id:m,ctx:b,namespace:F,parentElement:h,instance:R})),j)return;if(!h||b.root.contains(h)===!1){console.error(`Conditional: Parent element does not exist for "${y}" This is likely due to the DOM being modified outside of Nordcraft.`);return}if(h.querySelector(`[data-id="${y}"]`)){console.warn(`Conditional: Element with data-id="${y}" already exists. This is likely due to the DOM being modified outside of Nordcraft`);return}let v=qt(y,h);for(let w of p)h.insertBefore(w,v)}else A||(E?.destroy(),p.forEach(v=>v.remove()),p.splice(0,p.length))};return k.subscribe(C,{destroy:()=>{E?.destroy()}}),b.env.runtime==="preview"&&b.toddle._preview&&b.toddle._preview.showSignal.subscribe(({displayedNodes:A,testMode:v})=>{A.includes(y)&&!v?C(!0):C(k.get())}),j=!1,p}function g(){let i=!0,c=new Map;return r.map(y=>{let b=S(l.repeat,{data:y,component:o.component,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env});return typeof b!="object"?[]:Object.entries(b??{})}).subscribe(y=>{let b=new Map;for(let F=0;F<y.length;F++){let[h,R]=y[F],j={...r.get(),ListItem:{...r.get().ListItem?{Parent:r.get().ListItem}:{},Item:R,Index:Number(F),Key:h}},E=l.repeatKey?S(l.repeatKey,{data:j,component:o.component,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env}):h;b.has(E)&&(console.warn(`Duplicate key "${E}" found in repeat. Fallback to index as key. This will cause a re-render of the duplicated children on every change.`),E=h);let k=c.get(E);if(k)b.set(E,k),k.dataSignal.update(p=>({...p,ListItem:{...r.get().ListItem?{Parent:r.get().ListItem}:{},Item:R,Index:Number(F),Key:h}}));else{let p=K(j),C=r.subscribe(w=>{i||p.update(({ListItem:D})=>({...w,ListItem:D}))},{destroy:()=>p.destroy()}),A={node:l,id:e,dataSignal:p,path:h==="0"?t:`${t}(${h})`,ctx:o,namespace:n,parentElement:a,instance:s},v=l.condition?d(A):u(A);b.set(E,{dataSignal:p,cleanup:C,elements:v})}}if(Array.from(c.entries()).forEach(([F,h])=>{b.has(F)||(h.cleanup(),h.dataSignal.destroy(),h.elements.forEach(R=>R.remove()))}),c=b,!(i||c.size===0)){if(!a||o.root.contains(a)===!1){console.error(`Repeat: Parent element does not exist for ${t}. This is likely due to the DOM being modified outside of Nordcraft.`);return}Ao(a,Array.from(c.values()).flatMap(F=>F.elements),qt(t,a))}},{destroy:()=>Array.from(c.values()).forEach(y=>{y.cleanup(),y.dataSignal.destroy(),y.elements.forEach(b=>b.remove())})}),i=!1,Array.from(c.values()).flatMap(y=>y.elements)}return l.repeat?g():l.condition?d({node:l,dataSignal:r,ctx:o,id:e,path:t,namespace:n,parentElement:a,instance:s}):u({node:l,dataSignal:r,ctx:o,id:e,path:t,namespace:n,parentElement:a,instance:s})}var xl=new ve;function Ee({component:e,dataSignal:r,onEvent:t,isRootComponent:o,path:n,children:a,formulaCache:s,components:l,apis:u,abortSignal:d,root:g,providers:i,package:c,parentElement:m,instance:y,toddle:b,namespace:F,env:h}){let R={triggerEvent:t,component:e,components:l,dataSignal:r,isRootComponent:o,apis:u,formulaCache:s,children:a,abortSignal:d,root:g,providers:i,package:c,toddle:b,env:h},j=Z({id:"root",path:n,dataSignal:r,ctx:R,parentElement:m,namespace:F,instance:y});return xl.add(()=>{let E;e.onAttributeChange?.actions&&e.onAttributeChange.actions.length>0&&r.map(k=>k.Attributes).subscribe(k=>{E&&e.onAttributeChange?.actions.forEach(p=>{I(p,r.get(),R,new CustomEvent("attribute-change",{detail:Object.entries(k).reduce((C,[A,v])=>((0,Mo.default)(v,E[A])===!1&&e.attributes[A]?.name&&(C[e.attributes[A]?.name]={current:E[A],new:v}),C),{})}))}),E=k}),e.onLoad?.actions.forEach(k=>{I(k,r.get(),R)})}),j}Eo();var G,qc=e=>{let r=window.__toddle.component,{params:t,hash:o,query:n}=$o(r);G={isServer:!1,branchName:window.__toddle.branch,request:void 0,runtime:"page",logErrors:!0},window.toddle=(()=>{let a={},s={},l={},u={isEqual:qo.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:(d,g)=>{if(a[d]){console.error("There already exists an action with the name ",d);return}a[d]=g},getAction:d=>a[d],registerFormula:(d,g,i)=>{if(s[d]){console.error("There already exists a formula with the name ",d);return}s[d]=g,i&&(l[d]=i)},getFormula:d=>s[d],getCustomAction:(d,g)=>u.actions[g??window.__toddle.project]?.[d]??u.actions[window.__toddle.project]?.[d],getCustomFormula:(d,g)=>u.formulas[g??window.__toddle.project]?.[d]??u.formulas[window.__toddle.project]?.[d],getArgumentInputData:(d,g,i,c)=>l[d]?.(g,i,c)||c,data:{},locationSignal:K({route:r.route,page:r.page,path:window.location.pathname,params:t,query:n,hash:o}),eventLog:[],pageState:window.__toddle.pageState,env:G};return u})(),Object.entries(xt).forEach(([a,s])=>window.toddle.registerFormula("@toddle/"+a,s.default,"getArgumentInputData"in s?s.getArgumentInputData:void 0)),Object.entries(Ve).forEach(([a,s])=>window.toddle.registerAction("@toddle/"+a,s.default))},$c=e=>{let r=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(!r)return;let{params:y,hash:b,query:F}=$o(r);window.toddle.locationSignal.update(()=>({route:r?.route,page:r.page,path:window.location.pathname,params:y,query:F,hash:b}))});let t=window.toddle.locationSignal.map(({query:y,params:b})=>({...y,...b})),o=K({...window.toddle.pageState,Variables:q(r.variables,([y,b])=>[y,S(b.initialValue,{data:window.toddle.pageState,component:r,formulaCache:{},root:document,package:void 0,toddle:window.toddle,env:G})])}),n=r.route?.info?.title?.formula;n&&n.type!=="value"&&o.map(()=>r?S(n,{data:o.get(),component:r,root:document,package:void 0,toddle:window.toddle,env:G}):null).subscribe(y=>{O(y)&&document.title!==y&&(document.title=y)});let s=r.route?.info?.description?.formula,l=r.route?.info?.meta,u=s&&s.type!=="value",d=Object.values(l??{}).some(y=>Object.values(y.attrs??{}).some(b=>b.type!=="value"));if(u||d){let y=F=>[...document.getElementsByTagName("meta")].find(h=>h.name===F||h.getAttribute("property")===F)??null,b=(F,h)=>{let R=null;if(O(h))R=document.querySelector(`[data-toddle-id="${h}"]`);else{let j=Object.entries(F.attrs??{}).find(([E])=>["property","name"].includes(E.toLowerCase()))?.[1];O(j)&&(R=y(j))}R||(R=document.createElement(F.tag),O(h)&&R.setAttribute("data-toddle-id",h),document.getElementsByTagName("head")[0].appendChild(R)),Object.entries(F.attrs??{}).forEach(([j,E])=>{r&&R.setAttribute(j,E)})};u&&o.map(F=>r?S(s,{data:F,component:r,root:document,package:void 0,toddle:window.toddle,env:G}):null).subscribe(F=>{if(O(F)){let h=document.getElementsByTagName("meta").namedItem("description");h||(h=document.createElement("meta"),h.name="description"),h.content=F,document.getElementsByTagName("head")[0].appendChild(h),l&&!Object.values(l).some(R=>Object.entries(R.attrs??{}).some(([j,E])=>j.toLowerCase()==="property"&&E.type==="value"&&typeof E.value=="string"&&E.value.toLowerCase()==="og:description"))&&b({tag:"meta",attrs:{property:"og:description",content:F}})}}),d&&Object.entries(l??{}).filter(([F,h])=>Object.values(h.attrs??{}).some(R=>R.type!=="value")).forEach(([F,h])=>{o.map(R=>Object.entries(h.attrs??{}).reduce((E,[k,p])=>r?{...E,[k]:S(p,{data:R,component:r,root:document,package:void 0,toddle:window.toddle,env:G})}:E,{})).subscribe(R=>b({tag:h.tag,attrs:R},F))})}Se(r,o),t.subscribe(y=>o.update(b=>({...b,"URL parameters":y,Attributes:y})));let g=new AbortController;o.subscribe(()=>{},{destroy:()=>g.abort(`Component ${r.name} unmounted`)});let i={component:r,components:window.toddle.components,root:document,isRootComponent:!0,dataSignal:o,abortSignal:g.signal,children:{},formulaCache:{},providers:{},apis:{},toddle:window.toddle,triggerEvent:(y,b)=>console.info("EVENT FIRED",y,b),package:void 0,env:G};he(Object.entries(r.apis)).forEach(([y,b])=>{me(b)?i.apis[y]=ye(b,i):i.apis[y]=be({apiRequest:b,ctx:i,componentData:o.get()})}),Object.values(i.apis).filter(ee).forEach(y=>{y.triggerActions(o.get())});let c=i.providers;if(Ae(r)){let y=Object.fromEntries(Object.entries(r.formulas??{}).filter(([,b])=>b.exposeInContext).map(([b,F])=>[b,o.map(h=>S(F.formula,{data:h,component:r,formulaCache:i.formulaCache,root:i.root,package:i.package,toddle:window.toddle,env:G}))]));c={...c,[r.name]:{component:r,formulaDataSignals:y,ctx:i}}}let m=Ee({...i,providers:c,path:"0",package:void 0,onEvent:i.triggerEvent,parentElement:e,instance:{}});e.innerText="",m.forEach(y=>{e.appendChild(y)}),window.__toddle.isPageLoaded=!0};function $o(e){let r=window.location.pathname.split("/").slice(1),t={};e.route?e.route.path.forEach((s,l)=>{s.type==="param"?O(r[l])&&r[l]!==""?t[s.name]=decodeURIComponent(r[l]):t[s.name]=null:t[s.name]=s.name}):t=(mo(e.page??"",{decode:decodeURIComponent})(window.location.pathname)||{params:{}}).params;let[o]=window.location.hash.split("?"),n=Il(window.location.search),a=Object.keys(e.route?.query??{}).reduce((s,l)=>({...s,[l]:null}),{});return{params:t,hash:o?.slice(1),query:{...a,...n}}}var Il=e=>Object.fromEntries(e.replace("?","").split("&").filter(r=>r!=="").map(r=>r.split("=").map(decodeURIComponent)));export{$c as createRoot,qc as initGlobalObject};
|
|
8
8
|
//# sourceMappingURL=page.main.esm.js.map
|