@field/cascade 0.11.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +7 -4
- package/ARCHITECTURE.md +5 -4
- package/CHANGELOG.md +195 -0
- package/README.md +1 -1
- package/dist/assets/AgentPanel-1JugFjE4.css +1 -0
- package/dist/assets/AgentPanel-BDL5MddA.js +5 -0
- package/dist/assets/{CodeEditor-4O7FQ__R.js → CodeEditor-C-xYG-Wn.js} +120 -120
- package/dist/assets/CodePanel-CtXd50m6.js +2 -0
- package/dist/assets/CookInfoPanel-B3NMhKJF.css +1 -0
- package/dist/assets/CookInfoPanel-DG4_TRsX.js +2 -0
- package/dist/assets/CustomNodeDialog-CHfZUs-r.js +1 -0
- package/dist/assets/DefinitionNode-CaRTXQ_b.js +1 -0
- package/dist/assets/DefinitionPanel-C3CxZY9r.js +1 -0
- package/dist/assets/DefinitionPanel-VNLnAiQD.css +1 -0
- package/dist/assets/OpenGraphDialog-BLdr6k_q.js +1 -0
- package/dist/assets/ProjectSettings-ZnvmIAir.js +2 -0
- package/dist/assets/{SettingsDialog-Bz8JxISH.js → SettingsDialog-CBX3Wa87.js} +1 -1
- package/dist/assets/TimelinePanel-CDeR0arY.css +1 -0
- package/dist/assets/TimelinePanel-CWgnFH1e.js +1 -0
- package/dist/assets/{VersionHistoryDialog-D5Z0nJ5-.js → VersionHistoryDialog-BOSoW1R-.js} +1 -1
- package/dist/assets/assert-BO2_erPD.js +1 -0
- package/dist/assets/assert-hvykGCnP.js +1 -0
- package/dist/assets/builder-BmBKcDix.js +1 -0
- package/dist/assets/camera-DFF7YA3F.js +1 -0
- package/dist/assets/checks-DAvyO9Gf.js +1 -0
- package/dist/assets/contactSheet-N1NcaWxw.js +2 -0
- package/dist/assets/{core-Yqi0Ni61.js → core-DB-MkGjj.js} +3 -4
- package/dist/assets/coreTypes-DtnDATZ7.js +1 -0
- package/dist/assets/{cssMode-CxUzc4vp.js → cssMode-DPVckSOc.js} +1 -1
- package/dist/assets/definitions-B227e7f_.js +1 -0
- package/dist/assets/definitions-D0WOUJd7.js +1 -0
- package/dist/assets/{editor.api-BNFb25CX.js → editor.api-Dkutg_Z1.js} +1 -1
- package/dist/assets/expressions-X-Z-GrgW.js +5 -0
- package/dist/assets/file-DAL6IfjV.js +1 -0
- package/dist/assets/filters-D3k1LRMa.js +1 -0
- package/dist/assets/{freemarker2-0ZDnWxeM.js → freemarker2-CLiLKk3B.js} +1 -1
- package/dist/assets/generators-BhDxRAFC.js +1 -0
- package/dist/assets/geo-BsMImJIJ.js +1 -0
- package/dist/assets/geo-C4YngDob.js +2 -0
- package/dist/assets/{handlebars-Cy18MoaD.js → handlebars-CcD3aMeL.js} +1 -1
- package/dist/assets/{html-B-2Dx7nq.js → html-DvZWGfqb.js} +1 -1
- package/dist/assets/{htmlMode-DUAc9B_d.js → htmlMode-DUD3VaoN.js} +1 -1
- package/dist/assets/image-0SfH-snh.js +1 -0
- package/dist/assets/image-Ck-RdGU4.js +2 -0
- package/dist/assets/index-BWnrmIB9.js +137 -0
- package/dist/assets/index-DIaxEONI.css +1 -0
- package/dist/assets/io-BGmt2g0D.js +1 -0
- package/dist/assets/{javascript-DeQsDqP5.js → javascript-Cap2ahgh.js} +1 -1
- package/dist/assets/{jsonMode-BiFwJVSk.js → jsonMode-B0uLjp9C.js} +1 -1
- package/dist/assets/{liquid-BLoHH68a.js → liquid-CnxwhfLn.js} +1 -1
- package/dist/assets/{lspLanguageFeatures-CNFgm1Kv.js → lspLanguageFeatures-Dn9hlKX6.js} +1 -1
- package/dist/assets/math-GeULS-sk.js +1 -0
- package/dist/assets/{mdx-CFXQVNfs.js → mdx-BV3jbrVa.js} +1 -1
- package/dist/assets/pop-KMF_qloi.js +1 -0
- package/dist/assets/preload-helper-Czpn1I53.js +1 -0
- package/dist/assets/{python-Cf7S7p2E.js → python-CGyFk4XK.js} +1 -1
- package/dist/assets/{razor-CMHBcG-g.js → razor-CQfzX3-N.js} +1 -1
- package/dist/assets/remap-5SjXQU-q.js +1 -0
- package/dist/assets/renderMarkdown-ork0Oir7.js +67 -0
- package/dist/assets/studioImages-CAyH-0Pl.js +1 -0
- package/dist/assets/text-ZpX7qNkx.js +2 -0
- package/dist/assets/time-P_OiBhcf.js +1 -0
- package/dist/assets/{tsMode-BEih0GDj.js → tsMode-BOeXzO9H.js} +1 -1
- package/dist/assets/{typescript-COEKYD_a.js → typescript-J1SnE_Tu.js} +1 -1
- package/dist/assets/{workers-BNhAhMNn.js → workers-CYwwTiVF.js} +1 -1
- package/dist/assets/{xml-CPiMpnPl.js → xml-DnPRNzK9.js} +1 -1
- package/dist/assets/{yaml-Bgp1ITLR.js → yaml-BmmYBNa9.js} +1 -1
- package/dist/cli/DefinitionNode-P7AA4TAU.js +15 -0
- package/dist/cli/{Graph-ZJJTRQTM.js → Graph-OB6EWSGL.js} +12 -12
- package/dist/cli/assert-GROGQNCQ.js +25 -0
- package/dist/cli/checks-3WB44XBL.js +189 -0
- package/dist/cli/{chunk-RQZ4SX5R.js → chunk-2JEU3MGB.js} +2 -2
- package/dist/cli/{chunk-WKURDVYP.js → chunk-3RXL5GHB.js} +28 -331
- package/dist/cli/chunk-53LGFPWX.js +138 -0
- package/dist/cli/chunk-5ORUQ6ES.js +267 -0
- package/dist/cli/chunk-73S4JZXK.js +336 -0
- package/dist/cli/{chunk-YAT5Y25U.js → chunk-7QE2ZNSN.js} +3 -3
- package/dist/cli/{chunk-SGJAET2L.js → chunk-BPODRH52.js} +8 -4
- package/dist/cli/{chunk-XWDSKG7N.js → chunk-BZ63XQ3I.js} +2 -2
- package/dist/cli/{chunk-FCDXJ6EK.js → chunk-CTPLRSWF.js} +2 -13
- package/dist/cli/chunk-EU4ZFZ7Y.js +122 -0
- package/dist/cli/{chunk-WIH4TEIS.js → chunk-EZRWJ4G2.js} +1 -1
- package/dist/cli/{chunk-BIJO5OFS.js → chunk-FWMSGKEH.js} +1 -1
- package/dist/cli/{chunk-POMMNKZZ.js → chunk-G23A2BZZ.js} +38 -5
- package/dist/cli/{chunk-35D343DC.js → chunk-GRIN2DDP.js} +19 -1
- package/dist/cli/chunk-JVOCK5W4.js +83 -0
- package/dist/cli/chunk-KBGUO27Q.js +15 -0
- package/dist/cli/{chunk-GFS6W3C5.js → chunk-L6B6FUQP.js} +54 -32
- package/dist/cli/chunk-LTXWBXOM.js +438 -0
- package/dist/cli/chunk-MI5JLQYA.js +220 -0
- package/dist/cli/{chunk-EUIAC3U3.js → chunk-MP653A5O.js} +884 -124
- package/dist/cli/{chunk-A4OAMOZH.js → chunk-NJFMDXHR.js} +13 -3
- package/dist/cli/{chunk-3JTJHF7V.js → chunk-OM6BEME6.js} +4 -4
- package/dist/cli/{chunk-DUIUFVU2.js → chunk-ST6LROUG.js} +49 -23
- package/dist/cli/{chunk-RLCAJBVR.js → chunk-TJW67QSI.js} +8 -7
- package/dist/cli/chunk-WGKPJZDY.js +364 -0
- package/dist/cli/{chunk-D6BUOHUG.js → chunk-X4WKAOQP.js} +4 -4
- package/dist/cli/{chunk-VVGSLVSF.js → chunk-X566FWBV.js} +6 -1
- package/dist/cli/chunk-YH637PDL.js +317 -0
- package/dist/cli/chunk-ZSCUZE6I.js +112 -0
- package/dist/cli/{cliCommands-UQSFGEHF.js → cliCommands-JJN5Z3ZC.js} +23 -17
- package/dist/cli/{commands-Q23M26QM.js → commands-PHYFYA3F.js} +129 -47
- package/dist/cli/contactSheet-2PQVRUFW.js +11 -0
- package/dist/cli/{definitions-HF2FTHYU.js → definitions-BPOPW52L.js} +7 -7
- package/dist/cli/{doctorCommand-B7BPQMN6.js → doctorCommand-ORWQRNYP.js} +36 -6
- package/dist/cli/{edit-JHCPTQFT.js → edit-S5KEQ5RA.js} +3 -3
- package/dist/cli/editorCommands-NFR32JOY.js +41 -0
- package/dist/cli/{encode-HAUZTYPT.js → encode-ICPEPMH5.js} +2 -2
- package/dist/cli/file-3HTQHPYQ.js +41 -0
- package/dist/cli/filters-6ODFWYK4.js +379 -0
- package/dist/cli/generators-YU7GB4MD.js +210 -0
- package/dist/cli/{geo-4RNK3QVN.js → geo-6ZPGKZRU.js} +7 -7
- package/dist/cli/{graphCommands-6BMAKGQE.js → graphCommands-EOUOBOIJ.js} +4 -4
- package/dist/cli/{graphFile-VPSQ6OF7.js → graphFile-YTGJB5F5.js} +25 -19
- package/dist/cli/{headlessCanvas-5XLDZT7M.js → headlessCanvas-ENRHC7GS.js} +3 -2
- package/dist/cli/{helpCommand-3VRE3KVO.js → helpCommand-PULH6ZYB.js} +9 -7
- package/dist/cli/image-TXELZZK5.js +55 -0
- package/dist/cli/index.js +14 -14
- package/dist/cli/{math-ZRMLKU2D.js → math-RSYRQ3C6.js} +5 -5
- package/dist/cli/{mcp-ZLEEMYGF.js → mcp-JVZFQOEX.js} +4 -4
- package/dist/cli/{parity-KINARCP2.js → parity-X6DEH2DV.js} +42 -36
- package/dist/cli/{pop-USDFXB7H.js → pop-B7SIIYKN.js} +5 -5
- package/dist/cli/project-VYGIA7JX.js +12 -0
- package/dist/cli/{projectDefinition-DMTZN2NE.js → projectDefinition-F3D7UIHJ.js} +8 -8
- package/dist/cli/{projectRuntime-Z5PJOH47.js → projectRuntime-2Q4JKEH3.js} +19 -12
- package/dist/cli/registerStandardNodes-BXJCB6E4.js +744 -0
- package/dist/cli/{render-YURAPPUI.js → render-PT4MWI6U.js} +24 -22
- package/dist/cli/{runCommand-PI764LEG.js → runCommand-HNPQVZMS.js} +3 -3
- package/dist/cli/runner-5XPXVW7J.js +43 -0
- package/dist/cli/runtime/image.ts +27 -2
- package/dist/cli/runtime/io.ts +78 -0
- package/dist/cli/share-MHF6TNRK.js +166 -0
- package/dist/cli/stageCache-TY2BFZJR.js +15 -0
- package/dist/cli/{stageRunner-KUNIMQKJ.js → stageRunner-KY2EJP7X.js} +2 -2
- package/dist/cli/text-MB3EKR4H.js +126 -0
- package/dist/cli/{verbs-RCE3K4VQ.js → verbs-PI2JH5FI.js} +2 -2
- package/dist/cli/webBuild-WPPMGGW7.js +44 -0
- package/dist/contracts/capabilities.d.ts +18 -1
- package/dist/contracts/color.d.ts +8 -0
- package/dist/contracts/color.js +23 -0
- package/dist/contracts/definition.d.ts +10 -0
- package/dist/contracts/schema.d.ts +1 -1
- package/dist/contracts/schema.js +1 -0
- package/dist/contracts/validate.js +11 -1
- package/dist/contracts/values.d.ts +24 -0
- package/dist/image.d.ts +15 -0
- package/dist/image.js +36 -2
- package/dist/index.html +8 -2
- package/dist/io.d.ts +29 -0
- package/dist/io.js +40 -0
- package/dist/player/app.js +3 -2
- package/dist/player/editor.js +3 -2
- package/dist/player/editorEngine.js +3 -2
- package/dist/runtime/builtins/assert/checks.d.ts +18 -0
- package/dist/runtime/builtins/assert/checks.js +207 -0
- package/dist/runtime/builtins/assert/definitions.d.ts +130 -0
- package/dist/runtime/builtins/assert/definitions.js +54 -0
- package/dist/runtime/builtins/assert/index.d.ts +152 -0
- package/dist/runtime/builtins/assert/index.js +36 -0
- package/dist/runtime/builtins/image/contactSheet.d.ts +3 -165
- package/dist/runtime/builtins/image/contactSheet.js +0 -49
- package/dist/runtime/builtins/image/definitions.d.ts +950 -0
- package/dist/runtime/builtins/image/definitions.js +343 -0
- package/dist/runtime/builtins/image/file.d.ts +8 -0
- package/dist/runtime/builtins/image/file.js +37 -0
- package/dist/runtime/builtins/image/filters.d.ts +8 -0
- package/dist/runtime/builtins/image/filters.js +394 -0
- package/dist/runtime/builtins/image/generators.d.ts +7 -0
- package/dist/runtime/builtins/image/generators.js +144 -0
- package/dist/runtime/builtins/image/index.d.ts +947 -4
- package/dist/runtime/builtins/image/index.js +41 -6
- package/dist/runtime/builtins/image/io.d.ts +100 -0
- package/dist/runtime/builtins/image/io.js +142 -0
- package/dist/runtime/builtins/image/planar.d.ts +55 -0
- package/dist/runtime/builtins/image/planar.js +274 -0
- package/dist/runtime/builtins/image/simplex.d.ts +22 -0
- package/dist/runtime/builtins/image/simplex.js +92 -0
- package/dist/runtime/builtins/image/text.d.ts +4 -0
- package/dist/runtime/builtins/image/text.js +141 -0
- package/dist/runtime/builtins/index.d.ts +3 -0
- package/dist/runtime/builtins/index.js +7 -0
- package/dist/runtime/gpu.d.ts +25 -0
- package/dist/runtime/gpu.js +40 -0
- package/dist/runtime/runtime.d.ts +2 -0
- package/dist/runtime/runtime.js +268 -44
- package/dist/runtime/types.d.ts +30 -0
- package/doc/CLI_REFERENCE.md +21 -3
- package/doc/EDITOR_EXPORT.md +26 -0
- package/doc/MCP.md +2 -1
- package/doc/NODE_REFERENCE.md +286 -14
- package/doc/PROJECT_AUTHORING.md +98 -3
- package/package.json +4 -1
- package/dist/assets/CodePanel-BU-autmq.js +0 -2
- package/dist/assets/CustomNodeDialog-BRpDfOV5.js +0 -1
- package/dist/assets/OpenGraphDialog-BwbRlC0X.js +0 -1
- package/dist/assets/ProjectSettings-DLOXLxcA.js +0 -2
- package/dist/assets/definitions-GreEMXLV.js +0 -1
- package/dist/assets/geo-u0n_jOsD.js +0 -1
- package/dist/assets/image-cAa-Nu9O.js +0 -2062
- package/dist/assets/index-5ZtDAuy2.js +0 -220
- package/dist/assets/index-7vae6YFC.css +0 -1
- package/dist/assets/math-DioIQOPJ.js +0 -1
- package/dist/assets/pop-DC_TQG9t.js +0 -1
- package/dist/cli/chunk-36P5K3SD.js +0 -631
- package/dist/cli/chunk-4UDFYF5G.js +0 -132
- package/dist/cli/chunk-53NMBJAO.js +0 -35
- package/dist/cli/chunk-MIIEFUGG.js +0 -623
- package/dist/cli/chunk-QBBKRNGY.js +0 -90
- package/dist/cli/chunk-WPUDGEFY.js +0 -20
- package/dist/cli/editorCommands-UIF5YLUZ.js +0 -33
- package/dist/cli/project-K3QIPGBB.js +0 -12
- package/dist/cli/registerStandardNodes-S2VLMF6J.js +0 -3081
- package/dist/cli/runner-RA6UKEPD.js +0 -37
- package/dist/cli/webBuild-GT4PZT5D.js +0 -37
- package/dist/runtime/builtins/headless.d.ts +0 -19
- package/dist/runtime/builtins/headless.js +0 -25
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/CodeEditor-C-xYG-Wn.js","assets/legacy-CTEeXeqF.js","assets/nodeTypeUtils-BDJsc2Ks.js","assets/preload-helper-Czpn1I53.js","assets/index-BWnrmIB9.js","assets/index-client-DqYmKstU.js","assets/DefinitionNode-CaRTXQ_b.js","assets/coreTypes-DtnDATZ7.js","assets/expressions-X-Z-GrgW.js","assets/builder-BmBKcDix.js","assets/studioImages-CAyH-0Pl.js","assets/index-DIaxEONI.css","assets/editor.api-Dkutg_Z1.js","assets/editor-1FQrmyyI.css","assets/CodeEditor-DR7u0q7p.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{Dt as e,G as t,M as n,Ot as r,Q as i,U as a,V as o,W as s,Z as c,ct as l,dt as u,et as d,ht as f,i as p,it as m,jt as h,l as g,nt as _,ot as v,pt as y,r as b,rt as x,st as S,vt as C,yt as w,z as T}from"./legacy-CTEeXeqF.js";import{t as E}from"./preload-helper-Czpn1I53.js";import{dt as D}from"./index-BWnrmIB9.js";var O=t(`<div class="loading svelte-1pkj8m">Loading editor...</div>`),k=t(`<div class="error svelte-1pkj8m">Loading...</div>`),A=t(`<div class="error svelte-1pkj8m"> </div>`),j=t(`<div class="panel-wrapper svelte-1pkj8m"><!></div>`);function M(t,M){r(M,!1);let N=()=>w(D,`$sharedContextStore`,P),[P,F]=C(),I=u(null);b(async()=>{let e=await E(()=>import(`./CodeEditor-C-xYG-Wn.js`).then(e=>e.t),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]));y(I,e.default)});let L=p(M,`panelParams`,8),R=p(M,`panelApi`,8),z=p(M,`graph`,12,void 0),B=p(M,`onRecordHistory`,12,void 0),V=u(null),H=L()?.nodeId;function U(){R()?.close&&R().close()}_(()=>N(),()=>{N()&&(z(N().graph),B(N().onRecordHistory))}),_(()=>c(z()),()=>{z()&&H?y(V,z().getNode(H)||null):y(V,null)}),_(()=>(c(R()),i(V)),()=>{R()?.setTitle&&i(V)&&R().setTitle(`Code: ${i(V).id}`)}),x(),g();var W=j(),G=v(W),K=e=>{var t=s(),r=S(t);{let e=f(()=>(c(z()),d(()=>z().packageManager||null)));n(r,()=>i(I),(t,n)=>{n(t,{get node(){return i(V)},get graph(){return z()},get packageManager(){return i(e)},onClose:U,showCloseButton:!1,get onRecordHistory(){return B()}})})}a(e,t)},q=e=>{var t=O();a(e,t)},J=e=>{var t=k();a(e,t)},Y=e=>{var t=A(),n=l(t);m(()=>o(n,`Node not found: ${H??``}`)),a(e,t)};T(G,e=>{i(V)&&z()&&i(I)?e(K):i(I)?z()?e(Y,-1):e(J,2):e(q,1)}),h(W),a(t,W),e(),F()}export{M as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.cook-info-panel.svelte-13kv637{background:var(--surface-void);width:100%;height:100%;color:var(--text-primary);font-size:12px;overflow-y:auto}.info-sections.svelte-13kv637{flex-direction:column;gap:16px;padding:12px;display:flex}.info-section.svelte-13kv637{background:var(--surface-void);border-radius:6px;padding:12px}.info-section.svelte-13kv637 h3:where(.svelte-13kv637){text-transform:uppercase;letter-spacing:.5px;color:var(--text-subtle);border-bottom:1px solid var(--border-faint);justify-content:space-between;align-items:center;margin:0 0 10px;padding-bottom:6px;font-size:11px;font-weight:600;display:flex}.reset-btn.svelte-13kv637{background:var(--surface-control);color:var(--text-subtle);cursor:pointer;text-transform:uppercase;letter-spacing:.3px;border:none;border-radius:3px;padding:2px 6px;font-size:10px}.reset-btn.svelte-13kv637:hover{background:var(--surface-hover);color:var(--text-muted)}.info-grid.svelte-13kv637{flex-direction:column;gap:6px;display:flex}.info-row.svelte-13kv637{justify-content:space-between;align-items:center;display:flex}.label.svelte-13kv637{color:var(--text-faint);font-size:11px}.value.svelte-13kv637{color:var(--text-secondary);text-align:right}.value.mono.svelte-13kv637{font-family:SF Mono,Monaco,Cascadia Code,monospace;font-size:11px}.value.path.svelte-13kv637{text-overflow:ellipsis;white-space:nowrap;max-width:180px;overflow:hidden}.value.slow.svelte-13kv637{color:var(--hue-orange)}.value.active.svelte-13kv637{color:var(--accent-light)}.value.warning.svelte-13kv637{color:var(--hue-amber)}.value.highlight.svelte-13kv637{color:var(--accent-lighter);font-weight:500}.buffer-section.svelte-13kv637{background:linear-gradient(135deg, var(--surface-void) 0%, var(--surface-panel) 100%);border:1px solid var(--border-faint)}.resolution-row.svelte-13kv637 .value:where(.svelte-13kv637){font-size:12px}.issues.svelte-13kv637{flex-direction:column;gap:8px;display:flex}.issue.svelte-13kv637{border-radius:4px;padding:8px;font-size:11px}.issue-retry.svelte-13kv637{font:inherit;color:var(--text-bright);background:var(--surface-control);border:1px solid var(--border);cursor:pointer;border-radius:3px;margin-top:6px;padding:2px 8px;font-size:11px;display:block}.issue-retry.svelte-13kv637:hover{background:var(--surface-control-hover)}.issue.error.svelte-13kv637{background:var(--status-error-tint);border:1px solid var(--status-error-tint-strong)}.issue.warning.svelte-13kv637{background:var(--status-warn-tint);border:1px solid var(--status-warn-tint-strong)}.issue-type.svelte-13kv637{text-transform:uppercase;letter-spacing:.3px;margin-bottom:4px;font-size:10px;font-weight:600;display:block}.issue.error.svelte-13kv637 .issue-type:where(.svelte-13kv637){color:var(--status-error)}.issue.warning.svelte-13kv637 .issue-type:where(.svelte-13kv637){color:var(--status-warn-soft)}.issue-message.svelte-13kv637{color:var(--text-tertiary);word-break:break-word}.empty-state.svelte-13kv637{height:100%;color:var(--text-disabled);justify-content:center;align-items:center;display:flex}.empty-state.svelte-13kv637 p:where(.svelte-13kv637){margin:0;font-size:13px}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Dt as e,G as t,J as n,O as r,Ot as i,Q as a,U as o,V as s,Y as c,Z as l,ct as u,dt as d,et as f,i as p,it as m,jt as h,l as g,lt as _,nt as v,ot as y,pt as b,rt as x,vt as ee,yt as S,z as C}from"./legacy-CTEeXeqF.js";import{a as w}from"./coreTypes-DtnDATZ7.js";import{t as te}from"./studioImages-CAyH-0Pl.js";import{dt as ne,ut as T}from"./index-BWnrmIB9.js";var re=t(`<section class="info-section buffer-section svelte-13kv637"><h3 class="svelte-13kv637">Output Buffer</h3> <div class="info-grid svelte-13kv637"><div class="info-row resolution-row svelte-13kv637"><span class="label svelte-13kv637">Resolution</span> <span class="value mono highlight svelte-13kv637"> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Format</span> <span class="value svelte-13kv637"> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Buffer Size</span> <span class="value svelte-13kv637"> </span></div></div></section>`),ie=t(`<div class="issue error svelte-13kv637"><span class="issue-type svelte-13kv637">Error</span> <span class="issue-message svelte-13kv637"> </span> <button class="issue-retry svelte-13kv637">Retry cook</button></div>`),ae=t(`<div class="issue warning svelte-13kv637"><span class="issue-type svelte-13kv637">Warning</span> <span class="issue-message svelte-13kv637"> </span></div>`),oe=t(`<section class="info-section svelte-13kv637"><h3 class="svelte-13kv637">Issues</h3> <div class="issues svelte-13kv637"><!> <!></div></section>`),se=t(`<section class="info-section svelte-13kv637"><h3 class="svelte-13kv637">Code</h3> <div class="info-grid svelte-13kv637"><div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Lines</span> <span class="value svelte-13kv637"> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Characters</span> <span class="value svelte-13kv637"> </span></div></div></section>`),ce=t(`<div class="info-sections svelte-13kv637"><section class="info-section svelte-13kv637"><h3 class="svelte-13kv637">Node</h3> <div class="info-grid svelte-13kv637"><div class="info-row svelte-13kv637"><span class="label svelte-13kv637">ID</span> <span class="value mono svelte-13kv637"> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Type</span> <span class="value mono svelte-13kv637"> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Class</span> <span class="value mono svelte-13kv637"> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Path</span> <span class="value mono path svelte-13kv637"> </span></div></div></section> <section class="info-section svelte-13kv637"><h3 class="svelte-13kv637">Cook Performance <button class="reset-btn svelte-13kv637" title="Reset statistics">Reset</button></h3> <div class="info-grid svelte-13kv637"><div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Last Cook</span> <span> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Average</span> <span> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Total Time</span> <span class="value svelte-13kv637"> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Cook Count</span> <span class="value svelte-13kv637"> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Last Cooked</span> <span class="value svelte-13kv637"> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Peak Memory</span> <span class="value svelte-13kv637"> </span></div></div></section> <!> <section class="info-section svelte-13kv637"><h3 class="svelte-13kv637">State</h3> <div class="info-grid svelte-13kv637"><div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Bypass</span> <span> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Cook Flag</span> <span> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Time Dependent</span> <span> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Dirty</span> <span> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Variadic</span> <span class="value svelte-13kv637"> </span></div></div></section> <section class="info-section svelte-13kv637"><h3 class="svelte-13kv637">Ports & Parameters</h3> <div class="info-grid svelte-13kv637"><div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Inputs</span> <span class="value svelte-13kv637"> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Outputs</span> <span class="value svelte-13kv637"> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Parameters</span> <span class="value svelte-13kv637"> </span></div> <div class="info-row svelte-13kv637"><span class="label svelte-13kv637">Expressions</span> <span> </span></div></div></section> <!> <!></div>`),E=t(`<div class="empty-state svelte-13kv637"><p class="svelte-13kv637">Select a node to view its information</p></div>`),le=t(`<div class="cook-info-panel svelte-13kv637"><!></div>`);function D(t,n){i(n,!1);let D=()=>S(T,`$panelLockStore`,k),O=()=>S(ne,`$sharedContextStore`,k),[k,A]=ee(),j=d(),M=d(),N=d(),P=d(),F=p(n,`panelId`,8),I=p(n,`panelApi`,8),L=p(n,`graph`,12,void 0),R=p(n,`selectedNode`,12,null);async function ue(){!a(N)||!L()||(a(N).markDirty(),await L().execute(a(N)))}function z(e){return e<.01?`< 0.01ms`:e<1?`${e.toFixed(2)}ms`:e<1e3?`${e.toFixed(1)}ms`:`${(e/1e3).toFixed(2)}s`}function de(e){return e===0?`-`:e<1024?`${e}B`:e<1048576?`${(e/1024).toFixed(1)}KB`:`${(e/1048576).toFixed(2)}MB`}function fe(e){return e===0?`Never`:new Date(e).toLocaleTimeString()}function pe(e){return e.constructor.name}function me(e){return e.inputs.filter(e=>!e.options?.hidden).length}function he(e){return e.outputs.length}function ge(e){return e.inputs.filter(e=>e.connections.length>0).length}function _e(e){return e.outputs.filter(e=>e.connections.length>0).length}function ve(e){return Object.keys(e.props).length}function ye(e){return Object.values(e.props).filter(e=>e.expression).length}function be(){a(N)?.resetCookInfo&&a(N).resetCookInfo()}function xe(e){for(let t of e.outputs){let e=t.value?w(t.value):null;if(!e||!Array.isArray(e.size))continue;let[n,r]=e.size;if(!n||!r)continue;let i=e.channels.length,a=e.depth===`u8`?1:e.depth===`f32`?4:2;return{width:n,height:r,channels:i,layout:i===1?`gray`:e.channels,memorySizeStr:`${de(n*r*i*a)}${te(e.path)?` in memory`:``}`}}return null}function Se(e,t){let n=e*t/1e6;return n>=1?`${e} × ${t} (${n.toFixed(1)}MP)`:`${e} × ${t} (${(e*t/1e3).toFixed(0)}K)`}function Ce(e,t){switch(e){case`gray`:return`Grayscale (1ch)`;case`rgb`:return`RGB (3ch)`;case`rgba`:return`RGBA (4ch)`;default:return`${t} channels`}}v(()=>(D(),l(F())),()=>{b(j,D().get(F()))}),v(()=>a(j),()=>{b(M,a(j)?.isLocked??!1)}),v(()=>O(),()=>{O()&&(L(O().graph),R(O().selectedNode))}),v(()=>(a(M),a(j),l(R())),()=>{b(N,a(M)?a(j)?.lockedNode:R())}),v(()=>(l(I()),a(M),a(N)),()=>{if(I()?.setTitle){let e=a(M)?`~ `:``;a(N)?I().setTitle(`${e}Info: ${a(N).id}`):I().setTitle(`${e}Node Info`)}}),v(()=>a(N),()=>{b(P,a(N)?xe(a(N)):null)}),x(),g();var B=le(),V=y(B),we=e=>{var t=ce(),n=y(t),i=_(y(n),2),l=y(i),d=_(y(l),2),p=u(d,!0);h(l);var g=_(l,2),v=_(y(g),2),b=u(v,!0);h(g);var x=_(g,2),ee=_(y(x),2),S=u(ee,!0);h(x);var w=_(x,2),te=_(y(w),2),ne=u(te,!0);h(w),h(i),h(n);var T=_(n,2),E=y(T),le=_(y(E));h(E);var D=_(E,2),O=y(D),k=_(y(O),2);let A;var j=u(k,!0);h(O);var M=_(O,2),F=_(y(M),2);let I;var L=u(F,!0);h(M);var R=_(M,2),xe=_(y(R),2),B=u(xe,!0);h(R);var V=_(R,2),we=_(y(V),2),Te=u(we,!0);h(V);var H=_(V,2),Ee=_(y(H),2),De=u(Ee,!0);h(H);var Oe=_(H,2),ke=_(y(Oe),2),Ae=u(ke,!0);h(Oe),h(D),h(T);var je=_(T,2),Me=e=>{var t=re(),n=_(y(t),2),r=y(n),i=_(y(r),2),c=u(i,!0);h(r);var l=_(r,2),d=_(y(l),2),p=u(d,!0);h(l);var g=_(l,2),v=_(y(g),2),b=u(v,!0);h(g),h(n),h(t),m((e,t)=>{s(c,e),s(p,t),s(b,(a(P),f(()=>a(P).memorySizeStr)))},[()=>(a(P),f(()=>Se(a(P).width,a(P).height))),()=>(a(P),f(()=>Ce(a(P).layout,a(P).channels)))]),o(e,t)};C(je,e=>{a(P)&&e(Me)});var U=_(je,2),Ne=_(y(U),2),W=y(Ne),G=_(y(W),2);let Pe;var Fe=u(G,!0);h(W);var K=_(W,2),Ie=_(y(K),2);let Le;var Re=u(Ie,!0);h(K);var q=_(K,2),ze=_(y(q),2);let Be;var Ve=u(ze,!0);h(q);var J=_(q,2),He=_(y(J),2);let Ue;var We=u(He,!0);h(J);var Ge=_(J,2),Ke=_(y(Ge),2),qe=u(Ke,!0);h(Ge),h(Ne),h(U);var Y=_(U,2),Je=_(y(Y),2),X=y(Je),Ye=_(y(X),2),Xe=u(Ye);h(X);var Z=_(X,2),Ze=_(y(Z),2),Qe=u(Ze);h(Z);var Q=_(Z,2),$e=_(y(Q),2),et=u($e,!0);h(Q);var tt=_(Q,2),nt=_(y(tt),2);let rt;var it=u(nt,!0);h(tt),h(Je),h(Y);var $=_(Y,2),at=e=>{var t=oe(),n=_(y(t),2),r=y(n),i=e=>{var t=ie(),n=_(y(t),2),r=u(n,!0),i=_(n,2);h(t),m(()=>s(r,(a(N),f(()=>a(N).error.message)))),c(`click`,i,ue),o(e,t)};C(r,e=>{a(N),f(()=>a(N).error)&&e(i)});var l=_(r,2),d=e=>{var t=ae(),n=_(y(t),2),r=u(n,!0);h(t),m(()=>s(r,(a(N),f(()=>a(N).warning)))),o(e,t)};C(l,e=>{a(N),f(()=>a(N).warning)&&e(d)}),h(n),h(t),o(e,t)};C($,e=>{a(N),f(()=>a(N).error||a(N).warning)&&e(at)});var ot=_($,2),st=e=>{var t=se(),n=_(y(t),2),r=y(n),i=_(y(r),2),c=u(i,!0);h(r);var l=_(r,2),d=_(y(l),2),p=u(d,!0);h(l),h(n),h(t),m(e=>{s(c,e),s(p,(a(N),f(()=>a(N).code.length)))},[()=>(a(N),f(()=>a(N).code.split(`
|
|
2
|
+
`).length))]),o(e,t)};C(ot,e=>{a(N),f(()=>a(N).code)&&e(st)}),h(t),m((e,t,n,i,o,c,l,u,d,m,h,g,_,v)=>{s(p,(a(N),f(()=>a(N).id))),s(b,(a(N),f(()=>a(N).type))),s(S,e),s(ne,t),A=r(k,1,`value svelte-13kv637`,null,A,{slow:a(N).cookInfo.lastCookTime>100}),s(j,n),I=r(F,1,`value svelte-13kv637`,null,I,{slow:a(N).cookInfo.averageCookTime>100}),s(L,i),s(B,o),s(Te,(a(N),f(()=>a(N).cookInfo.cookCount))),s(De,c),s(Ae,l),Pe=r(G,1,`value svelte-13kv637`,null,Pe,{active:a(N).bypass}),s(Fe,(a(N),f(()=>a(N).bypass?`Yes`:`No`))),Le=r(Ie,1,`value svelte-13kv637`,null,Le,{active:a(N).cook}),s(Re,(a(N),f(()=>a(N).cook?`Yes`:`No`))),Be=r(ze,1,`value svelte-13kv637`,null,Be,{active:a(N).isTimeDependent}),s(Ve,(a(N),f(()=>a(N).isTimeDependent?`Yes`:`No`))),Ue=r(He,1,`value svelte-13kv637`,null,Ue,{warning:a(N).isDirty}),s(We,(a(N),f(()=>a(N).isDirty?`Yes`:`No`))),s(qe,(a(N),f(()=>a(N).variadic?`Yes`:`No`))),s(Xe,`${u??``} / ${d??``} connected`),s(Qe,`${m??``} / ${h??``} connected`),s(et,g),rt=r(nt,1,`value svelte-13kv637`,null,rt,{active:_}),s(it,v)},[()=>(a(N),f(()=>pe(a(N)))),()=>(a(N),f(()=>a(N).path())),()=>(a(N),f(()=>z(a(N).cookInfo.lastCookTime))),()=>(a(N),f(()=>z(a(N).cookInfo.averageCookTime))),()=>(a(N),f(()=>z(a(N).cookInfo.totalCookTime))),()=>(a(N),f(()=>fe(a(N).cookInfo.lastCookTimestamp))),()=>(a(N),f(()=>de(a(N).cookInfo.peakMemory))),()=>(a(N),f(()=>ge(a(N)))),()=>(a(N),f(()=>me(a(N)))),()=>(a(N),f(()=>_e(a(N)))),()=>(a(N),f(()=>he(a(N)))),()=>(a(N),f(()=>ve(a(N)))),()=>ye(a(N))>0,()=>(a(N),f(()=>ye(a(N))))]),c(`click`,le,be),o(e,t)},Te=e=>{var t=E();o(e,t)};C(V,e=>{a(N)?e(we):e(Te,-1)}),h(B),o(t,B),e(),A()}n([`click`]);export{D as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{At as e,Dt as t,G as n,I as r,L as i,O as ee,Ot as a,Q as o,U as s,V as c,W as l,X as u,Z as d,_ as te,at as f,b as p,ct as m,d as h,dt as g,et as _,f as ne,i as v,it as y,jt as b,l as x,lt as S,nt as C,ot as w,p as re,pt as T,rt as E,s as ie,st as D,t as O,u as ae,v as k,z as A}from"./legacy-CTEeXeqF.js";import{$ as j,st as M}from"./index-BWnrmIB9.js";var N=n(`<span class="auto-badge svelte-1c1mvak">auto</span>`),P=n(`<span class="radio-path svelte-1c1mvak"> </span>`),F=n(`<input type="text" class="custom-base-input svelte-1c1mvak" placeholder="e.g., cascade.mylib.MyBaseNode" autocomplete="off"/>`),I=n(`<label><input type="radio" name="baseClass" class="svelte-1c1mvak"/> <div class="radio-content svelte-1c1mvak"><div class="radio-header svelte-1c1mvak"><span class="radio-label svelte-1c1mvak"> </span> <!></div> <!></div></label>`),oe=n(`<div class="dialog-overlay svelte-1c1mvak"><div class="dialog svelte-1c1mvak" role="dialog" aria-modal="true" aria-labelledby="custom-node-title"><div class="dialog-header svelte-1c1mvak"><h2 id="custom-node-title" class="svelte-1c1mvak">Create Custom Node</h2> <button class="close-button svelte-1c1mvak" aria-label="Close"><!></button></div> <form class="svelte-1c1mvak"><div class="form-group svelte-1c1mvak"><label for="node-name" class="svelte-1c1mvak">Node Name</label> <input id="node-name" type="text" placeholder="e.g., ParticleField" autocomplete="off" class="svelte-1c1mvak"/> <span class="hint svelte-1c1mvak">The display name for your node</span></div> <div class="form-group svelte-1c1mvak"><label for="module-path" class="svelte-1c1mvak">Module Path</label> <input id="module-path" type="text" placeholder="e.g., project.particle-field" autocomplete="off" class="svelte-1c1mvak"/> <span class="hint svelte-1c1mvak">Unique identifier for the node module <!></span></div> <div class="form-group svelte-1c1mvak"><span class="field-label svelte-1c1mvak">Base Class</span> <div class="base-class-options svelte-1c1mvak"></div></div> <div class="dialog-footer svelte-1c1mvak"><button type="button" class="cancel-button svelte-1c1mvak">Cancel</button> <button type="submit" class="create-button svelte-1c1mvak"><!> Create Node</button></div></form></div></div>`);function L(n,L){a(L,!1);let R=g(),se=[],z=v(L,`open`,12,!1),B=O(),V=g(``),H=g(``),U=g(`cascade.Node`),W=g(``),G=g(!0),K=[{id:`cascade.Node`,label:`Node`,description:`Base class for all nodes - use for general purpose computation`,template:`node`},{id:`cascade.image`,label:`Image`,description:`Image processing template: an image input drawn to a canvas output`,template:`image`},{id:`custom`,label:`Other`,description:`Specify a custom base class path`,template:`node`}];function ce(){T(G,!1)}function le(){let e=`local.${o(V).toLowerCase().replace(/[^a-z0-9]/g,``)}`;(o(H)===e||o(H)===``)&&T(G,!0)}function q(){if(!o(V).trim()||o(U)===`custom`&&!o(W).trim())return;let e=K.find(e=>e.id===o(U));B(`create`,{name:o(V).trim(),modulePath:o(H)||`local.${o(V).toLowerCase().replace(/[^a-z0-9]/g,``)}`,baseClass:o(R),template:e?.template||`node`}),Y()}function J(){Y(),B(`close`)}function Y(){T(V,``),T(H,``),T(U,`cascade.Node`),T(W,``),T(G,!0),z(!1)}function X(e){e.key===`Escape`?J():e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),q())}let Z=g();C(()=>(o(U),o(W)),()=>{T(R,o(U)===`custom`?o(W):o(U))}),C(()=>(o(G),o(V)),()=>{if(o(G)&&o(V)){let e=o(V).toLowerCase().replace(/[^a-z0-9]/g,``);T(H,`local.${e}`)}}),C(()=>(d(z()),o(Z)),()=>{z()&&o(Z)&&setTimeout(()=>o(Z)?.focus(),50)}),E(),x();var Q=l();u(`keydown`,f,X);var $=D(Q),ue=t=>{var n=oe(),a=w(n),l=w(a),d=S(w(l),2),f=w(d);M(f,{size:18}),b(d),b(l);var g=S(l,2),v=w(g),x=S(w(v),2);p(x),re(x,e=>T(Z,e),()=>o(Z)),e(2),b(v);var C=S(v,2),E=S(w(C),2);p(E);var D=S(E,2),O=S(w(D)),R=e=>{var t=N();s(e,t)};A(O,e=>{o(G)&&e(R)}),b(D),b(C);var z=S(C,2),B=S(w(z),2);r(B,5,()=>K,i,(e,t)=>{var n=I();let r;var i=w(n);p(i);var a,l=S(i,2),d=w(l),f=w(d),h=m(f,!0),g=S(f,2),v=e=>{var n=P(),r=m(n,!0);y(()=>c(r,(o(t),_(()=>o(t).id)))),s(e,n)};A(g,e=>{o(t),_(()=>o(t).id!==`custom`)&&e(v)}),b(d);var x=S(d,2),C=e=>{var t=F();p(t),k(t,()=>o(W),e=>T(W,e)),u(`click`,t,ne(function(e){ie.call(this,L,e)})),s(e,t)};A(x,e=>{o(t),o(U),_(()=>o(t).id===`custom`&&o(U)===`custom`)&&e(C)}),b(l),b(n),y(()=>{r=ee(n,1,`radio-option svelte-1c1mvak`,null,r,{selected:o(U)===o(t).id}),a!==(a=(o(t),_(()=>o(t).id)))&&(i.value=(i.__value=a)??``),c(h,(o(t),_(()=>o(t).label)))}),te(se,[],i,()=>(o(t),_(()=>o(t).id),o(U)),e=>T(U,e)),s(e,n)}),b(B),b(z);var Y=S(z,2),X=w(Y),Q=S(X,2),$=w(Q);j($,{name:`Zap`,size:14}),e(),b(Q),b(Y),b(g),b(a),b(n),y(e=>Q.disabled=e,[()=>(o(V),o(U),o(W),_(()=>!o(V).trim()||o(U)===`custom`&&!o(W).trim()))]),u(`click`,d,J),k(x,()=>o(V),e=>T(V,e)),u(`input`,x,le),k(E,()=>o(H),e=>T(H,e)),u(`input`,E,ce),u(`click`,X,J),u(`submit`,g,ae(q)),u(`click`,n,h(J)),s(t,n)};A($,e=>{z()&&e(ue)}),s(n,Q),t()}export{L as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as e,d as t,l as n,o as r,s as i}from"./nodeTypeUtils-BDJsc2Ks.js";import{l as a}from"./coreTypes-DtnDATZ7.js";import{n as o,r as s}from"./expressions-X-Z-GrgW.js";function c(e){if(typeof e==`object`&&!Array.isArray(e)&&`r`in e&&`g`in e&&`b`in e){let t=e,n=t.r<=1&&t.g<=1&&t.b<=1;return{r:n?t.r:t.r/255,g:n?t.g:t.g/255,b:n?t.b:t.b/255,a:t.a===void 0?1:n?t.a:t.a/255}}if(Array.isArray(e)){let t=e.every(e=>e<=1);return{r:t?e[0]:e[0]/255,g:t?e[1]:e[1]/255,b:t?e[2]:e[2]/255,a:e[3]===void 0?1:t?e[3]:e[3]/255}}if(typeof e==`string`){let t=e.match(/rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/);if(t)return{r:parseInt(t[1],10)/255,g:parseInt(t[2],10)/255,b:parseInt(t[3],10)/255,a:1};let n=e.replace(`#`,``);if(n.length===3||n.length===6){let e=n.length===3?n.split(``).map(e=>e+e).join(``):n,t=/^([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);if(t)return{r:parseInt(t[1],16)/255,g:parseInt(t[2],16)/255,b:parseInt(t[3],16)/255,a:1}}}return{r:0,g:0,b:0,a:1}}function l(e){let t=Math.round(e.r*255),n=Math.round(e.g*255),r=Math.round(e.b*255),i=e.a===void 0?1:e.a;return i<1?`rgba(${t},${n},${r},${i})`:`rgb(${t},${n},${r})`}function u(e){return`#${Math.round(e.r*255).toString(16).padStart(2,`0`)}${Math.round(e.g*255).toString(16).padStart(2,`0`)}${Math.round(e.b*255).toString(16).padStart(2,`0`)}`.toUpperCase()}function d(e){if(typeof e==`string`)return e.startsWith(`#`)||e.startsWith(`rgb(`);if(typeof e==`object`&&e){if(`r`in e&&`g`in e&&`b`in e)return!0;if(Array.isArray(e)&&(e.length===3||e.length===4))return e.every(e=>typeof e==`number`)}return!1}var f=`smooth`,p=[`constant`,`linear`,`smooth`];function m(e){return typeof e==`string`&&p.includes(e)}var h=Object.freeze({keys:Object.freeze([])});function g(e=[]){let t=new Map;for(let n of e){if(!n)continue;let e=Number(n.frame),r=Number(n.value);!Number.isFinite(e)||!Number.isFinite(r)||t.set(e,{frame:e,value:r,interpolation:m(n.interpolation)?n.interpolation:f})}return{keys:[...t.values()].sort((e,t)=>e.frame-t.frame)}}function _(e){return!e||e.keys.length===0}function ee(e,t){return e.keys.find(e=>e.frame===t)}function v(e,t,n,r){let i=e??h;if(!Number.isFinite(t)||!Number.isFinite(n))return g(i.keys);let a=ee(i,t),o=r??a?.interpolation??`smooth`;return g([...i.keys.filter(e=>e.frame!==t),{frame:t,value:n,interpolation:o}])}function y(e,t){return g((e??h).keys.filter(e=>e.frame!==t))}function te(e,t){if(!e||e.keys.length===0)return;let n=e.keys;if(!Number.isFinite(t)||n.length===1||t<=n[0].frame)return n[0].value;if(t>=n[n.length-1].frame)return n[n.length-1].value;let r=ne(n,t),i=n[r],a=n[r+1],o=a.frame-i.frame;if(o<=0)return a.value;let s=(t-i.frame)/o;switch(i.interpolation){case`constant`:return i.value;case`linear`:return i.value+(a.value-i.value)*s;default:return re(n,r,s,o)}}function ne(e,t){let n=0,r=e.length-1;for(;n<r;){let i=n+r+1>>1;e[i].frame<=t?n=i:r=i-1}return Math.min(n,e.length-2)}function re(e,t,n,r){let i=e[t],a=e[t+1],o=b(e,t,`out`),s=b(e,t+1,`in`),c=n*n,l=c*n,u=2*l-3*c+1,d=l-2*c+n,f=-2*l+3*c,p=l-c;return u*i.value+d*r*o+f*a.value+p*r*s}function b(e,t,n){let r=e[t-1],i=e[t+1];if(!r||!i||n===`out`&&r.interpolation===`constant`||n===`in`&&e[t].interpolation===`constant`)return 0;let a=i.frame-r.frame;return a<=0?0:(i.value-r.value)/a}function x(e){if(!_(e))return{keys:e.keys.map(e=>e.interpolation===`smooth`?{frame:e.frame,value:e.value}:{frame:e.frame,value:e.value,interpolation:e.interpolation})}}function S(e){if(!e||typeof e!=`object`)return h;let t=e.keys;return Array.isArray(t)?g(t):h}function C(e,t){if(!_(e.channel)){let n=te(e.channel,t.frame);if(n!==void 0)return{value:n,source:`channel`}}if(e.expression&&t.evaluateExpression){let n=t.evaluateExpression(e.expression);if(n?.error)return{value:e.value,source:`value`,error:n.error};if(n)return{value:n.value,source:`expression`}}return{value:e.value,source:`value`}}function w(e){if(e instanceof Error)return e;let t=T(e),n=Error(t);return n.cause=e,n}function T(e){if(e===null)return`null was thrown`;if(e===void 0)return`undefined was thrown`;if(typeof e==`string`)return e||`an empty string was thrown`;if(typeof e!=`object`)return`${String(e)} was thrown`;let t=e,n=typeof t.name==`string`&&t.name?t.name:t.constructor?.name||`object`,r=[];if(typeof t.message==`string`&&t.message&&r.push(t.message),typeof t.reason==`string`&&t.reason&&r.push(`reason: ${t.reason}`),!r.length)try{let t=JSON.stringify(e);t&&t!==`{}`&&r.push(t)}catch{}return r.length?`${n}: ${r.join(`, `)}`:`${n} was thrown with no message`}function E(e,t,n=2e6){return k(e,t,{remaining:n},!0)}function D(e,t,n=2e6){return k(e,t,{remaining:n},!1)}function O(e){let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null||t===Array.prototype}function k(e,t,n,r){if(--n.remaining<0)return!1;if(e===null||t===null||typeof e!=`object`||typeof t!=`object`)return typeof e==`function`||typeof t==`function`?!1:Object.is(e,t);if(e===t&&(r||ArrayBuffer.isView(e)||!O(e)))return!1;if(ArrayBuffer.isView(e)||ArrayBuffer.isView(t)){if(!ArrayBuffer.isView(e)||!ArrayBuffer.isView(t)||e.constructor!==t.constructor||e.byteLength!==t.byteLength||(n.remaining-=e.byteLength/8,n.remaining<0))return!1;let r=new Uint8Array(e.buffer,e.byteOffset,e.byteLength),i=new Uint8Array(t.buffer,t.byteOffset,t.byteLength);for(let e=0;e<r.length;e++)if(r[e]!==i[e])return!1;return!0}if(!O(e)||!O(t))return!1;let i=Array.isArray(e);if(i!==Array.isArray(t))return!1;if(i){let r=e,i=t;if(r.length!==i.length)return!1;for(let e=0;e<r.length;e++)if(!k(r[e],i[e],n,!1))return!1;return!0}let a=e,o=t,s=Object.keys(a);if(s.length!==Object.keys(o).length)return!1;for(let e of s)if(!Object.prototype.hasOwnProperty.call(o,e)||!k(a[e],o[e],n,!1))return!1;return!0}var A=new WeakMap,j=1,M=e=>A.get(e)??(A.set(e,j),j++);function N(e){let t=e.byteLength,n;if((e.byteOffset|t)&3){let r=new Uint8Array(t+3&-4);r.set(new Uint8Array(e.buffer,e.byteOffset,t)),n=new Int32Array(r.buffer)}else n=new Int32Array(e.buffer,e.byteOffset,t>>2);let r=2166136261^t,i=2654435769,a=2246822507,o=3266489909,s=n.length,c=s&-4;for(let e=0;e<c;e+=4)r=Math.imul(r^n[e],16777619),r=r<<13|r>>>19,i=Math.imul(i^n[e+1],1540483477),i=i<<13|i>>>19,a=Math.imul(a^n[e+2],16777619),a=a<<13|a>>>19,o=Math.imul(o^n[e+3],1540483477),o=o<<13|o>>>19;for(let e=c;e<s;e++)r=Math.imul(r^n[e],16777619),r=r<<13|r>>>19;return[r,i,a,o].map(e=>(e>>>0).toString(36)).join(`.`)}var P=(e,t)=>ArrayBuffer.isView(t)?`#${N(t)}`:t;function F(e){let t=typeof e;if(e==null||t!==`object`&&t!==`function`)return`${t}:${String(e)}`;let n=e,r=n.channels;if(Array.isArray(r)&&r.every(e=>ArrayBuffer.isView(e)))return`${n.width}x${n.height}:${n.colorSpace}:${r.map(N).join(`,`)}`;let i;try{i=JSON.stringify(n,P)}catch{i=`#${M(n)}`}let a=Object.getPrototypeOf(n);return a===Object.prototype||a===null||Array.isArray(n)||ArrayBuffer.isView(n)?`json:${i}`:`obj#${M(n)}:${i}`}function I(e){if(typeof e==`number`)return Number.isInteger(e)?`int`:`float`;if(typeof e==`boolean`)return`bool`;if(typeof e==`string`)return`string`;if(Array.isArray(e)&&e.every(e=>typeof e==`number`)){if(e.length===2)return`vec2`;if(e.length===3)return`vec3`;if(e.length===4)return`vec4`}return`any`}function ie(e){switch(a(e??`any`)){case`int`:return`int`;case`float`:return`number`;case`bool`:return`boolean`;case`string`:return`text`;case`color`:return`color`;case`vec2`:return`vec2`;case`vec3`:return`vec3`;case`vec4`:return`vec4`;default:return}}var L={number:`float`,slider:`float`,range:`float`,float:`float`,int:`int`,text:`string`,textarea:`string`,string:`string`,select:`string`,boolean:`bool`,bool:`bool`,vector:`vec3`};function R(e){return e?a(L[e]??e):`any`}var z=new Set([`int`,`float`]);function B(e,t){return e===`any`||t===`any`||z.has(e)&&z.has(t)?!0:e===t}function V(e,t){if(e===t)return!0;if(Array.isArray(e)&&Array.isArray(t))return e.length===t.length&&e.every((e,n)=>V(e,t[n]));if(H(e)&&H(t)){let n=Object.keys(e);return n.length===Object.keys(t).length&&n.every(n=>n in t&&V(e[n],t[n]))}return typeof e==`number`&&typeof t==`number`&&Number.isNaN(e)&&Number.isNaN(t)}function H(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}var U=class e{isPromotedToParent(e){return(this.parent?.promotions??[]).some(t=>t.nodeId===this.id&&t.param===e)}setPromotedToParent(e,t){let n=this.parent;if(!n)return;let r=n.promotions.findIndex(t=>t.nodeId===this.id&&t.param===e);t&&r<0?n.promotions.push({nodeId:this.id,param:e}):!t&&r>=0&&n.promotions.splice(r,1)}outputVersion(e){return this.outputVersions.get(e)??0}bumpOutputVersion(e){this.outputVersions.set(e,(this.outputVersions.get(e)??0)+1);let t=this.bundleFieldVersions.get(e);t&&(t.epoch+=1)}outputFieldVersion(e,t){let n=this.bundleFieldVersions.get(e);return n?`${n.epoch}.${n.fields.get(t)??0}`:`0.0`}bumpBundleFields(e,t,n){let r=this.bundleFieldVersions.get(e);r||(r={epoch:0,fields:new Map},this.bundleFieldVersions.set(e,r));let i=typeof t==`object`&&t?t:null,a=typeof n==`object`&&n?n:null;if(!i||!a||i===a){r.epoch+=1;return}let o=Object.prototype.hasOwnProperty;for(let e of new Set([...Object.keys(i),...Object.keys(a)]))(o.call(i,e)!==o.call(a,e)||!D(i[e],a[e]))&&r.fields.set(e,(r.fields.get(e)??0)+1)}bundleFieldsRead(e){if(e.dataType!==`bundle`||!e.options?.fieldSelection)return null;let t=new Set(e.options.fieldSelection);for(let n of Object.values(this.props))if(n?.expression)for(let r of s(n.expression))r.port===e.name&&t.add(r.field);return[...t].sort()}markSelfDirty(){this.selfDirty=!0}inputVersionKey(){let e=[];for(let t of this.inputs){if(t.connections.length===0){e.push(`${t.id}=${F(t.value)}`);continue}let n=this.bundleFieldsRead(t);for(let r of t.connections){let i=this.graph.getNode(r.from.nodeId);if(!i)return null;let a=`${t.id}<${r.from.nodeId}:${r.from.portId}`;e.push(n?`${a}{${n.map(e=>`${e}@${i.outputFieldVersion(r.from.portId,e)}`).join(`,`)}}`:`${a}@${i.outputVersion(r.from.portId)}`)}}return e.join(`|`)}canSkipCook(){return!this.earlyCutoff||this.selfDirty||!this.hasExecuted||this.cutoffKey===null||this.error!==null||!this.nodeFunction&&this.onCook===e.prototype.onCook?!1:this.inputVersionKey()===this.cutoffKey}skipCook(){this.setCookState(`clean`)}get documentSeed(){return this.graph?.seed}constructor(t,n,r){this.inputs=[],this.outputs=[],this.props={},this.propWatchers=new Map,this.actions={},this.parameters=[],this.parametersUsedDuringSetup=new Set,this.propsDeclaredByCode=new Set,this.carryOver=null,this.lastCarryOverReport=null,this.variadic=!1,this.variadicDefault=null,this.variadicOptions={},this.preview=null,this.comment=``,this.error=null,this.warning=null,this.code=``,this.bypass=!1,this.cook=!1,this.parent=null,this.promotions=[],this._children=[],this.earlyCutoff=!0,this.outputVersions=new Map,this.selfDirty=!0,this.cutoffKey=null,this.bundleFieldVersions=new Map,this.hasExecuted=!1,this.lastInputHash=``,this.failedInputHash=null,this.cookAborts=new Set,this.cookState=`stale`,this.cookGeneration=0,this.stagingStack=[],this.executionTimeout=3e4,this.cookInfo={lastCookTime:0,totalCookTime:0,cookCount:0,averageCookTime:0,lastCookTimestamp:0,peakMemory:0},this.isTimeDependent=!1,this.portsUsedDuringSetup=new Set,this._portMap=new Map,this.defaultExpressionsApplied=new Set,this.plainPropOverrides=new Set,this.declaredContainer=null,this.id=t,this.type=n,this.graph=r,this.position={x:0,y:0},this.constructor!==e&&(this.setup(),queueMicrotask(()=>{if(this.onReady)try{this.onReady()}catch(e){console.error(`Error in onReady for node ${this.id}:`,e)}}))}in(e,t,n={}){let r=e===`trigger`?`trigger`:`param`,i=this.inputs.find(t=>t.name===e);if(i)return this.portsUsedDuringSetup.add(`input_${e}`),n.type&&(i.dataType=n.type),t!==void 0&&i.defaultValue!==t&&(i.defaultValue=t,(i.value===void 0||i.value===i.defaultValue)&&(i.value=t)),i.options=Object.assign(i.options??{},n),i;let a=this.inputs.length,o={id:`${this.id}_in_${a}`,name:e,portType:r,dataType:n.type||`any`,value:t,defaultValue:t,options:n,connections:[]};return this.inputs.push(o),this._portMap.set(o.id,o),this.portsUsedDuringSetup.add(`input_${e}`),o}out(e,t=`param`,n={}){let r=this.outputs.find(t=>t.name===e);if(r)return this.portsUsedDuringSetup.add(`output_${e}`),r.portType!==t&&(r.portType=t),n.type&&(r.dataType=n.type),r.options={...r.options??{},...n},r;let i=this.outputs.length,a={id:`${this.id}_out_${i}`,name:e,portType:t,dataType:n.type||`any`,value:void 0,connections:[],options:n,setValue:e=>this.setOutputValue(a,e),trigger:e=>{a.connections.forEach(t=>{let n=this.graph.getNode(t.to.nodeId);if(n){let r=n.getInputPortById(t.to.portId);r&&r.onTrigger&&r.onTrigger(e)}})}};return this.outputs.push(a),this._portMap.set(a.id,a),this.portsUsedDuringSetup.add(`output_${e}`),a}getInputPort(e){return e>=0&&e<this.inputs.length?this.inputs[e]:null}getOutputPort(e){return e>=0&&e<this.outputs.length?this.outputs[e]:null}renameId(e){let t=this.id,n=new Map;this.id=e,this._portMap.clear();for(let r of[...this.inputs,...this.outputs]){let i=r.id;r.id=i.startsWith(`${t}_`)?`${e}${i.slice(t.length)}`:i,n.set(i,r.id),this._portMap.set(r.id,r)}return n}getPort(e){return this._portMap.get(e)||null}getInputPortById(e){let t=this._portMap.get(e);return t&&`defaultValue`in t?t:null}setOutputValue(e,t){let n=this.stagingStack[this.stagingStack.length-1];if(n){n.set(e,t);return}this.commitOutputValue(e,t)}commitOutputValue(e,t){E(e.value,t)||(e.dataType===`bundle`?(this.outputVersions.set(e.id,(this.outputVersions.get(e.id)??0)+1),this.bumpBundleFields(e.id,e.value,t)):this.bumpOutputVersion(e.id)),e.value=t;for(let n of e.connections){let e=this.graph.getNode(n.to.nodeId)?.getInputPortById(n.to.portId);e&&(e.value=t,e.onChange?.(t))}}addParm(e,t){this.props[e]=t,this.propsDeclaredByCode.add(e),this.reconcileProp(e),this.cookState!==`cooking`&&this.markDirty()}defineProp(e,t){this.addParm(e,t)}addAction(e,t){this.actions[e]=t}async executeAction(e){let t=this.actions[e];t&&(t.condition&&!t.condition()||await t.callback())}updateProp(t,n){if(!this.props[t])return;let r=Array.isArray(n)?[...n]:n;if(this.props[t]={...this.props[t],value:r},this.props[t].onChange)try{this.props[t].onChange(this.props[t],this)}catch(e){console.error(`Error in prop onChange for ${t}:`,e)}let i=this.propWatchers.get(t);i&&i.forEach(e=>{try{e(r,this.props[t])}catch(e){console.error(`Error in prop watcher for ${t}:`,e)}}),this.props={...this.props},this.markDirty(),e.onPropParamsChanged?.(this.id)}updatePropParams(t,n){this.props[t]&&(this.props[t]={...this.props[t],params:{...this.props[t].params,...n}},this.props={...this.props},e.onPropParamsChanged?.(this.id))}watchProp(e,t){this.propWatchers.has(e)||this.propWatchers.set(e,[]),this.propWatchers.get(e).push(t)}parm(e){let t=this.props[e];if(!t)return null;let n=this,r=()=>n.props[e]??t;return{name:()=>e,path:()=>`${n.path()}/${e}`,node:()=>n,eval:()=>r().value,evalAsFloat:()=>parseFloat(r().value)||0,evalAsInt:()=>parseInt(r().value,10)||0,evalAsString:()=>String(r().value??``),rawValue:()=>r().value,set:t=>n.updateProp(e,t),parmType:()=>r().type||`any`,expression:()=>r().expression??null,setExpression:t=>{n.props[e]={...n.props[e],expression:t},n.updateTimeDependent(),n.markDirty()},deleteExpression:()=>{let{expression:t,expressionError:r,...i}=n.props[e];n.props[e]=i,n.defaultExpressionsApplied.has(e)&&n.plainPropOverrides.add(e),n.updateTimeDependent(),n.markDirty()},hasExpression:()=>!!r().expression,expressionError:()=>r().expressionError??null,channel:()=>n.props[e]?.channel??null,hasChannel:()=>!_(n.props[e]?.channel),keys:()=>n.props[e]?.channel?.keys??[],setKey:(t,r,i)=>{let a=t??n.currentFrame(),o=r??Number(n.evalParm(e));Number.isFinite(o)&&n.setPropChannel(e,v(n.props[e]?.channel,a,o,i))},deleteKey:t=>{let r=n.props[e]?.channel;r&&n.setPropChannel(e,y(r,t))},clearChannel:()=>n.setPropChannel(e,null)}}currentFrame(){return o.fframe}setPropChannel(t,n){let r=this.props[t];if(r){if(!n||_(n)){let{channel:e,...n}=this.props[t];this.props[t]=n}else this.props[t]={...r,channel:n};this.props={...this.props},this.updateTimeDependent(),this.markDirty(),e.onPropParamsChanged?.(this.id)}}serializePropValue(e,t){let n=this.props[e];if(!n)return t;let r=x(n.channel);return!n.expression&&!r?t:{value:t,...n.expression?{expression:n.expression}:{},...r?{channel:r}:{}}}preservePlainProp(e){this.plainPropOverrides.add(e)}preservesPlainProp(e){return this.plainPropOverrides.has(e)&&this.defaultExpressionsApplied.has(e)}restorePropChannel(e,t){if(!this.props[e])return;let n=S(t);this.setPropChannel(e,_(n)?null:n)}serializePropChannel(e){return x(this.props[e]?.channel)}evalParm(e){let t=this.props[e];if(t)return C(t,{frame:this.currentFrame(),evaluateExpression:()=>({value:this.evaluateExpression(e)})}).value}setParm(e,t){this.updateProp(e,t)}evaluateExpression(e){let t=this.props[e];if(!t?.expression)return t?.value;o.setGraph(this.graph);let n=o.evaluate(t.expression,this);if(n.error)return this.props[e]={...this.props[e],expressionError:n.error},t.value;if(t.expressionError){let{expressionError:t,...n}=this.props[e];this.props[e]=n}return n.value}evaluateAllExpressions(){for(let[e,t]of Object.entries(this.props))if(t.expression&&!t.fromParameter&&this.propsDeclaredByCode.has(e)){let t=this.evaluateExpression(e);t!==void 0&&(this.props[e]={...this.props[e],value:t})}this.updateTimeDependent()}param(e,t,n={}){let r=this.parameters.find(t=>t.name===e);if(r?(n.type&&(r.dataType=n.type),r.defaultValue=t,Object.assign(r.options,n)):(r={name:e,value:t,defaultValue:t,dataType:n.type||I(t),promoted:!1,options:n},this.parameters.push(r)),this.parametersUsedDuringSetup.add(e),this.reconcileParameter(r,t,n),this.bindParameterProp(r,e,n),r.promoted){let t=this.in(e,r.value,{...r.options,type:r.dataType,promoted:!0});if(t.fromParameter=e,t.connections.length>0&&t.value!==void 0&&t.value!==null)return{...r,value:t.value}}return r}bindParameterProp(e,t,n){let r=Object.getOwnPropertyDescriptor(e,`value`),i=r&&!r.get?r.value:void 0,o=this.props[t];o||(o={value:i===void 0?e.defaultValue:i},this.props[t]=o,this.props={...this.props}),n.defaultExpression&&!this.defaultExpressionsApplied.has(t)&&(this.defaultExpressionsApplied.add(t),!this.plainPropOverrides.has(t)&&!o.expression&&(o.expression=n.defaultExpression,this.props={...this.props},this.updateTimeDependent())),o.fromParameter=t,o.hidden=!0;let s=ie(e.dataType);s&&(o.type=s);let c={...o.params??{}};n.min!==void 0&&(c.min=n.min),n.max!==void 0&&(c.max=n.max),n.step!==void 0&&(c.step=n.step),a(e.dataType??`any`)===`int`&&(c.integer=!0),o.params=c,!r?.get&&Object.defineProperty(e,"value",{get:()=>this.evalParm(t),set:e=>this.writeParameterValue(t,e),enumerable:!0,configurable:!0})}writeParameterValue(e,t){let n=this.props[e];if(!n)return;let r={...n,value:Array.isArray(t)?[...t]:t};n.expression&&this.defaultExpressionsApplied.has(e)&&(delete r.expression,delete r.expressionError,this.plainPropOverrides.add(e)),this.props[e]=r,this.props={...this.props},this.updateTimeDependent()}parameterWriteShadowedBy(e){let t=this.props[e];return t?(t.channel?.keys?.length??0)>0?`channel`:t.expression&&!this.defaultExpressionsApplied.has(e)?`expression`:null:null}rawParameterValue(e){return this.props[e]?this.props[e].value:this.parameters.find(t=>t.name===e)?.value}setParameterPromoted(e,t){let n=this.parameters.find(t=>t.name===e);if(!(!n||n.promoted===t)){if(n.promoted=t,t){let t=this.in(e,n.value,{...n.options,type:n.dataType,promoted:!0});t.fromParameter=e}else{let t=this.inputs.findIndex(t=>t.name===e);t>=0&&([...this.inputs[t].connections].forEach(e=>this.graph?.disconnect(e.id)),this.inputs.splice(t,1))}this.markDirty()}}setParameter(e,t){let n=this.parameters.find(t=>t.name===e);n&&(this.parameterWriteIsNoop(e,t)||(n.value=t,this.markDirty()))}parameterWriteIsNoop(e,t){let n=this.props[e];return!n||n.expression||(n.channel?.keys?.length??0)>0?!1:V(n.value,t)}beginParameterCarryOver(){let e=new Map;for(let t of this.parameters)e.set(`parameter:${t.name}`,{name:t.name,kind:`parameter`,type:R(t.dataType),value:this.rawParameterValue(t.name),expression:this.props[t.name]?.expression,channel:this.props[t.name]?.channel});for(let[t,n]of Object.entries(this.props))e.has(`parameter:${t}`)||e.set(`prop:${t}`,{name:t,kind:`prop`,type:R(n.type),value:n.value,expression:n.expression,channel:n.channel});this.carryOver={carried:e,resolved:new Set,report:{kept:[],defaulted:[],dropped:[],retyped:[]}},this.parametersUsedDuringSetup.clear()}abandonParameterCarryOver(){this.carryOver=null}hasPendingParameterCarryOver(){return this.carryOver!==null}applyParameterDeclarations(e){if(!this.carryOver)return null;for(let t of e)t?.name&&(t.kind===`prop`?this.addParm(t.name,{value:t.defaultValue,type:t.type}):this.param(t.name,t.defaultValue,{...t.type?{type:t.type}:{}}));return this.finishParameterCarryOver()}finishParameterCarryOver(){let t=this.carryOver;if(!t)return null;for(let e of t.carried.values()){t.report.dropped.push({name:e.name,value:e.value,...e.expression?{expression:e.expression}:{}});let n=this.parameters.findIndex(t=>t.name===e.name);if(n>=0){this.parameters[n].promoted&&this.setParameterPromoted(e.name,!1);let t=this.parameters.findIndex(t=>t.name===e.name);t>=0&&this.parameters.splice(t,1)}t.resolved.has(`prop:${e.name}`)||delete this.props[e.name]}return this.carryOver=null,this.lastCarryOverReport=t.report,t.report.dropped.length>0&&(this.props={...this.props},this.updateTimeDependent(),e.onPropParamsChanged?.(this.id)),t.report}reconcileParameter(e,t,n){let r=this.carryOver;if(!r)return;let i=`parameter:${e.name}`;if(r.resolved.has(i))return;r.resolved.add(i);let a=n.type??I(t);e.dataType=a;let o=R(a),s=`prop:${e.name}`,c=r.carried.get(i)??r.carried.get(s);if(!c){e.value=t,r.report.defaulted.push(e.name);return}r.carried.delete(i),r.carried.delete(s),B(c.type,o)?(e.value=c.value,(c.expression||c.channel)&&(this.props[e.name]={...this.props[e.name]??{},value:c.value,...c.expression?{expression:c.expression}:{},...c.channel?{channel:c.channel}:{}},r.resolved.add(s),this.updateTimeDependent()),r.report.kept.push(e.name)):(e.value=t,r.report.retyped.push({name:e.name,from:c.type,to:o}))}reconcileProp(e){let t=this.carryOver;if(!t)return;let n=`prop:${e}`;if(t.resolved.has(n))return;t.resolved.add(n);let r=this.props[e],i=R(r?.type),a=`parameter:${e}`,o=t.carried.get(n)??t.carried.get(a);if(!o){t.report.defaulted.push(e);return}t.carried.delete(n),t.carried.delete(a),B(o.type,i)?(this.props[e]={...r,value:o.value,...o.expression?{expression:o.expression}:{},...o.channel?{channel:o.channel}:{}},(o.expression||o.channel)&&this.updateTimeDependent(),t.report.kept.push(e)):t.report.retyped.push({name:e,from:o.type,to:i})}setVariadic(e=null,t={}){this.variadic=!0,this.variadicDefault=e,this.variadicOptions=t,this.syncVariadicPorts()}getVariadicInputs(){return this.inputs.filter(e=>e.variadic&&!e.options.hidden)}syncVariadicPorts(){if(!this.variadic)return;let e=this.inputs.filter(e=>e.variadic),t=e.filter(e=>e.connections.length>0||e.value!==null&&e.value!==this.variadicDefault).length;for(let e=0;e<t+1;e++){let t=this.in(`input_${e}`,this.variadicDefault,{...this.variadicOptions,hidden:!1});t.variadic=!0,t.onChange||=()=>this.onUpdate?.()}for(let n=t+1;n<e.length;n++)e[n]&&(e[n].options.hidden=!0)}path(){let e=[this.id],t=this.parent;for(;t;)e.unshift(t.id),t=t.parent;return`/`+e.join(`/`)}children(){return this._children}isNetwork(){return this.declaredContainer===`subnet`}node(e){if(!e)return null;if(e.startsWith(`/`))return this.graph.nodeByPath(e);let t=e.split(`/`).filter(e=>e.length>0),n=this;for(let e of t){if(!n)return null;if(e!==`.`){if(e===`..`){n=n.parent;continue}if(n.isNetwork()){let t=n.children().find(t=>t.id===e);if(t){n=t;continue}}return null}}return n}relativePathTo(e){let t=this.path().split(`/`).filter(e=>e),n=e.path().split(`/`).filter(e=>e),r=0;for(;r<t.length&&r<n.length&&t[r]===n[r];)r++;let i=t.length-r,a=n.slice(r),o=[];for(let e=0;e<i;e++)o.push(`..`);return o.push(...a),o.join(`/`)||`.`}inputNodes(){let e=[];for(let t of this.inputs)for(let n of t.connections){let t=this.graph.getNode(n.from.nodeId);t&&!e.includes(t)&&e.push(t)}return e}outputNodes(){let e=[];for(let t of this.outputs)for(let n of t.connections){let t=this.graph.getNode(n.to.nodeId);t&&!e.includes(t)&&e.push(t)}return e}globToRegex(e){let t=``,n=0;for(;n<e.length;){let r=e[n];switch(r){case`*`:t+=`.*`;break;case`?`:t+=`.`;break;case`[`:let i=n+1,a=``;for(e[i]===`!`&&(a=`^`,i++);i<e.length&&e[i]!==`]`;)a+=e[i],i++;t+=`[`+a+`]`,n=i;break;case`.`:case`+`:case`^`:case`$`:case`(`:case`)`:case`{`:case`}`:case`|`:case`\\`:t+=`\\`+r;break;default:t+=r}n++}return RegExp(`^`+t+`$`)}glob(e){let t=this.children();if(!e||e===`*`)return[...t];let n=e.split(/\s+/),r=[],i=[];for(let e of n)e.startsWith(`^`)?i.push(this.globToRegex(e.slice(1))):r.push(this.globToRegex(e));return t.filter(e=>{let t=r.length===0||r.some(t=>t.test(e.id)),n=i.some(t=>t.test(e.id));return t&&!n})}recursiveGlob(e){let t=[],n=e.startsWith(`**/`),r=n?e.slice(3):e,i=(e,a)=>{let o=e.children();for(let e of o)n?this.globToRegex(r).test(e.id)&&t.push(e):a===0&&this.globToRegex(r).test(e.id)&&t.push(e),e.isNetwork()&&i(e,n?a:a-1)};if(e===`**`){let e=n=>{for(let r of n.children())t.push(r),r.isNetwork()&&e(r)};return e(this),t}let a=n?0:e.split(`/`).length-1;return i(this,a),t}setBypass(e){this.bypass=e,this.markDirty()}setCook(e){e&&this.parent&&this.parent.children().filter(e=>e!==this&&e.cook).forEach(e=>e.setCook(!1)),this.cook=e,e?this.graph.cookingNodes.add(this):this.graph.cookingNodes.delete(this),this.markDirty()}setTimeDependent(e){this.isTimeDependent=e}updateTimeDependent(){let e=Object.values(this.props).some(e=>e.expression&&o.hasTimeReference(e.expression)||!_(e.channel));this.setTimeDependent(e)}shouldExecute(){return this.bypass?!1:this.graph.cookingNodes.size>0?this.cook||this.graph.isDownstreamOfCooking(this):!0}executeBypass(){this.inputs.forEach(e=>{if(e.portType===`param`){let t=this.outputs.find(t=>t.name===e.name||this.outputs.length===1);t&&t.setValue(e.value)}})}markDirty(){this.graph.scheduler.markStale(this)}get cookSignal(){for(let e of this.cookAborts)if(!e.signal.aborted)return e.signal;return null}get inFlightCookSignal(){let e=null;for(let t of this.cookAborts)e=t;return e?.signal??null}invalidateCook(){this.cookGeneration++,this.abortCooks(`superseded`),this.setCookState(`stale`)}cancelCook(e){this.abortCooks(e)}abortCooks(e){for(let t of this.cookAborts)t.signal.aborted||t.abort(Error(e))}setCookState(e){this.cookState!==e&&(this.cookState=e,this.graph.scheduler.notifyNodeStateChange())}calculateInputHash(){return this.inputVersionKey()??this.inputs.map(e=>F(e.value)).join(`|`)}get isDirty(){return!this.hasExecuted||this.cookState!==`clean`||this.calculateInputHash()!==this.lastInputHash}get hasSettledFailure(){return this.cookState!==`error`||this.failedInputHash===null?!1:this.calculateInputHash()===this.failedInputHash}markDownstreamDirty(){this.graph.scheduler.markDownstreamStale(this)}async requestOutput(){this.isDirty&&(this.cookState===`clean`&&this.markDirty(),await this.graph.scheduler.flush())}setup(){}setFunction(e){this.nodeFunction=e,this.hasExecuted=!1,this.markDirty()}async execute(){if(!(this.nodeFunction||this.onCook!==e.prototype.onCook)){this.hasExecuted=!0,this.setCookState(`clean`);return}let t=!this.hasExecuted;if(!this.shouldExecute()&&!t&&!this.isDirty){this.executeBypass(),this.setCookState(`clean`);return}if(!t&&!this.isDirty)return;this.evaluateAllExpressions();let n=performance.now(),r=performance.memory?.usedJSHeapSize??0,i=this.cookGeneration,a=new Map;this.stagingStack.push(a);let o=new AbortController;this.cookAborts.add(o),this.setCookState(`cooking`);let s;try{if(await Promise.race([Promise.resolve(this.onCook()),new Promise((e,t)=>{s=setTimeout(()=>t(Error(`Node execution timeout after ${this.executionTimeout}ms`)),this.executionTimeout)})]),i===this.cookGeneration){await this.callLifecycleHooks(t);for(let[e,t]of a)this.commitOutputValue(e,t);for(let e of this.outputs)a.has(e)||this.bumpOutputVersion(e.id);this.cutoffKey=this.inputVersionKey(),this.selfDirty=!1,this.error=null,this.hasExecuted=!0,this.lastInputHash=this.cutoffKey??this.calculateInputHash(),this.failedInputHash=null;let n=this.finishParameterCarryOver();n&&e.onParametersRetargeted?.(this.id,n),this.setCookState(`clean`)}else this.setCookState(`stale`);this.updateCookInfo(n,r)}catch(e){let t=w(e);i===this.cookGeneration?(this.cutoffKey=null,this.error=t,this.failedInputHash=this.calculateInputHash(),this.setCookState(`error`)):this.setCookState(`stale`),this.updateCookInfo(n,r),t.message.includes(`timeout`)||i!==this.cookGeneration||console.error(`Error executing node ${this.id}: ${t.message}`,t)}finally{s!==void 0&&clearTimeout(s);let e=this.stagingStack.indexOf(a);e>=0&&this.stagingStack.splice(e,1),this.cookAborts.delete(o)}}onCook(){if(this.nodeFunction)return this.nodeFunction(this,this.graph)}updateCookInfo(e,t=0){let n=performance.now()-e;this.cookInfo.lastCookTime=n,this.cookInfo.totalCookTime+=n,this.cookInfo.cookCount++,this.cookInfo.averageCookTime=this.cookInfo.totalCookTime/this.cookInfo.cookCount,this.cookInfo.lastCookTimestamp=Date.now();let r=performance.memory?.usedJSHeapSize??0;if(t&&r){let e=r-t;e>this.cookInfo.peakMemory&&(this.cookInfo.peakMemory=e)}}startCook(){return performance.now()}endCook(e){this.updateCookInfo(e,0)}resetCookInfo(){this.cookInfo={lastCookTime:0,totalCookTime:0,cookCount:0,averageCookTime:0,lastCookTimestamp:0,peakMemory:0}}async callLifecycleHooks(e){let t=e=>{let t=e?.message||String(e);return t.includes(`document is not defined`)||t.includes(`window is not defined`)||t.includes(`HTMLCanvasElement`)||t.includes(`HTMLImageElement`)};if(e&&this.onSetup)try{await this.onSetup()}catch(e){t(e)||console.error(`Error in onSetup for ${this.id}:`,e)}if(this.onUpdate)try{await this.onUpdate()}catch(e){t(e)||console.error(`Error in onUpdate for ${this.id}:`,e)}if(this.onRender)try{await this.onRender()}catch(e){t(e)||console.error(`Error in onRender for ${this.id}:`,e)}if(e&&this.onReady)try{this.onReady()}catch(e){t(e)||console.error(`Error in onReady for ${this.id}:`,e)}}rename(e){if(!e?.trim())return this.id;let t=e.trim().replace(/\s+/g,``);if(!t)return this.id;let n=this.graph.generateUniqueNodeId(t,this.id);return this.graph.renameElement(this.id,n)&&this.markDirty(),this.id}isPreviewValue(e){return typeof HTMLCanvasElement<`u`&&e instanceof HTMLCanvasElement||typeof HTMLImageElement<`u`&&e instanceof HTMLImageElement}async require(e,t){if(!this.graph.packageManager)throw Error(`PackageManager not initialized`);return this.graph.packageManager.load(e,t)}get assets(){return this.graph.assetManager}log(...e){console.log(`[${this.id}]`,...e)}resetPortTracking(){this.portsUsedDuringSetup.clear()}preserveState(){return{inputs:this.inputs.map(e=>({id:e.id,name:e.name,value:e.value,connections:e.connections.map(e=>e.id)})),outputs:this.outputs.map(e=>({id:e.id,name:e.name,value:e.value,connections:e.connections.map(e=>e.id)})),props:Object.fromEntries(Object.entries(this.props).map(([e,t])=>[e,t.value])),bypass:this.bypass,cook:this.cook}}restoreState(e){e.inputs?.forEach(e=>{let t=this.inputs.find(t=>t.id===e.id||t.name===e.name);t&&(t.value=e.value)}),e.outputs?.forEach(e=>{let t=this.outputs.find(t=>t.id===e.id||t.name===e.name);t&&(t.value=e.value)}),e.props&&Object.entries(e.props).forEach(([e,t])=>{this.props[e]&&(this.props[e].value=t)}),e.bypass!==void 0&&this.setBypass(e.bypass),e.cook!==void 0&&this.setCook(e.cook)}cleanupUnusedPorts(){let e=this.portsUsedDuringSetup;this.inputs=this.inputs.filter(t=>e.has(`input_${t.name}`)?!0:(t.connections.forEach(e=>this.graph.disconnect(e.id)),this._portMap.delete(t.id),!1)),this.outputs=this.outputs.filter(t=>e.has(`output_${t.name}`)?!0:(t.connections.forEach(e=>this.graph.disconnect(e.id)),this._portMap.delete(t.id),!1)),this.portsUsedDuringSetup.clear()}toJSON(){let e=t(this.type),n={id:this.id,type:e,position:[this.position.x,this.position.y]};!r(e)&&this.code&&(n.code=this.code),this.comment?.trim()&&(n.comment=this.comment);let i=Object.fromEntries(Object.entries(this.props).map(([e,t])=>{let n=t.value;if(t.type===`color`&&d(n)){let e=c(n);n=[e.r,e.g,e.b,e.a??1]}return t.expression?[e,{value:n,expression:t.expression}]:[e,n]}));return Object.keys(i).length>0&&(n.props=i),this.bypass&&(n.bypass=!0),this.cook&&(n.cook=!0),n}};function W(e,t){return!e||!t||e===t}function G(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function K(e,t){if(!G(e))return e;let n={};for(let r of t)Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return Object.freeze(n)}function q(e,t){let n,r=1/0,i=e.toLowerCase();for(let e of t){let t=oe(i,e.toLowerCase());t<r&&(n=e,r=t)}if(n===void 0)return;let a=Math.max(1,Math.floor(Math.max(e.length,n.length)/3));return r<=a?n:void 0}function J(e,t,n){let r=q(e,t);return`${n} reads unknown bundle field "${e}"`+(r?` — did you mean "${r}"?`:``)+(t.length?` (fields: ${t.join(`, `)})`:` (the bundle declares no fields)`)}function ae(e,t){if(e==null)return null;if(!G(e))return`a bundle must be a plain object of fields`;if(!t)return null;let n=Object.keys(t);for(let r of Object.keys(e))if(!Object.prototype.hasOwnProperty.call(t,r)){let e=q(r,n);return`sets undeclared bundle field "${r}"`+(e?` — did you mean "${e}"?`:``)+` (declared: ${n.join(`, `)||`none`})`}return null}function oe(e,t){let n=Array.from({length:t.length+1},(e,t)=>t);for(let r=1;r<=e.length;r++){let i=n[0];n[0]=r;for(let a=1;a<=t.length;a++){let o=n[a];n[a]=Math.min(n[a]+1,n[a-1]+1,i+(e[r-1]===t[a-1]?0:1)),i=o}}return n[t.length]}var se=`\0host`,Y=`The gpu capability was used before its device was ready — the host must await ensure() before a cook.`,X=`The gpu capability has been disposed.`;function ce(e){return!!e&&typeof e.ensure==`function`&&typeof e.forNode==`function`&&typeof e.dispose==`function`}function le(e){let t=null,n=null,r=null,i=!1,a=new Map,o=new Set,s=[];function c(){let e=[],t=[...a.values()];a.clear();for(let n of t)for(let t of n.values())try{t.destroy?.(t.value)}catch(t){e.push(t)}return e}async function l(e,t){if(e.released)return[];e.released=!0;let n=[];if(t)try{e.device.destroy()}catch(e){n.push(e)}try{await e.release?.()}catch(e){n.push(e)}return n}function u(e){if(e.length===1)throw e[0];if(e.length>1){let t=Error(`GPU host cleanup failed`);throw Object.assign(t,{errors:e}),t}}function d(e){e.device.lost.then(()=>{if(i||t!==e)return;t=null,s.push(...c());let n=l(e,!1).then(e=>{s.push(...e)});o.add(n),n.finally(()=>o.delete(n))}).catch(()=>{})}async function f(){let n=await e.acquire(),r={device:n.device,info:{vendor:n.info?.vendor??``,architecture:n.info?.architecture??``,device:n.info?.device??``,description:n.info?.description??``},limits:Z(n.limits),release:n.release,released:!1};if(i)throw u(await l(r,!0)),Error(X);t=r,d(r)}let p={get device(){if(!t)throw Error(Y);return t.device},get adapterInfo(){if(!t)throw Error(Y);return t.info},get limits(){return t?.limits??{}},cache(e,t,n){return p.forNode(se).cache(e,t,n)},async ensure(){if(i)throw Error(X);if(!t){if(!n){let e=f().finally(()=>{n===e&&(n=null)});n=e}await n}},forNode(e){return{get device(){if(!t)throw Error(Y);return t.device},get adapterInfo(){if(!t)throw Error(Y);return t.info},get limits(){return t?.limits??{}},cache(n,r,i){if(!t)throw Error(Y);let o=a.get(e);o||(o=new Map,a.set(e,o));let s=o.get(n);if(s)return s.value;let c=r(t.device);return o.set(n,{value:c,destroy:i}),c}}},dispose(){return r??=m(),r}};async function m(){i=!0;let e=c(),r=n;if(r)try{await r}catch(t){t instanceof Error&&t.message===X||e.push(t)}let a=t;t=null,a&&e.push(...await l(a,!0)),await Promise.all([...o]),e.push(...s),s.length=0,u(e)}return p}async function ue(e){let t=Z(e.limits);try{return await e.requestDevice({requiredLimits:t})}catch{return e.requestDevice()}}function de(e,t,n){if(!t)return null;let r=[];for(let[e,i]of Object.entries(t)){let t=n.limits[e];t!==void 0&&(e.startsWith(`min`)?t<=i:t>=i)||r.push(`${e} ${i} (this GPU: ${t??`not reported`})`)}return r.length?`${e} needs GPU limits ${n.adapterInfo.description||n.adapterInfo.device||n.adapterInfo.vendor||`this adapter`} does not allow: ${r.join(`, `)}.`:null}function Z(e){if(!e||typeof e!=`object`)return{};let t=new Set(Object.keys(e));for(let n=Object.getPrototypeOf(e);n&&n!==Object.prototype;n=Object.getPrototypeOf(n))for(let e of Object.getOwnPropertyNames(n))e!==`constructor`&&t.add(e);let n={};for(let r of t){let t=e[r];typeof t==`number`&&(n[r]=t)}return n}function fe(e){let t=e?.seed;return typeof t==`number`&&Number.isInteger(t)?t>>>0:0}function pe(e,t){let n=`${e>>>0}:${t}`,r=2166136261;for(let e=0;e<n.length;e++)r^=n.charCodeAt(e),r=Math.imul(r,16777619);return r^=r>>>16,r=Math.imul(r,2246822507),r^=r>>>13,r=Math.imul(r,3266489909),r^=r>>>16,r>>>0}function me(e){let t=e>>>0;return()=>{t=t+1831565813>>>0;let e=t;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}}var he={report:()=>{}};function ge(e){return{...e.label?{label:e.label}:{},...e.expression?{defaultExpression:e.expression}:{},...e.action?{action:e.action}:{},...e.min===void 0?{}:{min:e.min},...e.max===void 0?{}:{max:e.max},...e.step===void 0?{}:{step:e.step},...e.options?{choices:e.options.map(e=>typeof e==`object`&&e&&`value`in e?{value:e.value,label:String(e.label??e.value),...e.disabled?{disabled:!0}:{}}:{value:e,label:String(e)})}:{},promotable:!1}}function Q(e){return e.type===`bundle`?{...e.schema?{schema:e.schema}:{},...Array.isArray(e.fields)?{fieldSelection:e.fields}:e.fields?{bundleFields:e.fields}:{}}:{}}function $(e,t,n){let r=t.definition,i=new Map,a=0,o=r.container;(o===`subnet`||o===`array`)&&(e.declaredContainer=o);for(let[t,n]of Object.entries(r.inputs??{})){if(n.kind===`trigger`){let r=e.in(t,void 0,{type:`any`,...n.description?{description:n.description}:{}});r.portType=`trigger`,r.onTrigger=async n=>{let r=a++;i.set(t,{id:`${e.id}:${r}`,runId:`studio:${e.id}:${r}`,sequence:r,...n===void 0?{}:{payload:n},source:{kind:`external`}}),e.markDirty(),await e.execute()};continue}if(n.variadic){e.setVariadic(void 0,{type:n.type});continue}e.in(t,n.default,{type:n.type,...n.min===void 0?{}:{min:n.min},...n.max===void 0?{}:{max:n.max},...n.step===void 0?{}:{step:n.step},...n.options?{choices:n.options.map(e=>({value:e,label:String(e)}))}:{},...n.description?{description:n.description}:{},...Q(n)})}for(let[t,n]of Object.entries(r.outputs??{}))e.out(t,n.kind===`trigger`?`trigger`:`param`,n.kind===`data`?{type:n.type,description:n.description,...Q(n)}:{description:n.description});for(let[t,n]of Object.entries(r.props??{})){let r=e.param(t,n.default,{type:n.type,...ge(n)});r.documentField=`props`}let s=Object.values(r.inputs??{}).some(e=>e.kind===`trigger`),c;return async()=>{if(s&&i.size===0)return;for(let e of r.capabilities??[])if(!n[e])throw Error(`${t.moduleId} requires the Studio ${e} capability`);let a=await(c??=t.loadExecute(`browser`)),o={};for(let[t,n]of Object.entries(r.inputs??{}))o[t]=n.kind===`trigger`?i.get(t):n.variadic?e.getVariadicInputs().map(e=>e.value??void 0):n.type===`bundle`&&n.fields?K(e.inputs.find(e=>e.name===t)?.value,n.fields):e.inputs.find(e=>e.name===t)?.value;i.clear();let l=Object.fromEntries(Object.entries(r.outputs??{}).map(([n,r])=>{let i=e.outputs.find(e=>e.name===n);if(!i)throw Error(`Missing output ${t.moduleId}.${n}`);return[n,r.kind===`trigger`?{trigger:e=>i.trigger(e)}:{set:t=>{if(r.type===`bundle`){let i=ae(t,r.fields);if(i)throw Error(`${e.id}.${n} ${i}`)}i.setValue(t)}}]})),u=n,d=(r.capabilities??[]).includes(`gpu`)&&ce(n.gpu)?n.gpu:null;if(d){await d.ensure();let t=d.forNode(e.id),i=de(e.id,r.gpuLimits,t);if(i)throw Error(i);u={...n,gpu:t}}let f=pe(fe({seed:e.documentSeed}),e.id);await a({nodeId:e.id,inputs:o,outputs:l,props:Object.fromEntries(e.parameters.map(e=>[e.name,e.value])),capabilities:u,signal:e.cookSignal??new AbortController().signal,progress:he,seed:f,random:me(f)})}}function _e(e,t,n){e.setFunction($(e,t,n))}function ve(t,r={}){let a=new Map;for(let e of t){let t=e.moduleId.split(`.`);if(t.length!==3||t[0]!==`cascade`)throw Error(`Studio built-ins require cascade.<library>.<node>: ${e.moduleId}`);let o=t[1],s=i(e.moduleId),c=a.get(o)??{};c[s]=class extends U{constructor(e,t){super(e,s,t)}setup(){_e(this,e,r)}},a.set(o,c),n({type:e.moduleId,name:e.definition.label??s,icon:e.definition.icon,description:e.definition.description,category:o})}for(let[t,n]of a)e(t,n)}export{W as a,T as c,d,c as f,ue as i,l,ve as n,J as o,le as r,U as s,$ as t,u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Dt as e,G as t,I as n,L as r,O as i,Ot as a,Q as o,U as s,V as c,W as l,Z as u,ct as d,dt as f,et as p,i as m,it as h,jt as g,l as _,lt as v,nt as y,ot as b,pt as x,r as ee,rt as S,st as te,vt as C,x as ne,yt as w,z as T}from"./legacy-CTEeXeqF.js";import{d as E,i as D,o as O,t as re}from"./nodeTypeUtils-BDJsc2Ks.js";import{t as ie}from"./geo-C4YngDob.js";import{t as k}from"./preload-helper-Czpn1I53.js";import{C as ae,H as A,K as j,O as M,Q as N,S as P,T as F,U as I,V as L,X as R,Y as z,dt as B,q as V,s as H,ut as oe,w as U}from"./index-BWnrmIB9.js";import{t as W}from"./assert-BO2_erPD.js";import{a as se,c as ce,d as le,f as ue,i as G,l as K,m as q,n as J,o as Y,p as de,r as fe,s as pe,t as me,u as he}from"./time-P_OiBhcf.js";import{i as ge,n as _e}from"./remap-5SjXQU-q.js";import{t as ve}from"./image-Ck-RdGU4.js";import{t as ye}from"./definitions-D0WOUJd7.js";var be=Object.freeze([Y,fe,G,le,ce,K,he,q,de,ge,_e,ue,me,J,se,pe]);new Map(be.map(e=>[e.moduleId,e]));var xe=`cascade.scene`;function X(e){return`${xe}.${e}`}var Se={apiVersion:1,label:`Scene`,description:`Geometry, a camera and lights, assembled into a scene. Attach anything to the input.`,icon:`Box`,runsOn:`portable`,inputs:{inputs:{kind:`data`,type:`any`,variadic:!0,description:`Geometry, one camera, and lights, in any order. Scenes are flattened.`}},outputs:{scene:{kind:`data`,type:`scene`}},props:{}};function Ce(e){let t=[],n=[],r=null,i=-1;e.inputs.inputs.forEach((e,a)=>{if(e!=null){if(R(e)){if(t.push(...e.geometry),n.push(...e.lights),e.camera!==null){if(r!==null)throw Error(`cascade.scene.Scene has two cameras, on inputs ${i} and ${a}. A scene has one viewpoint; remove one or use a Switch to choose between them.`);r=e.camera,i=a}return}if(N(e)){if(r!==null)throw Error(`cascade.scene.Scene has two cameras, on inputs ${i} and ${a}. A scene has one viewpoint; remove one or use a Switch to choose between them.`);r=e,i=a;return}if(z(e)){n.push(e);return}if(typeof e==`object`&&e.kind===`geometry`){t.push(e);return}throw Error(`cascade.scene.Scene input ${a} is not geometry, a camera, a light or a scene (received ${we(e)}). A scene can only hold those.`)}}),e.outputs.scene.set({geometry:t,camera:r,lights:n})}function we(e){if(Array.isArray(e))return`an array of ${e.length}`;if(typeof e==`object`&&e){let t=e.kind;return typeof t==`string`?`an object of kind "${t}"`:`an object`}return`a ${typeof e}`}var Te={apiVersion:1,label:`Light`,description:`A light, following Houdini's /obj/hlight. Nothing shades with lights yet — the viewport draws wireframe and points.`,icon:`Lightbulb`,runsOn:`portable`,inputs:{translate:{kind:`data`,type:`vec3`,default:[0,0,5],description:`World position. Ignored for a distant or ambient light.`},direction:{kind:`data`,type:`vec3`,default:[0,0,-1],description:`Direction the light points. Used by distant and spot.`},color:{kind:`data`,type:`color`,default:[1,1,1,1],description:`Houdini light_color.`},intensity:{kind:`data`,type:`float`,default:1,min:0,description:`Houdini light_intensity.`}},outputs:{light:{kind:`data`,type:`light`}},props:{type:{type:`string`,default:`point`,label:`Light Type`,control:`select`,options:[{value:`point`,label:`Point`},{value:`distant`,label:`Distant - directional`},{value:`ambient`,label:`Ambient`},{value:`spot`,label:`Spot`}],description:`Houdini light_type. Distant is what other renderers call directional.`},coneangle:{type:`float`,default:45,min:0,max:180,label:`Cone Angle`,description:`Degrees. Spot only.`}}};function Ee(e){let t=e.props.type;e.outputs.light.set({type:t===`distant`||t===`ambient`||t===`spot`?t:V.type,translate:e.inputs.translate??V.translate,direction:e.inputs.direction??V.direction,color:e.inputs.color??V.color,intensity:e.inputs.intensity??V.intensity,coneangle:e.props.coneangle})}var De={kind:`definition-v1`,moduleId:X(`Scene`),definition:Se,loadExecute:async()=>Ce},Z={kind:`definition-v1`,moduleId:X(`Light`),definition:Te,loadExecute:async()=>Ee},Oe=Object.freeze([De,Z]);Object.freeze([[X(`Scene`),Se],[X(`Light`),Te]]);var ke=Object.freeze([...be,...ie,...ye,...M,...Oe,...ve,...W]),Ae=new Map(ke.map(e=>[e.moduleId,e]));function je(e){return Ae.get(e)}var Q={core:`Cascade core`,library:`Cascade library`,project:`Project module`,embedded:`Embedded in the graph`,unknown:`Unknown`};function Me(e){return{moduleId:e,moduleFolder:null,origin:`unknown`,originLabel:Q.unknown,libraryId:null,path:null,pathNote:null,flavour:`unknown`,flavourNote:null,runsOn:null,runsOnNote:null,icon:null,iconNote:null,definition:null,inputs:[],outputs:[],props:[],hasLegacyExecute:null,warnings:[],error:null}}function Ne(e){let t=e.modulePath;return typeof t==`string`&&t?t:e.type.includes(`.`)?e.type:E(e.type)}function Pe(e){let t=e.sourceType;return typeof t==`string`&&t?t:null}function Fe(e,t){return e?Object.entries(e).map(([e,n])=>({name:e,kind:t?`prop`:typeof n?.kind==`string`?n.kind:`data`,type:typeof n?.type==`string`?n.type:null,...n&&`default`in n?{default:n.default}:{},...typeof n?.description==`string`?{description:n.description}:{}})):[]}function Ie(e,t){e.definition=t,e.flavour=`definition-v1`;let n=t;e.inputs=Fe(n.inputs,!1),e.outputs=Fe(n.outputs,!1),e.props=Fe(n.props,!0),typeof n.icon==`string`&&n.icon?(e.icon=n.icon,e.iconNote=null):(e.icon=null,e.iconNote=`The definition declares no icon; Cascade’s default is used.`),(n.runsOn===`portable`||n.runsOn===`server`||n.runsOn===`browser`)&&(e.runsOn=n.runsOn,e.runsOnNote=`Declared in the definition.`)}function Le(e){if(e.hasLegacyExecute===!1)return["The module exports a definition but no `execute`, so there is nothing to cook — in Studio or under `cascade run`. A definition-v1 node exports both."];if(!e.definition)return[];if(!L(e.definition))return["The `definition` export does not declare `apiVersion: 1`, so it is not a definition-v1 node. Studio calls this module as `execute(node, graph)`, and any ports it shows are the ones that call declares."];let t=A(e.definition);if(t)return[`Studio cannot build ports from this definition:\n${t}`];let n=I(e.definition);return n.length?[`The definition requires the ${n.join(`, `)} capability, which Studio does not supply. The cook fails here with that message; \`cascade run\` supplies it.`]:[]}var Re=new Map;async function ze(e){let t=Re.get(e);return t||(t=(async()=>{let t=await j(e),n=typeof document<`u`?URL.createObjectURL(new Blob([t],{type:`text/javascript`})):`data:text/javascript;base64,${btoa(t)}`;try{let e=await k(()=>import(n),[]);return{definition:e?.definition??null,hasExecute:typeof e?.execute==`function`}}finally{n.startsWith(`blob:`)&&URL.revokeObjectURL(n)}})(),Re.set(e,t),t)}function Be(e){Re.delete(e),Ve.delete(e),He.delete(e)}var Ve=new Map,He=new Map;H(Be);function Ue(e){let t=Ve.get(e);return t||(t=fetch(`/api/nodes/${encodeURIComponent(e)}/index.ts`).then(async e=>{if(!e.ok)throw Error(await e.text()||`source unavailable (${e.status})`);return e.text()}),Ve.set(e,t)),t}function We(e){let t=He.get(e);return t||(t=fetch(`/api/nodes/${encodeURIComponent(e)}/path`).then(async e=>e.ok?(await e.json())?.path??null:null).catch(()=>null),He.set(e,t)),t}function Ge(e){let t=/export\s+(?:const|let|var)\s+definition\b/.test(e)||/export\s*\{[^}]*\bdefinition\b[^}]*\}/.test(e),n=/export\s+(?:async\s+)?function\s+execute\b/.test(e)||/export\s+(?:const|let|var)\s+execute\b/.test(e)||/export\s*\{[^}]*\bexecute\b[^}]*\}/.test(e);return t?{flavour:`definition-v1`,hasLegacyExecute:n}:n?{flavour:`legacy-dynamic`,hasLegacyExecute:n}:{flavour:`unknown`,hasLegacyExecute:n}}async function Ke(e,t={},n={}){let r=Ne(e),i=Me(r),a=Pe(e);if(O(r)||a===`stdlib`){let e=re(r);i.libraryId=e,i.origin=e===`core`?`core`:`library`,i.originLabel=Q[i.origin],i.path=null,i.pathNote=`Compiled into Studio. No project path to resolve.`,i.runsOnNote=`The server reports runsOn for project modules only.`;let t=je(r);if(t)Ie(i,t.definition),i.hasLegacyExecute=!1,i.flavourNote=`Registered through the definition-v1 adapter (registerDefinitionNodes).`;else{i.flavour=`core-class`,i.flavourNote=`A Node subclass compiled into Studio — neither definition-v1 nor a dynamic module.`;let e=D(r);i.icon=e?.icon??null,i.iconNote=e?.icon?null:`No icon in the node metadata registry.`}return i}if(r.startsWith(`local.`)||a===`embedded`){if(i.origin=`embedded`,i.originLabel=Q.embedded,i.path=null,i.pathNote=`The code lives in the graph document, not in a file.`,i.runsOnNote=`Not reported: runsOn comes from the project server, which does not see embedded code.`,i.iconNote=`Embedded code declares no icon.`,e.code){let t=Ge(e.code);i.flavour=t.flavour,i.hasLegacyExecute=t.hasLegacyExecute,t.flavour===`definition-v1`&&!t.hasLegacyExecute&&i.warnings.push("The embedded code exports a definition but no `execute`, so there is nothing to cook. A definition-v1 node exports both."),t.flavour===`unknown`&&(i.flavourNote=`Neither a definition nor an execute export was found in the embedded code.`)}else i.flavourNote=`The node carries no code, so its flavour cannot be read.`;return i}if(r.startsWith(`project.`)||a===`project`){let e=U(r);if(i.origin=`project`,i.originLabel=Q.project,i.moduleFolder=e,!e)return i.error=`The module id carries no folder name.`,i;let a=t[e];a?(i.runsOn=a,i.runsOnNote=`From GET /api/nodes — declared, or inferred by the server when not declared.`):i.runsOnNote=`GET /api/nodes did not list this module. Either no server is serving this project, or it serves a different one.`;let o=n[e];o&&(i.icon=o),i.path=await We(e),i.path||(i.pathNote=`GET /api/nodes/<module>/path did not answer.`);try{let t=Ge(await Ue(e));i.flavour=t.flavour,i.hasLegacyExecute=t.hasLegacyExecute,t.flavour===`unknown`&&(i.flavourNote=`Neither a definition nor an execute export was found in index.ts.`)}catch(e){return i.error=String(e instanceof Error?e.message:e),i}if(i.flavour===`definition-v1`){try{let t=await ze(e);i.hasLegacyExecute=t.hasExecute,t.definition?(Ie(i,t.definition),a&&i.runsOn!==a&&i.warnings.push(`The definition declares runsOn "${i.runsOn}" but the server reports "${a}".`),o&&(i.icon=o)):i.flavourNote=`index.ts exports a definition, but the compiled module has no definition export to read.`}catch(e){i.error=String(e instanceof Error?e.message:e)}i.warnings.push(...Le(i))}return i}return i.error=`Unrecognised module id "${r}" — no origin could be determined from the document.`,i}var qe=t(`<div class="empty-state svelte-16oolky"><p class="svelte-16oolky">Select a node to see where it is defined</p></div>`),Je=t(`<div class="empty-state svelte-16oolky"><p class="svelte-16oolky">Reading the module…</p></div>`),Ye=t(`<span class="dim svelte-16oolky"> </span>`),Xe=t(`<span class="value mono wrap svelte-16oolky"> </span>`),Ze=t(`<span class="value unknown svelte-16oolky">unknown</span>`),$=t(`<p class="note svelte-16oolky"> </p>`),Qe=t(`<div class="info-row svelte-16oolky"><span class="label svelte-16oolky">API version</span> <span class="value svelte-16oolky"> </span></div>`),$e=t(`<span class="value svelte-16oolky"> </span>`),et=t(`<span class="value highlight svelte-16oolky"> </span>`),tt=t(`<span class="value mono svelte-16oolky"> </span>`),nt=t(`<span class="value dim svelte-16oolky">none</span>`),rt=t(`<div class="info-row svelte-16oolky"><span class="label svelte-16oolky">Declared label</span> <span class="value svelte-16oolky"> </span></div>`),it=t(`<section class="info-section svelte-16oolky"><h3 class="svelte-16oolky">Read failed</h3> <p class="failure mono svelte-16oolky"> </p></section>`),at=t(`<p class="warning svelte-16oolky"> </p>`),ot=t(`<span class="port-default mono svelte-16oolky"> </span>`),st=t(`<p class="port-description svelte-16oolky"> </p>`),ct=t(`<div class="port svelte-16oolky"><span class="port-name mono svelte-16oolky"> </span> <span class="port-type mono svelte-16oolky"> </span> <!> <!></div>`),lt=t(`<section class="info-section svelte-16oolky"><h3 class="svelte-16oolky"> </h3> <div class="port-list svelte-16oolky"></div></section>`),ut=t(`<p class="note standalone svelte-16oolky">A dynamic module declares nothing up front — its ports appear only once it has cooked, so what it takes and returns is in the Parameters panel rather than here. Definition-v1 declares its ports statically and reads them without running anything, which is why it is where Cascade is heading; Studio now cooks both styles, so this node can be converted whenever it suits.</p>`),dt=t(`<div class="info-sections svelte-16oolky"><section class="info-section svelte-16oolky"><h3 class="svelte-16oolky">Module</h3> <div class="info-grid svelte-16oolky"><div class="info-row svelte-16oolky"><span class="label svelte-16oolky">Node</span> <span class="value mono svelte-16oolky"> </span></div> <div class="info-row svelte-16oolky"><span class="label svelte-16oolky">Module id</span> <span class="value mono wrap svelte-16oolky"> </span></div> <div class="info-row svelte-16oolky"><span class="label svelte-16oolky">Defined in</span> <span class="value svelte-16oolky"> <!></span></div> <div class="info-row svelte-16oolky"><span class="label svelte-16oolky">Path</span> <!></div> <!></div></section> <section class="info-section svelte-16oolky"><h3 class="svelte-16oolky">Format</h3> <div class="info-grid svelte-16oolky"><div class="info-row svelte-16oolky"><span class="label svelte-16oolky">Flavour</span> <span> </span></div> <!> <div class="info-row svelte-16oolky"><span class="label svelte-16oolky">execute() export</span> <!></div> <div class="info-row svelte-16oolky"><span class="label svelte-16oolky">Runs on</span> <!></div> <div class="info-row svelte-16oolky"><span class="label svelte-16oolky">Declared icon</span> <!></div> <!></div> <!> <!> <!></section> <!> <!> <!> <section class="info-section svelte-16oolky"><h3 class="svelte-16oolky">Actions</h3> <div class="actions svelte-16oolky"><button class="action-btn svelte-16oolky" disabled="">Duplicate node</button> <button class="action-btn svelte-16oolky" disabled="">Retarget…</button></div> <p class="note svelte-16oolky"></p></section></div>`),ft=t(`<div class="definition-panel svelte-16oolky"><!></div>`);function pt(t,E){a(E,!1);let D=()=>w(oe,`$panelLockStore`,k),O=()=>w(B,`$sharedContextStore`,k),re=()=>w(F,`$runsOnByModule`,k),ie=()=>w(P,`$iconByModule`,k),[k,A]=C(),j=f(),M=f(),N=f(),I=m(E,`panelId`,8),L=m(E,`panelApi`,8),R=m(E,`graph`,12,void 0),z=m(E,`selectedNode`,12,null);ee(()=>{ae()});let V=f(null),H=f(!1),U=0;async function W(e){let t=++U;if(!e){x(V,null),x(H,!1);return}x(H,!0);let n=await Ke(e,re(),ie());t===U&&(x(V,n),x(H,!1))}let se={"definition-v1":`definition-v1`,"legacy-dynamic":`dynamic`,"core-class":`core class`,unknown:`Unknown`},ce={portable:`portable — either side`,server:`server`,browser:`browser`};function le(e){return e===void 0?``:typeof e==`string`?`"${e}"`:Array.isArray(e)?`[${e.join(`, `)}]`:typeof e==`object`&&e?JSON.stringify(e):String(e)}function ue(e){return e.kind===`trigger`?`trigger`:e.type??`unknown`}let G=`Not wired up yet. Graph.retargetDefinition can carry parameters across a swap, but nothing enumerates the versions to retarget to, and there is no parameter-preserving duplicate.`;y(()=>(D(),u(I())),()=>{x(j,D().get(I()))}),y(()=>o(j),()=>{x(M,o(j)?.isLocked??!1)}),y(()=>O(),()=>{O()&&(R(O().graph),z(O().selectedNode))}),y(()=>(o(M),o(j),u(z())),()=>{x(N,o(M)?o(j)?.lockedNode:z())}),y(()=>o(N),()=>{W(o(N))}),y(()=>(u(L()),o(M),o(N)),()=>{if(L()?.setTitle){let e=o(M)?`~ `:``;L().setTitle(o(N)?`${e}Definition: ${o(N).id}`:`${e}Definition`)}}),S(),_();var K=ft(),q=b(K),J=e=>{var t=qe();s(e,t)},Y=e=>{var t=Je();s(e,t)},de=e=>{var t=dt(),a=b(t),u=v(b(a),2),f=b(u),m=v(b(f),2),_=d(m,!0);g(f);var y=v(f,2),x=v(b(y),2),ee=d(x,!0);g(y);var S=v(y,2),C=v(b(S),2),w=b(C,!0),E=v(w),D=e=>{var t=Ye(),n=d(t);h(()=>c(n,`· ${o(V),p(()=>o(V).libraryId)??``}`)),s(e,t)};T(E,e=>{o(V),p(()=>o(V).libraryId)&&e(D)}),g(C),g(S);var O=v(S,2),re=v(b(O),2),ie=e=>{var t=Xe(),n=d(t,!0);h(()=>c(n,(o(V),p(()=>o(V).path)))),s(e,t)},k=e=>{var t=Ze();s(e,t)};T(re,e=>{o(V),p(()=>o(V).path)?e(ie):e(k,-1)}),g(O);var ae=v(O,2),A=e=>{var t=$(),n=d(t,!0);h(()=>c(n,(o(V),p(()=>o(V).pathNote)))),s(e,t)};T(ae,e=>{o(V),p(()=>!o(V).path&&o(V).pathNote)&&e(A)}),g(u),g(a);var j=v(a,2),M=v(b(j),2),P=b(M),F=v(b(P),2);let I;var L=d(F,!0);g(P);var R=v(P,2),z=e=>{var t=Qe(),n=v(b(t),2),r=d(n,!0);g(t),h(()=>c(r,(o(V),p(()=>o(V).definition.apiVersion)))),s(e,t)};T(R,e=>{o(V),p(()=>o(V).definition&&o(V).definition.apiVersion!==void 0)&&e(z)});var B=v(R,2),H=v(b(B),2),oe=e=>{var t=Ze();s(e,t)},U=e=>{var t=$e(),n=d(t,!0);h(()=>c(n,(o(V),p(()=>o(V).hasLegacyExecute?`yes`:`no`)))),s(e,t)};T(H,e=>{o(V),p(()=>o(V).hasLegacyExecute===null)?e(oe):e(U,-1)}),g(B);var W=v(B,2),K=v(b(W),2),q=e=>{var t=et(),n=d(t,!0);h(()=>c(n,(o(V),p(()=>ce[o(V).runsOn]??o(V).runsOn)))),s(e,t)},J=e=>{var t=Ze();s(e,t)};T(K,e=>{o(V),p(()=>o(V).runsOn)?e(q):e(J,-1)}),g(W);var Y=v(W,2),de=v(b(Y),2),fe=e=>{var t=tt(),n=d(t,!0);h(()=>c(n,(o(V),p(()=>o(V).icon)))),s(e,t)},pe=e=>{var t=nt();s(e,t)};T(de,e=>{o(V),p(()=>o(V).icon)?e(fe):e(pe,-1)}),g(Y);var me=v(Y,2),he=e=>{var t=rt(),n=v(b(t),2),r=d(n,!0);g(t),h(()=>c(r,(o(V),p(()=>o(V).definition.label)))),s(e,t)};T(me,e=>{o(V),p(()=>o(V).definition&&o(V).definition.label)&&e(he)}),g(M);var ge=v(M,2),_e=e=>{var t=$(),n=d(t,!0);h(()=>c(n,(o(V),p(()=>o(V).flavourNote)))),s(e,t)};T(ge,e=>{o(V),p(()=>o(V).flavourNote)&&e(_e)});var ve=v(ge,2),ye=e=>{var t=$(),n=d(t,!0);h(()=>c(n,(o(V),p(()=>o(V).runsOnNote)))),s(e,t)};T(ve,e=>{o(V),p(()=>o(V).runsOnNote&&!o(V).runsOn)&&e(ye)});var be=v(ve,2),xe=e=>{var t=$(),n=d(t,!0);h(()=>c(n,(o(V),p(()=>o(V).iconNote)))),s(e,t)};T(be,e=>{o(V),p(()=>o(V).iconNote&&!o(V).icon)&&e(xe)}),g(j);var X=v(j,2),Se=e=>{var t=it(),n=v(b(t),2),r=d(n,!0);g(t),h(()=>c(r,(o(V),p(()=>o(V).error)))),s(e,t)};T(X,e=>{o(V),p(()=>o(V).error)&&e(Se)});var Ce=v(X,2);n(Ce,1,()=>(o(V),p(()=>o(V).warnings)),r,(e,t)=>{var n=at(),r=d(n,!0);h(()=>c(r,o(t))),s(e,n)});var we=v(Ce,2),Te=e=>{var t=l(),i=te(t);n(i,1,()=>(o(V),p(()=>[{title:`Declared inputs`,ports:o(V).inputs,showDefault:!0},{title:`Declared outputs`,ports:o(V).outputs,showDefault:!1},{title:`Declared props`,ports:o(V).props,showDefault:!0}])),r,(e,t)=>{var i=l(),a=te(i),u=e=>{var i=lt(),a=b(i),l=d(a,!0),u=v(a,2);n(u,5,()=>(o(t),p(()=>o(t).ports)),r,(e,n)=>{var r=ct(),i=b(r),a=d(i,!0),l=v(i,2),u=d(l,!0),f=v(l,2),m=e=>{var t=ot(),r=d(t);h(e=>c(r,`= ${e??``}`),[()=>(o(n),p(()=>le(o(n).default)))]),s(e,t)};T(f,e=>{o(t),o(n),p(()=>o(t).showDefault&&o(n).default!==void 0)&&e(m)});var _=v(f,2),y=e=>{var t=st(),r=d(t,!0);h(()=>c(r,(o(n),p(()=>o(n).description)))),s(e,t)};T(_,e=>{o(n),p(()=>o(n).description)&&e(y)}),g(r),h(e=>{c(a,(o(n),p(()=>o(n).name))),c(u,e)},[()=>(o(n),p(()=>ue(o(n))))]),s(e,r)}),g(u),g(i),h(()=>c(l,(o(t),p(()=>o(t).title)))),s(e,i)};T(a,e=>{o(t),p(()=>o(t).ports.length)&&e(u)}),s(e,i)}),s(e,t)},Ee=e=>{var t=ut();s(e,t)};T(we,e=>{o(V),p(()=>o(V).definition)?e(Te):(o(V),p(()=>o(V).flavour===`legacy-dynamic`)&&e(Ee,1))});var De=v(we,2),Z=v(b(De),2),Oe=b(Z);ne(Oe,`title`,G);var ke=v(Oe,2);ne(ke,`title`,G),g(Z);var Ae=v(Z,2);Ae.textContent=`Not wired up yet. Graph.retargetDefinition can carry parameters across a swap, but nothing enumerates the versions to retarget to, and there is no parameter-preserving duplicate.`,g(De),g(t),h(()=>{c(_,(o(N),p(()=>o(N).id))),c(ee,(o(V),p(()=>o(V).moduleId))),c(w,(o(V),p(()=>o(V).originLabel))),I=i(F,1,`value svelte-16oolky`,null,I,{unknown:o(V).flavour===`unknown`}),c(L,(o(V),p(()=>se[o(V).flavour]??o(V).flavour)))}),s(e,t)};T(q,e=>{o(N)?o(H)&&!o(V)?e(Y,1):o(V)&&e(de,2):e(J)}),g(K),s(t,K),e(),A()}export{pt as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.definition-panel.svelte-16oolky{background:var(--surface-void);width:100%;height:100%;color:var(--text-primary);font-size:12px;overflow-y:auto}.info-sections.svelte-16oolky{flex-direction:column;gap:16px;padding:12px;display:flex}.info-section.svelte-16oolky{background:var(--surface-void);border-radius:6px;padding:12px}.info-section.svelte-16oolky h3:where(.svelte-16oolky){text-transform:uppercase;letter-spacing:.5px;color:var(--text-subtle);border-bottom:1px solid var(--border-faint);margin:0 0 10px;padding-bottom:6px;font-size:11px;font-weight:600}.info-grid.svelte-16oolky{flex-direction:column;gap:6px;display:flex}.info-row.svelte-16oolky{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.label.svelte-16oolky{color:var(--text-faint);flex:none;font-size:11px}.value.svelte-16oolky{color:var(--text-secondary);text-align:right}.value.mono.svelte-16oolky{font-family:SF Mono,Monaco,Cascadia Code,monospace;font-size:11px}.value.wrap.svelte-16oolky{word-break:break-all;text-align:right}.value.highlight.svelte-16oolky{color:var(--accent-lighter);font-weight:500}.value.unknown.svelte-16oolky{color:var(--text-disabled);font-style:italic}.value.dim.svelte-16oolky,.dim.svelte-16oolky{color:var(--text-faint)}.note.svelte-16oolky{color:var(--text-faint);margin:8px 0 0;font-size:11px;line-height:1.45}.note.standalone.svelte-16oolky{margin:0 12px}.failure.svelte-16oolky{color:var(--status-error);white-space:pre-wrap;word-break:break-word;margin:0;font-size:11px}.warning.svelte-16oolky{background:var(--status-warn-tint);border:1px solid var(--status-warn-tint-strong);color:var(--status-warn-soft);border-radius:4px;margin:0;padding:8px 10px;font-size:11px;line-height:1.45}.port-list.svelte-16oolky{flex-direction:column;gap:8px;display:flex}.port.svelte-16oolky{flex-wrap:wrap;align-items:baseline;gap:6px;display:flex}.port-name.svelte-16oolky{color:var(--text-secondary);font-family:SF Mono,Monaco,Cascadia Code,monospace;font-size:11px}.port-type.svelte-16oolky{color:var(--accent-light);background:var(--accent-tint-weak);border-radius:3px;padding:1px 5px;font-family:SF Mono,Monaco,Cascadia Code,monospace;font-size:10px}.port-default.svelte-16oolky{color:var(--text-faint);font-family:SF Mono,Monaco,Cascadia Code,monospace;font-size:10px}.port-description.svelte-16oolky{color:var(--text-faint);flex:1 0 100%;margin:0;font-size:10px;line-height:1.4}.actions.svelte-16oolky{gap:6px;display:flex}.action-btn.svelte-16oolky{background:var(--surface-control);border:1px solid var(--border-faint);color:var(--text-subtle);cursor:pointer;border-radius:3px;padding:4px 8px;font-size:11px}.action-btn.svelte-16oolky:disabled{color:var(--text-disabled);cursor:not-allowed}.empty-state.svelte-16oolky{height:100%;color:var(--text-disabled);justify-content:center;align-items:center;display:flex}.empty-state.svelte-16oolky p:where(.svelte-16oolky){text-align:center;margin:0;padding:0 16px;font-size:13px}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Dt as e,G as t,I as n,O as r,Ot as i,Q as a,U as o,V as s,W as c,X as l,Z as u,at as d,ct as f,d as p,dt as m,et as h,i as g,it as _,jt as v,l as y,lt as b,nt as x,ot as S,pt as C,rt as w,st as T,t as E,x as D,z as O}from"./legacy-CTEeXeqF.js";import{st as k}from"./index-BWnrmIB9.js";var A=t(`<p class="root svelte-1j8ra8p"> </p>`),j=t(`<p class="note svelte-1j8ra8p">Loading…</p>`),M=t(`<p class="note error svelte-1j8ra8p"> </p>`),N=t(`<p class="note svelte-1j8ra8p">No <code>.cascade</code> files at the project root.</p>`),P=t(`<span class="tag svelte-1j8ra8p">open</span>`),F=t(`<li><button><span class="name"> </span> <!></button></li>`),I=t(`<ul class="graphs svelte-1j8ra8p"></ul>`),L=t(`<div class="dialog-overlay svelte-1j8ra8p"><div class="dialog svelte-1j8ra8p" role="dialog" aria-modal="true" aria-labelledby="open-graph-title"><div class="dialog-header svelte-1j8ra8p"><h2 id="open-graph-title" class="svelte-1j8ra8p">Open graph</h2> <button class="close-button svelte-1j8ra8p" aria-label="Close"><!></button></div> <!> <div class="body svelte-1j8ra8p"><!></div> <div class="dialog-footer svelte-1j8ra8p"><button class="secondary svelte-1j8ra8p">Open from this computer…</button></div></div></div>`);function R(t,R){i(R,!1);let z=g(R,`open`,8,!1),B=g(R,`current`,8,null),V=E(),H=m([]),U=m(``),W=m(!1),G=m(null);async function K(){C(W,!0),C(G,null);try{let e=await fetch(`/api/graph`);if(!e.ok)throw Error(await e.text());let t=await e.json();C(H,Array.isArray(t.graphs)?t.graphs:[]),C(U,typeof t.root==`string`?t.root:``)}catch(e){C(G,e instanceof Error?e.message:String(e)),C(H,[])}finally{C(W,!1)}}function q(e){V(`choose`,{filename:e})}function J(){V(`close`)}function Y(e){e.key===`Escape`&&J()}x(()=>u(z()),()=>{z()&&K()}),w(),y();var X=c();l(`keydown`,d,Y);var Z=T(X),Q=e=>{var t=L(),i=S(t),c=S(i),u=b(S(c),2),d=S(u);k(d,{size:16}),v(u),v(c);var m=b(c,2),g=e=>{var t=A(),n=f(t,!0);_(()=>{D(t,`title`,a(U)),s(n,a(U))}),o(e,t)};O(m,e=>{a(U)&&e(g)});var y=b(m,2),x=S(y),C=e=>{var t=j();o(e,t)},w=e=>{var t=M(),n=f(t);_(()=>s(n,`No project on this server — ${a(G)??``}`)),o(e,t)},T=e=>{var t=N();o(e,t)},E=e=>{var t=I();n(t,5,()=>a(H),e=>e,(e,t)=>{var n=F(),i=S(n);let c;var u=S(i),d=f(u,!0),p=b(u,2),m=e=>{var t=P();o(e,t)};O(p,e=>{a(t)===B()&&e(m)}),v(i),v(n),_(()=>{c=r(i,1,`graph svelte-1j8ra8p`,null,c,{current:a(t)===B()}),s(d,a(t))}),l(`click`,i,()=>q(a(t))),o(e,n)}),v(t),o(e,t)};O(x,e=>{a(W)?e(C):a(G)?e(w,1):(a(H),h(()=>a(H).length===0)?e(T,2):e(E,-1))}),v(y);var R=b(y,2),z=f(R);v(i),v(t),l(`click`,u,J),l(`click`,z,()=>V(`local`)),l(`click`,t,p(J)),o(e,t)};O(Z,e=>{z()&&e(Q)}),o(t,X),e()}export{R as default};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{At as e,C as t,Dt as n,G as r,I as i,L as a,O as o,Ot as s,Q as c,U as l,V as u,W as d,X as f,Z as p,_t as m,a as h,at as g,b as _,ct as v,d as ee,dt as y,et as b,i as te,it as ne,jt as x,l as S,lt as C,nt as w,o as T,ot as E,pt as D,rt as re,st as ie,t as O,v as k,z as A}from"./legacy-CTEeXeqF.js";import{b as j,ct as ae,it as oe,l as se,lt as M,ot as ce,st as le,x as N}from"./index-BWnrmIB9.js";var P=new Set([`$$slots`,`$$events`,`$$legacy`]);function ue(e,t){let n=h(t,P),r=[[`path`,{d:`M10 11v6`}],[`path`,{d:`M14 11v6`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`}],[`path`,{d:`M3 6h18`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`}]];M(e,T({name:`trash-2`},()=>n,{get iconNode(){return r}}))}var de=r(`<span> </span>`),fe=r(`<div class="credentials-status svelte-9d4ggp"><!> <small class="svelte-9d4ggp">Add missing values to <code>~/.cascade/credentials.yaml</code> or the file named by <code>CASCADE_CREDENTIALS</code>. Values are never shown here.</small></div>`),pe=r(`<div class="empty-state svelte-9d4ggp"><!> <p class="svelte-9d4ggp">No project packages configured</p> <button class="add-button svelte-9d4ggp"><!> Add Package</button></div>`),me=r(`<div class="package-item svelte-9d4ggp"><div class="package-info svelte-9d4ggp"><span class="package-alias svelte-9d4ggp"> </span> <span class="package-path svelte-9d4ggp"> </span></div> <button class="remove-button svelte-9d4ggp" aria-label="Remove package"><!></button></div>`),he=r(`<button class="add-button secondary svelte-9d4ggp"><!> Add Package</button>`),ge=r(`<div class="packages-list svelte-9d4ggp"></div> <!>`,1),_e=r(`<div class="error-message svelte-9d4ggp"><!> </div>`),ve=r(`<div class="add-form svelte-9d4ggp"><div class="form-row svelte-9d4ggp"><label for="package-path" class="svelte-9d4ggp">Path</label> <div class="input-with-button svelte-9d4ggp"><input id="package-path" type="text" placeholder="./src or ../shared-lib" class="svelte-9d4ggp"/> <button class="browse-button svelte-9d4ggp" title="Browse folder"><!></button></div></div> <div class="form-row svelte-9d4ggp"><label for="package-alias" class="svelte-9d4ggp">Alias</label> <input id="package-alias" type="text" placeholder="myproject" class="svelte-9d4ggp"/></div> <!> <div class="form-actions svelte-9d4ggp"><button class="cancel-button svelte-9d4ggp">Cancel</button> <button class="confirm-button svelte-9d4ggp">Add Package</button></div></div>`),ye=r(`<div class="modal-overlay svelte-9d4ggp"><div class="modal svelte-9d4ggp" role="dialog" aria-modal="true" aria-labelledby="modal-title"><div class="modal-header svelte-9d4ggp"><h2 id="modal-title" class="svelte-9d4ggp"><!> Project Settings</h2> <button class="close-button svelte-9d4ggp" aria-label="Close"><!></button></div> <div class="modal-body svelte-9d4ggp"><section class="section svelte-9d4ggp"><h3 class="svelte-9d4ggp">Graph Metadata <small class="svelte-9d4ggp">(current .cascade file)</small></h3> <div class="form-row svelte-9d4ggp"><label for="graph-name" class="svelte-9d4ggp">Name</label><input id="graph-name" class="svelte-9d4ggp"/></div> <div class="form-row svelte-9d4ggp"><label for="graph-description" class="svelte-9d4ggp">Description</label><input id="graph-description" class="svelte-9d4ggp"/></div> <div class="form-row svelte-9d4ggp"><label for="graph-author" class="svelte-9d4ggp">Author</label><input id="graph-author" class="svelte-9d4ggp"/></div> <div class="form-row svelte-9d4ggp"><label for="graph-created" class="svelte-9d4ggp">Created</label><input id="graph-created" readonly="" class="svelte-9d4ggp"/></div></section> <section class="section svelte-9d4ggp"><h3 class="svelte-9d4ggp">Project Manifest <small class="svelte-9d4ggp">(cascade.json, shared by every graph)</small></h3> <div class="form-row svelte-9d4ggp"><label for="project-name" class="svelte-9d4ggp">Project name</label><input id="project-name" class="svelte-9d4ggp"/></div> <div class="form-row svelte-9d4ggp"><label for="commands-json" class="svelte-9d4ggp">Allowed commands</label><textarea id="commands-json" rows="4" class="svelte-9d4ggp"></textarea></div> <div class="form-row svelte-9d4ggp"><label for="settings-json" class="svelte-9d4ggp">Node settings</label><textarea id="settings-json" rows="5" class="svelte-9d4ggp"></textarea></div> <div class="form-row svelte-9d4ggp"><label for="credentials-list" class="svelte-9d4ggp">Required credentials</label><textarea id="credentials-list" rows="3" placeholder="one credential name per line" class="svelte-9d4ggp"></textarea></div> <!></section> <section class="section svelte-9d4ggp"><h3 class="svelte-9d4ggp">Project Packages</h3> <p class="section-description svelte-9d4ggp">Add local folders as packages. Each package gets an alias that you can use to import modules. <br/> Example: <code class="svelte-9d4ggp">myproject.filters.Blur</code> for file <code class="svelte-9d4ggp">./src/filters/Blur.ts</code></p> <!> <!></section> <section class="section svelte-9d4ggp"><h3 class="svelte-9d4ggp">Project Info</h3> <div class="info-grid svelte-9d4ggp"><div class="info-item svelte-9d4ggp"><span class="info-label svelte-9d4ggp">Embedded Modules</span> <span class="info-value svelte-9d4ggp"> </span></div> <div class="info-item svelte-9d4ggp"><span class="info-label svelte-9d4ggp">External Modules</span> <span class="info-value svelte-9d4ggp"> </span></div></div></section></div> <div class="modal-footer svelte-9d4ggp"><button class="cancel-button svelte-9d4ggp">Cancel</button> <button class="save-button svelte-9d4ggp">Save Changes</button></div></div></div>`);function F(r,h){s(h,!1);let T=te(h,`open`,12,!1),M=te(h,`graph`,12,void 0),P=O(),F=y([]),I=y(``),L=y(``),R=y(!1),z=y(``),B=y(``),V=y(``),H=y(``),U=y(``),W=y(`{}`),G=y(`{}`),K=y(``),q=y([]),J=y(!1),Y=y(!1);function X(){T(!1),P(`close`)}async function be(){D(z,``);let e,t;try{if(e=JSON.parse(c(W)||`{}`),t=JSON.parse(c(G)||`{}`),c(Y)){let n=await N({name:c(U).trim(),commands:e,settings:t,credentials:c(K).split(/\r?\n|,/).map(e=>e.trim()).filter(Boolean)});D(q,n.requiredCredentials)}}catch(e){D(z,e instanceof Error?e.message:String(e));return}M()&&(M(M().project.name=c(B).trim(),!0),M(M().project.description=c(V).trim(),!0),M(M().project.author=c(H).trim(),!0),M(M().project.packages=[...c(F)],!0),c(F).forEach(e=>{M().moduleResolver.addProjectPackage(e)})),P(`save`,{packages:[...c(F)],graphName:c(B).trim(),projectName:c(U).trim(),missingCredentials:c(q).filter(e=>!e.set).map(e=>e.name)}),X()}function xe(){if(D(z,``),!c(I).trim()){D(z,`Path is required`);return}if(!c(L).trim()){D(z,`Alias is required`);return}if(!/^[a-zA-Z][a-zA-Z0-9_]*$/.test(c(L))){D(z,`Alias must start with a letter and contain only letters, numbers, and underscores`);return}if(c(F).some(e=>e.alias===c(L))){D(z,`Alias "${c(L)}" already exists`);return}D(F,[...c(F),{path:c(I).trim(),alias:c(L).trim()}]),D(I,``),D(L,``),D(R,!1)}function Se(e){D(F,c(F).filter((t,n)=>n!==e))}function Z(e){e.key===`Escape`&&(c(R)?D(R,!1):X())}function Q(e){let t=e.replace(/\\/g,`/`).split(`/`).filter(Boolean);return(t[t.length-1]||`mypackage`).replace(/[^a-zA-Z0-9]/g,``).toLowerCase()||`mypackage`}w(()=>(p(T()),p(M())),()=>{T()&&M()&&(D(F,[...M().project.packages]),D(R,!1),D(z,``),D(I,``),D(L,``))}),w(()=>p(T()),()=>{T()||D(J,!1)}),w(()=>(p(T()),p(M()),c(J),j),()=>{T()&&M()&&!c(J)&&(D(J,!0),D(B,M().project.name??``),D(V,M().project.description??``),D(H,M().project.author??``),j().then(e=>{D(Y,!0),D(U,e.manifest.name),D(W,JSON.stringify(e.manifest.commands,null,2)),D(G,JSON.stringify(e.manifest.settings,null,2)),D(K,e.manifest.credentials.join(`
|
|
2
|
+
`)),D(q,e.requiredCredentials)}).catch(()=>{D(Y,!1)}))}),w(()=>(c(I),c(L)),()=>{c(I)&&!c(L)&&D(L,Q(c(I)))}),re(),S();var $=d();f(`keydown`,g,Z);var Ce=ie($),we=n=>{var r=ye(),s=E(r),d=E(s),h=E(d),g=E(h);oe(g,{size:20}),e(),x(h);var y=C(h,2),te=E(y);le(te,{size:20}),x(y),x(d);var S=C(d,2),w=E(S),T=C(E(w),2),re=C(E(T));_(re),x(T);var O=C(T,2),j=C(E(O));_(j),x(O);var N=C(O,2),P=C(E(N));_(P),x(N);var J=C(N,2),Y=C(E(J));_(Y),x(J),x(w);var Z=C(w,2),Q=C(E(Z),2),$=C(E(Q));_($),x(Q);var Ce=C(Q,2),we=C(E(Ce));m(we),x(Ce);var Te=C(Ce,2),Ee=C(E(Te));m(Ee),x(Te);var De=C(Te,2),Oe=C(E(De));m(Oe),x(De);var ke=C(De,2),Ae=t=>{var n=fe(),r=E(n);i(r,1,()=>c(q),a,(e,t)=>{var n=de();let r;var i=v(n);ne(()=>{r=o(n,1,`svelte-9d4ggp`,null,r,{set:c(t).set}),u(i,`${c(t),b(()=>c(t).name)??``}: ${c(t),b(()=>c(t).set?`set`:`not set`)??``}`)}),l(e,n)}),e(2),x(n),l(t,n)};A(ke,e=>{c(q),b(()=>c(q).length)&&e(Ae)}),x(Z);var je=C(Z,2),Me=C(E(je),4),Ne=t=>{var n=pe(),r=E(n);ce(r,{size:32});var i=C(r,4),a=E(i);ae(a,{size:16}),e(),x(i),x(n),f(`click`,i,()=>D(R,!0)),l(t,n)},Pe=t=>{var n=ge(),r=ie(n);i(r,5,()=>c(F),a,(e,t,n)=>{var r=me(),i=E(r),a=E(i),o=v(a,!0),s=C(a,2),d=v(s,!0);x(i);var p=C(i,2);ue(E(p),{size:16}),x(p),x(r),ne(()=>{u(o,(c(t),b(()=>c(t).alias))),u(d,(c(t),b(()=>c(t).path)))}),f(`click`,p,()=>Se(n)),l(e,r)}),x(r);var o=C(r,2),s=t=>{var n=he(),r=E(n);ae(r,{size:16}),e(),x(n),f(`click`,n,()=>D(R,!0)),l(t,n)};A(o,e=>{c(R)||e(s)}),l(t,n)};A(Me,e=>{c(F),c(R),b(()=>c(F).length===0&&!c(R))?e(Ne):e(Pe,-1)});var Fe=C(Me,2),Ie=e=>{var t=ve(),n=E(t),r=C(E(n),2),i=E(r);_(i);var a=C(i,2),o=E(a);ce(o,{size:16}),x(a),x(r),x(n);var s=C(n,2),d=C(E(s),2);_(d),x(s);var p=C(s,2),m=e=>{var t=_e(),n=E(t);se(n,{size:14});var r=C(n);x(t),ne(()=>u(r,` ${c(z)??``}`)),l(e,t)};A(p,e=>{c(z)&&e(m)});var h=C(p,2),g=E(h),v=C(g,2);x(h),x(t),k(i,()=>c(I),e=>D(I,e)),k(d,()=>c(L),e=>D(L,e)),f(`click`,g,()=>D(R,!1)),f(`click`,v,xe),l(e,t)};A(Fe,e=>{c(R)&&e(Ie)}),x(je);var Le=C(je,2),Re=C(E(Le),2),ze=E(Re),Be=C(E(ze),2),Ve=v(Be,!0);x(ze);var He=C(ze,2),Ue=C(E(He),2),We=v(Ue,!0);x(He),x(Re),x(Le),x(S);var Ge=C(S,2),Ke=E(Ge),qe=C(Ke,2);x(Ge),x(s),x(r),ne((e,n)=>{t(Y,(p(M()),b(()=>M()?.created??``))),u(Ve,e),u(We,n)},[()=>(p(M()),b(()=>M()?Object.keys(M().moduleResolver.exportConfig().embeddedModules).length:0)),()=>(p(M()),b(()=>M()?Object.keys(M().moduleResolver.exportConfig().externalModules).length:0))]),f(`click`,y,X),k(re,()=>c(B),e=>D(B,e)),k(j,()=>c(V),e=>D(V,e)),k(P,()=>c(H),e=>D(H,e)),k($,()=>c(U),e=>D(U,e)),k(we,()=>c(W),e=>D(W,e)),k(Ee,()=>c(G),e=>D(G,e)),k(Oe,()=>c(K),e=>D(K,e)),f(`click`,Ke,X),f(`click`,qe,be),f(`click`,r,ee(X)),l(n,r)};A(Ce,e=>{T()&&e(we)}),l(r,$),n()}export{F as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Dt as e,G as t,I as n,L as r,O as i,Ot as a,Q as o,U as s,V as c,W as l,X as u,Z as d,at as f,b as p,ct as m,dt as h,et as g,ft as _,i as v,it as y,jt as b,l as x,lt as S,nt as C,ot as w,p as T,pt as E,rt as D,st as O,t as k,v as A,vt as j,x as M,yt as N,z as P}from"./legacy-CTEeXeqF.js";import{i as F,n as I,r as L}from"./index-
|
|
1
|
+
import{Dt as e,G as t,I as n,L as r,O as i,Ot as a,Q as o,U as s,V as c,W as l,X as u,Z as d,at as f,b as p,ct as m,dt as h,et as g,ft as _,i as v,it as y,jt as b,l as x,lt as S,nt as C,ot as w,p as T,pt as E,rt as D,st as O,t as k,v as A,vt as j,x as M,yt as N,z as P}from"./legacy-CTEeXeqF.js";import{i as F,n as I,r as L}from"./index-BWnrmIB9.js";var R=t(`<button type="button" role="radio"> </button>`),z=t(`<div class="overlay svelte-4828wi"><div class="dialog svelte-4828wi"><header class="svelte-4828wi"><h2 class="svelte-4828wi">Settings</h2> <button class="icon-button svelte-4828wi" aria-label="Close settings">×</button></header> <main class="svelte-4828wi"><h3 class="svelte-4828wi">Appearance</h3> <div class="setting-row svelte-4828wi"><span class="setting-label svelte-4828wi" id="theme-label">Theme</span> <div class="segmented svelte-4828wi" role="radiogroup" aria-labelledby="theme-label"></div></div> <h3 class="section svelte-4828wi">Editor</h3> <div class="setting-row svelte-4828wi"><label for="font-size">Font size</label> <input id="font-size" type="range" min="10" max="24" step="1"/> <output class="svelte-4828wi"> </output></div></main> <footer class="svelte-4828wi"><button class="svelte-4828wi">Cancel</button> <button class="primary svelte-4828wi">Save</button></footer></div></div>`);function B(t,B){a(B,!1);let V=()=>N(L,`$settingsStore`,H),[H,U]=j(),W={auto:`Auto`,dark:`Dark`,light:`Light`},G=v(B,`open`,12,!1),K=k(),q=h(),J=h(),Y=h(!1);function X(){G(!1),K(`close`)}function Z(){I(o(q)),X()}C(()=>(d(G()),o(Y),V()),()=>{G()&&!o(Y)?(E(Y,!0),E(q,structuredClone(V()))):!G()&&o(Y)&&E(Y,!1)}),D(),x();var Q=l();u(`keydown`,f,e=>e.key===`Escape`&&X()),u(`mousedown`,f,e=>G()&&e.target===o(J)&&X());var $=O(Q),ee=e=>{var t=z(),a=w(t),l=w(a),d=S(w(l),2);b(l);var f=S(l,2),h=S(w(f),2),v=S(w(h),2);n(v,5,()=>F,r,(e,t)=>{var n=R();let r;var a=m(n,!0);y(()=>{M(n,`aria-checked`,(o(q),o(t),g(()=>o(q).appearance.theme===o(t)))),r=i(n,1,`svelte-4828wi`,null,r,{selected:o(q).appearance.theme===o(t)}),c(a,(o(t),g(()=>W[o(t)])))}),u(`click`,n,()=>_(q,o(q).appearance.theme=o(t))),s(e,n)}),b(v),b(h);var x=S(h,4),C=S(w(x),2);p(C);var D=S(C,2),O=m(D);b(x),b(f);var k=S(f,2),j=w(k),N=S(j,2);b(k),b(a),b(t),T(t,e=>E(J,e),()=>o(J)),y(()=>c(O,`${o(q),g(()=>o(q).editor.fontSize)??``}px`)),u(`click`,d,X),A(C,()=>o(q).editor.fontSize,e=>_(q,o(q).editor.fontSize=e)),u(`click`,j,X),u(`click`,N,Z),s(e,t)};P($,e=>{G()&&e(ee)}),s(t,Q),e(),U()}export{B as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.timeline-panel.svelte-8qazfw{background:var(--surface-panel);height:100%;color:var(--text-primary);flex-direction:column;font-size:11px;display:flex;overflow:hidden}.transport.svelte-8qazfw{background:var(--surface-panel-alt);border-bottom:1px solid var(--border-subtle);flex:none;align-items:center;gap:6px;padding:4px 6px;display:flex}.tbtn.svelte-8qazfw{background:var(--surface-control);color:var(--text-secondary);border:1px solid var(--border-subtle);cursor:pointer;border-radius:3px;width:24px;height:22px;line-height:1}.tbtn.svelte-8qazfw:hover{background:var(--surface-control-hover);color:var(--text-bright)}.tbtn.play.active.svelte-8qazfw{background:var(--accent-tint-medium);border-color:var(--accent);color:var(--accent-light)}.field.svelte-8qazfw{color:var(--text-subtle);align-items:center;gap:4px;display:flex}.field.svelte-8qazfw span:where(.svelte-8qazfw){text-transform:uppercase;letter-spacing:.04em;font-size:9px}.field.svelte-8qazfw input:where(.svelte-8qazfw){background:var(--surface-input);border:1px solid var(--border-subtle);width:54px;color:var(--text-primary);border-radius:3px;padding:2px 4px;font-size:11px}.toggle.svelte-8qazfw{color:var(--text-subtle);text-transform:uppercase;align-items:center;gap:4px;font-size:9px;display:flex}.spacer.svelte-8qazfw{flex:auto}.note.svelte-8qazfw{color:var(--text-faint);font-size:10px}.note.warn.svelte-8qazfw{color:var(--status-warn)}.ruler-row.svelte-8qazfw{border-bottom:1px solid var(--border-subtle);flex:none;display:flex}.gutter.svelte-8qazfw{border-right:1px solid var(--border-subtle);background:var(--surface-panel-alt);flex:none}.ruler.svelte-8qazfw{background:var(--surface-panel-alt);cursor:ew-resize;user-select:none;flex:auto;height:22px;position:relative;overflow:hidden}.tick.svelte-8qazfw{border-left:1px solid var(--border-faint);position:absolute;top:0;bottom:0}.tick-label.svelte-8qazfw{color:var(--text-faintest);font-size:9px;position:absolute;top:4px;left:3px}.playhead.svelte-8qazfw{border-left:1px solid var(--accent);pointer-events:none;position:absolute;top:0;bottom:0}.playhead-label.svelte-8qazfw{background:var(--accent);color:var(--text-on-accent);border-radius:2px;padding:0 3px;font-size:9px;position:absolute;top:2px;left:1px}.sheet.svelte-8qazfw{flex:auto;overflow:hidden auto}.empty.svelte-8qazfw{color:var(--text-faint);padding:12px}.track-row.svelte-8qazfw{border-bottom:1px solid var(--border-faint);height:20px;display:flex}.gutter.label.svelte-8qazfw{white-space:nowrap;align-items:center;gap:5px;padding:0 6px;display:flex;overflow:hidden}.node-name.svelte-8qazfw{color:var(--text-muted);text-overflow:ellipsis;overflow:hidden}.param-name.svelte-8qazfw{color:var(--text-faint)}.track.svelte-8qazfw{flex:auto;position:relative;overflow:hidden}.track-playhead.svelte-8qazfw{border-left:1px solid var(--accent-tint-half);pointer-events:none;position:absolute;top:0;bottom:0}.key.svelte-8qazfw{background:var(--status-attention);border:1px solid var(--shade-strong);cursor:ew-resize;width:8px;height:8px;margin:-4px 0 0 -4px;position:absolute;top:50%;transform:rotate(45deg)}.key.selected.svelte-8qazfw{background:var(--text-bright);border-color:var(--accent)}.status.svelte-8qazfw{border-top:1px solid var(--border-subtle);background:var(--surface-panel-alt);color:var(--text-faint);flex:none;padding:3px 8px;font-size:10px}.selected-key.svelte-8qazfw{color:var(--text-secondary)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{At as e,D as t,Dt as n,G as r,I as i,O as a,Ot as o,Q as s,U as c,V as l,W as ee,X as u,Z as d,b as f,ct as p,dt as m,et as h,g,i as _,it as v,jt as y,l as te,lt as b,m as ne,n as re,nt as x,ot as S,p as ie,pt as C,r as ae,rt as oe,st as se,v as w,vt as ce,x as T,yt as le,z as E}from"./legacy-CTEeXeqF.js";import{c as ue,dt as de,f as D,u as fe}from"./index-BWnrmIB9.js";var pe=class{constructor(e,t=e.start){this.range=e,this._playing=!1,this.anchorMs=0,this.anchorFrame=0,this._dropped=0,this._frame=t}get frame(){return this._frame}get playing(){return this._playing}get dropped(){return this._dropped}setRange(e,t=0){this.range={...this.range,...e},this.range.end<this.range.start&&(this.range.end=this.range.start),this.setFrame(this._frame,t)}setFrame(e,t=0){return this._frame=Math.min(this.range.end,Math.max(this.range.start,Math.round(e))),this.anchorMs=t,this.anchorFrame=this._frame,this._frame}play(e){this._playing||(this._frame>=this.range.end&&!this.range.loop&&(this._frame=this.range.start),this._playing=!0,this._dropped=0,this.anchorMs=e,this.anchorFrame=this._frame)}pause(){this._playing=!1}toggle(e){this._playing?this.pause():this.play(e)}step(e,t=0){return this.pause(),this.setFrame(this._frame+e,t)}toStart(e=0){return this.setFrame(this.range.start,e)}toEnd(e=0){return this.setFrame(this.range.end,e)}advance(e,t=!1){if(!this._playing)return null;let n=Math.max(0,e-this.anchorMs)/1e3,r=Math.floor(this.anchorFrame+n*this.range.fps);if(r===this._frame)return null;if(r>this.range.end){if(!this.range.loop)return this._playing=!1,this._frame===this.range.end?null:(this._frame=this.range.end,this._frame);let t=this.range.end-this.range.start+1;r=this.range.start+(r-this.range.start)%t,this.anchorMs=e,this.anchorFrame=r}return t?(this._dropped+=1,null):(this._frame=r,r)}};function O(e,t){if(!e)return null;let n=e[t];return typeof n==`function`?n:null}function k(e){if(!e||typeof e!=`object`)return null;let t=e,n=t.frame??t.f??t.time??t.t,r=t.value??t.v??t.val;if(typeof n!=`number`||!Number.isFinite(n))return null;let i=typeof t.interpolation==`string`?t.interpolation:void 0;return{frame:n,value:typeof r==`number`?r:Number(r)||0,interpolation:i}}function A(e){let t=O(e,`hasChannel`);if(t&&!t())return[];let n=O(e,`keys`);if(!n)return[];let r;try{r=n()}catch{return[]}return Array.isArray(r)?r.map(k).filter(e=>e!==null).sort((e,t)=>e.frame-t.frame):[]}function me(e){let t=new Set;for(let n of Object.keys(e.props??{}))t.add(n);for(let n of e.parameters??[])n?.name&&t.add(n.name);return[...t]}function he(e){let t=[];for(let n of e?.nodes??[])if(typeof n?.parm==`function`)for(let e of me(n)){let r;try{r=n.parm(e)}catch{continue}let i=A(r);if(i.length===0)continue;let a=n.id;try{a=n.path?.()??n.id}catch{}t.push({nodeId:n.id,nodePath:a,param:e,keys:i})}return t}function ge(e,t,n){let r=(e?.nodes??[]).find(e=>e.id===t);if(!r||typeof r.parm!=`function`)return null;try{return r.parm(n)}catch{return null}}function _e(e,t,n,r,i){if(r===i)return!0;let a=ge(e,t,n);if(!a)return!1;let o=O(a,`moveKey`);if(o)try{return o(r,i),!0}catch{return!1}let s=O(a,`setKey`),c=O(a,`deleteKey`);if(!s||!c)return!1;let l=A(a).find(e=>e.frame===r);if(!l)return!1;try{return s(i,l.value,l.interpolation),c(r),!0}catch{return!1}}function j(e){let t=ve(e);return e.width/t}function ve(e){return Math.max(1,e.end-e.start)}function M(e,t){return(e-t.start)*j(t)}function N(e,t){return t.start+e/j(t)}function ye(e,t){return Math.min(t.end,Math.max(t.start,e))}function be(e,t){return ye(Math.round(N(e,t)),t)}var xe=[1,2,5,10,25,50,100,250,500,1e3,2500,5e3,1e4];function Se(e,t=56){let n=j(e);for(let e of xe)if(e*n>=t)return e;return xe[xe.length-1]}function Ce(e,t=56){let n=Se(e,t),r=Math.ceil(e.start/n)*n,i=[];for(let t=r;t<=e.end;t+=n)i.push(t);return i.length===0&&i.push(e.start,e.end),i}function we(e,t,n,r=6){let i=null,a=1/0;for(let o of t){let t=Math.abs(M(o,n)-e);t<=r&&t<a&&(i=o,a=t)}return i}var Te=r(`<span class="note svelte-8qazfw" title="Frames skipped because a cook was still running"> </span>`),Ee=r(`<span class="note warn svelte-8qazfw">Channel API cannot move keys yet</span>`),De=r(`<span class="note svelte-8qazfw"> </span>`),Oe=r(`<div class="tick svelte-8qazfw"><span class="tick-label svelte-8qazfw"> </span></div>`),ke=r(`<div class="empty svelte-8qazfw">No keyed parameters. Key a parameter to see its channel here.</div>`),Ae=r(`<div></div>`),je=r(`<div class="track-row svelte-8qazfw"><div class="gutter label svelte-8qazfw"><span class="node-name svelte-8qazfw"> </span> <span class="param-name svelte-8qazfw"> </span></div> <div class="track svelte-8qazfw" role="group"><div class="track-playhead svelte-8qazfw"></div> <!></div></div>`),Me=r(`<span class="selected-key svelte-8qazfw"> </span>`),Ne=r(`<span class="hint"> </span>`),Pe=r(`<div class="timeline-panel svelte-8qazfw" data-panel-type="timeline"><div class="transport svelte-8qazfw"><button class="tbtn svelte-8qazfw" title="Jump to start" aria-label="Jump to start">⏮</button> <button class="tbtn svelte-8qazfw" title="Step back" aria-label="Step back">◀</button> <button> </button> <button class="tbtn svelte-8qazfw" title="Step forward" aria-label="Step forward">▶</button> <button class="tbtn svelte-8qazfw" title="Jump to end" aria-label="Jump to end">⏭</button> <label class="field svelte-8qazfw" title="Current frame"><span class="svelte-8qazfw">Frame</span> <input type="number" aria-label="Current frame" class="svelte-8qazfw"/></label> <label class="field svelte-8qazfw" title="In point"><span class="svelte-8qazfw">In</span> <input type="number" aria-label="In point" class="svelte-8qazfw"/></label> <label class="field svelte-8qazfw" title="Out point"><span class="svelte-8qazfw">Out</span> <input type="number" aria-label="Out point" class="svelte-8qazfw"/></label> <label class="field svelte-8qazfw" title="Frames per second"><span class="svelte-8qazfw">FPS</span> <input type="number" aria-label="Frames per second" class="svelte-8qazfw"/></label> <label class="toggle svelte-8qazfw" title="Loop playback"><input type="checkbox"/> <span>Loop</span></label> <div class="spacer svelte-8qazfw"></div> <!> <!> <!></div> <div class="ruler-row svelte-8qazfw"><div class="gutter svelte-8qazfw"></div> <div class="ruler svelte-8qazfw" role="slider" tabindex="0" aria-label="Playhead"><!> <div class="playhead svelte-8qazfw"><span class="playhead-label svelte-8qazfw"> </span></div></div></div> <div class="sheet svelte-8qazfw"><!></div> <div class="status svelte-8qazfw"><!></div></div>`);function Fe(r,O){o(O,!1);let k=()=>le(de,`$sharedContextStore`,me),A=()=>le(ue,`$timelineFocus`,me),[me,ge]=ce(),j=m(),ve=m(),N=m(),ye=_(O,`panelId`,8),xe=_(O,`panelParams`,8),Se=_(O,`panelApi`,8,void 0),Fe=_(O,`containerApi`,8,void 0),P=_(O,`graph`,12,void 0);ye(),xe(),Fe();let F=m(D.fps()),I=m(1),L=m(250),R=m(!0),z=m(D.frame()),B=m(String(s(z))),V=new pe({start:s(I),end:s(L),fps:s(F),loop:s(R)},s(z)),H=m(!1),Ie=m(0),Le=m(600),U=m([]),W=m(null),G=null,Re=m(!1),K=!1,ze=null;async function Be(e){if(fe(e),K){ze=e;return}K=!0,D.markTimeDependentDirty();try{await P()?.execute()}catch(e){console.warn(`[Timeline] cook failed:`,e)}finally{K=!1;let t=ze;ze=null,t!==null&&t!==e&&Be(t)}}function q(e){C(z,e),C(B,String(e)),Be(e)}let J=null;function Ve(e){let t=V.advance(e,K);C(Ie,V.dropped),C(H,V.playing),t!==null&&q(t),J=V.playing?requestAnimationFrame(Ve):null}function He(){V.toggle(performance.now()),C(H,V.playing),s(H)&&J===null&&(J=requestAnimationFrame(Ve))}function Y(){V.pause(),C(H,!1)}function Ue(e){Y(),q(V.step(e,performance.now()))}function We(){Y(),q(V.toStart(performance.now()))}function Ge(){Y(),q(V.toEnd(performance.now()))}function Ke(){let e=Number.parseFloat(s(B));if(!Number.isFinite(e)){C(B,String(s(z)));return}Y(),q(V.setFrame(e,performance.now()))}let qe=m();function Je(e){C(qe,e);let t=e.timeline??{};typeof t.fps==`number`&&t.fps>0&&C(F,t.fps),Number.isFinite(t.start)&&C(I,t.start),Number.isFinite(t.end)&&C(L,t.end),typeof t.loop==`boolean`&&C(R,t.loop),s(L)<s(I)&&C(L,s(I)),D.setFps(s(F)),V.setRange({start:s(I),end:s(L),fps:s(F),loop:s(R)},performance.now())}function Ye(){s(L)<s(I)&&C(L,s(I)),s(F)<=0&&C(F,1),D.setFps(s(F)),P()&&P(P().timeline={fps:s(F),start:s(I),end:s(L),loop:s(R)},!0),V.setRange({start:s(I),end:s(L),fps:s(F),loop:s(R)},performance.now()),(s(z)<s(I)||s(z)>s(L))&&q(V.setFrame(s(z),performance.now()))}let X=m();function Xe(e,t){let n=t.getBoundingClientRect();return be(e.clientX-n.left,s(j))}function Ze(e){s(X)&&(Y(),e.currentTarget.setPointerCapture(e.pointerId),Qe(e))}function Qe(e){if(!s(X))return;let t=V.setFrame(Xe(e,s(X)),performance.now());t!==s(z)&&q(t)}function $e(e){e.buttons!==0&&Qe(e)}function et(e){let t=e.currentTarget;t.hasPointerCapture?.(e.pointerId)&&t.releasePointerCapture(e.pointerId)}let tt=null;function Z(){C(U,he(P())),s(W)&&!s(U).some(e=>e.nodeId===s(W).nodeId&&e.param===s(W).param&&e.keys.some(e=>e.frame===s(W).frame))&&C(W,null)}function nt(e,t){Z();let n=s(U).find(n=>n.nodeId===e&&n.param===t);if(!n?.keys.length){C(W,null),C(rt,`${e}.${t} has no keys yet — alt-click the parameter to set one.`);return}C(rt,null);let r=n.keys.reduce((e,t)=>Math.abs(t.frame-s(z))<Math.abs(e.frame-s(z))?t:e);C(W,{nodeId:e,param:t,frame:r.frame,value:r.value})}let rt=m(null);function it(e){return e.keys.map(e=>e.frame)}function at(e,t){return M(G&&G.nodeId===e.nodeId&&G.param===e.param&&G.from===t?G.to:t,s(j))}function ot(e,t){let n=e.currentTarget,r=n.getBoundingClientRect(),i=we(e.clientX-r.left,it(t),s(j));if(i===null){C(W,null);return}let a=t.keys.find(e=>e.frame===i);C(W,{nodeId:t.nodeId,param:t.param,frame:i,value:a?.value??0}),G={nodeId:t.nodeId,param:t.param,from:i,to:i},n.setPointerCapture(e.pointerId)}function st(e){if(!G||e.buttons===0)return;let t=e.currentTarget.getBoundingClientRect(),n=be(e.clientX-t.left,s(j));n!==G.to&&(G={...G,to:n})}function ct(e){let t=e.currentTarget;if(t.hasPointerCapture?.(e.pointerId)&&t.releasePointerCapture(e.pointerId),!G)return;let n=G;G=null,n.to!==n.from&&(_e(P(),n.nodeId,n.param,n.from,n.to)?(C(W,s(W)?{...s(W),frame:n.to}:null),Z(),Be(s(z))):(C(Re,!0),setTimeout(()=>{C(Re,!1)},4e3)))}ae(()=>{C(F,P()?.timeline?.fps??D.fps()),C(z,D.frame()),C(B,String(s(z))),V.setFrame(s(z),performance.now()),Z(),tt=setInterval(()=>{document.hidden||Z()},1e3)}),re(()=>{J!==null&&cancelAnimationFrame(J),tt!==null&&clearInterval(tt)}),x(()=>k(),()=>{k()&&P(k().graph)}),x(()=>(s(I),s(L),s(Le)),()=>{C(j,{start:s(I),end:s(L),width:Math.max(1,s(Le))})}),x(()=>s(j),()=>{C(ve,Ce(s(j)))}),x(()=>(s(z),s(j)),()=>{C(N,M(s(z),s(j)))}),x(()=>(d(P()),s(qe)),()=>{P()&&P()!==s(qe)&&Je(P())}),x(()=>d(P()),()=>{P(),Z()}),x(()=>A(),()=>{A()&&nt(A().nodeId,A().param)}),x(()=>(d(Se()),s(H),s(z)),()=>{Se()?.setTitle&&Se().setTitle(s(H)?`Timeline · ${s(z)}`:`Timeline`)}),oe(),te();var lt=Pe(),ut=S(lt),dt=S(ut),ft=b(dt,2),Q=b(ft,2);let pt;var mt=p(Q,!0),ht=b(Q,2),gt=b(ht,2),_t=b(gt,2),vt=b(S(_t),2);f(vt),y(_t);var yt=b(_t,2),bt=b(S(yt),2);f(bt),y(yt);var xt=b(yt,2),St=b(S(xt),2);f(St),y(xt);var Ct=b(xt,2),wt=b(S(Ct),2);f(wt),y(Ct);var Tt=b(Ct,2),Et=S(Tt);f(Et),e(2),y(Tt);var Dt=b(Tt,4),Ot=e=>{var t=Te(),n=p(t);v(()=>l(n,`${s(Ie)??``} dropped`)),c(e,t)};E(Dt,e=>{s(H)&&s(Ie)>0&&e(Ot)});var kt=b(Dt,2),At=e=>{var t=Ee();c(e,t)};E(kt,e=>{s(Re)&&e(At)});var jt=b(kt,2),Mt=e=>{var t=De(),n=p(t,!0);v(()=>l(n,s(rt))),c(e,t)};E(jt,e=>{s(rt)&&e(Mt)}),y(ut);var Nt=b(ut,2),Pt=S(Nt);t(Pt,`width: 170px`);var $=b(Pt,2),Ft=S($);i(Ft,1,()=>s(ve),e=>e,(e,n)=>{var r=Oe(),i=S(r),a=p(i,!0);y(r),v(e=>{t(r,`left: ${e??``}px`),l(a,s(n))},[()=>(d(M),s(n),s(j),h(()=>M(s(n),s(j))))]),c(e,r)});var It=b(Ft,2),Lt=S(It),Rt=p(Lt,!0);y(It),y($),ie($,e=>C(X,e),()=>s(X)),y(Nt);var zt=b(Nt,2),Bt=S(zt),Vt=e=>{var t=ke();c(e,t)},Ht=e=>{var n=ee(),r=se(n);i(r,1,()=>s(U),e=>e.nodeId+`/`+e.param,(e,n)=>{var r=je(),o=S(r);t(o,`width: 170px`);var ee=S(o),d=p(ee,!0),f=b(ee,2),m=p(f,!0);y(o);var g=b(o,2),_=S(g),te=b(_,2);i(te,1,()=>(s(n),h(()=>s(n).keys)),e=>e.frame,(e,r)=>{var i=Ae();let o;v(e=>{o=a(i,1,`key svelte-8qazfw`,null,o,{selected:s(W)&&s(W).nodeId===s(n).nodeId&&s(W).param===s(n).param&&s(W).frame===s(r).frame}),t(i,`left: ${e??``}px`),T(i,`title`,`frame ${s(r),h(()=>s(r).frame)??``} · ${s(r),h(()=>s(r).value)??``}`)},[()=>(s(n),s(r),h(()=>at(s(n),s(r).frame)))]),c(e,i)}),y(g),y(r),v(()=>{T(o,`title`,`${s(n),h(()=>s(n).nodePath)??``}/${s(n),h(()=>s(n).param)??``}`),l(d,(s(n),h(()=>s(n).nodeId))),l(m,(s(n),h(()=>s(n).param))),T(g,`aria-label`,`${s(n),h(()=>s(n).nodeId)??``} ${s(n),h(()=>s(n).param)??``} channel`),t(_,`left: ${s(N)??``}px`)}),u(`pointerdown`,g,e=>ot(e,s(n))),u(`pointermove`,g,st),u(`pointerup`,g,ct),c(e,r)}),c(e,n)};E(Bt,e=>{s(U),h(()=>s(U).length===0)?e(Vt):e(Ht,-1)}),y(zt);var Ut=b(zt,2),Wt=S(Ut),Gt=e=>{var t=Me(),n=p(t);v(()=>l(n,`${s(W),h(()=>s(W).nodeId)??``}/${s(W),h(()=>s(W).param)??``} — frame ${s(W),h(()=>s(W).frame)??``}, value ${s(W),h(()=>s(W).value)??``}`)),c(e,t)},Kt=e=>{var t=Ne(),n=p(t);v(()=>l(n,`${s(U),h(()=>s(U).length)??``} channel${s(U),h(()=>s(U).length===1?``:`s`)??``} · drag a key to move it in time`)),c(e,t)};E(Wt,e=>{s(W)?e(Gt):e(Kt,-1)}),y(Ut),y(lt),v(()=>{pt=a(Q,1,`tbtn play svelte-8qazfw`,null,pt,{active:s(H)}),T(Q,`title`,s(H)?`Pause`:`Play`),T(Q,`aria-label`,s(H)?`Pause`:`Play`),l(mt,s(H)?`⏸`:`▶`),T($,`aria-valuemin`,s(I)),T($,`aria-valuemax`,s(L)),T($,`aria-valuenow`,s(z)),t(It,`left: ${s(N)??``}px`),l(Rt,s(z))}),u(`click`,dt,We),u(`click`,ft,()=>Ue(-1)),u(`click`,Q,He),u(`click`,ht,()=>Ue(1)),u(`click`,gt,Ge),w(vt,()=>s(B),e=>C(B,e)),u(`change`,vt,Ke),u(`keydown`,vt,e=>{e.key===`Enter`&&Ke()}),w(bt,()=>s(I),e=>C(I,e)),u(`change`,bt,Ye),w(St,()=>s(L),e=>C(L,e)),u(`change`,St,Ye),w(wt,()=>s(F),e=>C(F,e)),u(`change`,wt,Ye),g(Et,()=>s(R),e=>C(R,e)),u(`change`,Et,Ye),ne($,`clientWidth`,e=>C(Le,e)),u(`pointerdown`,$,Ze),u(`pointermove`,$,$e),u(`pointerup`,$,et),u(`keydown`,$,e=>{e.key===`ArrowLeft`&&(e.preventDefault(),Ue(-1)),e.key===`ArrowRight`&&(e.preventDefault(),Ue(1))}),c(r,lt),n(),ge()}export{Fe as default};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{At as e,Dt as t,G as n,I as r,L as i,Ot as a,Q as o,U as s,V as c,W as l,X as u,Z as d,at as f,ct as p,d as m,dt as h,et as g,i as _,it as v,jt as y,l as b,lt as x,nt as S,ot as C,pt as w,rt as T,st as E,t as D,z as O}from"./legacy-CTEeXeqF.js";import{
|
|
1
|
+
import{At as e,Dt as t,G as n,I as r,L as i,Ot as a,Q as o,U as s,V as c,W as l,X as u,Z as d,at as f,ct as p,d as m,dt as h,et as g,i as _,it as v,jt as y,l as b,lt as x,nt as S,ot as C,pt as w,rt as T,st as E,t as D,z as O}from"./legacy-CTEeXeqF.js";import{st as k}from"./index-BWnrmIB9.js";var A=n(`<p class="note svelte-19fwuux">Reading history…</p>`),j=n(`<p class="note error svelte-19fwuux"> </p>`),M=n(`<p class="note svelte-19fwuux">This project isn't a git repository yet, so there's nothing to go back to. The next
|
|
2
2
|
save starts a history.</p>`),N=n(`<p class="note svelte-19fwuux">No versions yet. The next save becomes the first one.</p>`),P=n(`<p class="note dirty svelte-19fwuux">Unsaved changes on disk aren't in any version yet.</p>`),F=n(`<span class="tag svelte-19fwuux">current</span>`),I=n(`<li class="svelte-19fwuux"><div class="meta svelte-19fwuux"><span class="date svelte-19fwuux"> </span> <span class="sha svelte-19fwuux"> </span> <!></div> <div class="message svelte-19fwuux"> </div> <button class="restore svelte-19fwuux"> </button></li>`),L=n(`<!> <ul class="versions svelte-19fwuux"></ul> <p class="note footnote svelte-19fwuux">Restoring loads that version into the editor as unsaved work. Nothing is overwritten
|
|
3
3
|
until you save, and saving it becomes the next version — so this is always reversible.</p>`,1),R=n(`<div class="dialog-overlay svelte-19fwuux"><div class="dialog svelte-19fwuux" role="dialog" aria-modal="true" aria-labelledby="version-history-title"><div class="dialog-header svelte-19fwuux"><h2 id="version-history-title" class="svelte-19fwuux">Version History</h2> <button class="close-button svelte-19fwuux" aria-label="Close"><!></button></div> <div class="dialog-body svelte-19fwuux"><p class="subject svelte-19fwuux"> </p> <!></div></div></div>`);function z(n,z){a(z,!1);let B=_(z,`filename`,8,null),V=_(z,`open`,8,!1),H=D(),U=h([]),W=h(!1),G=h(!0),K=h(!1),q=h(null),J=h(null);async function Y(e){w(K,!0),w(q,null);try{let t=await fetch(`/api/graph/${encodeURIComponent(e)}/versions`);if(!t.ok)throw Error(await t.text());let n=await t.json();w(U,n.versions??[]),w(W,!!n.dirty),w(G,n.isGitRepo!==!1)}catch(e){w(q,e instanceof Error?e.message:String(e)),w(U,[])}finally{w(K,!1)}}async function X(e){if(B()){w(J,e.sha),w(q,null);try{let t=await fetch(`/api/graph/${encodeURIComponent(B())}/versions/${e.sha}`);if(!t.ok)throw Error(await t.text());H(`restore`,{json:await t.json(),version:e})}catch(e){w(q,e instanceof Error?e.message:String(e))}finally{w(J,null)}}}function Z(e){let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString(void 0,{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`})}function Q(){H(`close`)}function ee(e){e.key===`Escape`&&Q()}S(()=>(d(V()),d(B())),()=>{V()&&B()&&Y(B())}),T(),b();var $=l();u(`keydown`,f,ee);var te=E($),ne=t=>{var n=R(),a=C(n),l=C(a),d=x(C(l),2),f=C(d);k(f,{size:18}),y(d),y(l);var h=x(l,2),_=C(h),b=p(_,!0),S=x(_,2),w=e=>{var t=A();s(e,t)},T=e=>{var t=j(),n=p(t,!0);v(()=>c(n,o(q))),s(e,t)},D=e=>{var t=M();s(e,t)},z=e=>{var t=N();s(e,t)},V=t=>{var n=L(),a=E(n),l=e=>{var t=P();s(e,t)};O(a,e=>{o(W)&&e(l)});var d=x(a,2);r(d,5,()=>o(U),i,(e,t,n)=>{var r=I(),i=C(r),a=C(i),l=p(a,!0),d=x(a,2),f=p(d,!0),m=x(d,2),h=e=>{var t=F();s(e,t)};O(m,e=>{n===0&&e(h)}),y(i);var _=x(i,2),b=p(_,!0),S=x(_,2),w=p(S,!0);y(r),v(e=>{c(l,e),c(f,(o(t),g(()=>o(t).shortSha))),c(b,(o(t),g(()=>o(t).message))),S.disabled=o(J)!==null,c(w,(o(J),o(t),g(()=>o(J)===o(t).sha?`Opening…`:`Restore`)))},[()=>(o(t),g(()=>Z(o(t).date)))]),u(`click`,S,()=>X(o(t))),s(e,r)}),y(d),e(2),s(t,n)};O(S,e=>{o(K)?e(w):o(q)?e(T,1):o(G)?(o(U),g(()=>o(U).length===0)?e(z,3):e(V,-1)):e(D,2)}),y(h),y(a),y(n),v(()=>c(b,B()??`No project file`)),u(`click`,d,Q),u(`click`,n,m(Q)),s(t,n)};O(te,e=>{V()&&e(ne)}),s(n,$),t()}export{z as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./preload-helper-Czpn1I53.js";var t={apiVersion:1,runsOn:`portable`,label:`Assert Range`,description:`Fails the run unless value is a finite number in [min, max]; passes value through`,icon:`ShieldCheck`,inputs:{value:{kind:`data`,type:`float`,default:0}},outputs:{value:{kind:`data`,type:`float`}},props:{min:{type:`float`,default:0},max:{type:`float`,default:1},message:{type:`string`,default:``}}},n={apiVersion:1,runsOn:`portable`,label:`Assert Equals`,description:`Fails the run unless value equals expected (JSON-equal; numbers within tolerance); passes value through`,icon:`ShieldCheck`,inputs:{value:{kind:`data`,type:`any`,default:null}},outputs:{value:{kind:`data`,type:`any`}},props:{expected:{type:`any`,default:null},tolerance:{type:`float`,default:0,min:0},message:{type:`string`,default:``}}},r={apiVersion:1,runsOn:`portable`,label:`Assert True`,description:`Fails the run unless value is true (wire a condition, or give the prop an expression); passes value through`,icon:`ShieldCheck`,inputs:{value:{kind:`data`,type:`bool`,default:!1}},outputs:{value:{kind:`data`,type:`bool`}},props:{message:{type:`string`,default:``}}},i={apiVersion:1,runsOn:`portable`,label:`Assert Not Blank`,description:`Fails the run when an image (PNG or PPM) is one flat colour or fully transparent; passes the image through`,icon:`ShieldCheck`,capabilities:[`assets`],inputs:{image:{kind:`data`,type:`image`}},outputs:{image:{kind:`data`,type:`image`}},props:{tolerance:{type:`int`,default:0,min:0,max:255,step:1},message:{type:`string`,default:``}}},a=`cascade.assert.`;function o(e,t,n){return{kind:`definition-v1`,moduleId:`${a}${e}`,definition:t,loadExecute:n}}var s=o(`Range`,t,async()=>(await e(async()=>{let{executeRange:e}=await import(`./checks-DAvyO9Gf.js`);return{executeRange:e}},[])).executeRange),c=o(`Equals`,n,async()=>(await e(async()=>{let{executeEquals:e}=await import(`./checks-DAvyO9Gf.js`);return{executeEquals:e}},[])).executeEquals),l=o(`True`,r,async()=>(await e(async()=>{let{executeTrue:e}=await import(`./checks-DAvyO9Gf.js`);return{executeTrue:e}},[])).executeTrue),u=o(`NotBlank`,i,async()=>(await e(async()=>{let{executeNotBlank:e}=await import(`./checks-DAvyO9Gf.js`);return{executeNotBlank:e}},[])).executeNotBlank),d=Object.freeze([c,u,s,l]);export{d as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./DefinitionNode-CaRTXQ_b.js";import{E as t,W as n}from"./index-BWnrmIB9.js";import{t as r}from"./assert-BO2_erPD.js";e(r,{assets:n});export{t as assertLibrary};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=[`poly`,`bezier`,`mesh`,`packed`],t=new Set([`f32`,`f64`,`i32`,`u8`]),n=/^[A-Za-z_][A-Za-z0-9_]*$/,r=new Set([`__proto__`,`prototype`,`constructor`]);function i(e,t){throw TypeError(`geometry/${e}: ${t}`)}function a(){return{vertexPoints:new Int32Array,offsets:Int32Array.of(0),kinds:new Uint8Array,closed:new Uint8Array}}function o(e){return e===`f64`?Float64Array:e===`f32`?Float32Array:e===`i32`?Int32Array:Uint8Array}function s(e,t){return Number.isFinite(t)?e===`f64`||e===`f32`?!0:Number.isInteger(t)?e===`u8`?t>=0&&t<=255:t>=-2147483648&&t<=2147483647:!1:!1}function c(e,t){return(!Number.isSafeInteger(t)||t<0)&&i(`attribute-length`,`attribute array length must be a non-negative safe integer`),e===`f64`?new Float64Array(t):e===`f32`?new Float32Array(t):e===`i32`?new Int32Array(t):new Uint8Array(t)}function l(e,t){let n=c(e,t.length);for(let r=0;r<t.length;r+=1){let a=t[r];s(e,a)||i(`attribute-value`,`${String(a)} cannot be represented as ${e}`),n[r]=a,Number.isFinite(n[r])||i(`attribute-value`,`${String(a)} overflows ${e}`)}return n}function u(e){return e.storage===`string`}function d(e,t){return t===`point`?e.pointCount:t===`vertex`?e.vertexCount:t===`primitive`?e.primitiveCount:1}function f(e,t){(!n.test(e)||r.has(e))&&i(`invalid-name`,`${t}.${e} is not a valid attribute name`)}function p(e,n,r){for(let[a,s]of Object.entries(e)){if(f(a,r),u(s)){s.data instanceof Int32Array||i(`attribute-storage`,`${r}.${a} string indices must be Int32Array`),s.size!==1&&i(`string-size`,`${r}.${a} string attributes have size 1`),s.data.length!==n&&i(`attribute-length`,`${r}.${a} has ${s.data.length} entries for ${n} elements`);for(let e of s.data)(e<-1||e>=s.table.length)&&i(`string-index`,`${r}.${a} references table entry ${e}`);(!Array.isArray(s.table)||s.table.some(e=>typeof e!=`string`))&&i(`string-table`,`${r}.${a} needs a string table`);continue}(!Number.isInteger(s.size)||s.size<1)&&i(`attribute-size`,`${r}.${a} needs a size of at least 1`),t.has(s.storage)||i(`attribute-storage`,`${r}.${a} has an unknown storage ${String(s.storage)}`),s.data instanceof o(s.storage)||i(`attribute-storage`,`${r}.${a} declares ${s.storage} but uses ${s.data?.constructor?.name??`unknown storage`}`),s.data.length!==s.size*n&&i(`attribute-length`,`${r}.${a} has ${s.data.length} values for ${n} elements of size ${s.size}`);for(let e of s.data)Number.isFinite(e)||i(`non-finite`,`${r}.${a} contains ${String(e)}`)}}function m(e,t,n){for(let[r,a]of Object.entries(e)){f(r,n),a.length!==t&&i(`group-length`,`${n}.${r} covers ${a.length} of ${t} elements`);for(let e of a)e!==0&&e!==1&&i(`group-mask`,`${n}.${r} contains ${e}; masks contain only 0 or 1`)}}function h(t){let n=t.pointCount;(!Number.isSafeInteger(n)||n<0)&&i(`point-count`,`pointCount must be a non-negative safe integer`);let r=t.topology??a();(!(r.vertexPoints instanceof Int32Array)||!(r.offsets instanceof Int32Array)||!(r.kinds instanceof Uint8Array)||!(r.closed instanceof Uint8Array))&&i(`topology-storage`,`topology uses Int32Array indices and Uint8Array flags`);let o=r.offsets.length-1;o<0&&i(`offsets`,`topology.offsets needs primitiveCount + 1 entries`),r.offsets[0]!==0&&i(`offsets`,`topology.offsets starts at 0`);for(let e=1;e<=o;e+=1)r.offsets[e]<r.offsets[e-1]&&i(`offsets`,`topology.offsets must not decrease`);let s=r.offsets[o];s!==r.vertexPoints.length&&i(`offsets`,`topology.offsets ends at ${s} for ${r.vertexPoints.length} vertices`),(r.kinds.length!==o||r.closed.length!==o)&&i(`topology-length`,`topology.kinds and topology.closed need ${o} entries`);for(let e of r.vertexPoints)(e<0||e>=n)&&i(`vertex-point`,`vertex references point ${e}`);for(let t of r.kinds)t>=e.length&&i(`primitive-kind`,`unknown primitive kind ${t}`);for(let e of r.closed)e!==0&&e!==1&&i(`closed-mask`,`topology.closed contains ${e}; flags contain only 0 or 1`);let c=e.indexOf(`bezier`);for(let e=0;e<o;e+=1){if(r.kinds[e]!==c)continue;let t=r.offsets[e+1]-r.offsets[e],n=r.closed[e]===1;(t<(n?3:4)||(t-+!n)%3!=0)&&i(`bezier-arity`,`primitive ${e} has ${t} vertices, and a ${n?`closed`:`open`} bezier needs ${n?`3n`:`3n + 1`}`)}let l=t.point,d=l.P;d===void 0&&i(`missing-position`,`point.P is required on every geometry`),u(d)&&i(`position-storage`,`point.P must be a numeric attribute`),d.size!==2&&d.size!==3&&i(`position-size`,`point.P must have a size of 2 or 3`),p(l,n,`point`);let h=t.vertex??{};p(h,s,`vertex`);let _=t.primitive??{};p(_,o,`primitive`);let v=t.pointGroups??{};m(v,n,`pointGroups`);let y=t.primitiveGroups??{};m(y,o,`primitiveGroups`);let b=t.detail??{};for(let[e,t]of Object.entries(b))f(e,`detail`),typeof t==`number`?Number.isFinite(t)||i(`non-finite`,`detail.${e} contains ${String(t)}`):typeof t!=`string`&&(!Array.isArray(t)||t.some(e=>!Number.isFinite(e)))&&i(`detail-value`,`detail.${e} must be a finite number, string, or finite number array`);return g({kind:`geometry`,pointCount:n,vertexCount:s,primitiveCount:o,topology:r,point:l,vertex:h,primitive:_,detail:b,pointGroups:v,primitiveGroups:y})}function g(e){for(let t of[`point`,`vertex`,`primitive`]){let n=e[t];for(let e of Object.values(n))u(e)&&Object.freeze(e.table),Object.freeze(e);Object.freeze(n)}Object.freeze(e.topology);for(let t of Object.values(e.detail))Array.isArray(t)&&Object.freeze(t);return Object.freeze(e.detail),Object.freeze(e.pointGroups),Object.freeze(e.primitiveGroups),Object.freeze(e)}function _(e=2){return h({pointCount:0,point:{P:{storage:`f64`,size:e,data:new Float64Array}}})}function v(e,t){throw TypeError(`geometry/${e}: ${t}`)}function y(e,t){return e[t]}function b(e,t,n){if(e!==void 0)return u(e)&&v(`attribute-storage`,`${t} must be numeric`),n!==void 0&&!n.includes(e.size)&&v(`attribute-size`,`${t} has size ${e.size}; expected ${n.join(` or `)}`),e}function x(e,t,n=0){return e.data[t*e.size+n]}function S(e,t){let n=Array(e.size);for(let r=0;r<e.size;r+=1)n[r]=e.data[t*e.size+r];return n}function C(e,t){let n=e.data[t];return n<0?``:e.table[n]??``}function w(e){return e.point.P.size}function T(e){return e.point.P}function E(e,t){return S(T(e),t)}function D(e,t,n=`f64`,r){let i=c(n,t*e);if(r!==void 0){let n=typeof r==`number`?[r]:r;for(let r=0;r<e;r+=1)for(let e=0;e<t;e+=1)i[r*t+e]=n[e%Math.max(n.length,1)]??0}return{storage:n,size:t,data:i}}function O(e){let t=[],n=new Map,r=new Int32Array(e.length);for(let i=0;i<e.length;i+=1){let a=e[i],o=n.get(a);o===void 0&&(o=t.length,t.push(a),n.set(a,o)),r[i]=o}return{storage:`string`,size:1,table:t,data:r}}function k(e,t,n){return h({pointCount:e.pointCount,point:t===`point`?n:e.point,vertex:t===`vertex`?n:e.vertex,primitive:t===`primitive`?n:e.primitive,detail:e.detail,topology:e.topology,pointGroups:e.pointGroups,primitiveGroups:e.primitiveGroups})}function A(e,t,n,r){return k(e,t,{...e[t],[n]:r})}function j(e){return l(e.storage,e.data)}var M=class{positions=[];size;storage;vertexPoints=[];offsets=[0];kinds=[];closed=[];attributes={point:{},vertex:{},primitive:{}};detail={};pointGroups=new Map;primitiveGroups=new Map;constructor(e={}){this.size=e.positionSize??2,this.storage=e.positionStorage??`f64`}get pointCount(){return this.positions.length/this.size}get vertexCount(){return this.vertexPoints.length}get primitiveCount(){return this.offsets.length-1}addPoint(e,t,n=0){let r=this.pointCount;return this.positions.push(e,t),this.size===3&&this.positions.push(n),r}addPoints(e){e.length%this.size!==0&&v(`point-stride`,`${e.length} values is not a multiple of the position size ${this.size}`);let t=this.pointCount;for(let t=0;t<e.length;t+=1)this.positions.push(e[t]);return t}addPrimitive(t,n={}){let r=this.primitiveCount;for(let e of t)(!Number.isInteger(e)||e<0||e>=this.pointCount)&&v(`vertex-point`,`primitive ${r} references point ${e} of ${this.pointCount}`),this.vertexPoints.push(e);return this.offsets.push(this.vertexPoints.length),this.kinds.push(e.indexOf(n.kind??`poly`)),this.closed.push(+!!n.closed),r}addPolygon(e,t={}){let n=this.addPoints(e),r=[];for(let e=n;e<this.pointCount;e+=1)r.push(e);return this.addPrimitive(r,t)}setAttribute(e,t,n){return e===`point`&&t===`P`&&v(`set-position`,`point.P is owned by the builder; use addPoint`),this.attributes[e][t]=n,this}setNumericAttribute(e,t,n,r=1,i=`f64`){return this.setAttribute(e,t,{storage:i,size:r,data:l(i,n)})}setStringAttribute(e,t,n){return this.setAttribute(e,t,O(n))}setDetail(e,t){return this.detail[e]=t,this}addToPointGroup(e,t){let n=this.pointGroups.get(e)??new Set;return n.add(t),this.pointGroups.set(e,n),this}addToPrimitiveGroup(e,t){let n=this.primitiveGroups.get(e)??new Set;return n.add(t),this.primitiveGroups.set(e,n),this}build(){let e=this.pointCount,t={};for(let[n,r]of this.pointGroups)t[n]=N(r,e);let n={};for(let[e,t]of this.primitiveGroups)n[e]=N(t,this.primitiveCount);return h({pointCount:e,point:{...this.attributes.point,P:{storage:this.storage,size:this.size,data:l(this.storage,this.positions)}},vertex:this.attributes.vertex,primitive:this.attributes.primitive,detail:this.detail,topology:{vertexPoints:Int32Array.from(this.vertexPoints),offsets:Int32Array.from(this.offsets),kinds:Uint8Array.from(this.kinds),closed:Uint8Array.from(this.closed)},pointGroups:t,primitiveGroups:n})}};function N(e,t){let n=new Uint8Array(t);for(let r of e)(!Number.isInteger(r)||r<0||r>=t)&&v(`group-indices`,`group references element ${r}`),n[r]=1;return n}export{d as S,c as _,O as a,_ as b,b as c,x as d,S as f,e as g,k as h,D as i,T as l,A as m,y as n,v as o,C as p,j as r,E as s,M as t,w as u,l as v,u as x,h as y};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=Math.PI/180;function t(e,t){return[e[1]*t[2]-e[2]*t[1],e[2]*t[0]-e[0]*t[2],e[0]*t[1]-e[1]*t[0]]}function n(e){let t=Math.hypot(e[0],e[1],e[2]);return t===0?[0,0,0]:[e[0]/t,e[1]/t,e[2]/t]}function r(e,t){return[e[0]-t[0],e[1]-t[1],e[2]-t[2]]}function i(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function a(t,i,a=[0,1,0]){let s=n(r(i,t));if(s[0]===0&&s[1]===0&&s[2]===0)return[0,0,0];let c=Math.hypot(s[0],s[2]),l=Math.atan2(s[1],c),u=Math.atan2(-s[0],-s[2]);return[l/e,u/e,o(s,l,u,a)/e]}function o(r,a,o,l){let u=n([l[0]-r[0]*i(l,r),l[1]-r[1]*i(l,r),l[2]-r[2]*i(l,r)]);if(u[0]===0&&u[1]===0&&u[2]===0)return 0;let d=c({...s,rotate:[a/e,o/e,0]}).up;return Math.atan2(i(t(u,d),r),i(d,u))}var s={translate:[0,0,0],focal:50,aperture:41.4214,near:.001,far:1e4,resolution:[1,1],aspect:1,projection:`perspective`,orthowidth:2};function c(t){let[n,r,i]=t.rotate,a=Math.sin(n*e),o=Math.cos(n*e),s=Math.sin(r*e),c=Math.cos(r*e),l=Math.sin(i*e),u=Math.cos(i*e),d=c*u+s*a*l,f=-c*l+s*a*u,p=s*o,m=o*l,h=o*u,g=-a,_=-s*u+c*a*l,v=s*l+c*a*u,y=c*o,b=[d,m,_],x=[f,h,v],S=[-p,-g,-y];return{eye:t.translate,forward:S,right:b,up:x}}function l(e){let[t,n]=e.resolution;return n===0?1:t*e.aspect/n}function u(e){let{eye:t,forward:n,right:r,up:i}=c(e),a=[-n[0],-n[1],-n[2]];return[r[0],i[0],a[0],0,r[1],i[1],a[1],0,r[2],i[2],a[2],0,-(r[0]*t[0]+r[1]*t[1]+r[2]*t[2]),-(i[0]*t[0]+i[1]*t[1]+i[2]*t[2]),-(a[0]*t[0]+a[1]*t[1]+a[2]*t[2]),1]}function d(e){let{near:t,far:n}=e,r=l(e);if(e.projection===`orthographic`){let i=e.orthowidth/2,a=r===0?i:i/r;return[1/i,0,0,0,0,1/a,0,0,0,0,-2/(n-t),0,0,0,-(n+t)/(n-t),1]}let i=2*e.focal/e.aperture;return[i,0,0,0,0,i*r,0,0,0,0,-(n+t)/(n-t),-1,0,0,-2*n*t/(n-t),0]}export{d as n,u as r,a as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=class extends Error{constructor(e,t,n,r){let i=typeof r==`string`&&r.trim()?` ${r.trim()}`:``;super(`Assertion failed in "${e}" (${t}): ${n}.${i}`),this.name=`AssertionFailed`}};function t({nodeId:t,inputs:n,props:r,outputs:i}){let a=n.value;if(typeof a!=`number`||!Number.isFinite(a))throw new e(t,`cascade.assert.Range`,`value ${String(a)} is not a finite number`,r.message);if(a<r.min||a>r.max)throw new e(t,`cascade.assert.Range`,`value ${a} is outside [${r.min}, ${r.max}]`,r.message);i.value.set(a)}function n({nodeId:t,inputs:n,props:r,outputs:i}){if(!o(n.value,r.expected,r.tolerance))throw new e(t,`cascade.assert.Equals`,`got ${a(n.value)}, expected ${a(r.expected)}`,r.message);i.value.set(n.value)}function r({nodeId:t,inputs:n,props:r,outputs:i}){if(n.value!==!0)throw new e(t,`cascade.assert.True`,`value is ${a(n.value)}`,r.message);i.value.set(!0)}async function i({nodeId:t,inputs:n,props:r,outputs:i,capabilities:a,signal:o}){let l=n.image,u=typeof l==`string`?{path:l}:l;if(!u||typeof u.path!=`string`||!u.path)throw new e(t,`cascade.assert.NotBlank`,`no image arrived`,r.message);let d=u.path,f=a.assets.imagePixels?.({path:d}),p=f?{width:f.width,height:f.height,channels:4,data:f.data}:await c(await a.assets.read({path:d},{signal:o}));if(!p)throw new e(t,`cascade.assert.NotBlank`,`${d} is not a PNG or PPM this node can read`,r.message);let m=s(p,r.tolerance);if(m)throw new e(t,`cascade.assert.NotBlank`,`${d} (${p.width}x${p.height}) is ${m}`,r.message);i.image.set(n.image)}function a(e){let t=JSON.stringify(e)??String(e);return t.length>120?`${t.slice(0,117)}...`:t}function o(e,t,n){if(typeof e==`number`&&typeof t==`number`)return e===t||Math.abs(e-t)<=n;if(Array.isArray(e)&&Array.isArray(t))return e.length===t.length&&e.every((e,r)=>o(e,t[r],n));if(e&&t&&typeof e==`object`&&typeof t==`object`&&!Array.isArray(e)&&!Array.isArray(t)){let r=e,i=t,a=Object.keys(r);return a.length===Object.keys(i).length&&a.every(e=>e in i&&o(r[e],i[e],n))}return e===t||e==null&&t==null}function s(e,t=0){let{channels:n,data:r}=e,i=n===2||n===4?n-1:-1,a=i===-1?n:n-1,o=Array(n).fill(255),s=Array(n).fill(0),c=i===-1;for(let e=0;e<r.length;e+=n){i!==-1&&r[e+i]>t&&(c=!0);for(let t=0;t<n;t+=1){let n=r[e+t];n<o[t]&&(o[t]=n),n>s[t]&&(s[t]=n)}}return c?Math.max(...s.map((e,t)=>e-o[t]))<=t?a===1?`one flat grey (${o[0]})`:`one flat colour (rgb ${o.slice(0,3).join(`, `)})`:null:`fully transparent`}async function c(e){return e[0]===137&&e[1]===80&&e[2]===78&&e[3]===71?d(e):e[0]===80&&(e[1]===54||e[1]===53)?l(e):null}function l(e){let t=[],n=2;for(;t.length<3&&n<e.length;){for(;n<e.length&&/\s/.test(String.fromCharCode(e[n]));)n+=1;if(e[n]===35){for(;n<e.length&&e[n]!==10;)n+=1;continue}let r=``;for(;n<e.length&&!/\s/.test(String.fromCharCode(e[n]));)r+=String.fromCharCode(e[n++]);t.push(r)}let[r,i,a]=t.map(Number);if(!r||!i||a!==255)return null;let o=e[1]===54?3:1;return{width:r,height:i,channels:o,data:e.subarray(n+1,n+1+r*i*o)}}async function u(e){let t=globalThis;if(!t.DecompressionStream||!t.Blob||!t.Response)throw Error(`cascade.assert.NotBlank: this host has no DecompressionStream to read a PNG with`);let n=new t.Blob([e]).stream().pipeThrough(new t.DecompressionStream(`deflate`));return new Uint8Array(await new t.Response(n).arrayBuffer())}async function d(e){let t=new DataView(e.buffer,e.byteOffset,e.byteLength),n=8,r=0,i=0,a=0,o=[];for(;n+8<=e.length;){let s=t.getUint32(n),c=String.fromCharCode(...e.subarray(n+4,n+8)),l=e.subarray(n+8,n+8+s);if(c===`IHDR`){r=t.getUint32(n+8),i=t.getUint32(n+12);let e=l[8],o=l[9],s=l[12];if(a={0:1,4:2,2:3,6:4}[o]??0,e!==8||!a||s!==0)return null}else if(c===`IDAT`)o.push(l);else if(c===`IEND`)break;n+=12+s}if(!r||!i||!o.length)return null;let s=new Uint8Array(o.reduce((e,t)=>e+t.length,0)),c=0;for(let e of o)s.set(e,c),c+=e.length;let l=await u(s),d=r*a,f=new Uint8Array(d*i);for(let e=0;e<i;e+=1){let t=l[e*(d+1)],n=l.subarray(e*(d+1)+1,(e+1)*(d+1)),r=f.subarray(e*d,(e+1)*d),i=e>0?f.subarray((e-1)*d,e*d):new Uint8Array(d);for(let e=0;e<d;e+=1){let o=e>=a?r[e-a]:0,s=i[e],c=e>=a?i[e-a]:0,l=n[e];switch(t){case 0:r[e]=l;break;case 1:r[e]=l+o&255;break;case 2:r[e]=l+s&255;break;case 3:r[e]=l+(o+s>>1)&255;break;case 4:{let t=o+s-c,n=Math.abs(t-o),i=Math.abs(t-s),a=Math.abs(t-c);r[e]=l+(n<=i&&n<=a?o:i<=a?s:c)&255;break}default:return null}}}return{width:r,height:i,channels:a,data:f}}export{n as executeEquals,i as executeNotBlank,t as executeRange,r as executeTrue};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function e(e,t={}){let n=e.length;if(!n)throw Error(`cascade.image.ContactSheet needs at least one image`);for(let[t,n]of e)if(!(t>0&&n>0))throw Error(`cascade.image.ContactSheet: an image is ${t}x${n}`);let r=Math.max(0,Math.round(t.gap??16)),i=Math.min(n,t.columns&&t.columns>0?Math.round(t.columns):Math.ceil(Math.sqrt(n))),a=Math.ceil(n/i),o=!!(t.cellWidth&&t.cellWidth>0),s=o?Math.round(t.cellWidth):Math.max(...e.map(([e])=>e)),c=Math.max(...o?e.map(([e,t])=>Math.round(t*s/e)):e.map(([,e])=>e)),l=Math.max(0,Math.round(t.labelHeight??0)),u=e.map(([e,t],n)=>{let a=n%i,u=Math.floor(n/i),d=Math.min(s/e,c/t),f=o?d:Math.min(1,d),p=Math.max(1,Math.round(e*f)),m=Math.max(1,Math.round(t*f)),h=r+a*(s+r),g=r+u*(c+l+r);return{x:h+Math.floor((s-p)/2),y:g+Math.floor((c-m)/2),width:p,height:m,labelX:h,labelY:g+c}});return{width:r+i*(s+r),height:r+a*(c+l+r),columns:i,rows:a,cell:[s,c],labelHeight:l,cells:u}}function t(){let e=globalThis,t=e.OffscreenCanvas,n=e.createImageBitmap;if(!t||!n||!e.Blob)throw Error(`cascade.image.ContactSheet needs OffscreenCanvas and createImageBitmap, which this host does not provide`);let r=e.Blob;return{surface:(e,n)=>new t(e,n),decode:e=>n(new r([e]))}}function n(e,t){let[n=0,r=0,i=0,a=1]=e??t;return`rgba(${Math.round(n*255)}, ${Math.round(r*255)}, ${Math.round(i*255)}, ${a})`}async function r(r,i={}){let a=t(),o=[];try{for(let e of r)o.push(await a.decode(e));let t=i.labels??[],s=Math.round(i.labelSize??14),c=t.some(e=>e.trim().length>0),l=e(o.map(e=>[e.width,e.height]),{columns:i.columns,gap:i.gap,cellWidth:i.cellWidth,labelHeight:c?Math.round(s*1.8):0}),u=a.surface(l.width,l.height),d=u.getContext(`2d`);if(!d)throw Error(`cascade.image.ContactSheet: no 2D context`);d.fillStyle=n(i.background,[1,1,1,1]),d.fillRect(0,0,l.width,l.height),d.imageSmoothingEnabled=!0,d.imageSmoothingQuality=`high`,l.cells.forEach((e,t)=>d.drawImage(o[t],e.x,e.y,e.width,e.height)),c&&(d.fillStyle=n(i.labelColor,[.1,.1,.1,1]),d.font=`${s}px sans-serif`,d.textBaseline=`top`,l.cells.forEach((e,n)=>{let r=t[n];r&&d.fillText(r,e.labelX,e.labelY+Math.round((l.labelHeight-s)/2),l.cell[0])}));let f=await u.convertToBlob({type:`image/png`});return{bytes:new Uint8Array(await f.arrayBuffer()),layout:l}}finally{for(let e of o)e.close?.()}}function i(e){if(typeof e==`string`&&e)return{path:e};let t=e?.path;return typeof t==`string`&&t?{path:t}:void 0}async function a(e){let{props:t}=e,n=[...e.inputs.images,...e.inputs.list??[]].map(i).filter(e=>e!==void 0),a=[];for(let t of n)a.push(await e.capabilities.assets.read(t,{signal:e.signal}));let{bytes:o,layout:s}=await r(a,{columns:t.columns,gap:t.gap,cellWidth:t.cellWidth,labels:t.labels?t.labels.split(`
|
|
2
|
+
`):[],labelSize:t.labelSize,background:t.background,labelColor:t.labelColor}),c=await e.capabilities.assets.write(o,{mediaType:`image/png`,suggestedName:t.filename},{signal:e.signal});e.outputs.asset.set(c),e.outputs.image.set({path:c.path??t.filename,size:[s.width,s.height],channels:`rgba`,depth:`u8`,space:`srgb`})}export{a as executeContactSheet};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{c as e,u as t}from"./nodeTypeUtils-BDJsc2Ks.js";import{F as n,I as r,L as i,O as a,R as o,T as s,j as c,k as l,m as u,p as d,v as f,y as p,z as m}from"./index-5ZtDAuy2.js";var h={type:`Switch`,name:`Switch`,icon:`GitBranch`,description:`Switch between multiple inputs by index`,category:`routing`},g=class extends n{constructor(e,t){super(e,`Switch`,t)}get activeInputIndex(){let e=this.getVariadicInputs();return Math.min(this.props.index?.value??0,e.length-1)}isInputActive(e){let t=this.getVariadicInputs(),n=this.activeInputIndex;return t.findIndex(t=>t.id===e)===n}setup(){this.setVariadic(),this.output=this.out(`output`);let e=this.param(`index`,0,{type:`int`,min:0,max:0,step:1});e.documentField=`props`,this.watchProp(`index`,()=>this.update()),this.onUpdate=()=>this.update(),this.onReady=()=>this.update()}onCook(){this.update()}update(){let e=this.getVariadicInputs(),t=e.filter(e=>e.connections.length>0).length;this.updatePropParams(`index`,{max:Math.max(0,t-1)});let n=e[Math.min(this.props.index.value,e.length-1)];n?(this.output.setValue(n.value),this.preview=this.isPreviewValue(n.value)?n.value:null):(this.output.setValue(null),this.preview=null)}},_={type:`Merge`,name:`Merge`,icon:`GitMerge`,description:`Combine multiple inputs into an array`,category:`routing`},v=class extends n{constructor(e,t){super(e,`Merge`,t)}setup(){this.setVariadic(),this.output=this.out(`output`),this.addParm(`append`,{value:!1,type:`boolean`,displayName:`Append Mode`,hidden:()=>{let e=this.getVariadicInputs();return!Array.isArray(e[0]?.value)}}),this.watchProp(`append`,()=>this.update()),this.onUpdate=()=>this.update(),this.onReady=()=>this.update()}update(){let e=this.getVariadicInputs().filter(e=>e.value!==null).map(e=>e.value);if(this.props.append.value&&e.length>0&&Array.isArray(e[0])){let t=[...e[0],...e.slice(1)];this.output.setValue(t)}else this.output.setValue(e);this.preview=null;for(let t of e)if(t instanceof HTMLCanvasElement||t instanceof HTMLImageElement){this.preview=t;break}}},y={type:`Subnet`,name:`Subnet`,icon:`Folder`,description:`Network container for organizing nodes`,category:`network`},b=class extends n{constructor(e,t){super(e,`Subnet`,t)}setup(){this.onUpdate=()=>this.update(),this.onReady=()=>{this.syncPorts(),this.update()}}isNetwork(){return!0}addChild(e){e.parent=this,this._children.push(e),(e.type===`Input`||e.type===`Output`)&&this.syncPorts()}removeChild(e){let t=this._children.indexOf(e);if(t!==-1){let n=e.type===`Input`||e.type===`Output`;this._children.splice(t,1),e.parent=null,n&&this.syncPorts()}}syncPorts(){let e=this._children.filter(e=>e.type===`Input`),t=e.reduce((e,t)=>{let n=t.inputIndex??0;return Math.max(e,n)},-1),n=this._children.filter(e=>e.type===`Output`),r=n.reduce((e,t)=>{let n=t.outputIndex??0;return Math.max(e,n)},-1),i=t+1,a=this.inputs.length;for(let t=a;t<i;t++){let n=e.find(e=>e.inputIndex===t),r=this.in(n?.inputName||`input_${t}`,null,{type:n?.dataType||`any`});r.onChange=e=>{this._children.filter(e=>e.type===`Input`&&e.inputIndex===t).forEach(e=>e.markDirty())}}for(let e=i;e<a;e++)this.inputs[e]&&(this.inputs[e].options={...this.inputs[e].options,hidden:!0});for(let t=0;t<i;t++)if(this.inputs[t]){let n=e.find(e=>e.inputIndex===t);this.inputs[t].name=n?.inputName||`input_${t}`,this.inputs[t].dataType=n?.dataType||`any`,this.inputs[t].options={...this.inputs[t].options,hidden:!1}}let o=r+1,s=this.outputs.length;for(let e=s;e<o;e++){let t=n.find(t=>t.outputIndex===e);this.out(t?.outputName||`output_${e}`,`param`,{type:t?.dataType||`any`})}for(let e=o;e<s;e++)this.outputs[e]&&(this.outputs[e].options={...this.outputs[e].options,hidden:!0});for(let e=0;e<o;e++)if(this.outputs[e]){let t=n.find(t=>t.outputIndex===e);this.outputs[e].name=t?.outputName||`output_${e}`,this.outputs[e].dataType=t?.dataType||`any`,this.outputs[e].options={...this.outputs[e].options,hidden:!1}}this.inputs=[...this.inputs],this.outputs=[...this.outputs]}outputNode(){return this._children.find(e=>e.type===`Output`)||this._children.find(e=>e.cook)||(this._children.length>0?this._children[this._children.length-1]:null)}displayNode(){return this._children.find(e=>e.cook)??null}indirectInputs(){return this._children.filter(e=>e.type===`Input`)}update(){let e=this._children.filter(e=>e.type===`Output`),t=new Map;for(let n of e){let e=n.outputIndex??0;t.set(e,n)}for(let e=0;e<this.outputs.length;e++){let n=t.get(e);if(n&&n.inputs.length>0){let t=n.inputs[0].value;this.outputs[e].setValue(t),e===0&&(t instanceof HTMLCanvasElement||t instanceof HTMLImageElement)&&(this.preview=t)}else if(e===0){let t=this._children.find(e=>e.cook);t&&t.outputs.length>0?(this.outputs[e].setValue(t.outputs[0].value),t.preview&&(this.preview=t.preview)):this.outputs[e].setValue(null)}else this.outputs[e].setValue(null)}(this.outputs.length===0||!t.has(0))&&(this._children.find(e=>e.cook)?.preview||(this.preview=null))}},x=o.map(e=>({value:e,label:e})),S={type:`Input`,name:`Input`,icon:`LogIn`,description:`Represents an external input to a subnet`,category:`network`},C=class extends n{constructor(e,t){super(e,`Input`,t)}setup(){this.output=this.out(`output`),this.addParm(`inputIndex`,{value:0,type:`int`,params:{min:0,step:1},displayName:`Input Index`}),this.addParm(`inputName`,{value:``,type:`text`,displayName:`Input Name`}),this.addParm(`dataType`,{value:`any`,type:`select`,params:{options:x},displayName:`Data Type`});let e=()=>{this.parent&&this.parent.syncPorts&&this.parent.syncPorts(),this.update()};this.watchProp(`inputIndex`,e),this.watchProp(`inputName`,e),this.watchProp(`dataType`,()=>{this.output.dataType=this.dataType,e()}),this.onUpdate=()=>this.update(),this.onReady=()=>this.update()}get inputIndex(){return this.props.inputIndex?.value??0}get inputName(){return this.props.inputName?.value??``}get dataType(){let e=this.props.dataType?.value;return typeof e==`string`&&m(e)?e:`any`}update(){if(this.parent&&this.parent.inputs.length>0){let e=this.inputIndex,t=this.parent.inputs[e];if(t){this.output.setValue(t.value),this.preview=this.isPreviewValue(t.value)?t.value:null;return}}this.output.setValue(null),this.preview=null}},w=o.map(e=>({value:e,label:e})),T={type:`Output`,name:`Output`,icon:`LogOut`,description:`Defines the output of a subnet`,category:`network`},E=class extends n{constructor(e,t){super(e,`Output`,t)}setup(){this.in(`input`,null),this.addParm(`outputIndex`,{value:0,type:`int`,params:{min:0,step:1},displayName:`Output Index`}),this.addParm(`outputName`,{value:``,type:`text`,displayName:`Output Name`}),this.addParm(`dataType`,{value:`any`,type:`select`,params:{options:w},displayName:`Data Type`});let e=()=>{this.parent&&this.parent.syncPorts&&this.parent.syncPorts(),this.update()};this.watchProp(`outputIndex`,e),this.watchProp(`outputName`,e),this.watchProp(`dataType`,()=>{this.inputs[0]&&(this.inputs[0].dataType=this.dataType),e()}),this.onUpdate=()=>this.update(),this.onReady=()=>this.update()}get outputIndex(){return this.props.outputIndex?.value??0}get outputName(){return this.props.outputName?.value??``}get dataType(){let e=this.props.dataType?.value;return typeof e==`string`&&m(e)?e:`any`}update(){let e=this.inputs[0];e&&(this.preview=this.isPreviewValue(e.value)?e.value:null)}},D={type:`Random`,name:`Random`,icon:`Dice5`,description:`Generate a deterministic value from an explicit seed`,category:`utility`},O=class extends n{constructor(e,t){super(e,`Random`,t)}setup(){let e=this.in(`seed`,0,{type:`int`}),t=this.in(`sample`,0,{type:`int`}),n=this.out(`value`),r=()=>n.setValue(u(e.value,t.value));e.onChange=r,t.onChange=r,this.onUpdate=r,this.onReady=r}},k={type:`Remap`,name:`Remap`,icon:`ArrowRightLeft`,description:`Map a number from one range into another`,category:`utility`},A=class extends n{constructor(e,t){super(e,`Remap`,t)}setup(){let e=this.in(`value`,0,{type:`float`}),t=this.in(`inMin`,0,{type:`float`}),n=this.in(`inMax`,1,{type:`float`}),r=this.in(`outMin`,0,{type:`float`}),i=this.in(`outMax`,1,{type:`float`}),a=this.out(`result`);this.addParm(`clamp`,{value:!1,type:`boolean`,displayName:`Clamp`});let o=()=>a.setValue(d(e.value,t.value,n.value,r.value,i.value,this.props.clamp.value));for(let a of[e,t,n,r,i])a.onChange=o;this.watchProp(`clamp`,o),this.onUpdate=o,this.onReady=o}},j={type:`Select`,name:`Select`,icon:`ListFilter`,description:`Pick an item from an array by index`,category:`utility`},M=class extends n{constructor(e,t){super(e,`Select`,t)}setup(){this.arrayInput=this.in(`array`,[],{type:`array`}),this.itemOutput=this.out(`item`,`param`),this.countOutput=this.out(`count`,`param`),this.addParm(`index`,{value:0,type:`int`,params:{min:0,max:0,step:1},displayName:`Index`}),this.addParm(`wrap`,{value:!0,type:`boolean`,displayName:`Wrap Index`}),this.watchProp(`index`,()=>this.update()),this.watchProp(`wrap`,()=>this.update()),this.onUpdate=()=>this.update(),this.onReady=()=>this.update()}update(){let e=this.arrayInput.value;if(!Array.isArray(e)||e.length===0){this.itemOutput.setValue(null),this.countOutput.setValue(0),this.updatePropParams(`index`,{max:0});return}this.updatePropParams(`index`,{max:e.length-1});let t=this.props.index?.value??0;t=(this.props.wrap?.value??!0)&&e.length>0?(t%e.length+e.length)%e.length:Math.max(0,Math.min(t,e.length-1));let n=e[t];this.itemOutput.setValue(n),this.countOutput.setValue(e.length),this.preview=n instanceof HTMLCanvasElement||n instanceof HTMLImageElement?n:null}},N={type:`Null`,name:`Null`,icon:`Circle`,description:`Pass its input through unchanged`,category:`routing`},P=class extends n{constructor(e,t){super(e,`Null`,t)}setup(){let e=this.in(`input`,null,{type:`any`}),t=this.out(`output`),n=()=>t.setValue(e.value);e.onChange=n,this.onUpdate=n,this.onReady=n}};function F(){return typeof document<`u`}var I={type:`Freeze`,name:`Freeze`,icon:`Snowflake`,description:`Capture and lock a value`,category:`utility`},L=class extends n{constructor(e,t){super(e,`Freeze`,t),this.frozenValue=null,this.hasCaptured=!1}setup(){this.input=this.in(`input`,null,{type:`any`}),this.output=this.out(`output`,`param`),this.addParm(`frozen`,{value:!1,type:`boolean`,displayName:`Frozen`}),this.addAction(`capture`,{label:`Capture`,icon:`Camera`,callback:()=>this.capture()}),this.addAction(`clear`,{label:`Clear`,icon:`Trash2`,callback:()=>this.clear()}),this.watchProp(`frozen`,()=>this.update()),this.onUpdate=()=>this.update(),this.onReady=()=>this.update()}capture(){this.frozenValue=this.deepClone(this.input.value),this.hasCaptured=!0,this.setParm(`frozen`,!0),this.update()}clear(){this.frozenValue=null,this.hasCaptured=!1,this.setParm(`frozen`,!1),this.update()}deepClone(e){if(e==null)return e;if(a(e)){let t=e,n=t.naturalWidth||t.width,r=t.naturalHeight||t.height,i=l(n,r);return i.getContext(`2d`)?.drawImage(e,0,0),i}if(Array.isArray(e))return e.map(e=>this.deepClone(e));if(typeof e==`object`)try{return JSON.parse(JSON.stringify(e))}catch{return e}return e}update(){(this.props.frozen?.value??!1)&&this.hasCaptured?(this.output.setValue(this.frozenValue),F()&&a(this.frozenValue)&&(this.preview=this.frozenValue)):(this.output.setValue(this.input.value),this.preview=F()&&a(this.input.value)?this.input.value:null)}serialize(){return{hasCaptured:this.hasCaptured}}deserialize(e){this.hasCaptured=e.hasCaptured===!0}},R=[h,_,y,S,T,D,k,j,N,I],z={Switch:g,Merge:v,Subnet:b,Input:C,Output:E,Random:O,Remap:A,Select:M,Null:P,Freeze:L};e(`core`,z),t(`Switch`,`/**
|
|
1
|
+
import{c as e,u as t}from"./nodeTypeUtils-BDJsc2Ks.js";import{s as n}from"./DefinitionNode-CaRTXQ_b.js";import{o as r,t as i}from"./coreTypes-DtnDATZ7.js";import{n as a,t as o}from"./expressions-X-Z-GrgW.js";import{B as s,R as c,d as l,f as u}from"./index-BWnrmIB9.js";import{r as d,t as f}from"./remap-5SjXQU-q.js";var p={type:`Switch`,name:`Switch`,icon:`GitBranch`,description:`Switch between multiple inputs by index`,category:`routing`},m=class extends n{constructor(e,t){super(e,`Switch`,t)}get activeInputIndex(){let e=this.getVariadicInputs();return Math.min(this.props.index?.value??0,e.length-1)}isInputActive(e){let t=this.getVariadicInputs(),n=this.activeInputIndex;return t.findIndex(t=>t.id===e)===n}setup(){this.setVariadic(),this.output=this.out(`output`);let e=this.param(`index`,0,{type:`int`,min:0,max:0,step:1});e.documentField=`props`,this.watchProp(`index`,()=>this.update()),this.onUpdate=()=>this.update(),this.onReady=()=>this.update()}onCook(){this.update()}update(){let e=this.getVariadicInputs(),t=e.filter(e=>e.connections.length>0).length;this.updatePropParams(`index`,{max:Math.max(0,t-1)});let n=e[Math.min(this.props.index.value,e.length-1)];n?(this.output.setValue(n.value),this.preview=this.isPreviewValue(n.value)?n.value:null):(this.output.setValue(null),this.preview=null)}},h={type:`Merge`,name:`Merge`,icon:`GitMerge`,description:`Combine multiple inputs into an array`,category:`routing`},g=class extends n{constructor(e,t){super(e,`Merge`,t)}setup(){this.setVariadic(),this.output=this.out(`output`),this.addParm(`append`,{value:!1,type:`boolean`,displayName:`Append Mode`,hidden:()=>{let e=this.getVariadicInputs();return!Array.isArray(e[0]?.value)}}),this.watchProp(`append`,()=>this.update()),this.onUpdate=()=>this.update(),this.onReady=()=>this.update()}update(){let e=this.getVariadicInputs().filter(e=>e.value!==null).map(e=>e.value);if(this.props.append.value&&e.length>0&&Array.isArray(e[0])){let t=[...e[0],...e.slice(1)];this.output.setValue(t)}else this.output.setValue(e);this.preview=null;for(let t of e)if(t instanceof HTMLCanvasElement||t instanceof HTMLImageElement){this.preview=t;break}}},_={type:`Subnet`,name:`Subnet`,icon:`Folder`,description:`Network container for organizing nodes`,category:`network`},v=class extends n{constructor(e,t){super(e,`Subnet`,t)}setup(){this.onUpdate=()=>this.update(),this.onReady=()=>{this.syncPorts(),this.update()}}isNetwork(){return!0}addChild(e){e.parent=this,this._children.push(e),(e.type===`Input`||e.type===`Output`)&&this.syncPorts()}removeChild(e){let t=this._children.indexOf(e);if(t!==-1){let n=e.type===`Input`||e.type===`Output`;this._children.splice(t,1),e.parent=null,n&&this.syncPorts()}}syncPorts(){let e=this._children.filter(e=>e.type===`Input`),t=e.reduce((e,t)=>{let n=t.inputIndex??0;return Math.max(e,n)},-1),n=this._children.filter(e=>e.type===`Output`),r=n.reduce((e,t)=>{let n=t.outputIndex??0;return Math.max(e,n)},-1),i=t+1,a=this.inputs.length;for(let t=a;t<i;t++){let n=e.find(e=>e.inputIndex===t),r=this.in(n?.inputName||`input_${t}`,null,{type:n?.dataType||`any`});r.onChange=e=>{this._children.filter(e=>e.type===`Input`&&e.inputIndex===t).forEach(e=>e.markDirty())}}for(let e=i;e<a;e++)this.inputs[e]&&(this.inputs[e].options={...this.inputs[e].options,hidden:!0});for(let t=0;t<i;t++)if(this.inputs[t]){let n=e.find(e=>e.inputIndex===t);this.inputs[t].name=n?.inputName||`input_${t}`,this.inputs[t].dataType=n?.dataType||`any`,this.inputs[t].options={...this.inputs[t].options,hidden:!1}}let o=r+1,s=this.outputs.length;for(let e=s;e<o;e++){let t=n.find(t=>t.outputIndex===e);this.out(t?.outputName||`output_${e}`,`param`,{type:t?.dataType||`any`})}for(let e=o;e<s;e++)this.outputs[e]&&(this.outputs[e].options={...this.outputs[e].options,hidden:!0});for(let e=0;e<o;e++)if(this.outputs[e]){let t=n.find(t=>t.outputIndex===e);this.outputs[e].name=t?.outputName||`output_${e}`,this.outputs[e].dataType=t?.dataType||`any`,this.outputs[e].options={...this.outputs[e].options,hidden:!1}}this.inputs=[...this.inputs],this.outputs=[...this.outputs]}outputNode(){return this._children.find(e=>e.type===`Output`)||this._children.find(e=>e.cook)||(this._children.length>0?this._children[this._children.length-1]:null)}displayNode(){return this._children.find(e=>e.cook)??null}indirectInputs(){return this._children.filter(e=>e.type===`Input`)}update(){let e=this._children.filter(e=>e.type===`Output`),t=new Map;for(let n of e){let e=n.outputIndex??0;t.set(e,n)}for(let e=0;e<this.outputs.length;e++){let n=t.get(e);if(n&&n.inputs.length>0){let t=n.inputs[0].value;this.outputs[e].setValue(t),e===0&&(t instanceof HTMLCanvasElement||t instanceof HTMLImageElement)&&(this.preview=t)}else if(e===0){let t=this._children.find(e=>e.cook);t&&t.outputs.length>0?(this.outputs[e].setValue(t.outputs[0].value),t.preview&&(this.preview=t.preview)):this.outputs[e].setValue(null)}else this.outputs[e].setValue(null)}(this.outputs.length===0||!t.has(0))&&(this._children.find(e=>e.cook)?.preview||(this.preview=null))}},y=i.map(e=>({value:e,label:e})),b={type:`Input`,name:`Input`,icon:`LogIn`,description:`Represents an external input to a subnet`,category:`network`},x=class extends n{constructor(e,t){super(e,`Input`,t)}setup(){this.output=this.out(`output`),this.addParm(`inputIndex`,{value:0,type:`int`,params:{min:0,step:1},displayName:`Input Index`}),this.addParm(`inputName`,{value:``,type:`text`,displayName:`Input Name`}),this.addParm(`dataType`,{value:`any`,type:`select`,params:{options:y},displayName:`Data Type`});let e=()=>{this.parent&&this.parent.syncPorts&&this.parent.syncPorts(),this.update()};this.watchProp(`inputIndex`,e),this.watchProp(`inputName`,e),this.watchProp(`dataType`,()=>{this.output.dataType=this.dataType,e()}),this.onUpdate=()=>this.update(),this.onReady=()=>this.update()}get inputIndex(){return this.props.inputIndex?.value??0}get inputName(){return this.props.inputName?.value??``}get dataType(){let e=this.props.dataType?.value;return typeof e==`string`&&r(e)?e:`any`}update(){if(this.parent&&this.parent.inputs.length>0){let e=this.inputIndex,t=this.parent.inputs[e];if(t){this.output.setValue(t.value),this.preview=this.isPreviewValue(t.value)?t.value:null;return}}this.output.setValue(null),this.preview=null}},S=i.map(e=>({value:e,label:e})),C={type:`Output`,name:`Output`,icon:`LogOut`,description:`Defines the output of a subnet`,category:`network`},w=class extends n{constructor(e,t){super(e,`Output`,t)}setup(){this.in(`input`,null),this.addParm(`outputIndex`,{value:0,type:`int`,params:{min:0,step:1},displayName:`Output Index`}),this.addParm(`outputName`,{value:``,type:`text`,displayName:`Output Name`}),this.addParm(`dataType`,{value:`any`,type:`select`,params:{options:S},displayName:`Data Type`});let e=()=>{this.parent&&this.parent.syncPorts&&this.parent.syncPorts(),this.update()};this.watchProp(`outputIndex`,e),this.watchProp(`outputName`,e),this.watchProp(`dataType`,()=>{this.inputs[0]&&(this.inputs[0].dataType=this.dataType),e()}),this.onUpdate=()=>this.update(),this.onReady=()=>this.update()}get outputIndex(){return this.props.outputIndex?.value??0}get outputName(){return this.props.outputName?.value??``}get dataType(){let e=this.props.dataType?.value;return typeof e==`string`&&r(e)?e:`any`}update(){let e=this.inputs[0];e&&(this.preview=this.isPreviewValue(e.value)?e.value:null)}},T={type:`Random`,name:`Random`,icon:`Dice5`,description:`Generate a deterministic value from an explicit seed`,category:`utility`},E=class extends n{constructor(e,t){super(e,`Random`,t)}setup(){let e=this.in(`seed`,0,{type:`int`}),t=this.in(`sample`,0,{type:`int`}),n=this.out(`value`),r=()=>n.setValue(d(e.value,t.value));e.onChange=r,t.onChange=r,this.onUpdate=r,this.onReady=r}},D={type:`Remap`,name:`Remap`,icon:`ArrowRightLeft`,description:`Map a number from one range into another`,category:`utility`},O=class extends n{constructor(e,t){super(e,`Remap`,t)}setup(){let e=this.in(`value`,0,{type:`float`}),t=this.in(`inMin`,0,{type:`float`}),n=this.in(`inMax`,1,{type:`float`}),r=this.in(`outMin`,0,{type:`float`}),i=this.in(`outMax`,1,{type:`float`}),a=this.out(`result`);this.addParm(`clamp`,{value:!1,type:`boolean`,displayName:`Clamp`});let o=()=>a.setValue(f(e.value,t.value,n.value,r.value,i.value,this.props.clamp.value));for(let a of[e,t,n,r,i])a.onChange=o;this.watchProp(`clamp`,o),this.onUpdate=o,this.onReady=o}},k={type:`Select`,name:`Select`,icon:`ListFilter`,description:`Pick an item from an array by index`,category:`utility`},A=class extends n{constructor(e,t){super(e,`Select`,t)}setup(){this.arrayInput=this.in(`array`,[],{type:`array`}),this.itemOutput=this.out(`item`,`param`),this.countOutput=this.out(`count`,`param`),this.addParm(`index`,{value:0,type:`int`,params:{min:0,max:0,step:1},displayName:`Index`}),this.addParm(`wrap`,{value:!0,type:`boolean`,displayName:`Wrap Index`}),this.watchProp(`index`,()=>this.update()),this.watchProp(`wrap`,()=>this.update()),this.onUpdate=()=>this.update(),this.onReady=()=>this.update()}update(){let e=this.arrayInput.value;if(!Array.isArray(e)||e.length===0){this.itemOutput.setValue(null),this.countOutput.setValue(0),this.updatePropParams(`index`,{max:0});return}this.updatePropParams(`index`,{max:e.length-1});let t=this.props.index?.value??0;t=(this.props.wrap?.value??!0)&&e.length>0?(t%e.length+e.length)%e.length:Math.max(0,Math.min(t,e.length-1));let n=e[t];this.itemOutput.setValue(n),this.countOutput.setValue(e.length),this.preview=n instanceof HTMLCanvasElement||n instanceof HTMLImageElement?n:null}},j={type:`Null`,name:`Null`,icon:`Circle`,description:`Pass its input through unchanged`,category:`routing`},M=class extends n{constructor(e,t){super(e,`Null`,t)}setup(){let e=this.in(`input`,null,{type:`any`}),t=this.out(`output`),n=()=>t.setValue(e.value);e.onChange=n,this.onUpdate=n,this.onReady=n}},N=()=>globalThis;function P(e){if(typeof e!=`object`||!e)return!1;let t=e;return typeof t.width!=`number`||typeof t.height!=`number`?!1:typeof t.getContext==`function`||`src`in t||typeof t.close==`function`}var F=class extends Error{constructor(e){super(`Cascade has no ${e} in this environment. Install the optional '@napi-rs/canvas' renderer before cooking a graph that draws.`),this.name=`MissingRenderSurfaceError`}};function I(){let e=N();return typeof e.document?.createElement==`function`?H:typeof e.OffscreenCanvas==`function`?U:null}function L(e,t){let n=I();if(!n)throw new F(`drawing surface`);return n.createSurface(e,t)}function R(e){return e instanceof Uint8Array?e:new Uint8Array(e)}async function z(e){let t=N();if(typeof t.createImageBitmap!=`function`||typeof e==`string`)return null;let n=e instanceof Uint8Array||e instanceof ArrayBuffer?typeof t.Blob==`function`?new t.Blob([R(e)]):R(e):e;return t.createImageBitmap(n)}async function B(e){let t=N();if(typeof t.Image!=`function`)throw new F(`image decoder`);let n=new t.Image;if(typeof e==`string`?(/^(data:|blob:)/.test(e)||(n.crossOrigin=`anonymous`),n.src=e):n.src=e instanceof Uint8Array||e instanceof ArrayBuffer?R(e):new Uint8Array(await e.arrayBuffer()),await n.decode(),!n.width||!n.height)throw Error(`cascade: could not decode image data`);return n}async function V(e){if(typeof e!=`string`){let t=await z(e);if(t)return t}return B(e)}var H={name:`DOM canvas`,createSurface(e,t){let n=N().document.createElement(`canvas`);return n.width=e,n.height=t,n},decodeImage:V},U={name:`OffscreenCanvas`,createSurface(e,t){let n=N().OffscreenCanvas;return new n(e,t)},decodeImage:V};function W(){return typeof document<`u`}var G={type:`Freeze`,name:`Freeze`,icon:`Snowflake`,description:`Capture and lock a value`,category:`utility`},K=class extends n{constructor(e,t){super(e,`Freeze`,t),this.frozenValue=null,this.hasCaptured=!1}setup(){this.input=this.in(`input`,null,{type:`any`}),this.output=this.out(`output`,`param`),this.addParm(`frozen`,{value:!1,type:`boolean`,displayName:`Frozen`}),this.addAction(`capture`,{label:`Capture`,icon:`Camera`,callback:()=>this.capture()}),this.addAction(`clear`,{label:`Clear`,icon:`Trash2`,callback:()=>this.clear()}),this.watchProp(`frozen`,()=>this.update()),this.onUpdate=()=>this.update(),this.onReady=()=>this.update()}capture(){this.frozenValue=this.deepClone(this.input.value),this.hasCaptured=!0,this.setParm(`frozen`,!0),this.update()}clear(){this.frozenValue=null,this.hasCaptured=!1,this.setParm(`frozen`,!1),this.update()}deepClone(e){if(e==null)return e;if(P(e)){let t=e,n=L(t.naturalWidth||t.width,t.naturalHeight||t.height);return n.getContext(`2d`)?.drawImage(e,0,0),n}if(Array.isArray(e))return e.map(e=>this.deepClone(e));if(typeof e==`object`)try{return JSON.parse(JSON.stringify(e))}catch{return e}return e}update(){(this.props.frozen?.value??!1)&&this.hasCaptured?(this.output.setValue(this.frozenValue),W()&&P(this.frozenValue)&&(this.preview=this.frozenValue)):(this.output.setValue(this.input.value),this.preview=W()&&P(this.input.value)?this.input.value:null)}serialize(){return{hasCaptured:this.hasCaptured}}deserialize(e){this.hasCaptured=e.hasCaptured===!0}},q=[p,h,_,b,C,T,D,k,j,G],J={Switch:m,Merge:g,Subnet:v,Input:x,Output:w,Random:E,Remap:O,Select:A,Null:M,Freeze:K};e(`core`,J),t(`Switch`,`/**
|
|
2
2
|
* SwitchNode - routes one of multiple inputs to output based on index
|
|
3
3
|
* Connect multiple inputs and use the index parameter to select which one passes through
|
|
4
4
|
*/
|
|
@@ -795,8 +795,7 @@ export class NullNode extends Node {
|
|
|
795
795
|
import { Node } from '../../Node.js';
|
|
796
796
|
import type { Graph } from '../../Graph.js';
|
|
797
797
|
import type { InputPort, OutputPort } from '@/types/node.types';
|
|
798
|
-
import { createSurface } from '../../image/surface.js';
|
|
799
|
-
import { hasPixels } from '@/nodes/image/ImageBuffer';
|
|
798
|
+
import { createSurface, hasPixels } from '../../image/surface.js';
|
|
800
799
|
|
|
801
800
|
function previewWanted(): boolean {
|
|
802
801
|
return typeof document !== 'undefined';
|
|
@@ -953,4 +952,4 @@ export class FreezeNode extends Node {
|
|
|
953
952
|
this.hasCaptured = data.hasCaptured === true;
|
|
954
953
|
}
|
|
955
954
|
}
|
|
956
|
-
`);export{
|
|
955
|
+
`);export{l as CascadeContext,o as ExpressionEngine,K as FreezeNode,s as Graph,x as InputNode,g as MergeNode,n as Node,M as NullNode,w as OutputNode,E as RandomNode,O as RemapNode,A as SelectNode,v as SubnetNode,m as SwitchNode,u as cascade,c as coreLibrary,J as coreNodeClasses,a as expressionEngine,q as nodeMetadataList};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=`float.int.bool.string.vec2.vec3.vec4.vec2i.vec3i.vec4i.mat2.mat3.mat4.image.texture.geometry.points.lines.polyline.mesh.rects.color.camera.scene.light.asset.array.object.bundle.any`.split(`.`),t={number:`float`,boolean:`bool`,curves:`polyline`},n={int:[`float`,`string`],float:[`string`],bool:[`int`,`float`,`string`],vec2i:[`vec2`],vec3i:[`vec3`],vec4i:[`vec4`],geometry:[`scene`],vec4:[`color`],color:[`vec4`]};function r(e){return e?t[e]??e:`any`}function i(e,t){let i=r(e),a=r(t);return i===a||i===`any`||a===`any`||(n[i]?.includes(a)??!1)}var a=e,o=new Set(a);function s(e){return o.has(e)}function c(e){let t=e.indexOf(`.`);return t>0?e.slice(0,t):null}var l={vec2:2,vec3:3,vec4:4,vec2i:2,vec3i:3,vec4i:4,mat2:4,mat3:9,mat4:16,color:4};function u(e){return e===`int`||e.endsWith(`i`)}var d=r;function f(e,t){return i(e,t)}var p={float:`var(--type-number)`,int:`var(--type-number)`,bool:`var(--type-bool)`,string:`var(--type-string)`,vec2:`var(--type-vector)`,vec3:`var(--type-vector)`,vec4:`var(--type-vector)`,vec2i:`var(--type-vector)`,vec3i:`var(--type-vector)`,vec4i:`var(--type-vector)`,mat2:`var(--type-matrix)`,mat3:`var(--type-matrix)`,mat4:`var(--type-matrix)`,camera:`var(--type-camera)`,image:`var(--type-image)`,texture:`var(--type-texture)`,asset:`var(--type-image)`,points:`var(--type-geometry)`,lines:`var(--type-geometry)`,polyline:`var(--type-geometry)`,mesh:`var(--type-mesh)`,rects:`var(--type-geometry)`,curves:`var(--type-geometry)`,color:`var(--type-color)`,array:`var(--type-array)`,object:`var(--type-object)`,bundle:`var(--type-any)`,any:`var(--type-any)`};function m(e){if(!e)return p.any;if(p[e])return p[e];let t=c(e);if(!t)return p.any;let n=0;for(let e=0;e<t.length;e++)n=n*31+t.charCodeAt(e)>>>0;return`hsl(${n%360}, var(--type-derived-saturation), var(--type-derived-lightness))`}function h(e){return!!(e&&typeof e==`object`&&typeof e.path==`string`&&Array.isArray(e.size))}function g(e){if(h(e))return e;if(typeof e!=`string`||!e)return null;let t=e.endsWith(`.npy`);return{path:e,size:[0,0],channels:t?`a`:`rgb`,depth:t?`f32`:`u8`,space:t?`linear`:`srgb`}}export{g as a,u as c,f as i,d as l,p as n,s as o,l as r,h as s,a as t,m as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{l as e}from"./editor.api-
|
|
1
|
+
import{l as e}from"./editor.api-Dkutg_Z1.js";import{t}from"./workers-CYwwTiVF.js";import{_ as n,a as r,c as i,d as a,f as o,g as s,h as c,i as l,l as u,m as d,n as f,o as p,p as m,r as h,s as g,t as _,u as v,v as y}from"./lspLanguageFeatures-Dn9hlKX6.js";var b=12e4,x=class{constructor(e){this._defaults=e,this._worker=null,this._client=null,this._idleCheckInterval=window.setInterval(()=>this._checkIfIdle(),3e4),this._lastUsedTime=0,this._configChangeListener=this._defaults.onDidChange(()=>this._stopWorker())}_stopWorker(){this._worker&&=(this._worker.dispose(),null),this._client=null}dispose(){clearInterval(this._idleCheckInterval),this._configChangeListener.dispose(),this._stopWorker()}_checkIfIdle(){this._worker&&Date.now()-this._lastUsedTime>b&&this._stopWorker()}_getClient(){return this._lastUsedTime=Date.now(),this._client||=(this._worker=t({moduleId:`vs/language/css/cssWorker`,createWorker:()=>new Worker(new URL(`/assets/css.worker-B3ciXF_0.js`,``+import.meta.url),{type:`module`}),label:this._defaults.languageId,createData:{options:this._defaults.options,languageId:this._defaults.languageId}}),this._worker.getProxy()),this._client}getLanguageServiceWorker(...e){let t;return this._getClient().then(e=>{t=e}).then(t=>{if(this._worker)return this._worker.withSyncedResources(e)}).then(e=>t)}};function S(t){let n=[],s=[],c=new x(t);n.push(c);let g=(...e)=>c.getLanguageServiceWorker(...e);function y(){let{languageId:n,modeConfiguration:c}=t;w(s),c.completionItems&&s.push(e.registerCompletionItemProvider(n,new _(g,[`/`,`-`,`:`]))),c.hovers&&s.push(e.registerHoverProvider(n,new a(g))),c.documentHighlights&&s.push(e.registerDocumentHighlightProvider(n,new p(g))),c.definitions&&s.push(e.registerDefinitionProvider(n,new f(g))),c.references&&s.push(e.registerReferenceProvider(n,new o(g))),c.documentSymbols&&s.push(e.registerDocumentSymbolProvider(n,new u(g))),c.rename&&s.push(e.registerRenameProvider(n,new m(g))),c.colors&&s.push(e.registerColorProvider(n,new l(g))),c.foldingRanges&&s.push(e.registerFoldingRangeProvider(n,new v(g))),c.diagnostics&&s.push(new h(n,g,t.onDidChange)),c.selectionRanges&&s.push(e.registerSelectionRangeProvider(n,new d(g))),c.documentFormattingEdits&&s.push(e.registerDocumentFormattingEditProvider(n,new r(g))),c.documentRangeFormattingEdits&&s.push(e.registerDocumentRangeFormattingEditProvider(n,new i(g)))}return y(),n.push(C(s)),C(n)}function C(e){return{dispose:()=>w(e)}}function w(e){for(;e.length;)e.pop().dispose()}export{_ as CompletionAdapter,f as DefinitionAdapter,h as DiagnosticsAdapter,l as DocumentColorAdapter,r as DocumentFormattingEditProvider,p as DocumentHighlightAdapter,g as DocumentLinkAdapter,i as DocumentRangeFormattingEditProvider,u as DocumentSymbolAdapter,v as FoldingRangeAdapter,a as HoverAdapter,o as ReferenceAdapter,m as RenameAdapter,d as SelectionRangeAdapter,x as WorkerManager,c as fromPosition,s as fromRange,S as setupMode,n as toRange,y as toTextEdit};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./DefinitionNode-CaRTXQ_b.js";import{a as t,f as n,m as r,n as i,p as a,s as o,t as s}from"./time-P_OiBhcf.js";e([n,s,i,t,r,a,o]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function e(e,n){if(typeof e==`number`)return[e];if(Array.isArray(e)&&e.every(e=>typeof e==`number`))return e;if(e==null)return[0];throw Error(`${n} needs a number or a vector of numbers, and got ${t(e)}`)}function t(e){return Array.isArray(e)?`an array of ${e.length}`:`a ${typeof e}`}function n(t,n,r){let i=e(t,`the first input`),a=e(n,`the second input`);if(i.length!==a.length&&i.length!==1&&a.length!==1)throw Error(`cannot combine a vector of ${i.length} with a vector of ${a.length}`);let o=Math.max(i.length,a.length),s=[];for(let e=0;e<o;e+=1)s.push(r(i[i.length===1?0:e],a[a.length===1?0:e]));return o===1?s[0]:s}function r(t,n){let r=e(t,`the input`).map(n);return r.length===1?r[0]:r}function i(e,t){return t===0?0:e/t}var a={add:(e,t)=>e+t,subtract:(e,t)=>e-t,multiply:(e,t)=>e*t,divide:i,power:(e,t)=>e**t,modulo:(e,t)=>t===0?0:e%t,min:(e,t)=>Math.min(e,t),max:(e,t)=>Math.max(e,t),atan2:(e,t)=>Math.atan2(e,t)},o=Math.PI/180,s={abs:Math.abs,negate:e=>-e,floor:Math.floor,ceil:Math.ceil,round:Math.round,sqrt:e=>e<0?0:Math.sqrt(e),sign:Math.sign,sin:Math.sin,cos:Math.cos,tan:Math.tan,asin:e=>Math.asin(Math.max(-1,Math.min(1,e))),acos:e=>Math.acos(Math.max(-1,Math.min(1,e))),exp:Math.exp,log:e=>e<=0?0:Math.log(e),radians:e=>e*o,degrees:e=>e/o,fract:e=>e-Math.floor(e)},c={greater:(e,t)=>e>t,"greater-or-equal":(e,t)=>e>=t,less:(e,t)=>e<t,"less-or-equal":(e,t)=>e<=t,equal:(e,t)=>e===t,"not-equal":(e,t)=>e!==t};function l(e){return Object.keys(e).map(e=>({value:e,label:u(e)}))}function u(e){return e.split(`-`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `)}var d={apiVersion:1,label:`Binary Math`,description:`Two values, one operation. Component-wise, and a scalar broadcasts against a vector.`,icon:`Plus`,runsOn:`portable`,inputs:{a:{kind:`data`,type:`any`,default:0,description:`First value.`},b:{kind:`data`,type:`any`,default:0,description:`Second value.`}},outputs:{value:{kind:`data`,type:`any`}},props:{operation:{type:`string`,default:`add`,control:`select`,options:l(a),label:`Operation`}}};function f(e){let t=a[e.props.operation];if(!t)throw Error(`cascade.math.Binary has no operation "${e.props.operation}"`);e.outputs.value.set(n(e.inputs.a,e.inputs.b,t))}var p={apiVersion:1,label:`Unary Math`,description:`One value, one operation. Trigonometry is in radians.`,icon:`FunctionSquare`,runsOn:`portable`,inputs:{value:{kind:`data`,type:`any`,default:0}},outputs:{value:{kind:`data`,type:`any`}},props:{operation:{type:`string`,default:`abs`,control:`select`,options:l(s),label:`Operation`}}};function m(e){let t=s[e.props.operation];if(!t)throw Error(`cascade.math.Unary has no operation "${e.props.operation}"`);e.outputs.value.set(r(e.inputs.value,t))}var h={apiVersion:1,label:`Clamp`,description:`Hold a value between two bounds.`,icon:`Brackets`,runsOn:`portable`,inputs:{value:{kind:`data`,type:`any`,default:0},min:{kind:`data`,type:`any`,default:0},max:{kind:`data`,type:`any`,default:1}},outputs:{value:{kind:`data`,type:`any`}},props:{}};function g(e){let t=n(e.inputs.value,e.inputs.min,Math.max);e.outputs.value.set(n(t,e.inputs.max,Math.min))}var _={apiVersion:1,label:`Mix`,description:`Blend between two values. Houdini's lerp.`,icon:`Blend`,runsOn:`portable`,inputs:{a:{kind:`data`,type:`any`,default:0,description:`The value at 0.`},b:{kind:`data`,type:`any`,default:1,description:`The value at 1.`},bias:{kind:`data`,type:`float`,default:.5,min:0,max:1,step:.01,description:`Not clamped: past 0..1 this extrapolates, which is useful.`}},outputs:{value:{kind:`data`,type:`any`}},props:{}};function v(e){let t=e.inputs.bias??.5,r=n(e.inputs.b,e.inputs.a,(e,t)=>e-t);e.outputs.value.set(n(e.inputs.a,r,(e,n)=>e+n*t))}var y={apiVersion:1,label:`Compare`,description:`Test two values. Outputs a bool, for a Switch.`,icon:`Equal`,runsOn:`portable`,inputs:{a:{kind:`data`,type:`float`,default:0},b:{kind:`data`,type:`float`,default:0}},outputs:{result:{kind:`data`,type:`bool`}},props:{operation:{type:`string`,default:`greater`,control:`select`,options:l(c),label:`Test`},tolerance:{type:`float`,default:0,min:0,label:`Tolerance`,description:`Slack for Equal and Not Equal. Floating point rarely lands on exactly equal.`}}};function b(e){let t=e.props.operation,n=c[t];if(!n)throw Error(`cascade.math.Compare has no test "${e.props.operation}"`);let r=e.inputs.a??0,i=e.inputs.b??0,a=e.props.tolerance;if(a>0&&(t===`equal`||t===`not-equal`)){let n=Math.abs(r-i)<=a;e.outputs.result.set(t===`equal`?n:!n);return}e.outputs.result.set(n(r,i))}function x(e,t,n){return{kind:`definition-v1`,moduleId:`cascade.math.${e}`,definition:t,loadExecute:async()=>n}}var S=x(`Binary`,d,f),C=x(`Unary`,p,m),w=x(`Clamp`,h,g),T=x(`Mix`,_,v),E=x(`Compare`,y,b),D=Object.freeze([S,C,w,T,E]);Object.freeze([[`cascade.math.Binary`,d],[`cascade.math.Unary`,p],[`cascade.math.Clamp`,h],[`cascade.math.Mix`,_],[`cascade.math.Compare`,y]]);export{D as t};
|