@field/cascade 0.10.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 +25 -5
- package/ARCHITECTURE.md +5 -4
- package/CHANGELOG.md +382 -0
- package/README.md +1 -2
- package/dist/assets/AgentPanel-1JugFjE4.css +1 -0
- package/dist/assets/AgentPanel-BDL5MddA.js +5 -0
- package/dist/assets/{CodeEditor-DSZBpzdy.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-p25h3tj0.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-DzFLUotB.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-BICrEt0y.js → core-DB-MkGjj.js} +3 -4
- package/dist/assets/coreTypes-DtnDATZ7.js +1 -0
- package/dist/assets/{cssMode-D7TXw57I.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-DvkCO3ko.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-BA2lxsF1.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-BcDiyPd8.js → handlebars-CcD3aMeL.js} +1 -1
- package/dist/assets/{html-C7O4TyhX.js → html-DvZWGfqb.js} +1 -1
- package/dist/assets/{htmlMode-WaDGF3Mj.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-CpIEK7tz.js → javascript-Cap2ahgh.js} +1 -1
- package/dist/assets/{jsonMode-B2FltW0f.js → jsonMode-B0uLjp9C.js} +1 -1
- package/dist/assets/{liquid-CN6FFHZE.js → liquid-CnxwhfLn.js} +1 -1
- package/dist/assets/{lspLanguageFeatures-QhV9XtLp.js → lspLanguageFeatures-Dn9hlKX6.js} +1 -1
- package/dist/assets/math-GeULS-sk.js +1 -0
- package/dist/assets/{mdx-DE89pafV.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-ByTllTB9.js → python-CGyFk4XK.js} +1 -1
- package/dist/assets/{razor-USYlRRCE.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-BXpN8iUz.js → tsMode-BOeXzO9H.js} +1 -1
- package/dist/assets/{typescript-DInBjGQQ.js → typescript-J1SnE_Tu.js} +1 -1
- package/dist/assets/{workers-C7Ye5B7D.js → workers-CYwwTiVF.js} +1 -1
- package/dist/assets/{xml-U0Uocqyo.js → xml-DnPRNzK9.js} +1 -1
- package/dist/assets/{yaml-CBw_PVYf.js → yaml-BmmYBNa9.js} +1 -1
- package/dist/cli/DefinitionNode-P7AA4TAU.js +15 -0
- package/dist/cli/Graph-OB6EWSGL.js +2975 -0
- package/dist/cli/assert-GROGQNCQ.js +25 -0
- package/dist/cli/checks-3WB44XBL.js +189 -0
- package/dist/cli/chunk-2JEU3MGB.js +1125 -0
- package/dist/cli/chunk-2KXB47FP.js +115 -0
- package/dist/cli/chunk-3RXL5GHB.js +816 -0
- 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-7QE2ZNSN.js +121 -0
- package/dist/cli/chunk-BP7UKF36.js +376 -0
- package/dist/cli/chunk-BPODRH52.js +201 -0
- package/dist/cli/chunk-BZ63XQ3I.js +1301 -0
- package/dist/cli/chunk-CKS2FQWR.js +89 -0
- package/dist/cli/chunk-CO22XHNG.js +593 -0
- package/dist/cli/chunk-CTPLRSWF.js +2197 -0
- package/dist/cli/chunk-DEQSEFFH.js +153 -0
- package/dist/cli/chunk-EU4ZFZ7Y.js +122 -0
- package/dist/cli/chunk-EZRWJ4G2.js +104 -0
- package/dist/cli/chunk-FWMSGKEH.js +71 -0
- package/dist/cli/chunk-G23A2BZZ.js +705 -0
- package/dist/cli/chunk-GRIN2DDP.js +1465 -0
- package/dist/cli/chunk-HFHWYL55.js +139 -0
- package/dist/cli/chunk-HSNOBIVT.js +263 -0
- package/dist/cli/chunk-ICH7N5PN.js +26 -0
- package/dist/cli/chunk-J7VK7MNF.js +418 -0
- package/dist/cli/chunk-JVOCK5W4.js +83 -0
- package/dist/cli/chunk-KBGUO27Q.js +15 -0
- package/dist/cli/chunk-KH4MUBKF.js +1551 -0
- package/dist/cli/chunk-L6B6FUQP.js +330 -0
- package/dist/cli/chunk-LTXWBXOM.js +438 -0
- package/dist/cli/chunk-MI5JLQYA.js +220 -0
- package/dist/cli/chunk-MP653A5O.js +3766 -0
- package/dist/cli/chunk-NJFMDXHR.js +320 -0
- package/dist/cli/chunk-OM6BEME6.js +267 -0
- package/dist/cli/chunk-OWWBYLHC.js +136 -0
- package/dist/cli/chunk-QQPA2ZHH.js +273 -0
- package/dist/cli/chunk-RUU3YWXU.js +99 -0
- package/dist/cli/chunk-RXDIMXN5.js +98 -0
- package/dist/cli/chunk-ST6LROUG.js +267 -0
- package/dist/cli/chunk-TJW67QSI.js +225 -0
- package/dist/cli/chunk-WD62JIP6.js +118 -0
- package/dist/cli/chunk-WGKPJZDY.js +364 -0
- package/dist/cli/chunk-X4WKAOQP.js +634 -0
- package/dist/cli/chunk-X566FWBV.js +156 -0
- package/dist/cli/chunk-YH637PDL.js +317 -0
- package/dist/cli/chunk-ZL4JTG5Y.js +37 -0
- package/dist/cli/chunk-ZSCUZE6I.js +112 -0
- package/dist/cli/cliCommands-JJN5Z3ZC.js +3470 -0
- package/dist/cli/commands-PHYFYA3F.js +1374 -0
- package/dist/cli/contactSheet-2PQVRUFW.js +11 -0
- package/dist/cli/definitions-BPOPW52L.js +32 -0
- package/dist/cli/doctorCommand-ORWQRNYP.js +106 -0
- package/dist/cli/edit-S5KEQ5RA.js +28 -0
- package/dist/cli/editorCommands-NFR32JOY.js +41 -0
- package/dist/cli/encode-ICPEPMH5.js +17 -0
- package/dist/cli/file-3HTQHPYQ.js +41 -0
- package/dist/cli/filters-6ODFWYK4.js +379 -0
- package/dist/cli/frames-LSAUBZ7P.js +16 -0
- package/dist/cli/generators-YU7GB4MD.js +210 -0
- package/dist/cli/geo-6ZPGKZRU.js +43 -0
- package/dist/cli/graphCommands-EOUOBOIJ.js +184 -0
- package/dist/cli/graphFile-YTGJB5F5.js +292 -0
- package/dist/cli/headlessCanvas-ENRHC7GS.js +16 -0
- package/dist/cli/helpCommand-PULH6ZYB.js +157 -0
- package/dist/cli/image-TXELZZK5.js +55 -0
- package/dist/cli/index.js +100 -30756
- package/dist/cli/math-RSYRQ3C6.js +16 -0
- package/dist/cli/mcp-JVZFQOEX.js +164 -0
- package/dist/cli/parity-X6DEH2DV.js +334 -0
- package/dist/cli/pop-B7SIIYKN.js +39 -0
- package/dist/cli/project-VYGIA7JX.js +12 -0
- package/dist/cli/projectDefinition-F3D7UIHJ.js +27 -0
- package/dist/cli/projectRuntime-2Q4JKEH3.js +55 -0
- package/dist/cli/registerStandardNodes-BXJCB6E4.js +744 -0
- package/dist/cli/render-PT4MWI6U.js +438 -0
- package/dist/cli/runCommand-HNPQVZMS.js +198 -0
- package/dist/cli/runner-5XPXVW7J.js +43 -0
- package/dist/cli/runtime/image.ts +302 -0
- package/dist/cli/runtime/io.ts +78 -0
- package/dist/cli/runtime/stage.ts +4 -1
- package/dist/cli/share-MHF6TNRK.js +166 -0
- package/dist/cli/stageCache-TY2BFZJR.js +15 -0
- package/dist/cli/stageRunner-KY2EJP7X.js +10 -0
- package/dist/cli/text-MB3EKR4H.js +126 -0
- package/dist/cli/verbs-PI2JH5FI.js +19 -0
- 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/documentFormat.d.ts +18 -0
- package/dist/contracts/documentFormat.js +195 -0
- package/dist/contracts/editor.d.ts +17 -0
- package/dist/contracts/index.d.ts +1 -0
- package/dist/contracts/index.js +1 -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 +156 -0
- package/dist/image.js +161 -0
- 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 +35 -9
- 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 +64 -0
- package/dist/runtime/builtins/image/contactSheet.js +150 -0
- 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 +952 -0
- package/dist/runtime/builtins/image/index.js +44 -0
- 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/dist/stage.js +4 -1
- package/doc/CLI_REFERENCE.md +91 -2
- package/doc/EDITOR_EXPORT.md +37 -2
- package/doc/MCP.md +18 -1
- package/doc/NODE_REFERENCE.md +424 -10
- package/doc/PROJECT_AUTHORING.md +222 -7
- package/package.json +19 -4
- package/dist/assets/CodePanel-sY6sZa7B.js +0 -2
- package/dist/assets/CustomNodeDialog-BRKnqZhp.js +0 -1
- package/dist/assets/ExportDialog-C7dVGua4.js +0 -358
- package/dist/assets/ExportDialog-DOq0flMV.css +0 -1
- package/dist/assets/OpenGraphDialog-ZsgL-iwr.js +0 -1
- package/dist/assets/ProjectSettings-Cw17nNe3.js +0 -2
- package/dist/assets/definitions-DUww2Rt-.js +0 -1
- package/dist/assets/geo-C2RHOVHC.js +0 -1
- package/dist/assets/image-DR4oeyJB.js +0 -2062
- package/dist/assets/index-7vae6YFC.css +0 -1
- package/dist/assets/index-DyvDC6pS.js +0 -219
- package/dist/assets/math-DaDEgWKt.js +0 -1
- package/dist/assets/pop-pLH7L0PW.js +0 -1
|
@@ -1,358 +0,0 @@
|
|
|
1
|
-
import{At as e,Dt as t,G as n,Ot as r,Q as i,T as a,U as o,V as s,W as c,X as l,at as u,b as d,ct as f,d as p,dt as m,i as h,it as g,jt as _,l as v,lt as y,ot as b,pt as x,q as S,st as C,t as w,v as T,w as E,z as D}from"./legacy-CTEeXeqF.js";function O(e){let t=e.elements.filter(e=>!e.isAnnotation).map(e=>{let t=e;return{id:t.id,type:t.type,code:t.code,position:t.position,inputs:t.inputs.map(e=>({id:e.id,name:e.name,portType:e.portType,dataType:e.dataType,value:e.value,defaultValue:e.defaultValue})),outputs:t.outputs.map(e=>({id:e.id,name:e.name,portType:e.portType,dataType:e.dataType,value:e.value}))}}),n=e.connections.map(e=>({id:e.id,from:e.from,to:e.to,type:e.type})),r=e.elements.filter(e=>!e.isAnnotation).map(e=>e).filter(e=>e.inputs.every(e=>e.connections.length===0)).map(e=>e.id);return`
|
|
2
|
-
const graphData = {
|
|
3
|
-
version: '1.0.0',
|
|
4
|
-
nodes: ${JSON.stringify(t,null,2)},
|
|
5
|
-
connections: ${JSON.stringify(n,null,2)},
|
|
6
|
-
entryPoints: ${JSON.stringify(r)}
|
|
7
|
-
};
|
|
8
|
-
`.trim()}async function k(e){return new Promise((t,n)=>{let r=new FileReader;r.onloadend=()=>{let e=r.result.split(`,`)[1];t(e)},r.onerror=n,r.readAsDataURL(e)})}async function A(e){let t=[];for(let n of e)try{let e;if(n.type===`image`&&n.data instanceof HTMLImageElement){let t=document.createElement(`canvas`);t.width=n.data.width,t.height=n.data.height;let r=t.getContext(`2d`);r?(r.drawImage(n.data,0,0),e=t.toDataURL(`image/png`)):e=n.data.src}else if(n.type===`json`)e=`data:application/json;base64,${btoa(JSON.stringify(n.data))}`;else if(n.type===`text`)e=`data:text/plain;base64,${btoa(n.data)}`;else{let t=await(await fetch(n.path)).blob(),r=await k(t);e=`data:${t.type};base64,${r}`}t.push({id:n.id,path:n.path,dataUrl:e,type:n.type})}catch(e){console.warn(`Failed to embed asset ${n.path}:`,e)}return t}async function j(e,t=`Cascade Project`){let n=await A(e.assetManager.list()),r=O(e);return`<!DOCTYPE html>
|
|
9
|
-
<html lang="en">
|
|
10
|
-
<head>
|
|
11
|
-
<meta charset="UTF-8">
|
|
12
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
13
|
-
<title>${t}</title>
|
|
14
|
-
<style>
|
|
15
|
-
* {
|
|
16
|
-
margin: 0;
|
|
17
|
-
padding: 0;
|
|
18
|
-
box-sizing: border-box;
|
|
19
|
-
}
|
|
20
|
-
body {
|
|
21
|
-
width: 100vw;
|
|
22
|
-
height: 100vh;
|
|
23
|
-
overflow: hidden;
|
|
24
|
-
background: #0a0a0a;
|
|
25
|
-
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
26
|
-
}
|
|
27
|
-
#cascade-root {
|
|
28
|
-
width: 100%;
|
|
29
|
-
height: 100%;
|
|
30
|
-
}
|
|
31
|
-
</style>
|
|
32
|
-
</head>
|
|
33
|
-
<body>
|
|
34
|
-
<div id="cascade-root"></div>
|
|
35
|
-
|
|
36
|
-
<script>
|
|
37
|
-
// Minimal Cascade Runtime
|
|
38
|
-
${M()}
|
|
39
|
-
|
|
40
|
-
// Embedded assets
|
|
41
|
-
const ASSETS = ${JSON.stringify(n,null,2)};
|
|
42
|
-
|
|
43
|
-
// Override fetch for asset loading
|
|
44
|
-
const originalFetch = window.fetch;
|
|
45
|
-
window.fetch = function(url) {
|
|
46
|
-
const asset = ASSETS.find(a => url.includes(a.path) || url.includes(a.id));
|
|
47
|
-
if (asset) {
|
|
48
|
-
return Promise.resolve(new Response(
|
|
49
|
-
dataUrlToBlob(asset.dataUrl)
|
|
50
|
-
));
|
|
51
|
-
}
|
|
52
|
-
return originalFetch.apply(this, arguments);
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
// Helper function
|
|
56
|
-
function dataUrlToBlob(dataUrl) {
|
|
57
|
-
const arr = dataUrl.split(',');
|
|
58
|
-
const mime = arr[0].match(/:(.*?);/)?.[1] || 'application/octet-stream';
|
|
59
|
-
const bstr = atob(arr[1]);
|
|
60
|
-
let n = bstr.length;
|
|
61
|
-
const u8arr = new Uint8Array(n);
|
|
62
|
-
while (n--) {
|
|
63
|
-
u8arr[n] = bstr.charCodeAt(n);
|
|
64
|
-
}
|
|
65
|
-
return new Blob([u8arr], { type: mime });
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
// Compiled graph
|
|
69
|
-
${r}
|
|
70
|
-
|
|
71
|
-
// Start execution
|
|
72
|
-
Cascade.run(graphData, document.getElementById('cascade-root'));
|
|
73
|
-
<\/script>
|
|
74
|
-
</body>
|
|
75
|
-
</html>`}function M(){return`(function() {
|
|
76
|
-
'use strict';
|
|
77
|
-
|
|
78
|
-
class CascadeRuntime {
|
|
79
|
-
static run(graphData, container) {
|
|
80
|
-
const graph = this.buildGraph(graphData);
|
|
81
|
-
|
|
82
|
-
// Find entry points and start execution
|
|
83
|
-
const entryNodes = graphData.entryPoints
|
|
84
|
-
.map(id => graph.nodes.find(e => e.id === id))
|
|
85
|
-
.filter(Boolean);
|
|
86
|
-
|
|
87
|
-
entryNodes.forEach(node => {
|
|
88
|
-
graph.execute(node);
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
// Mount scene container
|
|
92
|
-
if (container && graph.sceneContainer) {
|
|
93
|
-
container.appendChild(graph.sceneContainer);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
static buildGraph(graphData) {
|
|
98
|
-
// Minimal Node class
|
|
99
|
-
class Node {
|
|
100
|
-
constructor(id, type) {
|
|
101
|
-
this.id = id;
|
|
102
|
-
this.type = type;
|
|
103
|
-
this.inputs = [];
|
|
104
|
-
this.outputs = [];
|
|
105
|
-
this.position = { x: 0, y: 0 };
|
|
106
|
-
this.code = '';
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
in(name, defaultValue, options = {}) {
|
|
110
|
-
const port = {
|
|
111
|
-
id: this.id + '_in_' + name,
|
|
112
|
-
name,
|
|
113
|
-
portType: name === 'trigger' ? 'trigger' : 'param',
|
|
114
|
-
dataType: options.type || 'any',
|
|
115
|
-
value: defaultValue,
|
|
116
|
-
defaultValue,
|
|
117
|
-
options,
|
|
118
|
-
connections: []
|
|
119
|
-
};
|
|
120
|
-
this.inputs.push(port);
|
|
121
|
-
return port;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
out(name, portType = 'param') {
|
|
125
|
-
const port = {
|
|
126
|
-
id: this.id + '_out_' + name,
|
|
127
|
-
name,
|
|
128
|
-
portType,
|
|
129
|
-
dataType: 'any',
|
|
130
|
-
value: undefined,
|
|
131
|
-
connections: [],
|
|
132
|
-
setValue: (value) => {
|
|
133
|
-
port.value = value;
|
|
134
|
-
port.connections.forEach(conn => {
|
|
135
|
-
const targetNode = graph.nodes.find(e => e.id === conn.to.nodeId);
|
|
136
|
-
if (targetNode) {
|
|
137
|
-
const targetPort = targetNode.inputs.find(p => p.id === conn.to.portId);
|
|
138
|
-
if (targetPort) {
|
|
139
|
-
targetPort.value = value;
|
|
140
|
-
if (targetPort.onChange) targetPort.onChange(value);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
});
|
|
144
|
-
},
|
|
145
|
-
trigger: (props) => {
|
|
146
|
-
port.connections.forEach(conn => {
|
|
147
|
-
const targetNode = graph.nodes.find(e => e.id === conn.to.nodeId);
|
|
148
|
-
if (targetNode) {
|
|
149
|
-
const targetPort = targetNode.inputs.find(p => p.id === conn.to.portId);
|
|
150
|
-
if (targetPort && targetPort.onTrigger) {
|
|
151
|
-
targetPort.onTrigger(props);
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
};
|
|
157
|
-
this.outputs.push(port);
|
|
158
|
-
return port;
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
setFunction(fn) {
|
|
162
|
-
this.nodeFunction = fn;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
async execute() {
|
|
166
|
-
if (this.nodeFunction) {
|
|
167
|
-
try {
|
|
168
|
-
await this.nodeFunction(this, graph);
|
|
169
|
-
} catch (err) {
|
|
170
|
-
console.error('Node execution error:', err);
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
log(...args) {
|
|
176
|
-
console.log('[' + this.id + ']', ...args);
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
async require(packageName, version) {
|
|
180
|
-
return graph.packageManager.load(packageName, version);
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
// Minimal PackageManager for runtime
|
|
185
|
-
class PackageManager {
|
|
186
|
-
constructor() {
|
|
187
|
-
this.cache = new Map();
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
async load(packageName, version = 'latest') {
|
|
191
|
-
const key = packageName + '@' + version;
|
|
192
|
-
if (this.cache.has(key)) {
|
|
193
|
-
return this.cache.get(key);
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
const versionPart = version === 'latest' ? '' : '@' + version;
|
|
197
|
-
const url = 'https://esm.sh/' + packageName + versionPart;
|
|
198
|
-
|
|
199
|
-
try {
|
|
200
|
-
const module = await import(url);
|
|
201
|
-
const result = module.default || module;
|
|
202
|
-
this.cache.set(key, result);
|
|
203
|
-
return result;
|
|
204
|
-
} catch (error) {
|
|
205
|
-
throw new Error('Failed to load package ' + key + ': ' + error.message);
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
// Minimal Graph class
|
|
211
|
-
class Graph {
|
|
212
|
-
constructor() {
|
|
213
|
-
this.nodes = [];
|
|
214
|
-
this.connections = [];
|
|
215
|
-
this.sceneContainer = document.createElement('div');
|
|
216
|
-
this.sceneContainer.id = 'cascade-scene';
|
|
217
|
-
this.sceneContainer.style.width = '100%';
|
|
218
|
-
this.sceneContainer.style.height = '100%';
|
|
219
|
-
this.packageManager = new PackageManager();
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
addNode(type, position) {
|
|
223
|
-
const id = 'node_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9);
|
|
224
|
-
const node = new Node(id, type);
|
|
225
|
-
node.position = position;
|
|
226
|
-
this.nodes.push(node);
|
|
227
|
-
return node;
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
getNode(nodeId) {
|
|
231
|
-
return this.nodes.find(n => n.id === nodeId) || null;
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
connect(fromPort, toPort) {
|
|
235
|
-
// Parse port IDs to extract element IDs and indices
|
|
236
|
-
const fromParts = fromPort.id.split('_');
|
|
237
|
-
const toParts = toPort.id.split('_');
|
|
238
|
-
const fromElementId = fromParts.slice(0, -2).join('_');
|
|
239
|
-
const toElementId = toParts.slice(0, -2).join('_');
|
|
240
|
-
|
|
241
|
-
const connection = {
|
|
242
|
-
id: 'conn_' + Date.now(),
|
|
243
|
-
from: { nodeId: fromElementId, portId: fromPort.id },
|
|
244
|
-
to: { nodeId: toElementId, portId: toPort.id },
|
|
245
|
-
type: fromPort.portType
|
|
246
|
-
};
|
|
247
|
-
this.connections.push(connection);
|
|
248
|
-
fromPort.connections.push(connection);
|
|
249
|
-
toPort.connections.push(connection);
|
|
250
|
-
return connection;
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
execute(entryNode) {
|
|
254
|
-
if (entryNode) {
|
|
255
|
-
entryNode.execute();
|
|
256
|
-
} else {
|
|
257
|
-
this.nodes.forEach(node => {
|
|
258
|
-
if (node.inputs.every(p => p.connections.length === 0)) {
|
|
259
|
-
node.execute();
|
|
260
|
-
}
|
|
261
|
-
});
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
const graph = new Graph();
|
|
267
|
-
|
|
268
|
-
// Create nodes
|
|
269
|
-
graphData.nodes.forEach(nodeData => {
|
|
270
|
-
const node = graph.addNode(nodeData.type, nodeData.position);
|
|
271
|
-
node.id = nodeData.id;
|
|
272
|
-
node.code = nodeData.code || '';
|
|
273
|
-
|
|
274
|
-
// Restore ports
|
|
275
|
-
nodeData.inputs.forEach(portData => {
|
|
276
|
-
const port = node.in(portData.name, portData.defaultValue, { type: portData.dataType });
|
|
277
|
-
port.id = portData.id;
|
|
278
|
-
port.value = portData.value;
|
|
279
|
-
});
|
|
280
|
-
|
|
281
|
-
nodeData.outputs.forEach(portData => {
|
|
282
|
-
const port = node.out(portData.name, portData.portType);
|
|
283
|
-
port.id = portData.id;
|
|
284
|
-
port.value = portData.value;
|
|
285
|
-
});
|
|
286
|
-
|
|
287
|
-
// Compile and set function if code exists
|
|
288
|
-
if (node.code) {
|
|
289
|
-
try {
|
|
290
|
-
// Wrap code in async function to support top-level await
|
|
291
|
-
const wrappedCode = 'return (async function(node, graph) {
|
|
292
|
-
' + node.code + '
|
|
293
|
-
})(node, graph);';
|
|
294
|
-
const nodeFunction = new Function('node', 'graph', wrappedCode);
|
|
295
|
-
node.setFunction(nodeFunction);
|
|
296
|
-
} catch (err) {
|
|
297
|
-
console.warn('Failed to compile node ' + node.id + ':', err);
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
});
|
|
301
|
-
|
|
302
|
-
// Restore connections
|
|
303
|
-
graphData.connections.forEach(connData => {
|
|
304
|
-
const fromNode = graph.getNode(connData.from.nodeId);
|
|
305
|
-
const toNode = graph.getNode(connData.to.nodeId);
|
|
306
|
-
if (fromNode && toNode) {
|
|
307
|
-
const fromPort = fromNode.outputs.find(p => p.id === connData.from.portId);
|
|
308
|
-
const toPort = toNode.inputs.find(p => p.id === connData.to.portId);
|
|
309
|
-
if (fromPort && toPort) {
|
|
310
|
-
graph.connect(fromPort, toPort);
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
});
|
|
314
|
-
|
|
315
|
-
return graph;
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
// Export to global
|
|
320
|
-
window.Cascade = CascadeRuntime;
|
|
321
|
-
})();`}function N(e,t,n=`text/html`){let r=new Blob([e],{type:n}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=t,document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(i)}async function P(e,t=`Cascade Project`){let n=e.assetManager.list(),r=O(e),i=M(),a=`<!DOCTYPE html>
|
|
322
|
-
<html lang="en">
|
|
323
|
-
<head>
|
|
324
|
-
<meta charset="UTF-8">
|
|
325
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
326
|
-
<title>${t}</title>
|
|
327
|
-
<style>
|
|
328
|
-
* {
|
|
329
|
-
margin: 0;
|
|
330
|
-
padding: 0;
|
|
331
|
-
box-sizing: border-box;
|
|
332
|
-
}
|
|
333
|
-
body {
|
|
334
|
-
width: 100vw;
|
|
335
|
-
height: 100vh;
|
|
336
|
-
overflow: hidden;
|
|
337
|
-
background: #0a0a0a;
|
|
338
|
-
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
339
|
-
}
|
|
340
|
-
#cascade-root {
|
|
341
|
-
width: 100%;
|
|
342
|
-
height: 100%;
|
|
343
|
-
}
|
|
344
|
-
</style>
|
|
345
|
-
</head>
|
|
346
|
-
<body>
|
|
347
|
-
<div id="cascade-root"></div>
|
|
348
|
-
|
|
349
|
-
<script src="./runtime.js"><\/script>
|
|
350
|
-
<script src="./graph.js"><\/script>
|
|
351
|
-
<script>
|
|
352
|
-
// Start execution
|
|
353
|
-
Cascade.run(graphData, document.getElementById('cascade-root'));
|
|
354
|
-
<\/script>
|
|
355
|
-
</body>
|
|
356
|
-
</html>`,o=`// Minimal Cascade Runtime
|
|
357
|
-
${i}`,s=`// Compiled graph
|
|
358
|
-
${r}`,c=JSON.stringify(n.map(e=>({id:e.id,path:e.path,type:e.type,size:e.size})),null,2);N(a,`index.html`,`text/html`),setTimeout(()=>{N(o,`runtime.js`,`application/javascript`)},100),setTimeout(()=>{N(s,`graph.js`,`application/javascript`)},200),setTimeout(()=>{N(c,`assets.json`,`application/json`)},300),console.log(`Folder export initiated. Download the files and organize them in a folder structure:`),console.log(`- index.html`),console.log(`- runtime.js`),console.log(`- graph.js`),console.log(`- assets.json`),console.log(`- assets/ (create this folder and add your asset files)`)}var F=n(`<p class="svelte-12jesfv">This will export your project as a standalone HTML file with all assets embedded.</p> <ul class="svelte-12jesfv"><li class="svelte-12jesfv">✅ All nodes and connections</li> <li class="svelte-12jesfv">✅ All node code</li> <li class="svelte-12jesfv">✅ All assets (embedded as base64)</li> <li class="svelte-12jesfv">✅ Minimal runtime (~50KB)</li> <li class="svelte-12jesfv">✅ Single file - easy to share</li></ul>`,1),I=n(`<p class="svelte-12jesfv">This will export your project as a folder structure with separate files.</p> <ul class="svelte-12jesfv"><li class="svelte-12jesfv">✅ index.html - Main HTML file</li> <li class="svelte-12jesfv">✅ runtime.js - Cascade runtime</li> <li class="svelte-12jesfv">✅ graph.js - Compiled graph</li> <li class="svelte-12jesfv">✅ assets.json - Asset manifest</li> <li class="svelte-12jesfv">✅ assets/ - Asset files folder</li> <li class="svelte-12jesfv">⚠️ You'll need to manually organize asset files</li></ul>`,1),L=n(`<div class="error svelte-12jesfv"> </div>`),R=n(`<div class="overlay svelte-12jesfv"><div class="dialog svelte-12jesfv" role="dialog" aria-modal="true" aria-labelledby="export-title"><div class="header svelte-12jesfv"><h2 id="export-title" class="svelte-12jesfv">Export Project</h2> <button class="close-button svelte-12jesfv" aria-label="Close">×</button></div> <div class="content svelte-12jesfv"><div class="form-group svelte-12jesfv"><label for="project-name" class="svelte-12jesfv">Project Name</label> <input id="project-name" type="text" placeholder="My Project" class="svelte-12jesfv"/></div> <div class="form-group svelte-12jesfv"><label for="export-format" class="svelte-12jesfv">Export Format</label> <select id="export-format" class="svelte-12jesfv"><option>Single HTML File (all assets embedded)</option><option>Folder Structure (separate files)</option></select></div> <div class="info svelte-12jesfv"><!></div> <!></div> <div class="footer svelte-12jesfv"><button class="cancel-button svelte-12jesfv">Cancel</button> <button class="export-button svelte-12jesfv"><!></button></div></div></div>`);function z(n,O){r(O,!1);let k=h(O,`graph`,8),A=h(O,`open`,12,!1),M=w(),z=m(`Cascade Project`),B=m(!1),V=m(null),H=m(`html`);async function U(){if(!(!k()||i(B))){x(B,!0),x(V,null);try{i(H)===`html`?N(await j(k(),i(z)),`${i(z).replace(/[^a-z0-9]/gi,`_`).toLowerCase()}.html`,`text/html`):await P(k(),i(z)),setTimeout(()=>{A(!1),M(`close`)},500)}catch(e){x(V,e.message||`Failed to export project`),console.error(`Export error:`,e)}finally{x(B,!1)}}}function W(){A(!1),M(`close`)}function G(e){e.key===`Escape`&&W()}v();var K=c();l(`keydown`,u,G);var q=C(K),J=t=>{var n=R(),r=b(n),c=b(r),u=y(b(c),2);_(c);var m=y(c,2),h=b(m),v=y(b(h),2);d(v),_(h);var C=y(h,2),w=y(b(C),2),O=b(w);O.value=O.__value=`html`;var k=y(O);k.value=k.__value=`folder`,_(w),a(w),_(C);var A=y(C,2),j=b(A),M=t=>{var n=F();e(2),o(t,n)},N=t=>{var n=I();e(2),o(t,n)};D(j,e=>{i(H)===`html`?e(M):e(N,-1)}),_(A);var P=y(A,2),G=e=>{var t=L(),n=f(t,!0);g(()=>s(n,i(V))),o(e,t)};D(P,e=>{i(V)&&e(G)}),_(m);var K=y(m,2),q=b(K),J=y(q,2),Y=b(J),X=e=>{var t=S(`Exporting...`);o(e,t)},Z=e=>{var t=S();g(()=>s(t,`Export ${i(H)===`html`?`HTML`:`Folder`}`)),o(e,t)};D(Y,e=>{i(B)?e(X):e(Z,-1)}),_(J),_(K),_(r),_(n),g(()=>{v.disabled=i(B),w.disabled=i(B),q.disabled=i(B),J.disabled=i(B)}),l(`click`,u,W),T(v,()=>i(z),e=>x(z,e)),E(w,()=>i(H),e=>x(H,e)),l(`click`,q,W),l(`click`,J,U),l(`click`,n,p(W)),o(t,n)};D(q,e=>{A()&&e(J)}),o(n,K),t()}export{z as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.overlay.svelte-12jesfv{background:var(--shade-stronger);backdrop-filter:blur(4px);z-index:1000;justify-content:center;align-items:center;animation:.2s ease-out svelte-12jesfv-fadeIn;display:flex;position:fixed;inset:0}@keyframes svelte-12jesfv-fadeIn{0%{opacity:0}to{opacity:1}}.dialog.svelte-12jesfv{background:var(--surface-panel-alt);box-shadow:0 10px 40px var(--shadow);border-radius:8px;flex-direction:column;width:90%;max-width:500px;max-height:90vh;animation:.2s ease-out svelte-12jesfv-slideUp;display:flex}@keyframes svelte-12jesfv-slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.header.svelte-12jesfv{border-bottom:1px solid var(--tint);justify-content:space-between;align-items:center;padding:20px;display:flex}.header.svelte-12jesfv h2:where(.svelte-12jesfv){color:var(--text-bright);margin:0;font-size:20px;font-weight:600}.close-button.svelte-12jesfv{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;width:32px;height:32px;padding:0;font-size:24px;transition:all .15s;display:flex}.close-button.svelte-12jesfv:hover{background:var(--tint);color:var(--text-bright)}.content.svelte-12jesfv{flex:1;padding:20px;overflow-y:auto}.form-group.svelte-12jesfv{margin-bottom:20px}.form-group.svelte-12jesfv label:where(.svelte-12jesfv){color:var(--text-muted);margin-bottom:8px;font-size:12px;font-weight:500;display:block}.form-group.svelte-12jesfv input:where(.svelte-12jesfv){background:var(--shade-weak);border:1px solid var(--tint);width:100%;color:var(--text-bright);box-sizing:border-box;border-radius:4px;padding:10px;font-size:14px}.form-group.svelte-12jesfv input:where(.svelte-12jesfv):focus{border-color:var(--accent);outline:none}.form-group.svelte-12jesfv input:where(.svelte-12jesfv):disabled,.form-group.svelte-12jesfv select:where(.svelte-12jesfv):disabled{opacity:.5;cursor:not-allowed}.form-group.svelte-12jesfv select:where(.svelte-12jesfv){background:var(--shade-weak);border:1px solid var(--tint);width:100%;color:var(--text-bright);box-sizing:border-box;cursor:pointer;border-radius:4px;padding:10px;font-size:14px}.form-group.svelte-12jesfv select:where(.svelte-12jesfv):focus{border-color:var(--accent);outline:none}.info.svelte-12jesfv{background:var(--accent-tint-weak);border:1px solid var(--accent-tint-medium);border-radius:4px;margin-top:20px;padding:16px}.info.svelte-12jesfv p:where(.svelte-12jesfv){color:var(--text-bright);margin:0 0 12px;font-size:14px}.info.svelte-12jesfv ul:where(.svelte-12jesfv){color:var(--text-muted);margin:0;padding-left:20px;font-size:13px}.info.svelte-12jesfv li:where(.svelte-12jesfv){margin:4px 0}.error.svelte-12jesfv{background:var(--status-error-tint-weak);border:1px solid var(--status-error-tint-strong);color:var(--status-error);border-radius:4px;margin-top:16px;padding:12px;font-size:13px}.footer.svelte-12jesfv{border-top:1px solid var(--tint);justify-content:flex-end;gap:12px;padding:20px;display:flex}.cancel-button.svelte-12jesfv,.export-button.svelte-12jesfv{cursor:pointer;border:none;border-radius:4px;padding:10px 20px;font-size:14px;font-weight:500;transition:all .15s}.cancel-button.svelte-12jesfv{color:var(--text-muted);background:0 0}.cancel-button.svelte-12jesfv:hover:not(:disabled){background:var(--tint);color:var(--text-bright)}.export-button.svelte-12jesfv{background:var(--accent);color:var(--text-on-accent)}.export-button.svelte-12jesfv:hover:not(:disabled){background:var(--accent-strong)}.export-button.svelte-12jesfv:disabled,.cancel-button.svelte-12jesfv:disabled{opacity:.5;cursor:not-allowed}
|
|
@@ -1 +0,0 @@
|
|
|
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{U as k}from"./index-DyvDC6pS.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};
|
|
@@ -1,2 +0,0 @@
|
|
|
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 x,jt as S,l as C,lt as w,nt as T,o as E,ot as D,pt as O,rt as ne,st as re,t as k,v as A,z as j}from"./legacy-CTEeXeqF.js";import{$ as M,G as ie,K as ae,U as oe,W as se,Z as ce,b as N,x as P}from"./index-DyvDC6pS.js";var F=new Set([`$$slots`,`$$events`,`$$legacy`]);function le(e,t){let n=h(t,F),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,E({name:`trash-2`},()=>n,{get iconNode(){return r}}))}var ue=r(`<span> </span>`),de=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>`),fe=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>`),pe=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>`),me=r(`<button class="add-button secondary svelte-9d4ggp"><!> Add Package</button>`),he=r(`<div class="packages-list svelte-9d4ggp"></div> <!>`,1),ge=r(`<div class="error-message svelte-9d4ggp"><!> </div>`),_e=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>`),ve=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 I(r,h){s(h,!1);let E=te(h,`open`,12,!1),M=te(h,`graph`,12,void 0),F=k(),I=y([]),L=y(``),R=y(``),z=y(!1),B=y(``),V=y(``),H=y(``),U=y(``),W=y(``),G=y(`{}`),K=y(`{}`),q=y(``),J=y([]),Y=y(!1),X=y(!1);function Z(){E(!1),F(`close`)}async function ye(){O(B,``);let e,t;try{if(e=JSON.parse(c(G)||`{}`),t=JSON.parse(c(K)||`{}`),c(X)){let n=await P({name:c(W).trim(),commands:e,settings:t,credentials:c(q).split(/\r?\n|,/).map(e=>e.trim()).filter(Boolean)});O(J,n.requiredCredentials)}}catch(e){O(B,e instanceof Error?e.message:String(e));return}M()&&(M(M().project.name=c(V).trim(),!0),M(M().project.description=c(H).trim(),!0),M(M().project.author=c(U).trim(),!0),M(M().project.packages=[...c(I)],!0),c(I).forEach(e=>{M().moduleResolver.addProjectPackage(e)})),F(`save`,{packages:[...c(I)],graphName:c(V).trim(),projectName:c(W).trim(),missingCredentials:c(J).filter(e=>!e.set).map(e=>e.name)}),Z()}function be(){if(O(B,``),!c(L).trim()){O(B,`Path is required`);return}if(!c(R).trim()){O(B,`Alias is required`);return}if(!/^[a-zA-Z][a-zA-Z0-9_]*$/.test(c(R))){O(B,`Alias must start with a letter and contain only letters, numbers, and underscores`);return}if(c(I).some(e=>e.alias===c(R))){O(B,`Alias "${c(R)}" already exists`);return}O(I,[...c(I),{path:c(L).trim(),alias:c(R).trim()}]),O(L,``),O(R,``),O(z,!1)}function xe(e){O(I,c(I).filter((t,n)=>n!==e))}function Q(e){e.key===`Escape`&&(c(z)?O(z,!1):Z())}function $(e){let t=e.replace(/\\/g,`/`).split(`/`).filter(Boolean);return(t[t.length-1]||`mypackage`).replace(/[^a-zA-Z0-9]/g,``).toLowerCase()||`mypackage`}T(()=>(p(E()),p(M())),()=>{E()&&M()&&(O(I,[...M().project.packages]),O(z,!1),O(B,``),O(L,``),O(R,``))}),T(()=>p(E()),()=>{E()||O(Y,!1)}),T(()=>(p(E()),p(M()),c(Y),N),()=>{E()&&M()&&!c(Y)&&(O(Y,!0),O(V,M().project.name??``),O(H,M().project.description??``),O(U,M().project.author??``),N().then(e=>{O(X,!0),O(W,e.manifest.name),O(G,JSON.stringify(e.manifest.commands,null,2)),O(K,JSON.stringify(e.manifest.settings,null,2)),O(q,e.manifest.credentials.join(`
|
|
2
|
-
`)),O(J,e.requiredCredentials)}).catch(()=>{O(X,!1)}))}),T(()=>(c(L),c(R)),()=>{c(L)&&!c(R)&&O(R,$(c(L)))}),ne(),C();var Se=d();f(`keydown`,g,Q);var Ce=re(Se),we=n=>{var r=ve(),s=D(r),d=D(s),h=D(d),g=D(h);ie(g,{size:20}),e(),S(h);var y=w(h,2),te=D(y);oe(te,{size:20}),S(y),S(d);var C=w(d,2),T=D(C),E=w(D(T),2),ne=w(D(E));_(ne),S(E);var k=w(E,2),N=w(D(k));_(N),S(k);var P=w(k,2),F=w(D(P));_(F),S(P);var Y=w(P,2),X=w(D(Y));_(X),S(Y),S(T);var Q=w(T,2),$=w(D(Q),2),Se=w(D($));_(Se),S($);var Ce=w($,2),we=w(D(Ce));m(we),S(Ce);var Te=w(Ce,2),Ee=w(D(Te));m(Ee),S(Te);var De=w(Te,2),Oe=w(D(De));m(Oe),S(De);var ke=w(De,2),Ae=t=>{var n=de(),r=D(n);i(r,1,()=>c(J),a,(e,t)=>{var n=ue();let r;var i=v(n);x(()=>{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),S(n),l(t,n)};j(ke,e=>{c(J),b(()=>c(J).length)&&e(Ae)}),S(Q);var je=w(Q,2),Me=w(D(je),4),Ne=t=>{var n=fe(),r=D(n);ae(r,{size:32});var i=w(r,4),a=D(i);se(a,{size:16}),e(),S(i),S(n),f(`click`,i,()=>O(z,!0)),l(t,n)},Pe=t=>{var n=he(),r=re(n);i(r,5,()=>c(I),a,(e,t,n)=>{var r=pe(),i=D(r),a=D(i),o=v(a,!0),s=w(a,2),d=v(s,!0);S(i);var p=w(i,2);le(D(p),{size:16}),S(p),S(r),x(()=>{u(o,(c(t),b(()=>c(t).alias))),u(d,(c(t),b(()=>c(t).path)))}),f(`click`,p,()=>xe(n)),l(e,r)}),S(r);var o=w(r,2),s=t=>{var n=me(),r=D(n);se(r,{size:16}),e(),S(n),f(`click`,n,()=>O(z,!0)),l(t,n)};j(o,e=>{c(z)||e(s)}),l(t,n)};j(Me,e=>{c(I),c(z),b(()=>c(I).length===0&&!c(z))?e(Ne):e(Pe,-1)});var Fe=w(Me,2),Ie=e=>{var t=_e(),n=D(t),r=w(D(n),2),i=D(r);_(i);var a=w(i,2),o=D(a);ae(o,{size:16}),S(a),S(r),S(n);var s=w(n,2),d=w(D(s),2);_(d),S(s);var p=w(s,2),m=e=>{var t=ge(),n=D(t);ce(n,{size:14});var r=w(n);S(t),x(()=>u(r,` ${c(B)??``}`)),l(e,t)};j(p,e=>{c(B)&&e(m)});var h=w(p,2),g=D(h),v=w(g,2);S(h),S(t),A(i,()=>c(L),e=>O(L,e)),A(d,()=>c(R),e=>O(R,e)),f(`click`,g,()=>O(z,!1)),f(`click`,v,be),l(e,t)};j(Fe,e=>{c(z)&&e(Ie)}),S(je);var Le=w(je,2),Re=w(D(Le),2),ze=D(Re),Be=w(D(ze),2),Ve=v(Be,!0);S(ze);var He=w(ze,2),Ue=w(D(He),2),We=v(Ue,!0);S(He),S(Re),S(Le),S(C);var Ge=w(C,2),Ke=D(Ge),qe=w(Ke,2);S(Ge),S(s),S(r),x((e,n)=>{t(X,(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,Z),A(ne,()=>c(V),e=>O(V,e)),A(N,()=>c(H),e=>O(H,e)),A(F,()=>c(U),e=>O(U,e)),A(Se,()=>c(W),e=>O(W,e)),A(we,()=>c(G),e=>O(G,e)),A(Ee,()=>c(K),e=>O(K,e)),A(Oe,()=>c(q),e=>O(q,e)),f(`click`,Ke,Z),f(`click`,qe,ye),f(`click`,r,ee(Z)),l(n,r)};j(Ce,e=>{E()&&e(we)}),l(r,Se),n()}export{I as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{N as e,_ as t,d as n,f as r,g as i,h as a,l as o,u as s}from"./index-DyvDC6pS.js";e([a,o,s,n,t,i,r]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{M as e,N as t,c as n,w as r}from"./index-DyvDC6pS.js";t(n,{assets:e});export{r as geoLibrary};
|