@nodegx/preview 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/backend/cli.js +102959 -0
- package/dist/browser/noodl-graph-target.js +1 -1
- package/dist/browser/noodl-preview-in-page.js +5 -5
- package/dist/external/deploy/noodl.deploy.js +1 -1
- package/dist/nodegx-deploy.cjs +1569 -1563
- package/dist/nodegx-deploy.inputs.json +402 -401
- package/dist/noodl-preview.cjs +2351 -2145
- package/dist/noodl-preview.inputs.json +403 -401
- package/dist/package.json +1 -1
- package/package.json +3 -3
|
@@ -397,7 +397,7 @@ Outputs["sum"] = __p("v1", Inputs["a"]);
|
|
|
397
397
|
`)));t.push(` generated: ${e.generated.ran} / ${e.generated.requested} ran, ${e.generated.divergences.length} divergence(s)`);for(let[r,s]of Object.entries(e.generated.withheld??{}))t.push(` withheld: ${r} never drawn as ${s.values.map(a=>JSON.stringify(ge(a))).join(", ")} \u2014 row ${s.row}`);for(let r of e.generated.known)t.push(` known: ${r.count} attributed to row ${r.row}`),r.example&&(t.push(` e.g. seed ${r.example.seed} params ${iL(r.example.params)} steps ${JSON.stringify(r.example.steps)}${r.example.world?` world ${JSON.stringify(r.example.world)}`:""}`),t.push(" "+nd(r.example.difference,"interpreter",e.target).replace(/\n/g,`
|
|
398
398
|
`)));for(let r of e.generated.divergences)t.push(` seed ${r.seed}${r.shrunk?` (shrunk to ${r.steps.length} step(s) in ${r.shrinkRuns} runs)`:""}${r.replayFile?" \u2192 "+r.replayFile:""}`),t.push(` params ${iL(r.params)} steps ${JSON.stringify(r.steps)}${r.world?` world ${JSON.stringify(r.world)}`:""}`),t.push(" "+nd(r.difference,"interpreter",e.target).replace(/\n/g,`
|
|
399
399
|
`));if(e.mutants){t.push(` mutants: ${e.mutants.killed} / ${e.mutants.total} killed`);for(let r of e.mutants.survivors)t.push(` SURVIVED${e.reach?" (not graded by this reach)":""} ${r.reducer} ${r.kind} on branch ${r.branch}${r.swappedWith?" \u2194 "+r.swappedWith:""}`);for(let r of e.mutants.unreached)t.push(` UNREACHED ${r.reducer}: ${r.shape}`);for(let r of e.mutants.equivalent)r.count>0&&t.push(` equivalent \xD7${r.count}: ${r.why}`);e.mutants.editorOnly&&t.push(` editor only \xD7${e.mutants.editorOnly.length}: change only what the node tells the editor, which this target has none of`)}return t.join(`
|
|
400
|
-
`)}function _Ce(e){let t=Object.values(e.nodes).some(o=>(Lr(o.type)?.needs?.length??0)>0),n=Object.values(e.components??{}).some(o=>o.item!==void 0);return e.world!==void 0||t||n?new Gs(e.world??{}):void 0}async function p8(e,t){let n=GM(t),o=[],r={},s,a=c=>{if(!s)return;if(!(c in s))throw new Error(`${e.name}: mountGraph returned no handle for ${JSON.stringify(c)} \u2014 every node and component instance is a subject`);let p=e.trace(s[c]);for(let h=r[c]??0;h<p.length;h++)p[h].t!=="settle"&&o.push({...p[h],subject:c});r[c]=p.length},l=c=>{if(!s||!(c in s))throw new Error(`the scenario names no node or component ${JSON.stringify(c)}`);return s[c]},d=_Ce(t),u;if(d){if(!e.install)throw new Error(`${e.name} has no install(): it cannot play a graph that needs a world`);u=e.install(d)}try{s=await e.mountGraph(t.nodes,t.wires??[],t.components,t.definitions);for(let c of n)a(c);for(let c of t.steps)if(c==="settle"){await e.settle(),o.push({t:"settle"});for(let p of n)a(p)}else if("wire"in c){if(!e.connect)throw new Error(`${e.name} cannot make a wire after mount`);let p=Br(c.wire.from),h=Br(c.wire.to);e.connect(l(p.node),p.port,l(h.node),h.port)}else if("signal"in c)e.signal(l(c.node),c.signal),a(c.node);else if("advance"in c){if(!e.advance)throw new Error(`${e.name} has no advance(): it cannot move a world's clock`);await e.advance(l(c.node),c.advance),a(c.node)}else e.set(l(c.node),c.set,c.value),a(c.node);return o}catch(c){throw c instanceof gi?c:new gi(`${e.name} threw: ${c instanceof Error?c.message:String(c)}`,o,c)}finally{if(u&&u(),s)for(let c of n)c in s&&e.dispose(s[c])}}async function h8(e,t,n,o={}){let r={name:e.name,clauses:e.clauses};if(!e.expect)return{...r,status:"refused",reason:"no expect recorded \u2014 run the runtime test in record mode"};if(o.outside!==void 0)return{...r,status:"outside",reason:o.outside};let s=o.reach,a=s?zM(e.expect,s):e.expect,l=s?$M(e.claims,s):e.claims;if(!jg(a))return{...r,status:"refused",reason:`the recorded trace has no observation event${s?" inside the reach":""} \u2014 an arm with no predicate grades nothing`};let d=await n();if("outside"in d)return{...r,status:"outside",reason:d.outside};let u=d.trace,c=d.error!==void 0?Ug(a,u,d.error):td(a,u),p=e.divergence?.[t];if(p!==void 0)return c.index<0?{...r,status:"failed",reason:`expected to differ on ${t} (${p}) but the traces are equal`,actual:u}:{...r,status:"diverged",reason:p,difference:c,actual:u};let h=YM(u,l);return c.index<0&&h.length===0?{...r,status:"passed",actual:u}:e.row&&c.index>=0&&h.length===0?{...r,status:"known",reason:`row ${e.row}: ${t} bears the clause out where the runtime does not`,difference:c,actual:u}:{...r,status:"failed",difference:c.index<0?void 0:c,claimFailures:h.length?h:void 0,actual:u}}async function f8(e,t){try{return{trace:await p8(e,t)}}catch(n){if(!(n instanceof gi))throw n;return{trace:n.trace,error:n.message}}}function m8(e){return e.every(t=>t.status==="passed"||t.status==="diverged"||t.status==="known"||t.status==="outside")}async function PCe(e,t){if(!XM(e))throw new Error(`${e.name} implements no mountGraph`);let n=[];for(let o of t){let r=Date.now(),s=await h8(o,e.name,()=>f8(e,o),{outside:o.expect&&
|
|
400
|
+
`)}function _Ce(e){let t=Object.values(e.nodes).some(o=>(Lr(o.type)?.needs?.length??0)>0),n=Object.values(e.components??{}).some(o=>o.item!==void 0);return e.world!==void 0||t||n?new Gs(e.world??{}):void 0}async function p8(e,t){let n=GM(t),o=[],r={},s,a=c=>{if(!s)return;if(!(c in s))throw new Error(`${e.name}: mountGraph returned no handle for ${JSON.stringify(c)} \u2014 every node and component instance is a subject`);let p=e.trace(s[c]);for(let h=r[c]??0;h<p.length;h++)p[h].t!=="settle"&&o.push({...p[h],subject:c});r[c]=p.length},l=c=>{if(!s||!(c in s))throw new Error(`the scenario names no node or component ${JSON.stringify(c)}`);return s[c]},d=_Ce(t),u;if(d){if(!e.install)throw new Error(`${e.name} has no install(): it cannot play a graph that needs a world`);u=e.install(d)}try{s=await e.mountGraph(t.nodes,t.wires??[],t.components,t.definitions);for(let c of n)a(c);for(let c of t.steps)if(c==="settle"){await e.settle(),o.push({t:"settle"});for(let p of n)a(p)}else if("wire"in c){if(!e.connect)throw new Error(`${e.name} cannot make a wire after mount`);let p=Br(c.wire.from),h=Br(c.wire.to);e.connect(l(p.node),p.port,l(h.node),h.port)}else if("signal"in c)e.signal(l(c.node),c.signal),a(c.node);else if("advance"in c){if(!e.advance)throw new Error(`${e.name} has no advance(): it cannot move a world's clock`);await e.advance(l(c.node),c.advance),a(c.node)}else e.set(l(c.node),c.set,c.value),a(c.node);return o}catch(c){throw c instanceof gi?c:new gi(`${e.name} threw: ${c instanceof Error?c.message:String(c)}`,o,c)}finally{if(u&&u(),s)for(let c of n)c in s&&e.dispose(s[c])}}async function h8(e,t,n,o={}){let r={name:e.name,clauses:e.clauses};if(!e.expect)return{...r,status:"refused",reason:"no expect recorded \u2014 run the runtime test in record mode"};if(o.outside!==void 0)return{...r,status:"outside",reason:o.outside};let s=o.reach,a=s?zM(e.expect,s):e.expect,l=s?$M(e.claims,s):e.claims;if(!jg(a))return{...r,status:"refused",reason:`the recorded trace has no observation event${s?" inside the reach":""} \u2014 an arm with no predicate grades nothing`};let d=await n();if("outside"in d)return{...r,status:"outside",reason:d.outside};let u=d.trace,c=d.error!==void 0?Ug(a,u,d.error):td(a,u),p=e.divergence?.[t];if(p!==void 0)return c.index<0?{...r,status:"failed",reason:`expected to differ on ${t} (${p}) but the traces are equal`,actual:u}:{...r,status:"diverged",reason:p,difference:c,actual:u};let h=YM(u,l);return c.index<0&&h.length===0?{...r,status:"passed",actual:u}:e.row&&c.index>=0&&h.length===0?{...r,status:"known",reason:`row ${e.row}: ${t} bears the clause out where the runtime does not`,difference:c,actual:u}:{...r,status:"failed",difference:c.index<0?void 0:c,claimFailures:h.length?h:void 0,actual:u}}async function f8(e,t){try{return{trace:await p8(e,t)}}catch(n){if(!(n instanceof gi))throw n;return{trace:n.trace,error:n.message}}}function m8(e){return e.every(t=>t.status==="passed"||t.status==="diverged"||t.status==="known"||t.status==="outside")}async function PCe(e,t){if(!XM(e))throw new Error(`${e.name} implements no mountGraph`);let n=[];for(let o of t){let r=Date.now(),s=o.expect&&e.canPlay?e.canPlay(o):void 0,a=await h8(o,e.name,()=>f8(e,o),{outside:s,reach:o.expect&&s===void 0&&e.graphReach?e.graphReach(o):void 0});n.push({...a,timeMs:Date.now()-r})}return{target:e.name,results:n,conforms:m8(n)}}function ACe(e){let t=o=>e.results.filter(r=>r.status===o).length,n=[`graph scenarios on ${e.target}: ${e.conforms?"CONFORM":"DO NOT CONFORM"} \u2014 ${t("passed")} passed, ${t("diverged")} diverged as declared, ${t("known")} known rows, ${t("outside")} outside, ${t("failed")} failed, ${t("refused")} refused of ${e.results.length}`];for(let o of e.results){n.push(` ${o.status.padEnd(8)} [${o.clauses.join(" ")}] ${o.name} (${o.timeMs} ms)${o.reason?": "+o.reason:""}`),o.difference&&n.push(" "+nd(o.difference,"runtime",e.target).replace(/\n/g,`
|
|
401
401
|
`));for(let r of o.claimFailures??[])n.push(` claim: ${r}`)}return n.join(`
|
|
402
402
|
`)}var DCe={top:0,right:0,bottom:0,left:0};function rd(e){return{...DCe,...e??{}}}function Vr(e,t){return e.percent!==void 0&&e.percent!==0?t===void 0?void 0:e.percent/100*t+(e.px??0):e.px??0}function uR(e,t,n){let o=e;return n!==void 0&&o>n&&(o=n),t!==void 0&&o<t&&(o=t),o}var y8={main:"height",cross:"width",mainEdges:["top","bottom"],crossEdges:["left","right"]},b8={main:"width",cross:"height",mainEdges:["left","right"],crossEdges:["top","bottom"]};function dL(e,t,n){let o=t==="width"?e.minWidth:e.minHeight;return o?Vr(o,n):void 0}function uL(e,t,n){let o=t==="width"?e.maxWidth:e.maxHeight;return o?Vr(o,n):void 0}function lL(e,t,n,o,r){let s=e[t],a;return s.kind==="length"?a=Vr(s.length,n)??e.content[t]:s.kind==="fill"||r?a=n===void 0?e.content[t]:Math.max(0,n-o):a=e.content[t],uR(a,dL(e,t,n),uL(e,t,n))}function w8(e,t,n){let o=e[t];if(o.kind==="hug")return e.content[t];if(o.kind==="length")return Vr(o.length,n)??e.content[t];let r=o.basis??{px:0};if(r==="hug")return e.content[t];if(n===void 0){let s=Vr(r,void 0);return s===void 0||o.basis===void 0?e.content[t]:s}return Vr(r,n)??e.content[t]}function FCe(e,t,n,o,r,s=!1){let a=e.length,l=e.map(g=>w8(g,t,o)),d=g=>s?Math.max(g.floor??0,g.content[t]):g.floor??0,u=e.map(g=>dL(g,t,o)??(g[t].kind==="fill"?d(g):void 0)),c=e.map(g=>uL(g,t,o)),p=l.map((g,y)=>uR(g,u[y],c[y])),h=e.map(g=>{let y=g[t];return y.kind==="fill"?Math.max(0,y.weight):0});if(n===void 0)return p;let m=p.reduce((g,y)=>g+y,0)+r<n,b=p.slice(),k=e.map((g,y)=>m?h[y]===0||l[y]>p[y]:h[y]===0||l[y]<p[y]),w=n-r-e.reduce((g,y,S)=>g+(k[S]?p[S]:l[S]),0);for(let g=0;g<=a&&!k.every(Boolean);g++){let y=n-r-e.reduce((F,U,$)=>F+(k[$]?b[$]:l[$]),0),S=[...Array(a).keys()].filter(F=>!k[F]);if(m){let F=S.reduce((U,$)=>U+h[$],0);F<1&&Math.abs(w*F)<Math.abs(y)&&(y=w*F);for(let U of S)b[U]=F>0?l[U]+y*h[U]/F:l[U]}else{let F=S.map($=>l[$]),U=F.reduce(($,T)=>$+T,0);S.forEach(($,T)=>{b[$]=U>0?l[$]+y*F[T]/U:l[$]})}let C=0,M=new Map;for(let F of S){let U=uR(b[F],u[F]??0,c[F]);M.set(F,U-b[F]),C+=U-b[F],b[F]=U}if(C===0)break;for(let F of S){let U=M.get(F)??0;(C>0&&U>0||C<0&&U<0)&&(k[F]=!0)}for(let F of S)k[F]||(b[F]=l[F])}return b}function MCe(e,t){if(!t)return e;let n=Vr(t.x??{},e.width)??0,o=Vr(t.y??{},e.height)??0,r=e.x+(Vr(t.originX??{percent:50},e.width)??0),s=e.y+(Vr(t.originY??{percent:50},e.height)??0),a=t.scale??1,l=(t.rotation??0)*Math.PI/180,d=Math.cos(l),u=Math.sin(l),c=[[e.x,e.y],[e.x+e.width,e.y],[e.x,e.y+e.height],[e.x+e.width,e.y+e.height]].map(([b,k])=>{let w=(b-r)*a,g=(k-s)*a;return[r+n+w*d-g*u,s+o+w*u+g*d]}),p=c.map(b=>b[0]),h=c.map(b=>b[1]),f=Math.min(...p),m=Math.min(...h);return{x:f,y:m,width:Math.max(...p)-f,height:Math.max(...h)-m}}function LCe(e,t){let n=Math.max(e.x,t.x),o=Math.max(e.y,t.y),r=Math.min(e.x+e.width,t.x+t.width),s=Math.min(e.y+e.height,t.y+t.height);return r<=n||s<=o?null:{x:n,y:o,width:r-n,height:s-o}}function BCe(e,t){let n=rd(e.margin),o=lL(e,"width",t.width,n.left+n.right,!1),r=lL(e,"height",t.height,n.top+n.bottom,!1),s=e.overlayAlign?.x??"start",a=e.overlayAlign?.y??"start",l=s==="start"?t.x+n.left:s==="end"?t.x+t.width-o-n.right:t.x+t.width/2+n.left-o/2,d=a==="start"?t.y+n.top:a==="end"?t.y+t.height-r-n.bottom:t.y+t.height/2+n.top-r/2;return{x:l,y:d,width:o,height:r}}function VCe(e,t){let n=rd(e.padding),o=rd(e.border),r={x:o.left,y:o.top,width:Math.max(0,e.width-o.left-o.right),height:Math.max(0,e.height-o.top-o.bottom)},s={x:r.x+n.left,y:r.y+n.top,width:Math.max(0,r.width-n.left-n.right),height:Math.max(0,r.height-n.top-n.bottom)},a=new Array(t.length),l=t.map((p,h)=>({c:p,i:h})).filter(({c:p})=>e.axis!=="overlay"&&(p.place??"flow")==="flow");for(let{c:p,i:h}of t.map((f,m)=>({c:f,i:m})))(e.axis==="overlay"||p.place==="overlay")&&(a[h]=BCe(p,r));let d=0,u=0,c=!1;if(e.axis!=="overlay"){let p=e.axis==="column"?y8:b8,h=s[p.main],f=s[p.cross],m=l.map(({c:fe})=>fe),b=m.map(fe=>rd(fe.margin)),k=e.gap??0,w=b.reduce((fe,ye)=>fe+ye[p.mainEdges[0]]+ye[p.mainEdges[1]],0),g=m.length>1?k*(m.length-1):0,y=FCe(m,p.main,h,h,w+g,e.scroll),S=y.reduce((fe,ye)=>fe+ye,0)+w+g,C=e.scroll?Math.max(0,h-S):h-S,M=m.reduce((fe,ye)=>fe+(ye.spacer?.before?1:0)+(ye.spacer?.after?1:0),0),F=0,U=0,$=0,T=e.mainAlign??"start";if(M>0&&C>0)$=C/M;else if(m.length>0){let fe=m.length;T==="center"?F=C/2:T==="end"?F=C:T==="space-between"?C>0&&fe>1&&(U=C/(fe-1)):T==="space-around"?C>0&&fe>1?(U=C/fe,F=U/2):F=C/2:T==="space-evenly"&&(C>0?(U=C/(fe+1),F=U):F=C/2)}let G=s[p.main==="height"?"y":"x"]+F,oe=s[p.cross==="width"?"x":"y"];m.forEach((fe,ye)=>{let Oe=b[ye],nn=Oe[p.crossEdges[0]]+Oe[p.crossEdges[1]],At=fe.alignSelf??e.crossAlign??"start",Bt=lL(fe,p.cross,f,nn,At==="stretch"&&fe[p.cross].kind==="hug");fe.spacer?.before&&$>0&&(G+=$),G+=Oe[p.mainEdges[0]];let Pn=G;G+=y[ye]+Oe[p.mainEdges[1]],fe.spacer?.after&&$>0&&(G+=$),G+=ye<m.length-1?k+U:0;let yo=f-Bt-nn,Fo=oe+Oe[p.crossEdges[0]]+(At==="center"?yo/2:At==="end"?yo:0);u=Math.max(u,Fo+Bt+Oe[p.crossEdges[1]]),a[l[ye].i]=p.main==="height"?{x:Fo,y:Pn,width:Bt,height:y[ye]}:{x:Pn,y:Fo,width:y[ye],height:Bt}}),d=G,c=S>h+1e-9;let Fe=p.main==="height"?n.bottom+o.bottom:n.right+o.right,pe=p.cross==="width"?n.right+o.right:n.bottom+o.bottom;d+=Fe,u+=pe;let re=p.main==="height"?{width:u,height:d}:{width:d,height:u};return g8(e,t,a,r,re,c)}return g8(e,t,a,r,{width:e.width,height:e.height},!1)}function g8(e,t,n,o,r,s){let a=!!(e.clip||e.scroll),l=n.map((u,c)=>{let p=MCe(u,t[c].transform);return{...u,drawn:p,visible:a?LCe(p,o):p}}),d=t.map((u,c)=>({z:u.z??0,i:c})).sort((u,c)=>u.z-c.z||u.i-c.i).map(u=>u.i);return{children:l,paintOrder:d,extent:r,overflows:s}}function UCe(e,t,n={}){let o=rd(e.padding),r=rd(e.border),s=o.left+o.right+r.left+r.right,a=o.top+o.bottom+r.top+r.bottom,l=n.width===void 0?void 0:Math.max(0,n.width-s),d=n.height===void 0?void 0:Math.max(0,n.height-a),u=(m,b,k)=>{let w=rd(m.margin),g=b==="width"?w.left+w.right:w.top+w.bottom,y=m[b],S=y.kind==="length"?Vr(y.length,k)??m.content[b]:y.kind==="fill"&&k!==void 0?Math.max(0,k-g):m.content[b];return uR(S,dL(m,b,k),uL(m,b,k))+g},c=0,p=0,h=e.gap??0,f=t.filter(m=>e.axis!=="overlay"&&(m.place??"flow")==="flow");if(e.axis==="overlay")for(let m of t)c=Math.max(c,u(m,"width",l)),p=Math.max(p,u(m,"height",d));else{let m=e.axis==="column"?y8:b8,b=m.main==="width"?l:d,k=m.cross==="width"?l:d,g=f.map(S=>{let C=rd(S.margin);return w8(S,m.main,b)+C[m.mainEdges[0]]+C[m.mainEdges[1]]}).reduce((S,C)=>S+C,0)+(f.length>1?h*(f.length-1):0),y=f.reduce((S,C)=>Math.max(S,u(C,m.cross,k)),0);m.main==="height"?[c,p]=[y,g]:[c,p]=[g,y]}return{width:n.width??c+s,height:n.height??p+a}}var jCe={flexDirection:"axis",justifyContent:"main-align",alignItems:"cross-align",rowGap:"gap-row",columnGap:"gap-column",paddingTop:"padding-top",paddingRight:"padding-right",paddingBottom:"padding-bottom",paddingLeft:"padding-left",borderWidth:"border-width",borderTopWidth:"border-top-width",borderRightWidth:"border-right-width",borderBottomWidth:"border-bottom-width",borderLeftWidth:"border-left-width",borderStyle:"border-style",borderTopStyle:"border-top-style",borderRightStyle:"border-right-style",borderBottomStyle:"border-bottom-style",borderLeftStyle:"border-left-style",clip:"clip",scrollEnabled:"scroll",sizeMode:"size-mode",width:"width",height:"height",size:"diameter",minWidth:"min-width",maxWidth:"max-width",minHeight:"min-height",maxHeight:"max-height",alignX:"align-x",alignY:"align-y",marginTop:"margin-top",marginRight:"margin-right",marginBottom:"margin-bottom",marginLeft:"margin-left",position:"place",mounted:"present",transformX:"translate-x",transformY:"translate-y",transformRotation:"rotation",transformScale:"scale",transformOriginX:"origin-x",transformOriginY:"origin-y",labelSpacing:"content",iconPlacement:"content",iconSpacing:"content",textAlignX:"content",textAlignY:"content",objectFit:"content",showScrollbar:"drawn-only"},N8=["layout-not-shared","web-only"],x8={as:"the Tag: the runtime's sheet resets a Text's margins (`.ndl-visual-text { margin: 0 }`), and a Group's section, nav or span lays out as its div does; an h1\u2013h6 changes only the browser font, the Text content (layout-fixtures/measured/tags.json, s71)"};function C8(e,t,n,o){let r,s;if(!(e==null||e==="")){if(typeof e=="number")r=e,s=t;else if(typeof e=="object"&&e!==null&&"value"in e){let a=e;r=Number(a.value),s=typeof a.unit=="string"&&a.unit!==""?a.unit:t}else if(typeof e=="string"){let a=/^var\(\s*(--[\w-]+)\s*(?:,\s*([^)]*))?\)$/.exec(e.trim());if(a){let d=n.token?.(a[1]);if(d!==void 0)return{px:d};if(a[2]!==void 0)return C8(a[2].trim(),t,n,o);o(`the token ${a[1]} has no value here`);return}let l=/^(-?\d*\.?\d+)\s*([a-z%]*)$/i.exec(e.trim());if(!l){o(`"${e}" is not a length`);return}r=Number(l[1]),s=l[2]===""?t:l[2].toLowerCase()}else{o(`${JSON.stringify(e)} is not a length`);return}if(!Number.isFinite(r)){o(`${JSON.stringify(e)} is not a number`);return}if(s==="px")return{px:r};if(s==="%")return{percent:r};if((s==="vw"||s==="vh")&&n.viewport)return{px:r/100*(s==="vw"?n.viewport.width:n.viewport.height)};o(`the unit "${s}" is not in the model${s==="vw"||s==="vh"?" without a viewport":""}`)}}function WCe(e,t,n){return e?e.percent?(n(`${t} in percent is not in the model`),0):e.px??0:0}function v8(e){let t=typeof e=="object"&&e!==null&&"value"in e?e.value:e;if(t==null||t==="")return;let n=typeof t=="number"?t:parseFloat(String(t));return Number.isFinite(n)?n:void 0}var HCe={"flex-start":"start","flex-end":"end",center:"center","space-between":"space-between","space-around":"space-around","space-evenly":"space-evenly"},qCe={"flex-start":"start","flex-end":"end",center:"center",stretch:"stretch"},S8={left:"start",top:"start",center:"center",right:"end",bottom:"end"},k8={left:"start",top:"start",center:"center",right:"end",bottom:"end"};function GCe(e,t,n={}){let o=[],r=new Map;for(let[T,G]of Object.entries(e.inputs)){let oe=G.layout;oe&&r.set(oe,T);let Fe=G.portability;t[T]!==void 0&&t[T]!==G.default&&Fe&&!oe&&!(T in x8)&&(N8.includes(Fe)||Fe==="layout-expressible")&&o.push(`${T} (${Fe}) is set`)}let s=T=>r.has(T),a=T=>{let G=r.get(T);if(G!==void 0)return t[G]!==void 0?t[G]:e.inputs[G].default},l=(T,G)=>C8(a(T),G,n,oe=>o.push(`${r.get(T)}: ${oe}`)),d=T=>WCe(l(T,"px"),r.get(T)??T,G=>o.push(G)),u=a("present")!==!1,c=a("place");(c==="fixed"||c==="sticky")&&o.push(`position is ${c}`);let p=n.parentAxis,h=p==="overlay"||c==="absolute"||c==="fixed",f={top:d("margin-top"),right:d("margin-right"),bottom:d("margin-bottom"),left:d("margin-left")},m=s("size-mode")?String(a("size-mode")):"explicit",b={width:m==="explicit"||m==="contentHeight",height:m==="explicit"||m==="contentWidth"},k=T=>{if(s("diameter")){let re=l("diameter","px");return re?{kind:"length",length:re}:{kind:"hug"}}if(!s(T)||!b[T])return{kind:"hug"};let G=l(T,"%");if(!G)return{kind:"hug"};if(!G.percent)return{kind:"length",length:G};let oe=!!t[r.get(T)??""]?.isFixed,Fe=p==="row"&&T==="width"||p==="column"&&T==="height",pe=T==="width"?f.left+f.right:f.top+f.bottom;return!h&&Fe&&!oe?{kind:"fill",weight:G.percent,basis:{percent:G.percent}}:p===void 0&&!h?{kind:"length",length:G}:{kind:"length",length:pe?{percent:G.percent,px:-pe}:{percent:G.percent}}},w={width:k("width"),height:k("height"),margin:f};for(let[T,G]of[["min-width","minWidth"],["max-width","maxWidth"],["min-height","minHeight"],["max-height","maxHeight"]]){let oe=s(T)?l(T,"%"):void 0;oe&&(w[G]=oe)}let g=a("align-x"),y=a("align-y");if(h)w.place="overlay",w.overlayAlign={x:k8[g??"left"]??"start",y:k8[y??"top"]??"start"};else if(p!==void 0){let[T,G,oe,Fe]=p==="row"?[g,y,f.left,f.right]:[y,g,f.top,f.bottom];T===(p==="row"?"left":"top")&&!Fe?w.spacer={after:!0}:T==="center"?w.spacer={before:!oe,after:!Fe}:T===(p==="row"?"right":"bottom")&&!oe&&(w.spacer={before:!0}),G&&S8[G]&&(w.alignSelf=S8[G])}let S={},C=s("translate-x")?l("translate-x","px"):void 0,M=s("translate-y")?l("translate-y","px"):void 0;C&&(C.px||C.percent)&&(S.x=C),M&&(M.px||M.percent)&&(S.y=M);let F=s("rotation")?v8(a("rotation")):void 0;F&&(S.rotation=F);let U=s("scale")?v8(a("scale")):void 0;if(U!==void 0&&U!==1&&(S.scale=U),Object.keys(S).length>0){let T=s("origin-x")?l("origin-x","%"):void 0,G=s("origin-y")?l("origin-y","%"):void 0;T&&(S.originX=T),G&&(S.originY=G),w.transform=S}let $;if(s("axis")){let T=a("axis"),G=T==="row"?"row":T==="none"?"overlay":"column",oe=pe=>{let re=(s(`border-${pe}-style`)?a(`border-${pe}-style`):void 0)??a("border-style");return re===void 0||re==="none"?0:s(`border-${pe}-width`)&&a(`border-${pe}-width`)!==void 0?d(`border-${pe}-width`):d("border-width")},Fe=G==="row"?s("gap-column")?d("gap-column"):0:G==="column"&&s("gap-row")?d("gap-row"):0;$={axis:G,mainAlign:HCe[String(a("main-align")??"flex-start")]??"start",crossAlign:qCe[String(a("cross-align")??"flex-start")]??"start",gap:Fe,padding:{top:d("padding-top"),right:d("padding-right"),bottom:d("padding-bottom"),left:d("padding-left")},border:{top:oe("top"),right:oe("right"),bottom:oe("bottom"),left:oe("left")},clip:a("clip")===!0,scroll:a("scroll")===!0}}return{present:u,child:w,parent:$,outside:o}}function zCe(e){return e!==null&&typeof e=="object"&&e.mode==="expression"&&typeof e.expression=="string"}function $Ce(e,t,n){if(n in e.inputs)return e.inputs[n];if(!e.derived)return;let o={};try{o=e.derived.inputs(t,{})}catch{}return o[n]??e.derived.discover?.(n)}function cL(e){return Object.entries(e.diagnostics??{}).filter(([,t])=>t.settings!==void 0).map(([t])=>t).sort()}function XCe(e,t,n=[]){if(cL(e).length===0)return[];let o={},r=new Set(n);for(let[d,u]of Object.entries(t))$Ce(e,t,d)&&(zCe(u)?r.add(d):o[d]=u);let s=cL(e).filter(d=>!e.diagnostics[d].settings.some(u=>r.has(u)));if(s.length===0)return[];let a;try{a=eP(e,o,["settle"])}catch{return[]}let l=new Map;for(let d of a)d.t!=="diagnostic"||!s.includes(d.key)||(d.message===void 0?l.delete(d.key):l.set(d.key,d.message));return[...l].map(([d,u])=>({key:d,says:e.diagnostics[d].says,message:u}))}var cR=class{constructor(){OG(this,"store")}getStore(){return this.store}run(t,n,...o){let r=this.store;this.store=t;try{return n(...o)}finally{this.store=r}}exit(t,...n){return this.run(void 0,t,...n)}enterWith(t){this.store=t}disable(){this.store=void 0}};var Kpe=me(I8());fa();fh();Xg();var xht=Gi({"../../../noodl-viewer-react/src/nodes/std-library/animate-to-value.ts":()=>(SR(),_(Yg)),"../../../noodl-viewer-react/src/nodes/std-library/arraychanged.ts":()=>(kL(),_(SL)),"../../../noodl-viewer-react/src/nodes/std-library/colorblend.ts":()=>(OR(),_(Kg)),"../../../noodl-viewer-react/src/nodes/std-library/componentutils/parentcomponentobject.ts":()=>(_O(),_(db)),"../../../noodl-viewer-react/src/nodes/std-library/componentutils/setparentcomponentobjectproperties.ts":()=>(PO(),_(ub)),"../../../noodl-viewer-react/src/nodes/std-library/data/cloudfunction.ts":()=>(WU(),_(jU)),"../../../noodl-viewer-react/src/nodes/std-library/data/cloudfunction2.ts":()=>(AO(),_(cb)),"../../../noodl-viewer-react/src/nodes/std-library/data/foreach.tsx":()=>(fb(),_(hb)),"../../../noodl-viewer-react/src/nodes/std-library/data/foreachactions.ts":()=>(MO(),_(mb)),"../../../noodl-viewer-react/src/nodes/std-library/eventreceiver.ts":()=>(LO(),_(gb)),"../../../noodl-viewer-react/src/nodes/std-library/eventsender.ts":()=>(BO(),_(yb)),"../../../noodl-viewer-react/src/nodes/std-library/externallink.ts":()=>(VO(),_(bb)),"../../../noodl-viewer-react/src/nodes/std-library/javascript.ts":()=>(jO(),_(Sb)),"../../../noodl-viewer-react/src/nodes/std-library/objectchanged.ts":()=>(ZU(),_(QU)),"../../../noodl-viewer-react/src/nodes/std-library/openfilepicker.ts":()=>(HO(),_(kb)),"../../../noodl-viewer-react/src/nodes/std-library/repeat.ts":()=>(GO(),_(Nb)),"../../../noodl-viewer-react/src/nodes/std-library/screenresolution.ts":()=>(zO(),_(xb)),"../../../noodl-viewer-react/src/nodes/std-library/states.ts":()=>(KO(),_(Ib)),"../../../noodl-viewer-react/src/nodes/std-library/timer.ts":()=>(JO(),_(Ob)),"../../../noodl-viewer-react/src/nodes/std-library/uploadfile.ts":()=>(ZO(),_(Tb)),"../../../noodl-viewer-react/src/nodes/std-library/user/login.ts":()=>(nT(),_(_b)),"../../../noodl-viewer-react/src/nodes/std-library/user/logout.ts":()=>(oT(),_(Pb)),"../../../noodl-viewer-react/src/nodes/std-library/user/requestmagiclink.ts":()=>(rT(),_(Ab)),"../../../noodl-viewer-react/src/nodes/std-library/user/requestpasswordreset.ts":()=>(lj(),_(aj)),"../../../noodl-viewer-react/src/nodes/std-library/user/resetpassword.ts":()=>(uj(),_(dj)),"../../../noodl-viewer-react/src/nodes/std-library/user/sendemailverification.ts":()=>(pj(),_(cj)),"../../../noodl-viewer-react/src/nodes/std-library/user/signinwith.ts":()=>(iT(),_(Db)),"../../../noodl-viewer-react/src/nodes/std-library/user/signup.ts":()=>(sT(),_(Fb)),"../../../noodl-viewer-react/src/nodes/std-library/user/userservice.ts":()=>(ir(),_(tT)),"../../../noodl-viewer-react/src/nodes/std-library/user/verifyemail.ts":()=>(mj(),_(fj)),"../../../noodl-viewer-react/src/nodes/std-library/valuechanged.ts":()=>(aT(),_(Mb)),"../../../noodl-viewer-react/src/nodes/std-library/variables/color.ts":()=>(lT(),_(Lb))});var Cht=Gi({"../../../noodl-viewer-react/src/nodes/navigation/closepopup.ts":()=>(uT(),_(Bb)),"../../../noodl-viewer-react/src/nodes/navigation/navigate-back.ts":()=>(cT(),_(Vb)),"../../../noodl-viewer-react/src/nodes/navigation/navigate-to-path.ts":()=>(pT(),_(Ub)),"../../../noodl-viewer-react/src/nodes/navigation/navigate.ts":()=>(yT(),_(Hb)),"../../../noodl-viewer-react/src/nodes/navigation/navigation-handler.ts":()=>(rf(),_(hT)),"../../../noodl-viewer-react/src/nodes/navigation/navigation-stack.tsx":()=>(LT(),_(Zb)),"../../../noodl-viewer-react/src/nodes/navigation/page-inputs.ts":()=>(BT(),_(ew)),"../../../noodl-viewer-react/src/nodes/navigation/page.ts":()=>(jT(),_(nw)),"../../../noodl-viewer-react/src/nodes/navigation/router-handler.ts":()=>(cf(),_(HT)),"../../../noodl-viewer-react/src/nodes/navigation/router-navigate.ts":()=>(qT(),_(ow)),"../../../noodl-viewer-react/src/nodes/navigation/router.tsx":()=>(YT(),_(iw)),"../../../noodl-viewer-react/src/nodes/navigation/showpopup.ts":()=>(KT(),_(sw)),"../../../noodl-viewer-react/src/nodes/navigation/transitions.ts":()=>(Wb(),_(Oj)),"../../../noodl-viewer-react/src/nodes/navigation/transitions/none-transition.ts":()=>(fT(),_(Sj)),"../../../noodl-viewer-react/src/nodes/navigation/transitions/popup-transition.ts":()=>(mT(),_(xj)),"../../../noodl-viewer-react/src/nodes/navigation/transitions/push-transition.ts":()=>(gT(),_(Ij)),"../../../noodl-viewer-react/src/nodes/navigation/transitions/transition.ts":()=>(sf(),_(bj))});var Rht=Gi({"../../../noodl-viewer-react/src/nodes/controls/button.ts":()=>(Qj(),_(ZT)),"../../../noodl-viewer-react/src/nodes/controls/checkbox.ts":()=>(Zj(),_(eE)),"../../../noodl-viewer-react/src/nodes/controls/options.ts":()=>(eW(),_(tE)),"../../../noodl-viewer-react/src/nodes/controls/radiobutton.ts":()=>(oW(),_(oE)),"../../../noodl-viewer-react/src/nodes/controls/radiobuttongroup.ts":()=>(iW(),_(rE)),"../../../noodl-viewer-react/src/nodes/controls/slider.ts":()=>(sW(),_(iE)),"../../../noodl-viewer-react/src/nodes/controls/text-input.ts":()=>(lW(),_(dE)),"../../../noodl-viewer-react/src/nodes/controls/textInputValue.ts":()=>(aE(),_(Bie)),"../../../noodl-viewer-react/src/nodes/controls/utils.ts":()=>(Go(),_(aie)),"../../../noodl-viewer-react/src/nodes/navigation/closepopup.ts":()=>(uT(),_(Bb)),"../../../noodl-viewer-react/src/nodes/navigation/navigate-back.ts":()=>(cT(),_(Vb)),"../../../noodl-viewer-react/src/nodes/navigation/navigate-to-path.ts":()=>(pT(),_(Ub)),"../../../noodl-viewer-react/src/nodes/navigation/navigate.ts":()=>(yT(),_(Hb)),"../../../noodl-viewer-react/src/nodes/navigation/navigation-handler.ts":()=>(rf(),_(hT)),"../../../noodl-viewer-react/src/nodes/navigation/navigation-stack.tsx":()=>(LT(),_(Zb)),"../../../noodl-viewer-react/src/nodes/navigation/page-inputs.ts":()=>(BT(),_(ew)),"../../../noodl-viewer-react/src/nodes/navigation/page.ts":()=>(jT(),_(nw)),"../../../noodl-viewer-react/src/nodes/navigation/router-handler.ts":()=>(cf(),_(HT)),"../../../noodl-viewer-react/src/nodes/navigation/router-navigate.ts":()=>(qT(),_(ow)),"../../../noodl-viewer-react/src/nodes/navigation/router.tsx":()=>(YT(),_(iw)),"../../../noodl-viewer-react/src/nodes/navigation/showpopup.ts":()=>(KT(),_(sw)),"../../../noodl-viewer-react/src/nodes/navigation/transitions.ts":()=>(Wb(),_(Oj)),"../../../noodl-viewer-react/src/nodes/navigation/transitions/none-transition.ts":()=>(fT(),_(Sj)),"../../../noodl-viewer-react/src/nodes/navigation/transitions/popup-transition.ts":()=>(mT(),_(xj)),"../../../noodl-viewer-react/src/nodes/navigation/transitions/push-transition.ts":()=>(gT(),_(Ij)),"../../../noodl-viewer-react/src/nodes/navigation/transitions/transition.ts":()=>(sf(),_(bj)),"../../../noodl-viewer-react/src/nodes/std-library/animate-to-value.ts":()=>(SR(),_(Yg)),"../../../noodl-viewer-react/src/nodes/std-library/arraychanged.ts":()=>(kL(),_(SL)),"../../../noodl-viewer-react/src/nodes/std-library/colorblend.ts":()=>(OR(),_(Kg)),"../../../noodl-viewer-react/src/nodes/std-library/componentutils/parentcomponentobject.ts":()=>(_O(),_(db)),"../../../noodl-viewer-react/src/nodes/std-library/componentutils/setparentcomponentobjectproperties.ts":()=>(PO(),_(ub)),"../../../noodl-viewer-react/src/nodes/std-library/data/cloudfunction.ts":()=>(WU(),_(jU)),"../../../noodl-viewer-react/src/nodes/std-library/data/cloudfunction2.ts":()=>(AO(),_(cb)),"../../../noodl-viewer-react/src/nodes/std-library/data/foreach.tsx":()=>(fb(),_(hb)),"../../../noodl-viewer-react/src/nodes/std-library/data/foreachactions.ts":()=>(MO(),_(mb)),"../../../noodl-viewer-react/src/nodes/std-library/eventreceiver.ts":()=>(LO(),_(gb)),"../../../noodl-viewer-react/src/nodes/std-library/eventsender.ts":()=>(BO(),_(yb)),"../../../noodl-viewer-react/src/nodes/std-library/externallink.ts":()=>(VO(),_(bb)),"../../../noodl-viewer-react/src/nodes/std-library/javascript.ts":()=>(jO(),_(Sb)),"../../../noodl-viewer-react/src/nodes/std-library/objectchanged.ts":()=>(ZU(),_(QU)),"../../../noodl-viewer-react/src/nodes/std-library/openfilepicker.ts":()=>(HO(),_(kb)),"../../../noodl-viewer-react/src/nodes/std-library/repeat.ts":()=>(GO(),_(Nb)),"../../../noodl-viewer-react/src/nodes/std-library/screenresolution.ts":()=>(zO(),_(xb)),"../../../noodl-viewer-react/src/nodes/std-library/states.ts":()=>(KO(),_(Ib)),"../../../noodl-viewer-react/src/nodes/std-library/timer.ts":()=>(JO(),_(Ob)),"../../../noodl-viewer-react/src/nodes/std-library/uploadfile.ts":()=>(ZO(),_(Tb)),"../../../noodl-viewer-react/src/nodes/std-library/user/login.ts":()=>(nT(),_(_b)),"../../../noodl-viewer-react/src/nodes/std-library/user/logout.ts":()=>(oT(),_(Pb)),"../../../noodl-viewer-react/src/nodes/std-library/user/requestmagiclink.ts":()=>(rT(),_(Ab)),"../../../noodl-viewer-react/src/nodes/std-library/user/requestpasswordreset.ts":()=>(lj(),_(aj)),"../../../noodl-viewer-react/src/nodes/std-library/user/resetpassword.ts":()=>(uj(),_(dj)),"../../../noodl-viewer-react/src/nodes/std-library/user/sendemailverification.ts":()=>(pj(),_(cj)),"../../../noodl-viewer-react/src/nodes/std-library/user/signinwith.ts":()=>(iT(),_(Db)),"../../../noodl-viewer-react/src/nodes/std-library/user/signup.ts":()=>(sT(),_(Fb)),"../../../noodl-viewer-react/src/nodes/std-library/user/userservice.ts":()=>(ir(),_(tT)),"../../../noodl-viewer-react/src/nodes/std-library/user/verifyemail.ts":()=>(mj(),_(fj)),"../../../noodl-viewer-react/src/nodes/std-library/valuechanged.ts":()=>(aT(),_(Mb)),"../../../noodl-viewer-react/src/nodes/std-library/variables/color.ts":()=>(lT(),_(Lb)),"../../../noodl-viewer-react/src/nodes/visual/circle.ts":()=>(uW(),_(pE)),"../../../noodl-viewer-react/src/nodes/visual/columns.ts":()=>(mW(),_(hE)),"../../../noodl-viewer-react/src/nodes/visual/css-definition.ts":()=>(tse(),_(ese)),"../../../noodl-viewer-react/src/nodes/visual/drag.ts":()=>(TW(),_(xE)),"../../../noodl-viewer-react/src/nodes/visual/group.ts":()=>(GW(),_(jE)),"../../../noodl-viewer-react/src/nodes/visual/icon.ts":()=>(zW(),_(WE)),"../../../noodl-viewer-react/src/nodes/visual/image.ts":()=>(XW(),_(HE)),"../../../noodl-viewer-react/src/nodes/visual/media-source.ts":()=>(Kb(),_(Ere)),"../../../noodl-viewer-react/src/nodes/visual/text.ts":()=>(YW(),_(qE)),"../../../noodl-viewer-react/src/nodes/visual/video.ts":()=>(ZW(),_(zE))});var Iht=Gi({"../../src/nodes/std-library/agent/action-dispatcher.ts":()=>(Xg(),_(V8)),"../../src/nodes/std-library/agent/actiondispatchernode.ts":()=>MU(),"../../src/nodes/std-library/agent/actionhandlernode.ts":()=>BU(),"../../src/nodes/std-library/agent/globalstore.ts":()=>(fa(),_(D8)),"../../src/nodes/std-library/agent/globalstorenode.ts":()=>OU(),"../../src/nodes/std-library/agent/globalstoresetnode.ts":()=>TU(),"../../src/nodes/std-library/agent/globalstoresubscribenode.ts":()=>EU(),"../../src/nodes/std-library/agent/json-stream-parser.ts":()=>CU(),"../../src/nodes/std-library/agent/node-instances.d.ts":()=>(qae(),_(Zje)),"../../src/nodes/std-library/agent/optimisticupdatenode.ts":()=>PU(),"../../src/nodes/std-library/agent/pattern-extractor.ts":()=>RU(),"../../src/nodes/std-library/agent/sse-connection.ts":()=>(kU(),_(one)),"../../src/nodes/std-library/agent/sse.ts":()=>NU(),"../../src/nodes/std-library/agent/statehistory.ts":()=>(fh(),_(L8)),"../../src/nodes/std-library/agent/statehistorynode.ts":()=>AU(),"../../src/nodes/std-library/agent/statesnapshotnode.ts":()=>FU(),"../../src/nodes/std-library/agent/stream-buffer.ts":()=>IU(),"../../src/nodes/std-library/agent/stream-parsers.ts":()=>(mc(),_(Kte)),"../../src/nodes/std-library/agent/text-accumulator.ts":()=>xU(),"../../src/nodes/std-library/agent/undonode.ts":()=>DU(),"../../src/nodes/std-library/agent/websocket-connection.ts":()=>(mU(),_(Hte)),"../../src/nodes/std-library/agent/websocket.ts":()=>gU(),"../../src/nodes/std-library/and.ts":()=>CV(),"../../src/nodes/std-library/booleantostring.ts":()=>IV(),"../../src/nodes/std-library/componentutils/base.ts":()=>(lO(),_(Eee)),"../../src/nodes/std-library/componentutils/componentobject.ts":()=>yV(),"../../src/nodes/std-library/componentutils/setcomponentobjectproperties.ts":()=>bV(),"../../src/nodes/std-library/condition.ts":()=>xV(),"../../src/nodes/std-library/counter.ts":()=>FV(),"../../src/nodes/std-library/crypto/encoding.ts":()=>(hc(),_(ate)),"../../src/nodes/std-library/crypto/hash.ts":()=>jV(),"../../src/nodes/std-library/crypto/jwt.ts":()=>($E(),_(zae)),"../../src/nodes/std-library/crypto/randombytes.ts":()=>HV(),"../../src/nodes/std-library/crypto/uuid.ts":()=>qV(),"../../src/nodes/std-library/data/byob-types.d.ts":()=>($ae(),_(eWe)),"../../src/nodes/std-library/data/byob-utils.ts":()=>Jae(),"../../src/nodes/std-library/data/cloudfilenode.ts":()=>wV(),"../../src/nodes/std-library/data/collection-failure.ts":()=>(Xy(),_(ree)),"../../src/nodes/std-library/data/collectionnode-clear.ts":()=>lV(),"../../src/nodes/std-library/data/collectionnode-insert.ts":()=>sV(),"../../src/nodes/std-library/data/collectionnode-new.ts":()=>iV(),"../../src/nodes/std-library/data/collectionnode-remove.ts":()=>aV(),"../../src/nodes/std-library/data/collectionnode2.ts":()=>rV(),"../../src/nodes/std-library/data/crud-mixins.d.ts":()=>(Qae(),_(lWe)),"../../src/nodes/std-library/data/dbcollectionnode2.ts":()=>LB(),"../../src/nodes/std-library/data/dbmodelcrudbase.ts":()=>ic(),"../../src/nodes/std-library/data/dbmodelnode-addrelation.ts":()=>zB(),"../../src/nodes/std-library/data/dbmodelnode-removerelation.ts":()=>XB(),"../../src/nodes/std-library/data/dbmodelnode2.ts":()=>UB(),"../../src/nodes/std-library/data/deletedbmodelpropertiesnode.ts":()=>HB(),"../../src/nodes/std-library/data/filtercollectionnode.ts":()=>uV(),"../../src/nodes/std-library/data/filterdbmodelsnode.ts":()=>KB(),"../../src/nodes/std-library/data/httpnode.ts":()=>YE(),"../../src/nodes/std-library/data/itemsinput.ts":()=>(Gy(),_($Z)),"../../src/nodes/std-library/data/mapcollectionnode.ts":()=>cV(),"../../src/nodes/std-library/data/modelcrudbase.ts":()=>nO(),"../../src/nodes/std-library/data/modelnode2.ts":()=>QB(),"../../src/nodes/std-library/data/newdbmodelpropertiesnode.ts":()=>qB(),"../../src/nodes/std-library/data/newmodelnode.ts":()=>oV(),"../../src/nodes/std-library/data/parsecsv.ts":()=>KV(),"../../src/nodes/std-library/data/parsefeed.ts":()=>tU(),"../../src/nodes/std-library/data/parsexml.ts":()=>ZV(),"../../src/nodes/std-library/data/record-ports.ts":()=>(qr(),_(CQ)),"../../src/nodes/std-library/data/restnode.ts":()=>o1(),"../../src/nodes/std-library/data/schema-ports.ts":()=>(Ho(),_(kQ)),"../../src/nodes/std-library/data/schema-types.d.ts":()=>(ole(),_(hWe)),"../../src/nodes/std-library/data/setdbmodelpropertiesnode.ts":()=>jB(),"../../src/nodes/std-library/data/setmodelpropertiesnode.ts":()=>tV(),"../../src/nodes/std-library/data/setvariablenode.ts":()=>gV(),"../../src/nodes/std-library/data/signfileurl.ts":()=>vV(),"../../src/nodes/std-library/data/staticdata.ts":()=>fV(),"../../src/nodes/std-library/data/subscribetochanges.ts":()=>UU(),"../../src/nodes/std-library/data/tocsv.ts":()=>JV(),"../../src/nodes/std-library/data/variablenode2.ts":()=>mV(),"../../src/nodes/std-library/date/dateadd.ts":()=>zV(),"../../src/nodes/std-library/date/datecompare.ts":()=>XV(),"../../src/nodes/std-library/date/datedifference.ts":()=>$V(),"../../src/nodes/std-library/date/datemath.ts":()=>(uc(),_(Yee)),"../../src/nodes/std-library/date/dateparts.ts":()=>YV(),"../../src/nodes/std-library/date/now.ts":()=>GV(),"../../src/nodes/std-library/datetostring.ts":()=>EV(),"../../src/nodes/std-library/expression-ports.ts":()=>(l1(),_(e7)),"../../src/nodes/std-library/expression.ts":()=>x1(),"../../src/nodes/std-library/functionDiagnostics.ts":()=>(P1(),_(P7)),"../../src/nodes/std-library/inverter.ts":()=>PV(),"../../src/nodes/std-library/log.ts":()=>nU(),"../../src/nodes/std-library/logic-builder-console.ts":()=>(gI(),_(V7)),"../../src/nodes/std-library/logic-builder-io.ts":()=>(M1(),_(J7)),"../../src/nodes/std-library/logic-builder-probe.ts":()=>(V1(),_(Z7)),"../../src/nodes/std-library/logic-builder.ts":()=>U1(),"../../src/nodes/std-library/logic-search-tags.ts":()=>(dy(),_(t7)),"../../src/nodes/std-library/numberremapper.ts":()=>rU(),"../../src/nodes/std-library/onapperror.ts":()=>iU(),"../../src/nodes/std-library/or.ts":()=>RV(),"../../src/nodes/std-library/runtasks-template-contract.ts":()=>(t1(),_(GJ)),"../../src/nodes/std-library/runtasks.ts":()=>n1(),"../../src/nodes/std-library/simplejavascript.ts":()=>F1(),"../../src/nodes/std-library/stringformat.ts":()=>DV(),"../../src/nodes/std-library/stringmapper.ts":()=>_V(),"../../src/nodes/std-library/substring.ts":()=>AV(),"../../src/nodes/std-library/switch.ts":()=>oU(),"../../src/nodes/std-library/uniqueid.ts":()=>MV(),"../../src/nodes/std-library/user/setuserproperties.ts":()=>cU(),"../../src/nodes/std-library/user/user-ports.ts":()=>(bO(),_(Tte)),"../../src/nodes/std-library/user/user.ts":()=>hU(),"../../src/nodes/std-library/variables/boolean.ts":()=>NV(),"../../src/nodes/std-library/variables/number.ts":()=>SV(),"../../src/nodes/std-library/variables/string.ts":()=>kV(),"../../src/nodes/std-library/variables/variablebase.ts":()=>(Jh(),_(Lee))});var Oht=Gi({"../../../noodl-viewer-cloud/src/nodes/cloud/addusertorole.ts":()=>(iH(),_(rH)),"../../../noodl-viewer-cloud/src/nodes/cloud/createuser.ts":()=>(aH(),_(sH)),"../../../noodl-viewer-cloud/src/nodes/cloud/deleteuser.ts":()=>(dH(),_(lH)),"../../../noodl-viewer-cloud/src/nodes/cloud/getuserroles.ts":()=>(cH(),_(uH)),"../../../noodl-viewer-cloud/src/nodes/cloud/hmac.ts":()=>(hH(),_(pH)),"../../../noodl-viewer-cloud/src/nodes/cloud/jwtsign.ts":()=>(mH(),_(fH)),"../../../noodl-viewer-cloud/src/nodes/cloud/jwtverify.ts":()=>(yH(),_(gH)),"../../../noodl-viewer-cloud/src/nodes/cloud/listusersinrole.ts":()=>(wH(),_(bH)),"../../../noodl-viewer-cloud/src/nodes/cloud/modelrequest.ts":()=>(kH(),_(SH)),"../../../noodl-viewer-cloud/src/nodes/cloud/removeuserfromrole.ts":()=>(xH(),_(NH)),"../../../noodl-viewer-cloud/src/nodes/cloud/request.ts":()=>(FH(),_(DH)),"../../../noodl-viewer-cloud/src/nodes/cloud/requestContract.ts":()=>(EH(),_(vle)),"../../../noodl-viewer-cloud/src/nodes/cloud/requestOrigin.ts":()=>(PH(),_(Sle)),"../../../noodl-viewer-cloud/src/nodes/cloud/response.ts":()=>(LH(),_(MH)),"../../../noodl-viewer-cloud/src/nodes/cloud/secret.ts":()=>(VH(),_(BH)),"../../../noodl-viewer-cloud/src/nodes/cloud/sendemail.ts":()=>(jH(),_(UH)),"../../../noodl-viewer-cloud/src/nodes/cloud/system-roles.ts":()=>(Ef(),_(ile)),"../../../noodl-viewer-cloud/src/nodes/cloud/system-users.ts":()=>(_f(),_(lle)),"../../../noodl-viewer-cloud/src/nodes/cloud/updateuser.ts":()=>(HH(),_(WH)),"../../../noodl-viewer-cloud/src/nodes/cloud/verifysessiontoken.ts":()=>(GH(),_(qH)),"../../../noodl-viewer-cloud/src/nodes/data/aggregatenode.js":()=>$H(),"../../../noodl-viewer-cloud/src/nodes/index.ts":()=>(Ile(),_(Rle))});var xm=gt(),Jpe=QL(),Hi=tt(),hp=Xn(),qpe=GL(),X2e=xh(),Av=eI(),Gpe=dt(),{FocusTracker:Y2e}=(Tle(),_(Ole)),C0,pp,au=null,vm,Sm=null,K2e=60,Wi=!1,O0=!1,zpe=new WeakMap;function yr(e){let t=zpe.get(e);return t||(t={paused:!0,position:0,ready:!1,loading:!1,failed:void 0,pending:[],canAutoplay:!0,atEnd:!1,width:0,height:0,srcObject:null},zpe.set(e,t)),t}function $pe(e,t){if(!t||typeof t!="object"||t.nodeType!==1)return!1;let n=e;return typeof n.getDOMElement=="function"&&n.getDOMElement()===t}function J2e(e){let t=p=>{O0=!0,Promise.resolve().then(p)},n=(p,h)=>p.dispatchEvent(new e.Event(h)),o=(p,h)=>new e.DOMException(p,h),r=(p,h)=>!!p.getAttribute("src")||h.srcObject!==null,s=p=>{let h=p.pending;return p.pending=[],h},a=(p,h)=>{let f=s(h);t(()=>{n(p,"playing");for(let m of f)m.resolve()})},l=p=>{let h=yr(p);for(let f of s(h))f.reject(o("The play() request was interrupted by a new load request.","AbortError"));h.paused=!0,h.position!==0&&(h.position=0,t(()=>n(p,"timeupdate"))),Object.assign(h,{ready:!1,failed:void 0,canAutoplay:!0,atEnd:!1,width:0,height:0}),h.loading=r(p,h)},d=e.HTMLMediaElement.prototype,u=e.Element.prototype.setAttribute;d.setAttribute=function(p,h){u.call(this,p,h),String(p).toLowerCase()==="src"&&l(this)};let c=(p,h,f,m)=>Object.defineProperty(p,h,{configurable:!0,enumerable:!0,get:f,...m?{set:m}:{}});c(d,"paused",function(){return yr(this).paused}),c(d,"readyState",function(){return yr(this).ready?4:0}),c(d,"error",function(){let p=yr(this);return p.failed===void 0?null:{code:4,message:p.failed}}),c(d,"currentTime",function(){return yr(this).position},function(p){let h=yr(this);h.ready&&(h.position=Number(p),h.atEnd=!1,t(()=>n(this,"timeupdate")))}),c(d,"srcObject",function(){return yr(this).srcObject},function(p){if(p!=null&&!(p instanceof e.Blob))throw new TypeError("Failed to set the 'srcObject' property on 'HTMLMediaElement': The provided value is not of type '(MediaSourceHandle or MediaStream or MediaSource or Blob)'.");yr(this).srcObject=p??null,l(this)}),c(e.HTMLVideoElement.prototype,"videoWidth",function(){return yr(this).width}),c(e.HTMLVideoElement.prototype,"videoHeight",function(){return yr(this).height}),d.play=function(){let p=yr(this);if(O0=!0,!this.muted&&!Wi)return Promise.reject(o("play() failed because the user didn't interact with the document first.","NotAllowedError"));if(p.failed!==void 0)return Promise.reject(o("The element has no supported sources.","NotSupportedError"));let h=new Promise((f,m)=>p.pending.push({resolve:f,reject:m}));return p.atEnd&&(p.atEnd=!1,p.position=0,t(()=>n(this,"timeupdate"))),p.paused&&(p.paused=!1,t(()=>n(this,"play"))),p.ready&&a(this,p),p.canAutoplay=!1,h},d.pause=function(){let p=yr(this);if(p.canAutoplay=!1,p.paused)return;p.paused=!0;let h=s(p);t(()=>{n(this,"timeupdate"),n(this,"pause");for(let f of h)f.reject(o("The play() request was interrupted by a call to pause().","AbortError"))})},d.load=function(){l(this)},e.addEventListener("mousedown",()=>Wi=!0,!0),e.addEventListener("touchend",()=>Wi=!0,!0),e.addEventListener("keydown",p=>p.key!=="Escape"&&(Wi=!0),!0),e.addEventListener("pointerdown",p=>p.pointerType==="mouse"&&(Wi=!0),!0),e.addEventListener("pointerup",p=>p.pointerType!=="mouse"&&(Wi=!0),!0)}function Q2e(e,t,n,o){if(!t||t.tagName!=="VIDEO")return;let r=yr(t),s=l=>t.dispatchEvent(new e.Event(l)),a=l=>{let d=r.pending;r.pending=[];for(let u of d)l(u)};if(n==="loaded"){if(!r.loading)return;let l=o??{},d=!r.paused,u=!d&&r.canAutoplay&&!!t.autoplay&&(!!t.muted||Wi);if(Object.assign(r,{loading:!1,ready:!0,width:Number(l.width??0),height:Number(l.height??0)}),u&&(r.paused=!1),s("canplay"),d||u){u&&Promise.resolve().then(()=>s("play"));let c=r.pending;r.pending=[],Promise.resolve().then(()=>{s("playing");for(let p of c)p.resolve()})}return}if(n==="failed"){if(!r.loading)return;r.loading=!1,r.failed=String(o??""),s("error"),a(l=>l.reject(new e.DOMException("The element has no supported sources.","NotSupportedError")));return}if(!(!r.ready||r.paused)){if(n==="progress"){r.position=Number(o),s("timeupdate");return}if(t.loop){r.position=0,s("timeupdate");return}r.position=K2e,r.atEnd=!0,s("timeupdate"),r.paused=!0,s("pause"),a(l=>l.reject(new e.DOMException("The play() request was interrupted because playback ended.","AbortError"))),s("ended")}}function ji(){if(C0)return C0;let{JSDOM:e}=_le(),n=new e("<!doctype html><html><body></body></html>",{pretendToBeVisual:!0}).window;n.Element.prototype.scrollIntoView=()=>{};let o=n.HTMLElement.prototype.focus;n.HTMLElement.prototype.focus=function(...a){if(!(this.isConnected&&n.getComputedStyle(this).visibility!=="visible"))return o.apply(this,a)},n.document.elementFromPoint=()=>au&&au.isConnected?au:null,J2e(n);let r={window:n,document:n.document,navigator:n.navigator,HTMLElement:n.HTMLElement,Element:n.Element,Node:n.Node,Event:n.Event,MouseEvent:n.MouseEvent,KeyboardEvent:n.KeyboardEvent,FocusEvent:n.FocusEvent,TouchEvent:n.TouchEvent,getComputedStyle:n.getComputedStyle.bind(n),DOMRect:n.DOMRect,requestAnimationFrame:n.requestAnimationFrame,cancelAnimationFrame:n.cancelAnimationFrame},s=T0(r);try{let a=ct(),l=jpe();C0={window:n,document:n.document,React:a,act:a.act,createRoot:l.createRoot,globals:r}}finally{s()}return C0}function T0(e){let t=globalThis,n=new Map;for(let[r,s]of Object.entries(e))n.set(r,Object.getOwnPropertyDescriptor(t,r)),Object.defineProperty(t,r,{value:s,configurable:!0,writable:!0,enumerable:!0});let o=t.IS_REACT_ACT_ENVIRONMENT;return t.IS_REACT_ACT_ENVIRONMENT=!0,()=>{for(let[r,s]of n)s?Object.defineProperty(t,r,s):delete t[r];t.IS_REACT_ACT_ENVIRONMENT=o}}function Xpe(e){let t=ji();au=null,vm=void 0,Sm=null,Wi=!1;let n=[],o=t.window.addEventListener,r=new Map,s=b=>!!e&&(b==="popstate"||b==="hashchange");t.window.addEventListener=function(b,k,w){if(s(b)){let g=r.get(b)??new Map;r.set(b,g),g.has(k)||g.set(k,e.listen(b,k));return}return n.push([b,k,w]),o.call(this,b,k,w)};let a=t.window.removeEventListener,l=t.window.dispatchEvent,d=t.window.history,u=t.window.open;e&&(t.window.removeEventListener=function(b,k,w){if(!s(b))return a.call(this,b,k,w);r.get(b)?.get(k)?.(),r.get(b)?.delete(k)},t.window.dispatchEvent=function(b){return s(b.type)?e.dispatch(b):l.call(this,b)},d.pushState=(b,k,w)=>e.push(w),d.replaceState=(b,k,w)=>e.replace(w),d.back=()=>e.back(),t.window.open=(b,k,w)=>e.open(b,k,w));let c=()=>{t.window.addEventListener=o;for(let[b,k,w]of n)t.window.removeEventListener(b,k,w);if(e){for(let b of r.values())for(let k of b.values())k();t.window.removeEventListener=a,t.window.dispatchEvent=l,delete d.pushState,delete d.replaceState,delete d.back,t.window.open=u}},h=globalThis.requestAnimationFrame;if(!h){let b=T0(t.globals);return()=>{b(),c()}}let f=t.window.requestAnimationFrame;t.window.requestAnimationFrame=h;let m=T0({...t.globals,requestAnimationFrame:h});return()=>{m(),t.window.requestAnimationFrame=f,c()}}var Ype=new Set(["visual/","dimensions/"]),Z2e=1024,eGe=["Home","Detail","Settings"],wG=ZR();function R0(e,t){let n="button, input, select, textarea",o=e.getDOMElement();return o&&o.isConnected?o.matches(n)?o:o.querySelector(n)??o:t?t.querySelector(n)??t.firstElementChild??null:null}function vG(e,t){for(let n=t;n;n=n.parentElement){let o=e.getComputedStyle(n);if(o.pointerEvents!=="none"&&o.visibility!=="hidden"&&o.visibility!=="collapse")return n}return e.document.body}var km=(rf(),_(hT)).default;function tGe(e,t){e.stack.onCall(t);let n=km.instance,o=new km;for(let s of["navigate","replace"]){let a=o[s].bind(o);o[s]=(l,d)=>{e.stack.record({call:s==="navigate"?"push":"replace",stack:l,target:d.target,params:d.params,transition:d.transition}),a(l,d)}}let r=s=>a=>{let l=e.stack.answerFor(s,a.target);l==="done"?Promise.resolve().then(()=>a.hasNavigated?.()):l==="unchanged"?(a.hasUnchanged??a.hasNavigated)?.():a.hasFailed?.(l.failure.code,l.failure.message)};km.instance=o;for(let s of e.stack.script.names??[])o.registerPageStack(s,{navigate:r("push"),replace:r("replace"),reset:()=>{}});return()=>{km.instance=n}}var Nm=(cf(),_(HT)).RouterHandler;function nGe(e,t){e.router.onCall(t);let n=Nm.instance,o=new Nm,r=o.navigate.bind(o);o.navigate=(a,l)=>{e.router.record({router:a,target:l.target,params:l.params,openInNewTab:l.openInNewTab}),r(a,l)};let s={navigate:a=>{let l=e.router.answerFor(a.target,a.openInNewTab);l==="done"?Promise.resolve().then(()=>a.hasNavigated?.()):l==="unchanged"?a.hasUnchanged?.():a.hasFailed?.(l.failure.code,l.failure.message)},reset:()=>{}};Nm.instance=o;for(let a of e.router.script.names??[])o.registerRouter(a,s);return()=>{Nm.instance=n}}var I0="node-spec/popup-group",oGe=Jpe.defineNode({name:I0,category:"node-spec",initialize(){this._internal.children=[]},inputs:{flexDirection:{type:"string",set:()=>{}},cssClassName:{type:"string",set:()=>{}},position:{type:"string",set:()=>{}}},methods:{addChild(e){this._internal.children.push(e),e.parent=this},removeChild(e){this._internal.children=this._internal.children.filter(t=>t!==e),e.parent=void 0},getChildren(){return this._internal.children.slice()}}}),rGe=Vh(),{RestDataAdapter:iGe}=(EB(),_(TB)),lu=or(),SG=(EI(),_(gQ)),{parseSessionStore:xG}=(hd(),_(XQ)),sGe={delete:(e,t,n)=>{e.success(),n({type:"delete",objectId:e.objectId,collection:e.collection})},addRelation:(e,t,n)=>{e.success(t),n({type:"save",objectId:e.objectId,object:t,collection:e.collection})},removeRelation:(e,t,n)=>{e.success(t),n({type:"save",objectId:e.objectId,object:t,collection:e.collection})},create:(e,t,n)=>{e.success(t),n({type:"create",objectId:t?.objectId,object:t,collection:e.collection})},save:(e,t,n)=>{e.success(t),n({type:"save",objectId:e.objectId,object:t,collection:e.collection})},fetch:(e,t,n)=>{e.success(t),n({type:"fetch",objectId:e.objectId,object:t,collection:e.collection})},query:(e,t)=>{let n=t??{};e.success(n.results,n.count)},uploadFile:(e,t)=>e.success(t),signFileUrl:(e,t)=>e.success(t)};function aGe(e){xG(lu.instance._handle().publicToken);let t=e.backend.user,n=e.backend.ids.map(a=>[a,e.backend.session(a)]).filter(([,a])=>a!==void 0),o=globalThis,r=Object.getOwnPropertyDescriptor(o,"localStorage"),s={};Object.defineProperty(o,"localStorage",{value:s,configurable:!0,writable:!0,enumerable:!1});for(let[a,l]of n)s["NodeGX/"+a+"/session"]=JSON.stringify({...l,sessionToken:"world"});return t!==void 0&&xG(lu.instance._handle().publicToken).write({objectId:t,sessionToken:"world"}),()=>{r?Object.defineProperty(o,"localStorage",r):delete o.localStorage}}var{RestAuthAdapter:lGe}=(By(),_(hZ)),CG=(()=>{let e=xm.Services,t=e.UserService,n=(ir(),_(tT)).default;return e.UserService=t,n})(),dGe=(()=>{let e=xm.Services,t=e.UserService,n=Hpe();return e.UserService=t,n})();function uGe(e){let t=xm.Services,n=t.UserService,o,r=!1,s=()=>{if(o===void 0){r=!0;try{o=new CG}finally{r=!1}}return o};t.UserService={forScope:s};let a=Qpe(),l=CG.prototype,d={},u={};for(let h of Object.getOwnPropertyNames(l)){let f=Object.getOwnPropertyDescriptor(l,h);if(h==="constructor"||!f)continue;if(f.get){let b=f.get;u[h]=f,Object.defineProperty(l,h,{...f,get(){return b.call(this===a?s():this)}});continue}if(typeof f.value!="function")continue;let m=f.value;d[h]=m,l[h]=function(...b){return m.apply(this===a?s():this,b)}}let c=lGe.prototype,p={};for(let h of gS)p[h]=c[h],c[h]=function(f,m){let b=f.id,k=e.backend.session(b),w=Object.fromEntries(Object.entries(m).filter(([,y])=>typeof y!="function"));w.properties&&typeof w.properties=="object"&&(w.properties={...w.properties});let g=y=>e.backend.landAuth(h,b,w,k,y,S=>{S.do==="write"?this.sessionStore(f).write({...S.session,sessionToken:"world"}):S.do==="clear"?this.sessionStore(f).clear():S.do==="event"?this.emitAuthEvent(S.type):S.do==="success"?m.success("ok"in y&&y.ok!==void 0?JSON.parse(JSON.stringify(y.ok)):void 0):S.do==="error"&&m.error(S.message)});if(r&&h==="fetchCurrentUser"){e.backend.startService(y=>void Promise.resolve().then(()=>g(y)));return}e.backend.issue({op:h,backend:b,args:m},y=>{"refused"in y&&y.refused||"inCall"in y&&y.inCall?g(y):Promise.resolve().then(()=>g(y))})};return p.consumeAuthReturn=c.consumeAuthReturn,c.consumeAuthReturn=function(h){return h.id!==e.backend.ids[0]?!1:e.backend.consumeReturn(f=>{f.do==="return"?(this.oauthReturn={...f.state},f.announce&&this.emitAuthEvent("oauthReturn",this.oauthReturn)):f.do==="write"?this.sessionStore(h).write({...f.session,sessionToken:"world"}):f.do==="event"&&this.emitAuthEvent(f.type)},(f,m)=>f==="answer"?void Promise.resolve().then(m):m())},()=>{for(let[h,f]of Object.entries(p))c[h]=f;for(let[h,f]of Object.entries(d))l[h]=f;for(let[h,f]of Object.entries(u))Object.defineProperty(l,h,f);t.UserService=n}}var kG;function Qpe(){return kG===void 0&&(kG=CG.instance),kG}function cGe(e,t,n){Qpe(),e.backend.onCall(n);let o={cloudservices:t.getMetaData("cloudservices"),backendServices:t.getMetaData("backendServices")};t.setMetaData("cloudservices",void 0),t.setMetaData("backendServices",{version:2,activeBackendId:e.backend.ids[0],backends:e.backend.ids.map(p=>({id:p,name:p,type:"directus",url:`https://${p}.backend.example`}))}),lu.invalidateBackends();let r=iGe.prototype,s={};for(let[p,h]of Object.entries(sGe))s[p]=r[p],r[p]=function(f,m){let b=$0(p),k=w=>b?m.error({error:w}):m.error(w);e.backend.issue({op:p,backend:f.id,args:m},w=>{if(b&&!("ok"in w)&&w.refused)return void m.error(vp(w));Promise.resolve().then(()=>{if(!("ok"in w))return b?m.error(vp(w)):w.detail===void 0?m.error(w.error):m.error(w.error,w.detail);try{h(m,w.ok===void 0?void 0:JSON.parse(JSON.stringify(w.ok)),g=>this.emitAdapterEvent(g))}catch(g){k(g instanceof Error?g.message:String(g))}})})};let a=e.backend.onStoreEvent(p=>{let{backend:h,...f}=p;f.object&&lu._fromJSON({...f.object},f.collection,void 0),lu.forBackend(void 0,h)._adapter.emitAdapterEvent(f)}),l=SG.createRealtimeSubscription;SG.createRealtimeSubscription=(p,h)=>{let{onEvent:f,onStatus:m,onError:b,...k}=h;return e.backend.subscribe({op:"subscribe",backend:p.id,args:k},w=>{"status"in w?m?.(w.status):"change"in w?f?.(w.change):b?.(w.error)})};let d=aGe(e),u=uGe(e),c=e.cloudServices;if(c){let{sessionToken:p,...h}=c;t.setMetaData("cloudservices",h);let f=xG(c.appId);p!==void 0&&f.write({objectId:"world",sessionToken:p})}return()=>{SG.createRealtimeSubscription=l,a(),u(),d();for(let[p,h]of Object.entries(s))r[p]=h;lu.invalidateBackends(),t.setMetaData("cloudservices",o.cloudservices),t.setMetaData("backendServices",o.backendServices)}}function pGe(e){return e==="done"?{ok:!0}:e==="unchanged"?{ok:!1,unchanged:!0}:{ok:!1,code:e.failure.code,message:e.failure.message}}function hGe(e){let t=Hi._models;for(let r of Object.keys(t))delete t[r];let n=hp._collections;for(let r of Object.keys(n))delete n[r];let o=e.script.registry;if(o){for(let[r,s]of Object.entries(o.models??{})){let a=Hi.get(r);for(let l of Object.keys(s))a.set(l,s[l])}for(let[r,s]of Object.entries(o.collections??{})){let a=hp.get(r);for(let l of s)a.add(Hi.get(l))}for(let[r,s]of Object.entries(o.classes??{}))Hi.get(r)._class=s}}function fGe(){let e=Sa(),t=e.createNoodlAPI,n={Object:Hi,Array:hp,get Variables(){return Hi.get("--ndl--global-variables")},Objects:new Proxy(Hi,{get:(o,r)=>Hi.get(r)}),Arrays:new Proxy(hp,{get:(o,r)=>hp.get(r)})};return e.createNoodlAPI=()=>n,()=>{e.createNoodlAPI=t}}function RG(){let e=globalThis;e.Noodl||(e.Noodl={deployed:!0}),e.Noodl.Env||(e.Noodl.Env={});let t=e.Noodl;t.SEO||(t.SEO={setTitle:()=>{}}),t.Events||(t.Events={emit:()=>{}})}function Zpe(e,t){let n=o=>{let r=o.default??o;e.context.nodeRegister.register(Jpe.defineNode(r.node))};RG();for(let o of t.stdLibrary)n(o);for(let o of t.navigation)n(o);for(let o of t.visual)n(o);for(let o of t.runtimeRegistered)n(o);return e}var NG="outcome/unspecified-failure",mGe="outcome/unchanged-as-failure";function ehe(e={}){let t,n=setTimeout,o=new xm({type:e.type||"browser",platform:{requestUpdate:()=>{},getCurrentTime:()=>t?t.clock.now():0,objectToString:v=>JSON.stringify(v)}}),r=o.context;r.styles={resolveColor:v=>v,getTextStyle:()=>({})};let s=new Y2e;r.setNodeFocused=(v,N)=>s.setNodeFocused(v,N),r.setNodeUnmounted=v=>s.nodeUnmounted(v);let a=r.graphModel;a&&!a.variants&&(a.variants=[]),a&&!a.componentToBundleMap&&(a.componentToBundleMap=new Map),a&&!a.componentIndex&&(a.componentIndex={});let l=new Map,d=new Map,u=new Map,c=new Map,p=0,h,f=new cR;r.errorBus.subscribe(v=>{let N=c.get(v.nodeId);N&&N.h.errors.push(v)});let m=new Map,b=new Map;{let v=r.editorConnection;v.isRunningLocally=()=>!0,v.sendWarning=(N,I,E,P)=>{m.has(I)||m.set(I,new Map),m.get(I).set(E,String(P?.message??""))},v.clearWarning=(N,I,E)=>{m.get(I)?.delete(E)},v.clearWarnings=(N,I)=>{m.delete(I)}}function k(v){let N=Lr(v.h.type)?.diagnostics;if(!N)return;let I=H=>H.slice(0,H.indexOf("/")+1),E=new Set(Object.keys(N).map(I).filter(H=>!Ype.has(H))),P=new Set(Object.keys(N).filter(H=>Ype.has(I(H)))),V=m.get(v.h.id)??new Map,te=b.get(v.h.id)??{};b.set(v.h.id,te);let Z=[...new Set([...V.keys(),...Object.keys(te)])].filter(H=>E.has(I(H))||P.has(H)).sort();for(let H of Z){let B=V.get(H)||void 0;B!==te[H]&&(B===void 0?(delete te[H],v.trace.push({t:"diagnostic",key:H})):(te[H]=B,v.trace.push({t:"diagnostic",key:H,message:B})))}}let w=()=>({values:new Map,signals:[],outcomes:[],requests:[],location:[]}),g=()=>{r.currentFrameTime=t?t.clock.now():0,r.eventEmitter.emit("frameStart"),r.update(),r.eventEmitter.emit("frameEnd")},y=()=>{r.eventEmitter.emit("frameStart"),r.updateDirtyNodes(),r.eventEmitter.emit("frameEnd")},S=async()=>{for(await Promise.resolve(),await new Promise(v=>n(v,0));t?.location&&t.location.land()!=="none";)await Promise.resolve(),await new Promise(v=>n(v,0))};function C(v,N){let I=v.h.metadata.inputs[N];if(!I)return M(v,N);let E=I.type;return!!E&&(E==="signal"||typeof E=="object"&&E.name==="signal")}function M(v,N){let I=Lr(v.h.type)?.derived;if(!I)return!1;let E=v.h.node.model?.parameters??{},P=I.inputs(E,d.get(v.h.id)??{})[N]??I.discover?.(N);return!!P&&P.type==="signal"}function F(v,N){if(v.signalOutputs?.has(N))return!0;let I=v.h.metadata.outputs[N],E=I&&I.type;return I?!!E&&(E==="signal"||typeof E=="object"&&E.name==="signal"):U(v,N)}function U(v,N){let I=Lr(v.h.type);if(!I?.derived)return!1;let E=v.h.node.model?.parameters??{};return(hu(I,E,d.get(v.h.id)??{},"skip")[N]??I.derived.discoverOutput?.(N))?.type==="signal"}function $(v){let N=v.h.node;for(let B of["setInputValue","update","sendValue","sendSignalOnOutput","beginOutcome","reportOutcome","scheduleAfterInputsHaveUpdated"])Object.defineProperty(N,B,{value:N[B],writable:!0,configurable:!0});let I=N.setInputValue.bind(N);N.setInputValue=(B,K)=>{let de=v.currentInput;K===!0&&C(v,B)&&(v.currentInput=B);try{I(B,K)}finally{v.currentInput=de}};let E=N.scheduleAfterInputsHaveUpdated.bind(N);N.scheduleAfterInputsHaveUpdated=B=>{let K=v.currentInput;return E(K===void 0?B:function(){let de=v.currentInput;v.currentInput=K;try{return B.call(this)}finally{v.currentInput=de}})};let P=N.update.bind(N);N.update=()=>{let B=h;h=v;try{return f.run(v,P)}finally{h=B}};let V=N.sendValue.bind(N);N.sendValue=(B,K)=>{v.signalOutputs?.has(B)?K===!0&&v.frame.signals.push(B):K!==void 0&&N.hasOutput(B)&&v.frame.values.set(B,K===N?Me:$pe(N,K)?Qp:ge(K)),V(B,K)};let te=N.sendSignalOnOutput.bind(N);N.sendSignalOnOutput=B=>{if(!N.hasOutput(B))return te(B);v.inOutcome>0&&Wv.includes(B)||v.frame.signals.push(B),te(B)};let Z=N.beginOutcome.bind(N);N.beginOutcome=B=>{let K=Z(B);return K.port=v.currentInput,K};let H=N.reportOutcome.bind(N);N.reportOutcome=(B,K,de)=>{let ve=B.reported===void 0;v.inOutcome++;try{H(B,K,de)}finally{v.inOutcome--}if(ve&&B.reported!==void 0){let he={t:"outcome",port:B.port??v.currentInput??"",value:B.reported};B.reported==="failure"&&(he.error=K==="unchanged"?mGe:de&&de.code||NG),v.frame.outcomes.push(he)}}}function T(v){v.trace.push({t:"settle"});let N=new Map(v.frame.values);if(v.settles===0)for(let I of v.h.node._outputList){if(N.has(I.name)||F(v,I.name)||Wv.includes(I.name))continue;let E;try{E=I.value}catch{continue}E!==void 0&&N.set(I.name,E===v.h.node?Me:$pe(v.h.node,E)?Qp:ge(E))}for(let I of[...N.keys()].sort()){let E=N.get(I);if(E===void 0)continue;let P=JSON.stringify(E);v.lastSent[I]!==P&&(v.lastSent[I]=P,v.trace.push({t:"value",port:I,value:E}))}for(let I of v.frame.signals)v.trace.push({t:"signal",port:I});for(let I of v.frame.outcomes)v.trace.push(I);for(let I of v.frame.requests)v.trace.push(I);for(let I of v.frame.location)v.trace.push(I);k(v),v.frame=w(),v.settles++}function G(v){let N=f.getStore()??(l.size===1?[...l.values()][0]:void 0);if(!N)throw new Error(`runtime: a request (${v.method} ${v.url}) was made outside any node's update, and more than one node is mounted \u2014 it cannot be attributed`);let I={t:"request",method:ge(v.method),url:v.url,headers:{...v.headers}};v.body!==void 0&&(I.body=ge(v.body)),N.frame.requests.push(I)}function oe(v){let N=f.getStore()??(l.size===1?[...l.values()][0]:void 0);if(!N)throw new Error(`runtime: a backend call (${v.op}) was made outside any node's update, and more than one node is mounted \u2014 it cannot be attributed`);N.frame.requests.push(wp(v))}function Fe(v){let N=f.getStore()??(l.size===1?[...l.values()][0]:void 0);if(!N)throw new Error(`runtime: a ${v.service} call was made outside any node's update, and more than one node is mounted \u2014 it cannot be attributed`);N.frame.requests.push(Pm(v))}function pe(v){let N=f.getStore()??(l.size===1?[...l.values()][0]:void 0);if(!N)throw new Error(`runtime: a location call (${v.call}) was made outside any node's update, and more than one node is mounted \u2014 it cannot be attributed`);N.frame.location.push(ml(v))}function re(v){let N=f.getStore()??(l.size===1?[...l.values()][0]:void 0);if(!N)throw new Error(`runtime: a stack call (${String(v.op)}) was made outside any node's update, and more than one node is mounted \u2014 it cannot be attributed`);N.frame.location.push(v)}function fe(v){h&&h.frame.location.push(v)}function ye(v,N){let I=[...l.values()].find(E=>E.h.node._internal?.inputElement===N);if(!I)throw new Error("runtime: a file input was clicked that no mounted node made \u2014 it cannot be attributed");I.frame.location.push(v)}let Oe=new WeakMap;function nn(v,N){let I=Oe.get(N);if(!I&&v.op==="connect"&&(I=f.getStore()??h??[...l.values()].find(E=>E.currentInput!==void 0)??(l.size===1?[...l.values()][0]:void 0),I&&Oe.set(N,I)),!I)throw new Error("runtime: a WebSocket call was made that no mounted node can be named for \u2014 it cannot be attributed");I.frame.requests.push(v)}let At=[],Bt=0;function Pn(v,N){r.rootComponent=N;let I=v.createNode.bind(v);v.createNode=(async(...E)=>{let P=Bt>0,V=await I(...E);return P&&At.push(V),V})}function yo(v){let N=r;v.popup.onCall(fe);let I=N.rootComponent,E=r.nodeRegister.peek(I0);r.nodeRegister.register(oGe);let P=qpe.prototype,V=P.createPrimitiveNode;P.createPrimitiveNode=function(de,...ve){let _e=this===N.rootComponent?.nodeScope;return V.call(this,de==="Group"&&_e?I0:de,...ve)};let te=globalThis,Z=te.requestAnimationFrame;te.requestAnimationFrame=de=>(r.scheduleNextFrame(()=>de(v.clock.now())),0);let H={name:"node-spec/root",getInstanceId:()=>"node-spec/root",getRoots:()=>[]};Pn(X(H,[]),H),At=[],N.popupStack=[],N.setPopupCallbacks(v.popup.host?{onShow:()=>{},onClose:()=>{}}:{onShow:void 0,onClose:void 0});let B=[];for(let de of v.popup.script.components??[])Object.prototype.hasOwnProperty.call(N.componentModels,de)||(N.componentModels[de]=new Av(de),B.push(de));let K=N.showPopup;N.showPopup=function(de,ve,_e){v.popup.record({op:"show",target:de,params:ve,stackPolicy:_e?.stackPolicy,closeOnEscape:_e?.closeOnEscape,modal:_e?.modal,accessibleName:_e?.accessibleName}),Bt++;try{return K.call(this,de,ve,_e)}finally{Bt--}};for(let{at:de,event:ve}of v.popup.events)v.clock.schedule(de,()=>{if(ve.kind==="escape"){N.cancelTopPopup();return}At[ve.popup??At.length-1]?._popupCloseHandler?.(ve.action,{...ve.results})});return()=>{delete N.showPopup;for(let de of B)delete N.componentModels[de];N.setPopupCallbacks({onShow:void 0,onClose:void 0}),N.popupStack=[],At=[],Z===void 0?delete te.requestAnimationFrame:te.requestAnimationFrame=Z,P.createPrimitiveNode=V,r.nodeRegister.restore(I0,E),N.rootComponent=I}}function Fo(v,N){let I;for(let E=N.length-1;E>=0;E--){let P={name:N[E],getInstanceId:()=>`node-spec/popup/${E}`,getRoots:()=>[],parentNodeScope:I,_popupCloseHandler:()=>{}};P.nodeScope={componentOwner:P},I={componentOwner:P}}v.parentNodeScope=I}let qi=v=>N=>{let I=N.data===void 0?{level:N.level,message:N.message}:{level:N.level,message:N.message,data:N.data},E=N.nodeId!==void 0?c.get(N.nodeId):void 0;(E?E.h.logs:v).push(I)},du=(v,N,I=[])=>({modelScope:e.type==="cloud"?new Hi.Scope:void 0,componentOwner:{name:`node-spec/${v}`,getInstanceId:()=>v,getRoots:()=>[]},context:r,runContext:{log:qi(N),recordModelCall:E=>void I.push(E)}});function pl(v,N,I){if(v.registerInputIfNeeded(N),!v.hasInput(N))throw new Error(`${I}: no input "${N}" on the runtime to wire`);let E={name:`wired:${N}`,_signalsSentThisUpdate:{},getOutput:()=>P,update:()=>{}},P={name:"value",owner:E,value:void 0,registerConnection:()=>{},deregisterConnection:()=>{}};v.connectInput(N,E,"value")}function hl(v,N,I,E){if(I?.derived){for(let[P,V]of Object.entries(I.derived.inputs(N.parameters,E)))P in I.inputs||(N.inputPorts[P]={name:P,type:V.type});for(let[P,V]of Object.entries(I.derived.outputs?.(N.parameters,E)??{}))P in I.outputs||(N.outputPorts[P]={name:P,type:V.type});for(let[P,V]of Object.entries(hu(I,N.parameters,E)))N.outputPorts[P]={name:P,type:V.type},v.registerOutputIfNeeded(P)}}function Cm(v,N,I,E,P,V={}){if(!r.nodeRegister.hasNode(v))throw new Error(`runtime: no node type "${v}" is registered`);if(E!==void 0&&l.has(E))throw new Error(`runtime: a node "${E}" is still mounted \u2014 a previous play leaked it`);let te=E??`${v}#${p++}`,Z={...Im(V),wired:[...V.wired??[],...P??[]]};d.set(te,Z),V.parent!==void 0&&u.set(te,V.parent);let H=[],B=[],K=I??(v==="Page Stack"||v==="Router"||v==="For Each"?X({name:`node-spec/${te}`,getInstanceId:()=>te,getRoots:()=>[]},H):du(te,H,B));!I&&v==="NavigationClosePopup"&&t&&t.popup.inside.length>0&&Fo(K.componentOwner,t.popup.inside);let de=r.nodeRegister.getNodeMetadata(v);Lr(v)?.needs?.includes("person")&&!pp&&(pp=Xpe(t?.location));let{node:ve,made:_e}=x(v,te,K,de,H);if(ve.nodeScope||(ve.nodeScope=K),I&&(I.nodes[te]=ve),v==="PageStackNavigateBack"&&t?.stack.inPushedPage){let le=t;ve._setBackCallback(Be=>pGe(le.stack.back(Be.backAction,Be.results)))}let he=Lr(v),ae={type:v,parameters:{...N},outputPorts:{},inputPorts:{},removeListenersWithRef:()=>{}};ve.model=ae,hl(ve,ae,he,Z);for(let le of Z.wiredOutputs??[])if(ve.registerOutputIfNeeded(le),!ve.hasOutput(le))throw new Error(`${v}: no output "${le}" on the runtime to wire`);if(v==="NavigationClosePopup"){let le=ve,Be=le.resolvePopup.bind(ve);le.resolvePopup=()=>{let Ze=Be(),An=Ze.close;if(An&&t){let br=t;Ze.close=(eo,un)=>{br.popup.record({op:"close",popup:Ze.popup?.name,action:eo,results:un}),An(eo,un)}}return Ze}}v==="For Each"&&!I&&E0(ve,K,te);for(let le of P??[])pl(ve,le,v);let ue=A(ve,te,v,de,N,H,_e);if(ue.modelCalls=B,he?.needs?.includes("person"))try{Fv(l.get(te))}catch(le){throw Le.dispose(ue),le}if(t?.host.invocation&&(v==="noodl.cloud.response"||v==="noodl.cloud.request")){let le=t,Be=l.get(te);if(v==="noodl.cloud.response"){let Ze=ve._internal;Ze._requestIsOpen=()=>le.host.requestState()==="open",Ze._sendResponseCallback=An=>le.host.requestState()!=="open"?!1:(le.host.respond(),Be.frame.location.push(cu({op:"respond",status:An.statusCode,body:An.body})),!0)}else{let{at:Ze,request:An}=le.host.invocation;le.clock.schedule(Ze,()=>{let br="body"in An?{headers:{...An.headers},body:An.body}:{headers:{...An.headers}};ve.sendRequest(br).catch(eo=>{le.host.refuse(),Be.frame.location.push(cu(eo&&eo.fields!==void 0?{op:"refuse",reason:String(eo.message),fields:eo.fields}:{op:"refuse",reason:String(eo&&eo.message)}))})})}}if(v==="PageInputs"&&t){let le=t,Be=Ze=>ve._setPageParams({...Ze});for(let Ze of le.router.pages)Ze.at>0?le.clock.schedule(Ze.at,()=>Be(Ze.params)):Be(Ze.params)}return ue}let Hs=new Set,fl=new Map;function E0(v,N,I){let E=r.componentModels,P=[],V=(H,[B,K])=>({name:B,plug:H,type:K==="signal"?{name:"signal"}:"*"});for(let[H,B]of Object.entries(Ar)){if(Object.prototype.hasOwnProperty.call(E,H))continue;let K=new Av(H);for(let de of Object.entries(B.inputs))K.addInputPort(V("input",de));for(let de of Object.entries(B.outputs))K.addOutputPort(V("output",de));for(let[de,ve]of Object.entries(B.nodes)){let _e=wG.createFromExportData({id:de,type:ve.type,parameters:{...ve.params??{}}});_e.component=K,K.nodes[_e.id]=_e}for(let de of B.wires){let ve=Br(de.from),_e=Br(de.to);K.connections.push({sourceId:ve.node,sourcePort:ve.port,targetId:_e.node,targetPort:_e.port})}for(let de of B.roots)K.roots.push(de);E[H]=K,P.push(H)}let te=r.nodeRegister.createNode("Group",`${I}/parent`,N);N.nodes[te.id]=te,v.updateTarget(te.id),fl.set(I,{group:te,models:P})}function Dv(v,N){let I=fl.get(v.h.id);if(!I||typeof N!="number")return null;let E=I.group.getDOMElement();return!E||!E.isConnected?null:E.children[N]??null}function Fv(v){let N=ji();pp||(pp=Xpe(t?.location));let I=v.h.node,E=N.document.createElement("div");N.document.body.appendChild(E),E.addEventListener("click",he=>s.onClickCapture(he.target),!0);let P={container:E,root:N.createRoot(E),host:null};v.page=P,Hs.add(v);let V=Lr(v.h.type),te=V?.acts?.pick?.values??[],Z=v.h.node.nodeScope,H=(he,ae)=>{let ue=r.nodeRegister.createNode("net.noodl.controls.radiobutton",`${v.h.id}/button${ae}`,Z);return he!==void 0&&ue.setInputValue("value",he),{node:ue,value:he}},B=I;if(v.h.type==="Radio Button Group")P.children=te.map((he,ae)=>{let ue=H(he,ae);return B.addChild(ue.node),ue});else if(v.h.type==="Group"){let he=V?.acts?.tap?.values??[];P.children=he.map((ae,ue)=>{let le=r.nodeRegister.createNode("Text",`${v.h.id}/child${ue}`,Z);return ae.text!==void 0&&le.setInputValue("text",ae.text),ae.position!==void 0&&le.setInputValue("position",ae.position),B.addChild(le),{node:le,value:ae}})}else if(v.h.type==="Drag"){let he=r.nodeRegister.createNode("Group",`${v.h.id}/child0`,Z);B.addChild(he),P.children=[{node:he,value:"child"}]}else if(v.h.type==="Page Stack"){let he=r.componentModels;P.models=[];for(let Be of eGe){if(Object.prototype.hasOwnProperty.call(he,Be))continue;let Ze=new Av(Be),An=wG.createFromExportData({id:`${Be}/back`,type:"PageStackNavigateBack",parameters:{}});An.component=Ze,Ze.nodes[An.id]=An,he[Be]=Ze,P.models.push(Be)}let ae=I._internal.asyncQueue,ue=ae.enqueue.bind(ae);ae.enqueue=Be=>{let Ze=ue(Be);return Ze.catch(()=>{}),Ze};let le=N.window.performance;if(t){let Be=t,Ze=Object.getOwnPropertyDescriptor(le,"now");le.now=()=>Be.clock.now(),P.restoreClock=()=>{Ze?Object.defineProperty(le,"now",Ze):delete le.now}}}else if(v.h.type==="Router"){let he=r.componentModels;P.models=[];for(let un of nh){if(Object.prototype.hasOwnProperty.call(he,un.component))continue;let qs=new Av(un.component),mp=(fi,jv)=>{let U0=wG.createFromExportData({id:`${un.component}/${fi}`,type:jv,parameters:{}});U0.component=qs,qs.nodes[U0.id]=U0};for(let fi=0;fi<un.pageNodes;fi++)mp(`page${fi}`,"Page");for(let fi=0;fi<un.pageInputs;fi++)mp(`inputs${fi}`,"PageInputs");he[un.component]=qs,P.models.push(un.component)}let ae=o.graphModel,ue=Object.getOwnPropertyDescriptor(ae,"routerIndex"),le=I.model.parameters.name,Be=I._internal;Object.defineProperty(ae,"routerIndex",{configurable:!0,get:()=>({routers:[{name:le||"Main",pages:Be.pages}],pages:nh.map(un=>({component:un.component,path:un.path,title:un.title}))})}),P.restoreIndex=()=>{ue?Object.defineProperty(ae,"routerIndex",ue):delete ae.routerIndex};let Ze=I.nodeScope,An=Ze.createNode.bind(Ze);Ze.createNode=(...un)=>An(...un).then(qs=>{for(let mp of qs.nodeScope.getNodesWithType("PageInputs")){let fi=mp._setPageParams.bind(mp);mp._setPageParams=jv=>{v.frame.location.push({t:"answer",op:"page",params:ge(jv)??null}),fi(jv)}}return qs});let br=I._internal.asyncQueue,eo=br.enqueue.bind(br);br.enqueue=un=>{let qs=eo(un);return qs.catch(()=>{}),qs}}else if(v.h.type==="For Each"){let he=fl.get(v.h.id);he.group.addChild(I),B=he.group,P.models=he.models;let ae=N.window.performance;if(t){let ue=t,le=Object.getOwnPropertyDescriptor(ae,"now");ae.now=()=>ue.clock.now(),P.restoreClock=()=>{le?Object.defineProperty(ae,"now",le):delete ae.now}}}else if(v.h.type==="net.noodl.visual.columns"){for(let ue=0;ue<2;ue++){let le=r.nodeRegister.createNode("Group",`${v.h.id}/child${ue}`,Z);B.addChild(le),(P.children??(P.children=[])).push({node:le,value:ue})}let he={width:Z2e,observations:[],restore:()=>{}};class ae{constructor(le){this.callback=le}observe(le){Object.defineProperty(le,"offsetWidth",{configurable:!0,get:()=>he.width}),he.observations.push({observer:this,el:le})}unobserve(le){he.observations=he.observations.filter(Be=>!(Be.observer===this&&Be.el===le))}disconnect(){he.observations=he.observations.filter(le=>le.observer!==this)}}he.restore=T0({ResizeObserver:ae}),P.layout=he}else if(V?.needs?.includes("group")&&t?.group.present){let he=r.nodeRegister.createNode("Radio Button Group",`${v.h.id}/group`,Z);t.group.load&&he.setInputValue("value",t.group.load.value),he.addChild(I),P.children=te.map((ae,ue)=>{let le=H(ae,ue);return he.addChild(le.node),le});for(let ae of t.group.writes)t.clock.schedule(ae.at,()=>he.setInputValue("value",ae.value));P.group=he,B=he}let K=u.get(v.h.id)??"column";B.parent={props:{layout:K},style:{flexDirection:K},cachedChildren:void 0,children:[],innerReactComponentRef:null,contains:()=>!1,getVisualParentNode:()=>{},forceUpdate:()=>{r.eventEmitter.once("frameEnd",()=>P.host?.forceUpdate()),r.scheduleUpdate()}};let de=N.React;class ve extends de.Component{render(){return B.render()??null}}N.act(()=>{P.root.render(de.createElement(ve,{ref:he=>P.host=he}))});let _e=V?.acts?.grab?.values??[];P.cards=_e.map((he,ae)=>{let ue=r.nodeRegister.createNode("Text",`${v.h.id}/card${ae}`,Z),le=N.document.createElement("div");N.document.body.appendChild(le);let Be=N.createRoot(le),Ze=null;ue.parent={props:{layout:"column"},style:{flexDirection:"column"},cachedChildren:void 0,children:[],innerReactComponentRef:null,contains:()=>!1,getVisualParentNode:()=>{},forceUpdate:()=>{r.eventEmitter.once("frameEnd",()=>Ze?.forceUpdate()),r.scheduleUpdate()}};class An extends de.Component{render(){return ue.render()??null}}N.act(()=>{Be.render(de.createElement(An,{ref:eo=>Ze=eo}))});let br=(eo,un)=>ue.setInputValue(eo,un);return br("text",`card ${ae}`),br("draggable",!0),he.dragValue!==void 0&&br("dragValue",he.dragValue),he.dragKind!==void 0&&br("dragKind",he.dragKind),{node:ue,value:he,root:Be,container:le}}),v.page=P,Hs.add(v)}function _0(v){let N=v.page;if(!N)return;let I=ji();I.act(()=>{N.root.unmount()}),N.container.remove();for(let P of N.cards??[])I.act(()=>{P.root.unmount()}),P.container.remove();for(let P of[...(N.children??[]).map(V=>V.node),...(N.cards??[]).map(V=>V.node),...N.group?[N.group]:[]])try{P._onNodeDeleted()}catch{}N.group&&(N.group.parent=void 0);let E=r.componentModels;for(let P of N.models??[])delete E[P];N.restoreClock?.(),N.restoreIndex?.(),N.layout?.restore(),v.h.node.parent=void 0,v.page=void 0,Hs.delete(v)}function P0(){Hs.size===0&&pp&&(pp(),pp=void 0)}function A0(v){let N=ji();v.page?.group&&(v.page.group.cachedChildren=void 0);let I=fl.get(v.h.id);I&&(I.group.cachedChildren=void 0),N.act(()=>{v.page?.host?.forceUpdate()})}function Mv(v){let N=v.page?.layout;if(!N)return;let I=N.observations.filter(E=>E.last!==N.width);for(let E of I)E.last=N.width;for(let E of new Set(I.map(P=>P.observer))){let P=I.filter(V=>V.observer===E).map(V=>({target:V.el,contentRect:{width:N.width,height:0}}));E.callback(P,E)}}function D0(v,N,I){let E=ji(),P=E.window;if(N==="push"||N==="replace"||N==="back")return M0(v,N,I);if(N==="navigate"||N==="traverse")return L0(v,N,I);let V=N==="pick"?Vv(v,I):N==="tap"?V0(v,I):N==="tapRow"?Dv(v,I):N==="clickAway"?v.page?.container:Bv(v);if(N==="fileEnter"||N==="fileLeave"||N==="fileDrop")return F0(N,I,V?vG(P,V):E.document.body);if(N==="grab"||N==="pickUp"||N==="away")return Lv(v,N,I);if(N==="pressAt"||N==="moveTo"||N==="releaseAt")return B0(N,I,V);if(N==="resize")return v.page?.layout&&typeof I=="number"&&(v.page.layout.width=I),Mv(v);if(!V)return;if(N==="loaded"||N==="failed"||N==="progress"||N==="ended")return Q2e(P,V,N,I);if(N==="fetched"){(V.getAttribute("src")||V.getAttribute("srcset"))&&V.dispatchEvent(new P.Event(I==="load"?"load":"error"));return}let te=new Set(["focus","blur","type","key","choose","slide"]),Z=te.has(N)?V:vG(P,V);if(te.has(N)||(au=Z),Z===V&&V.tagName==="IFRAME"&&N!=="focus"&&N!=="blur"){if(N==="press"||N==="click"){Wi=!0,V.focus();return}if(N==="lift"&&(Wi=!0),N!=="key")return;if(V.focus(),E.document.activeElement===V){I!=="Escape"&&(Wi=!0);return}}let H=(ae,ue={})=>Z.dispatchEvent(new P.MouseEvent(ae,{bubbles:!0,cancelable:!0,composed:!0,button:0,...ue})),B=ae=>Z.dispatchEvent(new P.TouchEvent(ae,{bubbles:!0,cancelable:!0,composed:!0})),K=(ae,ue)=>{let le=new P.MouseEvent(ae,{bubbles:!0,cancelable:!0,composed:!0,button:0,buttons:ae==="pointerdown"?1:0});return Object.defineProperty(le,"pointerType",{value:ue}),Object.defineProperty(le,"pointerId",{value:ue==="mouse"?1:2}),Object.defineProperty(le,"isPrimary",{value:!0}),Z.dispatchEvent(le)},de=!!Z.disabled,ve=()=>{if(K("pointerdown","mouse"),de)return;H("mousedown")&&Z.focus()},_e=()=>{if(K("pointerdown","mouse"),!H("mousedown"))return;let ae=Z.closest("[tabindex]");for(;ae&&P.getComputedStyle(ae).visibility!=="visible";)ae=ae.parentElement?.closest("[tabindex]")??null;if(ae){ae.focus();return}let ue=E.document.activeElement;if(!ue||ue===E.document.body)return;let le=!ue.hasAttribute("tabindex");le&&ue.setAttribute("tabindex","-1"),ue.blur(),le&&ue.removeAttribute("tabindex")},he=()=>(E.document.activeElement!==V&&V.focus(),E.document.activeElement===V);switch(N){case"hover":H("mouseover",{relatedTarget:E.document.body});break;case"leave":H("mouseout",{relatedTarget:E.document.body});break;case"press":ve();break;case"release":K("pointerup","mouse"),de||H("mouseup");break;case"click":case"pick":if(ve(),K("pointerup","mouse"),de)break;H("mouseup"),H("click");break;case"tap":case"tapRow":case"clickAway":_e(),K("pointerup","mouse"),H("mouseup"),H("click");break;case"touch":K("pointerdown","touch"),B("touchstart");break;case"lift":K("pointerup","touch"),B("touchend");break;case"move":{let ae=I==="touch"?"touch":"mouse",ue=new P.MouseEvent("pointermove",{bubbles:!0,cancelable:!0,composed:!0,button:-1,buttons:1,clientX:10,clientY:0});Object.defineProperty(ue,"pointerType",{value:ae}),Object.defineProperty(ue,"pointerId",{value:ae==="mouse"?1:2}),Object.defineProperty(ue,"isPrimary",{value:!0}),Z.dispatchEvent(ue),ae==="mouse"?H("mousemove",{clientX:10,buttons:1}):B("touchmove");break}case"focus":V.focus();break;case"blur":V.blur();break;case"type":if(de||!he())break;for(let ae of Array.from(String(I)))fp(P,V,ae);break;case"key":{if(de)break;let ae=he()?V:E.document.activeElement??E.document.body,ue=String(I);ae.dispatchEvent(new P.KeyboardEvent("keydown",{key:ue,bubbles:!0,cancelable:!0,composed:!0}))&&ue==="Enter"&&ae===V&&V.tagName==="TEXTAREA"&&fp(P,V,`
|
|
403
403
|
`),ae.dispatchEvent(new P.KeyboardEvent("keyup",{key:ue,bubbles:!0,cancelable:!0,composed:!0}));break}case"choose":{if(de||V.tagName!=="SELECT")break;let ae=String(I);if(!Array.from(V.options).find(le=>le.value===ae&&!le.disabled)||!he()||V.value===ae)break;Object.getOwnPropertyDescriptor(P.HTMLSelectElement.prototype,"value").set.call(V,ae),V.dispatchEvent(new P.Event("input",{bubbles:!0,composed:!0})),V.dispatchEvent(new P.Event("change",{bubbles:!0,composed:!0}));break}case"slide":{if(de||V.type!=="range"||Uv(V)||!he())break;let ae=hi(V,V.value),ue=hi(V,I);if(ae===ue)break;Object.getOwnPropertyDescriptor(P.HTMLInputElement.prototype,"value").set.call(V,ue),V.dispatchEvent(new P.Event("input",{bubbles:!0,composed:!0})),V.dispatchEvent(new P.Event("change",{bubbles:!0,composed:!0}));break}default:throw new Error(`runtime: no person face for the act "${N}"${I===void 0?"":` (${JSON.stringify(I)})`}`)}}function Lv(v,N,I){let E=ji(),P=E.window,V=(B,K,de,ve)=>{let _e=new P.MouseEvent(K,{bubbles:!0,cancelable:!0,composed:!0,button:0,...ve});return Object.defineProperty(_e,"pointerType",{value:de}),Object.defineProperty(_e,"pointerId",{value:de==="mouse"?1:2}),Object.defineProperty(_e,"isPrimary",{value:!0}),B.dispatchEvent(_e)};if(N==="away"){let B=I==="touch"?"touch":"mouse",K=E.document.body;au=K,V(K,"pointermove",B,{button:-1,buttons:1,clientX:10,clientY:0}),B==="mouse"?K.dispatchEvent(new P.MouseEvent("mousemove",{bubbles:!0,cancelable:!0,composed:!0,clientX:10,buttons:1})):K.dispatchEvent(new P.TouchEvent("touchmove",{bubbles:!0,cancelable:!0,composed:!0}));return}let te=JSON.stringify(I),Z=v.page?.cards?.find(B=>JSON.stringify(B.value)===te),H=Z&&R0(Z.node);if(!(!H||!H.isConnected)){if(N==="grab"){au=H,V(H,"pointerdown","mouse",{buttons:1}),H.dispatchEvent(new P.MouseEvent("mousedown",{bubbles:!0,cancelable:!0,composed:!0,button:0}))&&H.focus(),V(H,"pointermove","mouse",{button:-1,buttons:1,clientX:10,clientY:0}),H.dispatchEvent(new P.MouseEvent("mousemove",{bubbles:!0,cancelable:!0,composed:!0,clientX:10,buttons:1}));return}H.focus(),H.dispatchEvent(new P.KeyboardEvent("keydown",{key:" ",bubbles:!0,cancelable:!0,composed:!0})),H.dispatchEvent(new P.KeyboardEvent("keyup",{key:" ",bubbles:!0,cancelable:!0,composed:!0}))}}function F0(v,N,I){let E=ji().window;v==="fileEnter"&&!vm&&(vm={files:Array.isArray(N)?N:[],over:null});let P=vm;if(!P)return;let V={types:P.files.length>0?["Files"]:["text/plain"],files:P.files,dropEffect:"none",effectAllowed:"all",getData:()=>""},te=(B,K)=>{let de=new E.MouseEvent(B,{bubbles:!0,cancelable:B!=="dragleave",composed:!0});return Object.defineProperty(de,"dataTransfer",{value:V}),K.dispatchEvent(de)},Z=B=>{P.over!==B&&(P.over&&te("dragleave",P.over),P.over=B,B&&te("dragenter",B))};if(v==="fileLeave"){Z(null),vm=void 0;return}Z(I);let H=!te("dragover",I);v==="fileDrop"&&(te(H?"drop":"dragleave",I),vm=void 0)}function M0(v,N,I){let E=I??{},P=v.h.node,V=(B,K,de)=>v.frame.location.push(K==="failure"?{t:"answer",op:B,value:K,error:de||NG}:{t:"answer",op:B,value:K});if(N==="back"){let B=P._internal.stack??[],K=B[B.length-1]?.page,de=K?.getChildren()[0]?.nodeScope?.getNodesWithType("PageStackNavigateBack")[0]?._internal.backCallback;if(!K||!de)return;P.scheduleAfterInputsHaveUpdated(()=>{if(K._deleted)return;let ve;try{ve=de({backAction:E.action,results:E.results??{}})}catch{return}!ve||ve.ok?V("back","done"):ve.unchanged?V("back","unchanged"):V("back","failure",ve.code)});return}let te=km.prototype,Z=N,H={target:E.target,params:{...E.params??{}},transition:JSON.parse(JSON.stringify(E.transition??{})),...N==="push"?{backCallback:(B,K)=>{let de={t:"answer",op:"returned",results:ge(K)};B!==void 0&&(de.action=ge(B)),v.frame.location.push(de)}}:{},hasNavigated:()=>V(Z,"done"),hasUnchanged:()=>V(Z,"unchanged"),hasFailed:B=>V(Z,"failure",B)};P.scheduleAfterInputsHaveUpdated(()=>te[N==="push"?"navigate":"replace"].call(km.instance,E.stack,H))}function L0(v,N,I){if(N==="traverse"){if(!t?.location)throw new Error("runtime: a traverse moves the location, and the play has none");t.location.traverse(I);return}let E=I??{},P=v.h.node,V=(H,B)=>v.frame.location.push(H==="failure"?{t:"answer",op:"navigate",value:H,error:B||NG}:{t:"answer",op:"navigate",value:H}),te={target:E.target,params:{...E.params??{}},openInNewTab:E.openInNewTab??!1,hasNavigated:()=>V("done"),hasUnchanged:()=>V("unchanged"),hasFailed:H=>V("failure",H)},Z=Nm.prototype;P.scheduleAfterInputsHaveUpdated(()=>Z.navigate.call(Nm.instance,E.router,te))}function B0(v,N,I){let E=ji(),P=E.window,V=N??{},te=Number(V.x??0),Z=Number(V.y??0),H=v==="pressAt"?V.by==="touch":Sm!==null,B=v==="pressAt"?I?vG(P,I):E.document.body:H?Sm:E.document;v==="pressAt"&&(au=B),v==="pressAt"&&!H&&(Sm=null);let K=v==="pressAt"&&typeof V.button=="number"?V.button:0;if((ae=>{let ue=new P.MouseEvent(ae,{bubbles:!0,cancelable:!0,composed:!0,button:v==="moveTo"?-1:K,buttons:v==="releaseAt"?0:1,clientX:te,clientY:Z});Object.defineProperty(ue,"pointerType",{value:H?"touch":"mouse"}),Object.defineProperty(ue,"pointerId",{value:H?2:1}),Object.defineProperty(ue,"isPrimary",{value:!0}),B.dispatchEvent(ue)})(v==="pressAt"?"pointerdown":v==="moveTo"?"pointermove":"pointerup"),!H){let ae=v==="pressAt"?"mousedown":v==="moveTo"?"mousemove":"mouseup";B.dispatchEvent(new P.MouseEvent(ae,{bubbles:!0,cancelable:!0,composed:!0,button:v==="moveTo"?0:K,buttons:v==="releaseAt"?0:1,clientX:te,clientY:Z}));return}let ve={identifier:0,target:B,clientX:te,clientY:Z,pageX:te,pageY:Z,screenX:te,screenY:Z},_e=new P.TouchEvent(v==="pressAt"?"touchstart":v==="moveTo"?"touchmove":"touchend",{bubbles:!0,cancelable:!0,composed:!0}),he=v==="releaseAt"?[]:[ve];Object.defineProperty(_e,"touches",{value:he}),Object.defineProperty(_e,"targetTouches",{value:he}),Object.defineProperty(_e,"changedTouches",{value:[ve]}),v==="pressAt"&&(Sm=B),v==="releaseAt"&&(Sm=null),B.dispatchEvent(_e)}function Bv(v){let N=v.h.node;if(!v.page?.group)return R0(N,v.page?.container);let I=N.getDOMElement();if(I&&I.isConnected)return R0(N);let E=N.props?.id;return typeof E=="string"?v.page.container.querySelector(`[id="${E}"]`):null}function V0(v,N){let I=JSON.stringify(N),E=v.page?.children?.find(V=>JSON.stringify(V.value)===I);if(!E)return null;let P=E.node.getDOMElement();return P&&P.isConnected?P:null}function Vv(v,N){let I=v.page?.children?.find(P=>Object.is(P.value,N));if(!I)return null;let E=R0(I.node);return E&&E.isConnected?E:null}function Uv(v){let N=(I,E)=>{let P=v.getAttribute(I);if(P===null||/[^\t\n\f\r ]/.test(P.slice(0,P.length-P.trimStart().length)))return E;let V=parseFloat(P);return Number.isFinite(V)?V:E};return N("max",100)<N("min",0)}function hi(v,N){let I=ae=>{let ue=v.getAttribute(ae);if(ue===null)return;let le=ue.length-ue.trimStart().length;if(/[^\t\n\f\r ]/.test(ue.slice(0,le)))return;let Be=parseFloat(ue);return Number.isFinite(Be)?Be:void 0},E=ae=>{let ue=typeof ae=="number"?Number.isFinite(ae)?String(ae):"":ae;if(typeof ue!="string"||!/^-?(?:\d+|\d*\.\d+)(?:[eE][-+]?\d+)?$/.test(ue))return;let le=parseFloat(ue);return Number.isFinite(le)?le:void 0},P=I("min"),V=P??0,te=I("max")??100,Z=E(N),H=Z===void 0?te<V?V:(V+te)/2:Z,B=Z===void 0?H:H<V?V:H>te?te:H;if(te<V)return String(B);let K=I("step"),de=K!==void 0&&K>0?K:1,ve=P??I("value")??0,_e=ve+Math.round((B-ve)/de)*de,he=_e>te?_e-de:_e<V?_e+de:_e;return String(he<V||he>te?B:he)}function fp(v,N,I){let E=N.tagName==="TEXTAREA",P=E||["text","search","url","tel","email","password"].includes(N.type);if(!E&&N.type==="number"&&!/^[0-9]$/.test(I)||P&&N.maxLength>=0&&N.value.length+I.length>N.maxLength)return;let V=E||["text","search","url","tel","password"].includes(N.type),te=V?N.selectionStart:N.value.length,Z=V?N.selectionEnd:te,H=E?v.HTMLTextAreaElement.prototype:v.HTMLInputElement.prototype;Object.getOwnPropertyDescriptor(H,"value").set.call(N,N.value.slice(0,te)+I+N.value.slice(Z)),V&&N.setSelectionRange(te+I.length,te+I.length),N.dispatchEvent(new v.Event("input",{bubbles:!0,composed:!0}))}function x(v,N,I,E,P){let V=Gpe.prototype,te=["beginOutcome","reportOutcome","sendSignalOnOutput"],Z=Object.fromEntries(te.map(B=>[B,V[B]])),H;for(let B of te)V[B]=function(...K){return H===void 0&&this.id===N?(H={h:{id:N,type:v,node:this,metadata:E,errors:[],logs:P,modelCalls:[]},trace:[],frame:w(),lastSent:{},settles:0,currentInput:void 0,inOutcome:0},l.set(N,H),c.set(N,H),$(H),this[B].apply(this,K)):Z[B].apply(this,K)};try{return{node:r.nodeRegister.createNode(v,N,I),made:H}}finally{for(let B of te)V[B]=Z[B]}}function A(v,N,I,E,P,V,te){let Z=te;Z||(Z={h:{id:N,type:I,node:v,metadata:E,errors:[],logs:V,modelCalls:[]},trace:[],frame:w(),lastSent:{},settles:0,currentInput:void 0,inOutcome:0},l.set(N,Z),c.set(N,Z),$(Z));let H=Z.h;for(let B of Object.keys(P))Le.set(H,B,P[B]);return H}function X(v,N){let I=new qpe(r,v);return I.runContext={log:qi(N)},v.nodeScope=I,I}function z(v,N){let I={name:"node-spec/root",getInstanceId:()=>"node-spec/root",getRoots:()=>[]},E=X(I,N),P={},V=Z=>{let H="node-spec/host",B=Z.nodes;return B[H]||(B[H]={name:H,children:[],getInstanceId:()=>H,getRoots:()=>[]}),B[H]},te=Z=>{if(P[Z])return P[Z];let H=v[Z],B=H.parent!==void 0?te(H.parent).nodeScope:E,K=new X2e(r,Z,B);K.name=H.component??Z,K._internal.instanceId=`node-spec/instance/${Z}`,K.nodeScope.runContext={log:qi(N)},K.model={type:K.name,parameters:{...H.params??{}},removeListenersWithRef:()=>{}},H.item!==void 0&&(K._forEachModel=Hi.get(H.item)),P[Z]=K,B.nodes[Z]=K,B.componentInstanceChildren[Z]=K,V(B).children.push(K);let de=r.componentModels;return se.includes(K.name)||(de[K.name]={name:K.name,on:()=>{},removeListenersWithRef:()=>{}}),K};for(let Z of Object.keys(v))te(Z);return{root:E,rootOwner:I,instances:P}}let se=[];async function we(v){let N=r.componentModels;for(let I of se)delete N[I];se=[];for(let[I,E]of Object.entries(v)){let P=te=>([Z,H])=>({name:Z,plug:te,type:H==="signal"?{name:"signal"}:"*"}),V=await Av.createFromExportData({name:I,ports:[...Object.entries(E.inputs??{}).map(P("input")),...Object.entries(E.outputs??{}).map(P("output"))],nodes:Object.entries(E.nodes).map(([te,Z])=>({id:te,type:Z.type,parameters:{...Z.params??{}}})),connections:(E.wires??[]).map(te=>{let Z=Br(te.from),H=Br(te.to);return{sourceId:Z.node,sourcePort:Z.port,targetId:H.node,targetPort:H.port}})});N[I]=V,se.push(I)}}function Se(v,N,I,E){let P=N.nodeScope;N._internal.componentInputs=P.getNodesWithType("Component Inputs"),N._internal.componentOutputs=P.getNodesWithType("Component Outputs");for(let B of Object.keys(I.inputs??{}))N.registerComponentInputPort({name:B});for(let B of Object.keys(I.outputs??{}))N.registerComponentOutputPort({name:B});let V=B=>Object.fromEntries(Object.entries(B??{}).map(([K,de])=>[K,{name:K,type:de==="signal"?"signal":"*"}])),te={inputs:V(I.inputs),outputs:V(I.outputs)},Z=B=>new Set(Object.keys(B??{}).filter(K=>B[K]==="signal"));for(let B of N._internal.componentInputs){let K=l.get(B.id);K&&(K.signalOutputs=Z(I.inputs))}let H=A(N,v,`component:${N.name}`,te,{},E);return l.get(v).signalOutputs=Z(I.outputs),H}let Le={name:"runtime",diagnostics:!0,context:r,types:()=>Object.keys(r.nodeRegister._constructors),hasType:v=>r.nodeRegister.hasNode(v),mount(v,N,I,E){return Cm(v,N,void 0,void 0,I,E)},set(v,N,I){let E=l.get(v.id);if(!E)throw new Error(`runtime: ${v.id} is disposed`);let P=v.node;if(P.registerInputIfNeeded(N),!P.hasInput(N))throw new Error(`${v.type}: no input "${N}" on the runtime`);if(C(E,N))throw new Error(`${v.type}: "${N}" is a signal input \u2014 use signal()`);let V=ge(I);E.trace.push(V===void 0?{t:"set",port:N}:{t:"set",port:N,value:V});let te=P;te.style&&Object.isFrozen(te.style)&&(te.style=Object.assign({},te.style)),P.setInputValue(N,I)},signal(v,N){let I=l.get(v.id);if(!I)throw new Error(`runtime: ${v.id} is disposed`);let E=v.node;if(E.registerInputIfNeeded(N),!E.hasInput(N))throw new Error(`${v.type}: no input "${N}" on the runtime`);if(!C(I,N))throw new Error(`${v.type}: "${N}" is a value input \u2014 use set()`);I.trace.push({t:"in",port:N}),I.currentInput=N;try{E.setInputValue(N,!0),E.setInputValue(N,!1)}finally{I.currentInput=void 0}},async settle(){if(Hs.size>0){await ji().act(async()=>{g(),await S(),y()});for(let v of Hs)v.page?.layout&&await ji().act(async()=>{Mv(v)})}else g(),await S(),y();for(let v of l.values())T(v)},async act(v,N,I){let E=l.get(v.id);if(!E)throw new Error(`runtime: ${v.id} is disposed`);if(!E.page)throw new Error(`${v.type}: a person cannot act on a node that is not on the page (its spec does not need person)`);O0&&(O0=!1,await S());let P=ge(I);E.trace.push(P===void 0?{t:"act",act:N}:{t:"act",act:N,value:P}),A0(E),ji().act(()=>{D0(E,N,I)})},install(v){if(t)throw new Error("runtime: a world is already installed \u2014 one play at a time");t=v,v.network.onRequest(G),v.location?.onCall(pe),v.picker.onCall(ye),v.sockets.onCall(nn),v.host.onCall(Fe),xm.instance=o,o.graphModel.setSettings({...v.projectSettings});let N=o.graphModel,I={dbCollections:N.getMetaData("dbCollections"),dbVersionMajor:N.getMetaData("dbVersionMajor")};N.setMetaData("dbCollections",v.collections.length>0?v.collections.map(le=>JSON.parse(JSON.stringify(le))):void 0),N.setMetaData("dbVersionMajor",v.dbVersionMajor),lu.invalidateCollections();let E=globalThis,P=Object.prototype.hasOwnProperty.call(E,"_noodl_cloud_runtime_version"),V=E._noodl_cloud_runtime_version;e.type==="cloud"&&(E._noodl_cloud_runtime_version="node-spec");let te=tGe(v,re),Z=nGe(v,re),H=yo(v),B=cGe(v,o.graphModel,oe),K=xm.Services,de=K.UserService;e.type==="cloud"&&(K.UserService=dGe);let ve=K0(v);Re.reset({clearState:!0}),pn.reset(),gh.reset(),s.reset(),pn.setClock(()=>v.clock.now()),hGe(v);let _e=v.onRegistryWrite(le=>Em({model:Be=>Hi.get(Be),collection:Be=>hp.get(Be)},le)),he=fGe();r.currentFrameTime=0;let ae=["log","info","warn","error","debug"],ue=ae.map(le=>console[le]);for(let le of ae)console[le]=()=>{};return()=>{ae.forEach((le,Be)=>console[le]=ue[Be]),_e(),he(),te(),Z(),H(),K.UserService=de,B(),ve.restore(),P?E._noodl_cloud_runtime_version=V:delete E._noodl_cloud_runtime_version,N.setMetaData("dbCollections",I.dbCollections),N.setMetaData("dbVersionMajor",I.dbVersionMajor),lu.invalidateCollections(),pn.setClock(null),t=void 0}},registryArray(v){if(!t)throw new Error("runtime: a registry array names the play\u2019s world, and none is installed");return hp.get(v)},file(v){return new Kpe.File([new Uint8Array(v.size??0)],v.name,{type:v.type??"",lastModified:0})},cloudFile(v){return new rGe(v)},async advance(v,N){let I=l.get(v.id);if(!I)throw new Error(`runtime: ${v.id} is disposed`);if(!t)throw new Error("runtime: advance() without a world \u2014 install one for the play");I.trace.push({t:"advance",ms:N}),await S();let E=t.clock.now()+Math.max(0,N);for(;t.clock.step(E);)await S();t.clock.advance(E-t.clock.now()),await S()},trace(v){let N=l.get(v.id);if(!N)throw new Error(`runtime: ${v.id} is disposed`);return N.trace.map(I=>({...I}))},dispose(v){let N=l.get(v.id);if(!N)return;l.delete(v.id),c.delete(v.id),_0(N);try{v.type.startsWith("component:")?Gpe.prototype._onNodeDeleted.call(v.node):v.node._onNodeDeleted()}catch{}let I=fl.get(v.id);if(I){fl.delete(v.id);try{I.group._onNodeDeleted()}catch{}let P=r.componentModels;for(let V of I.models)delete P[V]}P0();let E=r;E._dirtyNodes=[],E.callbacksAfterUpdate=[],E.timerScheduler.runningTimers=[],E.timerScheduler.newTimers=[]},async mountGraph(v,N,I,E){let P={},V=[];await we(E??{});let te=!!E&&Object.keys(E).length>0,Z=I&&Object.keys(I).length||te?z(I??{},V):void 0;Z&&Pn(Z.root,Z.rootOwner);for(let H of Object.keys(v)){let B=v[H],K=Z?B.in!==void 0?Z.instances[B.in].nodeScope:Z.root:void 0;P[H]=Cm(B.type,B.params??{},K,H,void 0,B.wiredOutputs?{wiredOutputs:B.wiredOutputs}:{})}if(Z)for(let H of Object.keys(I??{}))P[H]=Se(H,Z.instances[H],I[H],V);for(let H of N){let B=Br(H.from),K=Br(H.to);if(!(B.node in P)||!(K.node in P))throw new Error(`runtime: wire ${H.from} \u2192 ${H.to} names a node the graph does not declare`);Le.connect(P[B.node],B.port,P[K.node],K.port)}if(Z)for(let H of Object.keys(I??{}))for(let[B,K]of Object.entries(I[H].params??{}))Le.set(P[H],B,K);for(let H of Object.keys(v)){let B=P[H].node;B.nodeScopeDidInitialize&&B.nodeScopeDidInitialize()}return P},connect(v,N,I,E){if(!l.has(v.id)||!l.has(I.id))throw new Error("runtime: a wire to or from a disposed node");let P=v.node,V=I.node;if(P.registerOutputIfNeeded(N),!P.hasOutput(N))throw new Error(`${v.type}: no output "${N}" on the runtime`);if(V.registerInputIfNeeded(E),!V.hasInput(E))throw new Error(`${I.type}: no input "${E}" on the runtime`);I.node.connectInput(E,v.node,N)}};return Le}RG();lT();aT();OR();JO();BO();LO();MO();GO();SR();zO();KO();_O();PO();VO();nT();sT();oT();rT();iT();ZO();HO();AO();jO();pT();yT();cT();qT();BT();jT();KT();uT();Qj();Zj();lW();eW();sW();zW();iW();oW();YW();GW();uW();XW();ZW();TW();LT();YT();fb();mW();var gGe=me(YE()),the={stdLibrary:[Lb,Mb,Kg,Ob,yb,gb,mb,Nb,Yg,xb,Ib,db,ub,bb,_b,Fb,Pb,Ab,Db,Tb,kb,cb,Sb],navigation:[Ub,Hb,Vb,ow,ew,nw,sw,Bb],visual:[ZT,eE,dE,tE,iE,WE,rE,oE,qE,jE,pE,HE,zE,xE,Zb,iw,hb,hE],runtimeRegistered:[gGe]};function yGe(e={}){return Zpe(ehe(e),the)}return _(bGe);})();
|