@nordcraft/runtime 1.0.91 → 1.0.93

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.
Files changed (33) hide show
  1. package/dist/custom-element.main.esm.js +1 -1
  2. package/dist/custom-element.main.esm.js.map +2 -2
  3. package/dist/page.main.esm.js +3 -3
  4. package/dist/page.main.esm.js.map +2 -2
  5. package/dist/src/editor/const.d.ts +3 -0
  6. package/dist/src/editor/const.js +4 -0
  7. package/dist/src/editor/const.js.map +1 -0
  8. package/dist/src/editor/resizeCanvas.d.ts +7 -0
  9. package/dist/src/editor/resizeCanvas.js +43 -0
  10. package/dist/src/editor/resizeCanvas.js.map +1 -0
  11. package/dist/src/editor/types.d.ts +4 -1
  12. package/dist/src/editor/types.js.map +1 -1
  13. package/dist/src/editor-preview.main.js +31 -8
  14. package/dist/src/editor-preview.main.js.map +1 -1
  15. package/dist/src/styles/CustomPropertyStyleSheet.d.ts +1 -0
  16. package/dist/src/styles/CustomPropertyStyleSheet.js +6 -2
  17. package/dist/src/styles/CustomPropertyStyleSheet.js.map +1 -1
  18. package/dist/src/styles/CustomPropertyStyleSheet.test.js +12 -0
  19. package/dist/src/styles/CustomPropertyStyleSheet.test.js.map +1 -1
  20. package/dist/src/styles/style.d.ts +5 -0
  21. package/dist/src/styles/style.js +11 -1
  22. package/dist/src/styles/style.js.map +1 -1
  23. package/dist/src/styles/style.test.js +30 -0
  24. package/dist/src/styles/style.test.js.map +1 -1
  25. package/package.json +3 -3
  26. package/src/editor/const.ts +5 -0
  27. package/src/editor/resizeCanvas.ts +65 -0
  28. package/src/editor/types.ts +5 -1
  29. package/src/editor-preview.main.ts +52 -8
  30. package/src/styles/CustomPropertyStyleSheet.test.ts +24 -0
  31. package/src/styles/CustomPropertyStyleSheet.ts +7 -2
  32. package/src/styles/style.test.ts +37 -0
  33. package/src/styles/style.ts +14 -1
@@ -270,5 +270,5 @@ ${Le}
270
270
 
271
271
  `,`\r
272
272
  \r
273
- `],componentData:y,workflowCallback:j})}async function k({api:f,res:b,performance:g,streamType:y,useTextDecoder:j,parseChunk:E,parseChunksForData:D,delimiters:M,componentData:L,workflowCallback:q}){let P={chunks:[],currentChunk:"",add(z){let W=E(z);this.chunks.push(W),W&&(r.dataSignal.set({...r.dataSignal.get(),Apis:{...r.dataSignal.get().Apis,[f.name]:{isLoading:!0,data:D(this.chunks),error:null,response:{headers:Q(b.headers)}}}}),(f.client?.onMessage?.actions??[]).length>0&&i({eventName:"message",api:f,data:{body:W},componentData:L,workflowCallback:q}))},processChunk(z){let W=M?.find($e=>z.includes($e)),no=this.currentChunk+z,ao=W?no.split(W):[no];this.currentChunk=ao.pop()??"",ao.forEach($e=>this.add($e))}},ee=j?b.body?.pipeThrough(new TextDecoderStream).getReader():b.body?.getReader();for(;ee;){let{done:z,value:W}=await ee.read();if(z)break;M?P.processChunk(W):P.add(W)}P.currentChunk&&P.add(P.currentChunk);let de={isLoading:!1,data:P.chunks,error:null,response:{status:b.status,headers:Q(b.headers)}};try{if(y==="json"){let z=JSON.parse(P.chunks.join(""));de.data=z}else y==="text"&&(de.data=P.chunks.join(""))}catch{throw new Error("Error occurred while parsing the json chunk.",{cause:P.chunks.join("")})}return w({api:f,apiStatus:de,componentData:L,performance:g,workflowCallback:q})}function w({api:f,apiStatus:b,componentData:g,performance:y,workflowCallback:j}){y.responseEnd=Date.now();let E={body:b.data,status:b.response?.status,headers:b.response?.headers??void 0};xo({apiName:f.name,response:{body:E.body,ok:!!(!b.error&&b.response?.status&&b.response.status<400),status:E.status,headers:E.headers},formulaContext:s(f,g),errorFormula:f.isError,performance:y})?(!E.body&&b.error&&(E.body=b.error),h({api:f,componentData:g,data:E,performance:y}),i({eventName:"failed",api:f,componentData:g,data:E,workflowCallback:j})):(c({api:f,componentData:g,data:E,performance:y}),i({eventName:"success",api:f,componentData:g,data:E,workflowCallback:j}))}function R(f){return Eo(f,[["client","onCompleted"],["client","onFailed"],["client","onMessage"],["service"],["server","ssr"]])}let x,O=new Fe;return x=r.dataSignal.map(f=>{let b=s(n,f),g=a(n,f);return{request:g,api:R(n),headers:Array.from(g.requestSettings.headers.entries()),autoFetch:n.autoFetch?v(n.autoFetch,b):!1,proxy:v(n.server?.proxy?.enabled.formula,b)}}),x.subscribe(async f=>{let{url:b,requestSettings:g}=f.request,y=C(n.autoFetch)&&(n.autoFetch.type!=="value"||n.autoFetch.value===!0)&&(window?.__toddle?.isPageLoaded??!1)===!1?r.toddle.pageState.Apis?.[To(b,g)]:void 0;y?y.error?h({api:n,data:{body:y.error,status:y.response?.status,headers:y.response?.headers??void 0},performance:{requestStart:y.response?.performance?.requestStart??null,responseStart:y.response?.performance?.responseStart??null,responseEnd:y.response?.performance?.responseEnd??null},componentData:t}):c({api:n,data:{body:y.data,status:y.response?.status,headers:y.response?.headers??void 0},performance:{requestStart:y.response?.performance?.requestStart??null,responseStart:y.response?.performance?.responseStart??null,responseEnd:y.response?.performance?.responseEnd??null},componentData:t}):v(n.autoFetch,s(n,t))?await u({api:n,url:b,requestSettings:g,componentData:t}):r.dataSignal.get().Apis?.[n.name]||r.dataSignal.update(j=>({...j,Apis:{...j.Apis??{},[n.name]:{isLoading:!1,data:null,error:null}}}))}),{fetch:({actionInputs:f,actionModels:b,componentData:g,workflowCallback:y})=>{let j=Object.entries(f??{}).reduce((L,[q,P])=>(P!==null&&typeof P=="object"&&"formula"in P?L[q]=P:L[q]={formula:{type:"value",value:P}},L),{}),E={...n,inputs:{...n.inputs,...j},client:{...n.client,parserMode:n.client?.parserMode??"auto",onCompleted:{trigger:n.client?.onCompleted?.trigger??"success",actions:[...n.client?.onCompleted?.actions??[],...b?.onCompleted??[]]},onFailed:{trigger:n.client?.onFailed?.trigger??"failed",actions:[...n.client?.onFailed?.actions??[],...b?.onFailed??[]]},onMessage:{trigger:n.client?.onMessage?.trigger??"message",actions:[...n.client?.onMessage?.actions??[],...b?.onMessage??[]]}}},{url:D,requestSettings:M}=a(E,g);return u({api:E,url:D,requestSettings:M,componentData:g,workflowCallback:y})},cancel:O.abort,update:(f,b)=>{n=f;let g=s(n,b),y=n.autoFetch&&v(n.autoFetch,g);if(y){let j=a(f,b);x?.set({request:j,api:R(f),autoFetch:y,proxy:v(f.server?.proxy?.enabled.formula,g),headers:Array.from(j.requestSettings.headers.entries())})}},triggerActions:f=>{let b=r.dataSignal.get().Apis?.[n.name];b===void 0||b.data===null&&b.error===null||(b.error?i({eventName:"failed",api:n,data:{body:b.error,status:b.response?.status},componentData:f}):i({eventName:"success",api:n,data:{body:b.data},componentData:f}))},destroy:()=>x?.destroy()}}var tn=pe(ie(),1);var Oe=class{constructor(){}batchQueue=[];isProcessing=!1;processBatch(){this.isProcessing||(this.isProcessing=!0,queueMicrotask(()=>{for(;this.batchQueue.length>0;)this.batchQueue.shift()?.();this.isProcessing=!1}))}add(t){this.batchQueue.push(t),this.processBatch()}};var eo=pe(ie(),1),Xr=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,eo.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=H(t(this.value));return r.subscriptions.push(this.subscribe(o=>r.set(t(o)),{destroy:()=>r.destroy()})),r}};function H(e){return new Xr(e)}typeof window<"u"&&(window.signal=H,window.deepEqual=eo.default);var au,De=(e,t,r=!0)=>r?(au??=new Map(t.map(o=>[o.name,o]))).get(e):t.find(o=>o.name===e);var to=(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],c=parseInt(String(i));if(c===n&&parseInt(String(i?.split("(")[1]))>a||c>n)return s}return null};function Ko(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}}function Z(e,{componentName:t,nodeId:r,variant:o}={}){let n=`[data-id="${e}"]`;return t&&(n+=`.${t}`),r&&(n+=`\\:${r}`),o&&(n+=we(o)),n}var Te=e=>e.formulas&&Object.values(e.formulas).some(({exposeInContext:t})=>t)||e.workflows&&Object.values(e.workflows).some(({exposeInContext:t})=>t);function Wo(e,t,r){Object.entries(t.contexts??{}).forEach(([o,n])=>{let a=r.providers[[r.package,o].filter(C).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(c=>({...c,Contexts:{...c.Contexts,[o]:{...c.Contexts?.[o],[s]:i}}}))})});else if(!a&&r.env.runtime==="preview"&&r.toddle._preview){let s=r.components?.find(c=>c.name===[r.package,o].filter(C).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:B(s.attributes??{},([c,h])=>[c,h.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(c=>c.type==="param").map(c=>[c.name,c.testValue])),...B(s.route.query,([c,{testValue:h}])=>[c,h])}),i.data.Variables=B(s.variables??{},([c,h])=>[c,v(h.initialValue,i)]),e.update(c=>({...c,Contexts:{...c.Contexts,[o]:Object.fromEntries(n.formulas.map(h=>{let u=s.formulas?.[h];return u?[h,v(u.formula,i)]:(console.warn(`Component error(${t.name}): Could not find formula "${h}" in provider "${o}"`),[h,null])}))}}))}})}function Jo(e,t){window.__components||(window.__components={}),window.__components[e.name]=t}function Go(e){return C(e.formulas)?B(e.formulas,([t,r])=>{let{canCache:o,keys:n}=r.memoize?su(r.formula,e):{canCache:!1,keys:[]},a,s;return[t,{get:l=>o&&a&&n.every(i=>fe(l,i)===fe(a,i))?{hit:!0,data:s}:{hit:!1},set:(l,i)=>{o&&(a=l,s=i)}}]}):{}}function su(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 oe=e=>C(e)&&!(e.type==="value"&&!C(e.value));var xe=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),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 ro;function ne({selector:e,customPropertyName:t,signal:r,variant:o,root:n}){ro??=new xe(n,n.getElementById(so)?.sheet),r.subscribe(ro.registerProperty(e,t,o),{destroy:()=>{ro?.unregisterProperty(e,t,{mediaQuery:o?.mediaQuery,startingStyle:o?.startingStyle})}})}function zo({node:e,path:t,dataSignal:r,ctx:o,parentElement:n,instance:a,namespace:s}){let l=[o.package,e.name].filter(C).join("/"),i=De(l,o.components,o.env.runtime!=="preview");if(!i)return console.warn(`Could not find component "${l}" for component "${o.component.name}". Available components are: ["${o.components.map(w=>w.name).join('", "')}"]`),[];let c={component:o.component,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env},h=r.map(w=>B(e.attrs,([R,x])=>[R,x?.type!=="value"?v(x,{...c,data:w}):x?.value])),u=H({Location:r.get().Location,Attributes:h.get(),Apis:B(i.apis??{},([w,R])=>[w,{data:null,isLoading:!!(R.autoFetch&&v(R.autoFetch,{...c,component:i,data:r.get()})),error:null}])});o.stores.theme.subscribe(w=>{u.update(R=>({...R,Page:{...R.Page,Theme:w}}))}),Wo(u,i,o),u.update(w=>({...w,Variables:B(i.variables??{},([R,x])=>[R,v(x.initialValue,{...c,component:i,data:u.get()})])})),Jo(i,u);let m=new AbortController;u.subscribe(()=>{},{destroy:()=>m.abort(`Component ${i.name} unmounted`)});let d=Go(i),S={};ve(Object.entries(i.apis??{})).forEach(([w,R])=>{ye(R)?S[w]=Re(R,{...o,apis:S,component:i,dataSignal:u,abortSignal:m.signal,isRootComponent:!1,formulaCache:d,package:e.package??o.package,triggerEvent:(x,O)=>{let f=Object.values(e.events).find(b=>b.trigger===x);f&&f.actions?.forEach(b=>I(b,{...r.get(),Event:O},o))}}):S[w]=je({apiRequest:R,ctx:{...o,apis:S,component:i,dataSignal:u,abortSignal:m.signal,isRootComponent:!1,formulaCache:d,package:e.package??o.package,triggerEvent:(x,O)=>{let f=Object.values(e.events).find(b=>b.trigger===x);f&&f.actions?.forEach(b=>I(b,{...r.get(),Event:O},o))}},componentData:u.get()})}),Object.values(S).filter(Y).forEach(w=>{w.triggerActions(u.get())});let A=(w,R)=>{let x=Object.values(e.events).find(O=>O.trigger===w);x&&x.actions?.forEach(O=>I(O,{...r.get(),Event:R},o))},F=o.providers;if(Te(i)){let w=Object.fromEntries(Object.entries(i.formulas??{}).filter(([,R])=>R.exposeInContext).map(([R,x])=>[R,u.map(O=>v(x.formula,{data:O,component:i,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env}))]));F={...F,[i.name]:{component:i,formulaDataSignals:w,ctx:{...o,apis:S,component:i,dataSignal:u,abortSignal:m.signal,triggerEvent:A}}}}let T={};for(let w=0;w<e.children.length;w++){let R=e.children[w],O=o.component.nodes?.[R]?.slot??"default";T[O]=T[O]??[],T[O].push({id:R,path:`${t}.${w}[${O}]`,dataSignal:r,ctx:{...o,package:e.package??o.package}})}h.subscribe(w=>u.update(R=>({...R,Attributes:w})),{destroy:()=>u.destroy()});let k=Ne({dataSignal:u,component:i,components:o.components,path:t,root:o.root,isRootComponent:!1,children:T,formulaCache:d,providers:F,stores:o.stores,apis:S,abortSignal:m.signal,package:e.package??o.package,parentElement:n,onEvent:A,toddle:o.toddle,env:o.env,namespace:s,instance:e.id==="root"?{...a,[o.component.name]:"root"}:{[o.component.name]:e.id??""}});return Object.entries(e.customProperties??{}).filter(([w,{formula:R}])=>oe(R)).forEach(([w,R])=>ne({selector:Z(t,{componentName:o.component.name,nodeId:e.id}),signal:r.map(x=>re(v(R.formula,{...c,data:x}),R.unit)),customPropertyName:w,root:o.root})),e.variants?.forEach(w=>{Object.entries(w.customProperties??{}).filter(([R,{formula:x}])=>oe(x)).forEach(([R,x])=>ne({selector:Z(t,{componentName:o.component.name,nodeId:e.id,variant:w}),signal:r.map(O=>re(v(x.formula,{...c,data:O}),x.unit)),customPropertyName:R,variant:w,root:o.root}))}),k}function Qo(e){if(e instanceof DragEvent)return Array.from(e.dataTransfer?.items??[]).reduce((t,r)=>(t[r.type]=e.dataTransfer?.getData(r.type),t),{})}function Yo(e,t,r){return t.component.version===2&&r==="root"?`${t.package??t.toddle.project}-${e.tag}`:e.tag}function oo(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)$(r)&&e.setAttribute(t,String(r));else{let o=r;e instanceof HTMLProgressElement&&(!C(r)||!Number.isFinite(Number(r)))&&(o=0),e[t]=$(o)?String(o):void 0}break}case"muted":case"autoplay":e instanceof HTMLMediaElement?e[t]=$(r):e.setAttribute(t,String(r));break;default:$(r)?(e.setAttribute(t,String(r)),t==="autofocus"&&document.body.getAttribute("data-mode")!=="design"&&setTimeout(()=>e.focus(),100)):e.removeAttribute(t)}}function Zo({node:e,dataSignal:t,id:r,path:o,ctx:n,namespace:a,instance:s}){let l=Yo(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),c={component:n.component,formulaCache:n.formulaCache,root:n.root,package:n.package,toddle:n.toddle,env:n.env};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 h=Se([e.style,e.variants]);i.classList.add(h),s&&r==="root"&&Object.entries(s).forEach(([d,S])=>{i.classList.add(Ae(`${d}:${S}`))}),e.classes&&Object.entries(e.classes)?.forEach(([d,{formula:S}])=>{S?t.map(F=>$(v(S,{...c,data:F}))).subscribe(F=>F?i.classList.add(d):i.classList.remove(d)):i.classList.add(d)}),Object.entries(e.attrs).forEach(([d,S])=>{if(!C(S))return;let A,F=()=>{S.type==="value"?oo(i,d,S?.value):(A=t.map(T=>v(S,{...c,data:T})),A.subscribe(T=>{oo(i,d,T)}))};d==="autofocus"&&n.env.runtime==="preview"&&n.toddle._preview?n.toddle._preview.showSignal.subscribe(({testMode:T})=>{T?F():(A?.destroy(),i.removeAttribute(d))}):F()}),e["style-variables"]?.forEach(d=>{let{name:S,formula:A,unit:F}=d;t.map(k=>{let w=v(A,{...c,data:k});return F?w+F:w}).subscribe(k=>i.style.setProperty(`--${S}`,k))}),Object.entries(e.customProperties??{}).filter(([d,{formula:S}])=>oe(S)).forEach(([d,{formula:S,unit:A}])=>{ne({customPropertyName:d,selector:n.env.runtime==="custom-element"&&n.isRootComponent&&o==="0"?`${Z(o)}, :host`:Z(o),signal:t.map(F=>re(v(S,{...c,data:F}),A)),root:n.root})}),e.variants?.forEach(d=>{Object.entries(d.customProperties??{}).filter(([S,{formula:A}])=>oe(A)).forEach(([S,{formula:A,unit:F}])=>{ne({customPropertyName:S,selector:Z(o,{variant:d}),variant:d,signal:t.map(T=>re(v(A,{...c,data:T}),F)),root:n.root})})});let u=[];Object.values(e.events).forEach(d=>{d&&u.push([d.trigger,iu({event:d,dataSignal:t,ctx:n})])}),u.forEach(([d,S])=>{i.addEventListener(d,S,{signal:n.abortSignal})});let m=e.tag.toLocaleLowerCase();if(m==="script"||m==="style"){let d=[];e.children.map(S=>n.component.nodes?.[S]).filter(S=>S?.type==="text").forEach(S=>{if(S.value.type==="value")d.push(String(S.value.value));else{let A=t.map(F=>String(v(S.value,{...c,data:F})));d.push(A)}}),d.every(S=>typeof S=="string")&&(i.textContent=d.join("")),d.filter(S=>typeof S!="string").forEach(S=>{S.subscribe(()=>{i.textContent=d.map(A=>typeof A=="string"?A:A.get()).join("")})})}else{let d=[];e.children.forEach((S,A)=>{d.push(...X({parentElement:i,id:S,path:o+"."+A,dataSignal:t,ctx:n,namespace:a,instance:s}))}),i.append(...d)}return t.subscribe(()=>{},{destroy:()=>{i.parentNode?.removeChild(i)}}),i}var iu=({event:e,dataSignal:t,ctx:r})=>o=>(e?.actions?.forEach(n=>{if(o instanceof DragEvent&&(o.data=Qo(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)}I(n,{...t.get(),Event:o},r,o)}),!1);function Xo({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(c=>{let h=c.dataSignal.map(m=>m);r.subscribe(m=>m,{destroy:()=>h.destroy()});let u=lu(l,t,o.component.nodes);return X({...c,dataSignal:h,parentElement:n,ctx:{...c.ctx,providers:o.providers},instance:a,namespace:s,path:u>0?`${c.path}(${u})`:c.path})}):i=t.children.flatMap((c,h)=>X({id:c,path:e+"."+h,dataSignal:r,ctx:o,parentElement:n,instance:a,namespace:s})),o.env.runtime==="custom-element"&&o.isRootComponent){let c=document.createElement("slot");return c.setAttribute("name",l),i.forEach(h=>{c.appendChild(h)}),[c]}return i}function lu(e,t,r){let o=0;if(r)for(let n in r){let a=r[n];if(a.type==="slot"&&a.name===e){if(a===t)break;o++}}return o}function en({node:e,id:t,path:r,dataSignal:o,namespace:n,ctx:a}){if(n&&n!=="http://www.w3.org/1999/xhtml")return uu({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(c=>String(v(s,{data:c,component:a.component,formulaCache:a.formulaCache,root:a.root,package:a.package,toddle:a.toddle,env:a.env}))).subscribe(c=>{l.innerText=c}):l.innerText=String(s.value),l}function uu({node:e,dataSignal:t,ctx:r}){let{value:o}=e,n=document.createTextNode("");return o.type!=="value"?t.map(s=>String(v(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:u,...m})=>{switch(u.type){case"element":return[Zo({node:u,...m})];case"component":{let d=De(u.name,o.components,o.env.runtime!=="preview")!==void 0;return zo({node:{...u,id:e},...m,ctx:{...o,package:u.package??(d?void 0:o.package)},parentElement:a})}case"text":return[en({...m,node:u})];case"slot":return Xo({...m,node:u})}};function c({node:u,dataSignal:m,id:d,path:S,ctx:A,namespace:F,parentElement:T,instance:k}){let w=!0,R=null,x=m.map(b=>$(v(u.condition,{data:b,component:A.component,formulaCache:A.formulaCache,root:A.root,package:A.package,toddle:A.toddle,env:A.env}))),O=[],f=b=>{if(b&&O.length===0){if(R?.destroy(),R=m.map(y=>y),O.push(...i({node:u,dataSignal:R,path:S,id:d,ctx:A,namespace:F,parentElement:T,instance:k})),w)return;if(!T||A.root.contains(T)===!1){console.error(`Conditional: Parent element does not exist for "${S}" This is likely due to the DOM being modified outside of Nordcraft.`);return}if(T.querySelector(`[data-id="${S}"]`)){console.warn(`Conditional: Element with data-id="${S}" already exists. This is likely due to the DOM being modified outside of Nordcraft`);return}let g=to(S,T);for(let y of O)T.insertBefore(y,g)}else b||(R?.destroy(),O.forEach(g=>g.remove()),O.splice(0,O.length))};return x.subscribe(f,{destroy:()=>{R?.destroy()}}),A.env.runtime==="preview"&&A.toddle._preview&&A.toddle._preview.showSignal.subscribe(({displayedNodes:b,testMode:g})=>{b.includes(S)&&!g?f(!0):f(x.get())}),w=!1,O}function h(){let u=!0,m=0,d=new Map;return t.map(A=>{let F=v(l?.repeat,{data:A,component:o.component,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env});return typeof F!="object"?[]:Object.entries(F??{})}).subscribe(A=>{let F=t.get(),T=F.ListItem,k=T?{Parent:T}:{},w=new Set,R=A.map(([O,f],b)=>{let g={...F,ListItem:{...k,Item:f,Index:Number(b),Key:O}},y=l?.repeatKey?v(l.repeatKey,{data:g,component:o.component,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env}):O;return w.has(y)&&(console.warn(`Duplicate key "${y}" found in repeat. Fallback to index as key. This will cause a re-render of the duplicated children on every change.`),y=O),w.add(y),{Key:O,Item:f,i:b,childData:g,childKey:y}});d.forEach((O,f)=>{w.has(f)||(O.cleanup(),O.dataSignal.destroy(),O.elements.forEach(b=>b.remove()))});let x=new Map;for(let{Key:O,Item:f,i:b,childData:g,childKey:y}of R){let j=d.get(y);if(j)x.set(y,j),j.dataSignal.update(E=>({...E,ListItem:{...k,Item:f,Index:Number(b),Key:O}}));else{let E=H(g),D=t.subscribe(q=>{u||E.update(({ListItem:P})=>({...q,ListItem:P}))},{destroy:()=>E.destroy()}),M={node:l,id:e,dataSignal:E,path:O==="0"?r:`${r}(${++m})`,ctx:o,namespace:n,parentElement:a,instance:s},L=l.condition?c(M):i(M);x.set(y,{dataSignal:E,cleanup:D,elements:L})}}if(d=x,!(u||d.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}Ko(a,Array.from(d.values()).flatMap(O=>O.elements),to(r,a))}},{destroy:()=>Array.from(d.values()).forEach(A=>{A.cleanup(),A.dataSignal.destroy(),A.elements.forEach(F=>F.remove())})}),u=!1,Array.from(d.values()).flatMap(A=>A.elements)}return l.repeat?h():l.condition?c({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 cu=new Oe;function Ne({component:e,dataSignal:t,onEvent:r,isRootComponent:o,path:n,children:a,formulaCache:s,components:l,apis:i,abortSignal:c,root:h,providers:u,package:m,stores:d,parentElement:S,instance:A,toddle:F,namespace:T,env:k}){let w={triggerEvent:r,component:e,components:l,dataSignal:t,isRootComponent:o,apis:i,formulaCache:s,children:a,abortSignal:c,root:h,providers:u,stores:d,package:m,toddle:F,env:k},R=X({id:"root",path:n,dataSignal:t,ctx:w,parentElement:S,namespace:T,instance:A});return cu.add(()=>{let x;e.onAttributeChange?.actions&&e.onAttributeChange.actions.length>0&&t.map(O=>O.Attributes).subscribe(O=>{x&&e.onAttributeChange?.actions?.forEach(f=>{I(f,t.get(),w,new CustomEvent("attribute-change",{detail:Object.entries(O).reduce((b,[g,y])=>((0,tn.default)(y,x[g])===!1&&e.attributes?.[g]?.name&&(b[e.attributes?.[g]?.name]={current:x[g],new:y}),b),{})}))}),x=O}),e.onLoad?.actions?.forEach(O=>{I(O,t.get(),w)})}),R}var rn=(e,t,r)=>{let n=e.route?.info?.theme?.formula;if(n&&n.type!=="value")return t.map(()=>v(n,{data:t.get(),component:e,root:document,package:void 0,toddle:window.toddle,env:r}));if(C(n))return H(n.value);{let s=document.cookie.split("; ").find(i=>i.startsWith(`${te}=`))?.split("=")[1]??null,l=H(s);return"cookieStore"in window&&cookieStore.addEventListener("change",i=>{for(let c of i.changed)c.name===te&&l.set(c.value??null);for(let c of i.deleted)c.name===te&&l.set(null)}),l}};var ke=class extends HTMLElement{toddle;#r;#e;#o;#t;#n;constructor(t,r,o){super(),this.toddle=o;let n=this.attachInternals();n.shadowRoot?this.#o=n.shadowRoot:this.#o=this.attachShadow({mode:"open"});let a={branchName:o.branch||"main",isServer:!1,request:void 0,runtime:"custom-element",logErrors:!0};this.#r=t,this.#t=du({component:t,root:this.#o,toddle:o,env:a}),this.#n={themes:r.themes};let s=new AbortController;this.#t.subscribe(()=>{},{destroy:()=>s.abort(`Component ${t.name} unmounted`)}),this.#e={triggerEvent:this.dispatch.bind(this),root:this.#o,isRootComponent:!0,components:r.components,component:this.#r,dataSignal:this.#t,formulaCache:{},apis:{},abortSignal:s.signal,children:{},providers:{},stores:{theme:rn(t,this.#t,a)},package:void 0,toddle:o,env:a}}connectedCallback(){ve(Object.entries(this.#r.apis??{})).forEach(([r,o])=>{ye(o)?this.#e.apis[r]=Re(o,this.#e):this.#e.apis[r]=je({apiRequest:o,ctx:this.#e,componentData:this.#t.get()})}),Object.values(this.#e.apis).filter(Y).forEach(r=>{r.triggerActions(this.#t.get())});let t=this.#e.providers;if(Te(this.#r)){let r=Object.fromEntries(Object.entries(this.#r.formulas??{}).filter(([,o])=>o.exposeInContext).map(([o,n])=>[o,this.#t.map(a=>v(n.formula,{data:a,component:this.#r,formulaCache:this.#e.formulaCache,root:this.#e.root,package:this.#e.package,toddle:this.#e.toddle,env:this.#e.env}))]));t={...t,[this.#r.name]:{component:this.#r,formulaDataSignals:r,ctx:this.#e}}}this.#e.providers=t,this.#e.stores.theme.subscribe(r=>{this.#t.update(o=>({...o,Page:{...o.Page??{},Theme:r}})),C(r)?this.setAttribute(ae,r):this.removeAttribute(ae)}),this.render()}disconnectedCallback(){this.#t.destroy()}dispatch(t,r){this.dispatchEvent(new CustomEvent(t,{detail:r,bubbles:!0,composed:!0}))}render(){let t=Ne({...this.#e,path:"0",onEvent:this.dispatch.bind(this),parentElement:this.#o,instance:{[this.#r.name]:"root"}});this.#o.innerHTML="";let r=qo(this.#e.component,this.#e.components,Object.entries(this.#n.themes??{}).length>0?this.#n.themes:{defaultTheme:io},{includeResetStyle:!0,createFontFaces:!1}),o=document.createElement("style");o.appendChild(document.createTextNode(r)),this.#o.appendChild(o);let n=t[0];n&&this.#o.appendChild(n)}setAttribute(t,r){switch(typeof r){case"number":super.setAttribute(t,String(r));break;case"string":return super.setAttribute(t,r),this;default:super.setAttribute(t,`[Object ${typeof r}]`);break}return this.#t.set({...this.#t.get(),Attributes:{...this.#t.get().Attributes,[t]:r}}),this}getAttribute(t){return this.#t.get().Attributes[t]||super.getAttribute(t)}attributeChangedCallback(t,r,o){let n=this.getAttributeCaseInsensitive(t),a=this.getAttribute(n);o!=="[Object object]"&&parseFloat(o)!==a&&this.#t.set({...this.#t.get(),Attributes:{...this.#t.get().Attributes,[n]:o}})}getAttributeCaseInsensitive(t){let r=Object.keys(this.#t.get().Attributes).find(o=>o.toLowerCase()===t.toLowerCase());if(!r)throw new Error(`Unable to find attribute ${t} on component ${this.#r.name}`);return r}get __component(){return this.#r}get __ctx(){return this.#e}get __signal(){return this.#t}},du=({component:e,root:t,toddle:r,env:o})=>H({Location:void 0,Variables:B(e.variables??{},([n,{initialValue:a}])=>{if(!e)throw new Error("Component not found");return[n,v(a,{data:{Attributes:{}},component:e,root:t,package:void 0,toddle:r,env:o})]}),Attributes:B(e.attributes??{},([n])=>[n,void 0]),Apis:B(e.apis??{},([n])=>[n,{data:null,isLoading:!1,error:null}])});var pu=(e,t,r)=>{e.map(o=>t.components.find(n=>n.name===o)).forEach(o=>{let n=Ao(o.name);if(customElements.get(n)){console.warn(`Component ${n} already defined`);return}customElements.define(n,class extends ke{constructor(){super(o,t,r)}static get observedAttributes(){return Object.keys(o.attributes??{}).map(a=>a.toLowerCase())}})})};var Qp=(e=window.toddle)=>{e.isEqual=on.default,Object.entries(Gr).forEach(([t,r])=>e.registerFormula("@toddle/"+t,r.default,"getArgumentInputData"in r?r.getArgumentInputData:void 0)),Object.entries(rt).forEach(([t,r])=>e.registerAction("@toddle/"+t,r.default))};export{pu as defineComponents,Qp as loadCorePlugins};
273
+ `],componentData:y,workflowCallback:j})}async function k({api:f,res:b,performance:g,streamType:y,useTextDecoder:j,parseChunk:E,parseChunksForData:D,delimiters:M,componentData:L,workflowCallback:q}){let P={chunks:[],currentChunk:"",add(z){let W=E(z);this.chunks.push(W),W&&(r.dataSignal.set({...r.dataSignal.get(),Apis:{...r.dataSignal.get().Apis,[f.name]:{isLoading:!0,data:D(this.chunks),error:null,response:{headers:Q(b.headers)}}}}),(f.client?.onMessage?.actions??[]).length>0&&i({eventName:"message",api:f,data:{body:W},componentData:L,workflowCallback:q}))},processChunk(z){let W=M?.find($e=>z.includes($e)),no=this.currentChunk+z,ao=W?no.split(W):[no];this.currentChunk=ao.pop()??"",ao.forEach($e=>this.add($e))}},ee=j?b.body?.pipeThrough(new TextDecoderStream).getReader():b.body?.getReader();for(;ee;){let{done:z,value:W}=await ee.read();if(z)break;M?P.processChunk(W):P.add(W)}P.currentChunk&&P.add(P.currentChunk);let de={isLoading:!1,data:P.chunks,error:null,response:{status:b.status,headers:Q(b.headers)}};try{if(y==="json"){let z=JSON.parse(P.chunks.join(""));de.data=z}else y==="text"&&(de.data=P.chunks.join(""))}catch{throw new Error("Error occurred while parsing the json chunk.",{cause:P.chunks.join("")})}return w({api:f,apiStatus:de,componentData:L,performance:g,workflowCallback:q})}function w({api:f,apiStatus:b,componentData:g,performance:y,workflowCallback:j}){y.responseEnd=Date.now();let E={body:b.data,status:b.response?.status,headers:b.response?.headers??void 0};xo({apiName:f.name,response:{body:E.body,ok:!!(!b.error&&b.response?.status&&b.response.status<400),status:E.status,headers:E.headers},formulaContext:s(f,g),errorFormula:f.isError,performance:y})?(!E.body&&b.error&&(E.body=b.error),h({api:f,componentData:g,data:E,performance:y}),i({eventName:"failed",api:f,componentData:g,data:E,workflowCallback:j})):(c({api:f,componentData:g,data:E,performance:y}),i({eventName:"success",api:f,componentData:g,data:E,workflowCallback:j}))}function R(f){return Eo(f,[["client","onCompleted"],["client","onFailed"],["client","onMessage"],["service"],["server","ssr"]])}let x,O=new Fe;return x=r.dataSignal.map(f=>{let b=s(n,f),g=a(n,f);return{request:g,api:R(n),headers:Array.from(g.requestSettings.headers.entries()),autoFetch:n.autoFetch?v(n.autoFetch,b):!1,proxy:v(n.server?.proxy?.enabled.formula,b)}}),x.subscribe(async f=>{let{url:b,requestSettings:g}=f.request,y=C(n.autoFetch)&&(n.autoFetch.type!=="value"||n.autoFetch.value===!0)&&(window?.__toddle?.isPageLoaded??!1)===!1?r.toddle.pageState.Apis?.[To(b,g)]:void 0;y?y.error?h({api:n,data:{body:y.error,status:y.response?.status,headers:y.response?.headers??void 0},performance:{requestStart:y.response?.performance?.requestStart??null,responseStart:y.response?.performance?.responseStart??null,responseEnd:y.response?.performance?.responseEnd??null},componentData:t}):c({api:n,data:{body:y.data,status:y.response?.status,headers:y.response?.headers??void 0},performance:{requestStart:y.response?.performance?.requestStart??null,responseStart:y.response?.performance?.responseStart??null,responseEnd:y.response?.performance?.responseEnd??null},componentData:t}):v(n.autoFetch,s(n,t))?await u({api:n,url:b,requestSettings:g,componentData:t}):r.dataSignal.get().Apis?.[n.name]||r.dataSignal.update(j=>({...j,Apis:{...j.Apis??{},[n.name]:{isLoading:!1,data:null,error:null}}}))}),{fetch:({actionInputs:f,actionModels:b,componentData:g,workflowCallback:y})=>{let j=Object.entries(f??{}).reduce((L,[q,P])=>(P!==null&&typeof P=="object"&&"formula"in P?L[q]=P:L[q]={formula:{type:"value",value:P}},L),{}),E={...n,inputs:{...n.inputs,...j},client:{...n.client,parserMode:n.client?.parserMode??"auto",onCompleted:{trigger:n.client?.onCompleted?.trigger??"success",actions:[...n.client?.onCompleted?.actions??[],...b?.onCompleted??[]]},onFailed:{trigger:n.client?.onFailed?.trigger??"failed",actions:[...n.client?.onFailed?.actions??[],...b?.onFailed??[]]},onMessage:{trigger:n.client?.onMessage?.trigger??"message",actions:[...n.client?.onMessage?.actions??[],...b?.onMessage??[]]}}},{url:D,requestSettings:M}=a(E,g);return u({api:E,url:D,requestSettings:M,componentData:g,workflowCallback:y})},cancel:O.abort,update:(f,b)=>{n=f;let g=s(n,b),y=n.autoFetch&&v(n.autoFetch,g);if(y){let j=a(f,b);x?.set({request:j,api:R(f),autoFetch:y,proxy:v(f.server?.proxy?.enabled.formula,g),headers:Array.from(j.requestSettings.headers.entries())})}},triggerActions:f=>{let b=r.dataSignal.get().Apis?.[n.name];b===void 0||b.data===null&&b.error===null||(b.error?i({eventName:"failed",api:n,data:{body:b.error,status:b.response?.status},componentData:f}):i({eventName:"success",api:n,data:{body:b.data},componentData:f}))},destroy:()=>x?.destroy()}}var tn=pe(ie(),1);var Oe=class{constructor(){}batchQueue=[];isProcessing=!1;processBatch(){this.isProcessing||(this.isProcessing=!0,queueMicrotask(()=>{for(;this.batchQueue.length>0;)this.batchQueue.shift()?.();this.isProcessing=!1}))}add(t){this.batchQueue.push(t),this.processBatch()}};var eo=pe(ie(),1),Xr=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,eo.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=H(t(this.value));return r.subscriptions.push(this.subscribe(o=>r.set(t(o)),{destroy:()=>r.destroy()})),r}};function H(e){return new Xr(e)}typeof window<"u"&&(window.signal=H,window.deepEqual=eo.default);var au,De=(e,t,r=!0)=>r?(au??=new Map(t.map(o=>[o.name,o]))).get(e):t.find(o=>o.name===e);var to=(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],c=parseInt(String(i));if(c===n&&parseInt(String(i?.split("(")[1]))>a||c>n)return s}return null};function Ko(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}}function Z(e,{componentName:t,nodeId:r,variant:o}={}){let n=`[data-id="${e}"]`;return t&&(n+=`.${t}`),r&&(n+=`\\:${r}`),n=n.replace(/(^|[^\\])\//g,"$1\\/"),o&&(n+=we(o)),n}var Te=e=>e.formulas&&Object.values(e.formulas).some(({exposeInContext:t})=>t)||e.workflows&&Object.values(e.workflows).some(({exposeInContext:t})=>t);function Wo(e,t,r){Object.entries(t.contexts??{}).forEach(([o,n])=>{let a=r.providers[[r.package,o].filter(C).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(c=>({...c,Contexts:{...c.Contexts,[o]:{...c.Contexts?.[o],[s]:i}}}))})});else if(!a&&r.env.runtime==="preview"&&r.toddle._preview){let s=r.components?.find(c=>c.name===[r.package,o].filter(C).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:B(s.attributes??{},([c,h])=>[c,h.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(c=>c.type==="param").map(c=>[c.name,c.testValue])),...B(s.route.query,([c,{testValue:h}])=>[c,h])}),i.data.Variables=B(s.variables??{},([c,h])=>[c,v(h.initialValue,i)]),e.update(c=>({...c,Contexts:{...c.Contexts,[o]:Object.fromEntries(n.formulas.map(h=>{let u=s.formulas?.[h];return u?[h,v(u.formula,i)]:(console.warn(`Component error(${t.name}): Could not find formula "${h}" in provider "${o}"`),[h,null])}))}}))}})}function Jo(e,t){window.__components||(window.__components={}),window.__components[e.name]=t}function Go(e){return C(e.formulas)?B(e.formulas,([t,r])=>{let{canCache:o,keys:n}=r.memoize?su(r.formula,e):{canCache:!1,keys:[]},a,s;return[t,{get:l=>o&&a&&n.every(i=>fe(l,i)===fe(a,i))?{hit:!0,data:s}:{hit:!1},set:(l,i)=>{o&&(a=l,s=i)}}]}):{}}function su(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 oe=e=>C(e)&&!(e.type==="value"&&!C(e.value));var xe=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(e.escapeSelector(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(e.escapeSelector(t),o),a=this.ruleMap.get(n);a&&(a.style.removeProperty(r),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}static escapeSelector(t){return t.replace(/(^|[^\\])\//g,"$1\\/")}};var ro;function ne({selector:e,customPropertyName:t,signal:r,variant:o,root:n}){ro??=new xe(n,n.getElementById(so)?.sheet),r.subscribe(ro.registerProperty(e,t,o),{destroy:()=>{ro?.unregisterProperty(e,t,{mediaQuery:o?.mediaQuery,startingStyle:o?.startingStyle})}})}function zo({node:e,path:t,dataSignal:r,ctx:o,parentElement:n,instance:a,namespace:s}){let l=[o.package,e.name].filter(C).join("/"),i=De(l,o.components,o.env.runtime!=="preview");if(!i)return console.warn(`Could not find component "${l}" for component "${o.component.name}". Available components are: ["${o.components.map(w=>w.name).join('", "')}"]`),[];let c={component:o.component,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env},h=r.map(w=>B(e.attrs,([R,x])=>[R,x?.type!=="value"?v(x,{...c,data:w}):x?.value])),u=H({Location:r.get().Location,Attributes:h.get(),Apis:B(i.apis??{},([w,R])=>[w,{data:null,isLoading:!!(R.autoFetch&&v(R.autoFetch,{...c,component:i,data:r.get()})),error:null}])});o.stores.theme.subscribe(w=>{u.update(R=>({...R,Page:{...R.Page,Theme:w}}))}),Wo(u,i,o),u.update(w=>({...w,Variables:B(i.variables??{},([R,x])=>[R,v(x.initialValue,{...c,component:i,data:u.get()})])})),Jo(i,u);let m=new AbortController;u.subscribe(()=>{},{destroy:()=>m.abort(`Component ${i.name} unmounted`)});let d=Go(i),S={};ve(Object.entries(i.apis??{})).forEach(([w,R])=>{ye(R)?S[w]=Re(R,{...o,apis:S,component:i,dataSignal:u,abortSignal:m.signal,isRootComponent:!1,formulaCache:d,package:e.package??o.package,triggerEvent:(x,O)=>{let f=Object.values(e.events).find(b=>b.trigger===x);f&&f.actions?.forEach(b=>I(b,{...r.get(),Event:O},o))}}):S[w]=je({apiRequest:R,ctx:{...o,apis:S,component:i,dataSignal:u,abortSignal:m.signal,isRootComponent:!1,formulaCache:d,package:e.package??o.package,triggerEvent:(x,O)=>{let f=Object.values(e.events).find(b=>b.trigger===x);f&&f.actions?.forEach(b=>I(b,{...r.get(),Event:O},o))}},componentData:u.get()})}),Object.values(S).filter(Y).forEach(w=>{w.triggerActions(u.get())});let A=(w,R)=>{let x=Object.values(e.events).find(O=>O.trigger===w);x&&x.actions?.forEach(O=>I(O,{...r.get(),Event:R},o))},F=o.providers;if(Te(i)){let w=Object.fromEntries(Object.entries(i.formulas??{}).filter(([,R])=>R.exposeInContext).map(([R,x])=>[R,u.map(O=>v(x.formula,{data:O,component:i,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env}))]));F={...F,[i.name]:{component:i,formulaDataSignals:w,ctx:{...o,apis:S,component:i,dataSignal:u,abortSignal:m.signal,triggerEvent:A}}}}let T={};for(let w=0;w<e.children.length;w++){let R=e.children[w],O=o.component.nodes?.[R]?.slot??"default";T[O]=T[O]??[],T[O].push({id:R,path:`${t}.${w}[${O}]`,dataSignal:r,ctx:{...o,package:e.package??o.package}})}h.subscribe(w=>u.update(R=>({...R,Attributes:w})),{destroy:()=>u.destroy()});let k=Ne({dataSignal:u,component:i,components:o.components,path:t,root:o.root,isRootComponent:!1,children:T,formulaCache:d,providers:F,stores:o.stores,apis:S,abortSignal:m.signal,package:e.package??o.package,parentElement:n,onEvent:A,toddle:o.toddle,env:o.env,namespace:s,instance:e.id==="root"?{...a,[o.component.name]:"root"}:{[o.component.name]:e.id??""}});return Object.entries(e.customProperties??{}).filter(([w,{formula:R}])=>oe(R)).forEach(([w,R])=>ne({selector:Z(t,{componentName:o.component.name,nodeId:e.id}),signal:r.map(x=>re(v(R.formula,{...c,data:x}),R.unit)),customPropertyName:w,root:o.root})),e.variants?.forEach(w=>{Object.entries(w.customProperties??{}).filter(([R,{formula:x}])=>oe(x)).forEach(([R,x])=>ne({selector:Z(t,{componentName:o.component.name,nodeId:e.id,variant:w}),signal:r.map(O=>re(v(x.formula,{...c,data:O}),x.unit)),customPropertyName:R,variant:w,root:o.root}))}),k}function Qo(e){if(e instanceof DragEvent)return Array.from(e.dataTransfer?.items??[]).reduce((t,r)=>(t[r.type]=e.dataTransfer?.getData(r.type),t),{})}function Yo(e,t,r){return t.component.version===2&&r==="root"?`${t.package??t.toddle.project}-${e.tag}`:e.tag}function oo(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)$(r)&&e.setAttribute(t,String(r));else{let o=r;e instanceof HTMLProgressElement&&(!C(r)||!Number.isFinite(Number(r)))&&(o=0),e[t]=$(o)?String(o):void 0}break}case"muted":case"autoplay":e instanceof HTMLMediaElement?e[t]=$(r):e.setAttribute(t,String(r));break;default:$(r)?(e.setAttribute(t,String(r)),t==="autofocus"&&document.body.getAttribute("data-mode")!=="design"&&setTimeout(()=>e.focus(),100)):e.removeAttribute(t)}}function Zo({node:e,dataSignal:t,id:r,path:o,ctx:n,namespace:a,instance:s}){let l=Yo(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),c={component:n.component,formulaCache:n.formulaCache,root:n.root,package:n.package,toddle:n.toddle,env:n.env};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 h=Se([e.style,e.variants]);i.classList.add(h),s&&r==="root"&&Object.entries(s).forEach(([d,S])=>{i.classList.add(Ae(`${d}:${S}`))}),e.classes&&Object.entries(e.classes)?.forEach(([d,{formula:S}])=>{S?t.map(F=>$(v(S,{...c,data:F}))).subscribe(F=>F?i.classList.add(d):i.classList.remove(d)):i.classList.add(d)}),Object.entries(e.attrs).forEach(([d,S])=>{if(!C(S))return;let A,F=()=>{S.type==="value"?oo(i,d,S?.value):(A=t.map(T=>v(S,{...c,data:T})),A.subscribe(T=>{oo(i,d,T)}))};d==="autofocus"&&n.env.runtime==="preview"&&n.toddle._preview?n.toddle._preview.showSignal.subscribe(({testMode:T})=>{T?F():(A?.destroy(),i.removeAttribute(d))}):F()}),e["style-variables"]?.forEach(d=>{let{name:S,formula:A,unit:F}=d;t.map(k=>{let w=v(A,{...c,data:k});return F?w+F:w}).subscribe(k=>i.style.setProperty(`--${S}`,k))}),Object.entries(e.customProperties??{}).filter(([d,{formula:S}])=>oe(S)).forEach(([d,{formula:S,unit:A}])=>{ne({customPropertyName:d,selector:n.env.runtime==="custom-element"&&n.isRootComponent&&o==="0"?`${Z(o)}, :host`:Z(o),signal:t.map(F=>re(v(S,{...c,data:F}),A)),root:n.root})}),e.variants?.forEach(d=>{Object.entries(d.customProperties??{}).filter(([S,{formula:A}])=>oe(A)).forEach(([S,{formula:A,unit:F}])=>{ne({customPropertyName:S,selector:Z(o,{variant:d}),variant:d,signal:t.map(T=>re(v(A,{...c,data:T}),F)),root:n.root})})});let u=[];Object.values(e.events).forEach(d=>{d&&u.push([d.trigger,iu({event:d,dataSignal:t,ctx:n})])}),u.forEach(([d,S])=>{i.addEventListener(d,S,{signal:n.abortSignal})});let m=e.tag.toLocaleLowerCase();if(m==="script"||m==="style"){let d=[];e.children.map(S=>n.component.nodes?.[S]).filter(S=>S?.type==="text").forEach(S=>{if(S.value.type==="value")d.push(String(S.value.value));else{let A=t.map(F=>String(v(S.value,{...c,data:F})));d.push(A)}}),d.every(S=>typeof S=="string")&&(i.textContent=d.join("")),d.filter(S=>typeof S!="string").forEach(S=>{S.subscribe(()=>{i.textContent=d.map(A=>typeof A=="string"?A:A.get()).join("")})})}else{let d=[];e.children.forEach((S,A)=>{d.push(...X({parentElement:i,id:S,path:o+"."+A,dataSignal:t,ctx:n,namespace:a,instance:s}))}),i.append(...d)}return t.subscribe(()=>{},{destroy:()=>{i.parentNode?.removeChild(i)}}),i}var iu=({event:e,dataSignal:t,ctx:r})=>o=>(e?.actions?.forEach(n=>{if(o instanceof DragEvent&&(o.data=Qo(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)}I(n,{...t.get(),Event:o},r,o)}),!1);function Xo({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(c=>{let h=c.dataSignal.map(m=>m);r.subscribe(m=>m,{destroy:()=>h.destroy()});let u=lu(l,t,o.component.nodes);return X({...c,dataSignal:h,parentElement:n,ctx:{...c.ctx,providers:o.providers},instance:a,namespace:s,path:u>0?`${c.path}(${u})`:c.path})}):i=t.children.flatMap((c,h)=>X({id:c,path:e+"."+h,dataSignal:r,ctx:o,parentElement:n,instance:a,namespace:s})),o.env.runtime==="custom-element"&&o.isRootComponent){let c=document.createElement("slot");return c.setAttribute("name",l),i.forEach(h=>{c.appendChild(h)}),[c]}return i}function lu(e,t,r){let o=0;if(r)for(let n in r){let a=r[n];if(a.type==="slot"&&a.name===e){if(a===t)break;o++}}return o}function en({node:e,id:t,path:r,dataSignal:o,namespace:n,ctx:a}){if(n&&n!=="http://www.w3.org/1999/xhtml")return uu({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(c=>String(v(s,{data:c,component:a.component,formulaCache:a.formulaCache,root:a.root,package:a.package,toddle:a.toddle,env:a.env}))).subscribe(c=>{l.innerText=c}):l.innerText=String(s.value),l}function uu({node:e,dataSignal:t,ctx:r}){let{value:o}=e,n=document.createTextNode("");return o.type!=="value"?t.map(s=>String(v(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:u,...m})=>{switch(u.type){case"element":return[Zo({node:u,...m})];case"component":{let d=De(u.name,o.components,o.env.runtime!=="preview")!==void 0;return zo({node:{...u,id:e},...m,ctx:{...o,package:u.package??(d?void 0:o.package)},parentElement:a})}case"text":return[en({...m,node:u})];case"slot":return Xo({...m,node:u})}};function c({node:u,dataSignal:m,id:d,path:S,ctx:A,namespace:F,parentElement:T,instance:k}){let w=!0,R=null,x=m.map(b=>$(v(u.condition,{data:b,component:A.component,formulaCache:A.formulaCache,root:A.root,package:A.package,toddle:A.toddle,env:A.env}))),O=[],f=b=>{if(b&&O.length===0){if(R?.destroy(),R=m.map(y=>y),O.push(...i({node:u,dataSignal:R,path:S,id:d,ctx:A,namespace:F,parentElement:T,instance:k})),w)return;if(!T||A.root.contains(T)===!1){console.error(`Conditional: Parent element does not exist for "${S}" This is likely due to the DOM being modified outside of Nordcraft.`);return}if(T.querySelector(`[data-id="${S}"]`)){console.warn(`Conditional: Element with data-id="${S}" already exists. This is likely due to the DOM being modified outside of Nordcraft`);return}let g=to(S,T);for(let y of O)T.insertBefore(y,g)}else b||(R?.destroy(),O.forEach(g=>g.remove()),O.splice(0,O.length))};return x.subscribe(f,{destroy:()=>{R?.destroy()}}),A.env.runtime==="preview"&&A.toddle._preview&&A.toddle._preview.showSignal.subscribe(({displayedNodes:b,testMode:g})=>{b.includes(S)&&!g?f(!0):f(x.get())}),w=!1,O}function h(){let u=!0,m=0,d=new Map;return t.map(A=>{let F=v(l?.repeat,{data:A,component:o.component,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env});return typeof F!="object"?[]:Object.entries(F??{})}).subscribe(A=>{let F=t.get(),T=F.ListItem,k=T?{Parent:T}:{},w=new Set,R=A.map(([O,f],b)=>{let g={...F,ListItem:{...k,Item:f,Index:Number(b),Key:O}},y=l?.repeatKey?v(l.repeatKey,{data:g,component:o.component,formulaCache:o.formulaCache,root:o.root,package:o.package,toddle:o.toddle,env:o.env}):O;return w.has(y)&&(console.warn(`Duplicate key "${y}" found in repeat. Fallback to index as key. This will cause a re-render of the duplicated children on every change.`),y=O),w.add(y),{Key:O,Item:f,i:b,childData:g,childKey:y}});d.forEach((O,f)=>{w.has(f)||(O.cleanup(),O.dataSignal.destroy(),O.elements.forEach(b=>b.remove()))});let x=new Map;for(let{Key:O,Item:f,i:b,childData:g,childKey:y}of R){let j=d.get(y);if(j)x.set(y,j),j.dataSignal.update(E=>({...E,ListItem:{...k,Item:f,Index:Number(b),Key:O}}));else{let E=H(g),D=t.subscribe(q=>{u||E.update(({ListItem:P})=>({...q,ListItem:P}))},{destroy:()=>E.destroy()}),M={node:l,id:e,dataSignal:E,path:O==="0"?r:`${r}(${++m})`,ctx:o,namespace:n,parentElement:a,instance:s},L=l.condition?c(M):i(M);x.set(y,{dataSignal:E,cleanup:D,elements:L})}}if(d=x,!(u||d.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}Ko(a,Array.from(d.values()).flatMap(O=>O.elements),to(r,a))}},{destroy:()=>Array.from(d.values()).forEach(A=>{A.cleanup(),A.dataSignal.destroy(),A.elements.forEach(F=>F.remove())})}),u=!1,Array.from(d.values()).flatMap(A=>A.elements)}return l.repeat?h():l.condition?c({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 cu=new Oe;function Ne({component:e,dataSignal:t,onEvent:r,isRootComponent:o,path:n,children:a,formulaCache:s,components:l,apis:i,abortSignal:c,root:h,providers:u,package:m,stores:d,parentElement:S,instance:A,toddle:F,namespace:T,env:k}){let w={triggerEvent:r,component:e,components:l,dataSignal:t,isRootComponent:o,apis:i,formulaCache:s,children:a,abortSignal:c,root:h,providers:u,stores:d,package:m,toddle:F,env:k},R=X({id:"root",path:n,dataSignal:t,ctx:w,parentElement:S,namespace:T,instance:A});return cu.add(()=>{let x;e.onAttributeChange?.actions&&e.onAttributeChange.actions.length>0&&t.map(O=>O.Attributes).subscribe(O=>{x&&e.onAttributeChange?.actions?.forEach(f=>{I(f,t.get(),w,new CustomEvent("attribute-change",{detail:Object.entries(O).reduce((b,[g,y])=>((0,tn.default)(y,x[g])===!1&&e.attributes?.[g]?.name&&(b[e.attributes?.[g]?.name]={current:x[g],new:y}),b),{})}))}),x=O}),e.onLoad?.actions?.forEach(O=>{I(O,t.get(),w)})}),R}var rn=(e,t,r)=>{let n=e.route?.info?.theme?.formula;if(n&&n.type!=="value")return t.map(()=>v(n,{data:t.get(),component:e,root:document,package:void 0,toddle:window.toddle,env:r}));if(C(n))return H(n.value);{let s=document.cookie.split("; ").find(i=>i.startsWith(`${te}=`))?.split("=")[1]??null,l=H(s);return"cookieStore"in window&&cookieStore.addEventListener("change",i=>{for(let c of i.changed)c.name===te&&l.set(c.value??null);for(let c of i.deleted)c.name===te&&l.set(null)}),l}};var ke=class extends HTMLElement{toddle;#r;#e;#o;#t;#n;constructor(t,r,o){super(),this.toddle=o;let n=this.attachInternals();n.shadowRoot?this.#o=n.shadowRoot:this.#o=this.attachShadow({mode:"open"});let a={branchName:o.branch||"main",isServer:!1,request:void 0,runtime:"custom-element",logErrors:!0};this.#r=t,this.#t=du({component:t,root:this.#o,toddle:o,env:a}),this.#n={themes:r.themes};let s=new AbortController;this.#t.subscribe(()=>{},{destroy:()=>s.abort(`Component ${t.name} unmounted`)}),this.#e={triggerEvent:this.dispatch.bind(this),root:this.#o,isRootComponent:!0,components:r.components,component:this.#r,dataSignal:this.#t,formulaCache:{},apis:{},abortSignal:s.signal,children:{},providers:{},stores:{theme:rn(t,this.#t,a)},package:void 0,toddle:o,env:a}}connectedCallback(){ve(Object.entries(this.#r.apis??{})).forEach(([r,o])=>{ye(o)?this.#e.apis[r]=Re(o,this.#e):this.#e.apis[r]=je({apiRequest:o,ctx:this.#e,componentData:this.#t.get()})}),Object.values(this.#e.apis).filter(Y).forEach(r=>{r.triggerActions(this.#t.get())});let t=this.#e.providers;if(Te(this.#r)){let r=Object.fromEntries(Object.entries(this.#r.formulas??{}).filter(([,o])=>o.exposeInContext).map(([o,n])=>[o,this.#t.map(a=>v(n.formula,{data:a,component:this.#r,formulaCache:this.#e.formulaCache,root:this.#e.root,package:this.#e.package,toddle:this.#e.toddle,env:this.#e.env}))]));t={...t,[this.#r.name]:{component:this.#r,formulaDataSignals:r,ctx:this.#e}}}this.#e.providers=t,this.#e.stores.theme.subscribe(r=>{this.#t.update(o=>({...o,Page:{...o.Page??{},Theme:r}})),C(r)?this.setAttribute(ae,r):this.removeAttribute(ae)}),this.render()}disconnectedCallback(){this.#t.destroy()}dispatch(t,r){this.dispatchEvent(new CustomEvent(t,{detail:r,bubbles:!0,composed:!0}))}render(){let t=Ne({...this.#e,path:"0",onEvent:this.dispatch.bind(this),parentElement:this.#o,instance:{[this.#r.name]:"root"}});this.#o.innerHTML="";let r=qo(this.#e.component,this.#e.components,Object.entries(this.#n.themes??{}).length>0?this.#n.themes:{defaultTheme:io},{includeResetStyle:!0,createFontFaces:!1}),o=document.createElement("style");o.appendChild(document.createTextNode(r)),this.#o.appendChild(o);let n=t[0];n&&this.#o.appendChild(n)}setAttribute(t,r){switch(typeof r){case"number":super.setAttribute(t,String(r));break;case"string":return super.setAttribute(t,r),this;default:super.setAttribute(t,`[Object ${typeof r}]`);break}return this.#t.set({...this.#t.get(),Attributes:{...this.#t.get().Attributes,[t]:r}}),this}getAttribute(t){return this.#t.get().Attributes[t]||super.getAttribute(t)}attributeChangedCallback(t,r,o){let n=this.getAttributeCaseInsensitive(t),a=this.getAttribute(n);o!=="[Object object]"&&parseFloat(o)!==a&&this.#t.set({...this.#t.get(),Attributes:{...this.#t.get().Attributes,[n]:o}})}getAttributeCaseInsensitive(t){let r=Object.keys(this.#t.get().Attributes).find(o=>o.toLowerCase()===t.toLowerCase());if(!r)throw new Error(`Unable to find attribute ${t} on component ${this.#r.name}`);return r}get __component(){return this.#r}get __ctx(){return this.#e}get __signal(){return this.#t}},du=({component:e,root:t,toddle:r,env:o})=>H({Location:void 0,Variables:B(e.variables??{},([n,{initialValue:a}])=>{if(!e)throw new Error("Component not found");return[n,v(a,{data:{Attributes:{}},component:e,root:t,package:void 0,toddle:r,env:o})]}),Attributes:B(e.attributes??{},([n])=>[n,void 0]),Apis:B(e.apis??{},([n])=>[n,{data:null,isLoading:!1,error:null}])});var pu=(e,t,r)=>{e.map(o=>t.components.find(n=>n.name===o)).forEach(o=>{let n=Ao(o.name);if(customElements.get(n)){console.warn(`Component ${n} already defined`);return}customElements.define(n,class extends ke{constructor(){super(o,t,r)}static get observedAttributes(){return Object.keys(o.attributes??{}).map(a=>a.toLowerCase())}})})};var Qp=(e=window.toddle)=>{e.isEqual=on.default,Object.entries(Gr).forEach(([t,r])=>e.registerFormula("@toddle/"+t,r.default,"getArgumentInputData"in r?r.getArgumentInputData:void 0)),Object.entries(rt).forEach(([t,r])=>e.registerAction("@toddle/"+t,r.default))};export{pu as defineComponents,Qp as loadCorePlugins};
274
274
  //# sourceMappingURL=custom-element.main.esm.js.map