@bian-womp/spark-workbench 0.3.87 → 0.3.89
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/lib/cjs/index.cjs +72 -103
- package/lib/cjs/index.cjs.map +1 -1
- package/lib/cjs/src/misc/context/WorkbenchContext.provider.d.ts.map +1 -1
- package/lib/esm/index.js +72 -103
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/src/misc/context/WorkbenchContext.provider.d.ts.map +1 -1
- package/lib/src/adapters/cli/index.d.ts +22 -0
- package/lib/src/adapters/cli/index.d.ts.map +1 -0
- package/lib/src/adapters/cli/index.js +50 -0
- package/lib/src/adapters/cli/index.js.map +1 -0
- package/lib/src/core/AbstractWorkbench.d.ts +40 -0
- package/lib/src/core/AbstractWorkbench.d.ts.map +1 -0
- package/lib/src/core/AbstractWorkbench.js +15 -0
- package/lib/src/core/AbstractWorkbench.js.map +1 -0
- package/lib/src/core/InMemoryWorkbench.d.ts +304 -0
- package/lib/src/core/InMemoryWorkbench.d.ts.map +1 -0
- package/lib/src/core/InMemoryWorkbench.js +1016 -0
- package/lib/src/core/InMemoryWorkbench.js.map +1 -0
- package/lib/src/core/contracts.d.ts +172 -0
- package/lib/src/core/contracts.d.ts.map +1 -0
- package/lib/src/core/contracts.js +2 -0
- package/lib/src/core/contracts.js.map +1 -0
- package/lib/src/core/ui-extensions.d.ts +85 -0
- package/lib/src/core/ui-extensions.d.ts.map +1 -0
- package/lib/src/core/ui-extensions.js +111 -0
- package/lib/src/core/ui-extensions.js.map +1 -0
- package/lib/src/examples/cli.d.ts +2 -0
- package/lib/src/examples/cli.d.ts.map +1 -0
- package/lib/src/examples/cli.js +244 -0
- package/lib/src/examples/cli.js.map +1 -0
- package/lib/src/examples/reactflow/App.d.ts +2 -0
- package/lib/src/examples/reactflow/App.d.ts.map +1 -0
- package/lib/src/examples/reactflow/App.js +20 -0
- package/lib/src/examples/reactflow/App.js.map +1 -0
- package/lib/src/index.d.ts +30 -0
- package/lib/src/index.d.ts.map +1 -0
- package/lib/src/index.js +30 -0
- package/lib/src/index.js.map +1 -0
- package/lib/src/misc/DebugEvents.d.ts +7 -0
- package/lib/src/misc/DebugEvents.d.ts.map +1 -0
- package/lib/src/misc/DebugEvents.js +51 -0
- package/lib/src/misc/DebugEvents.js.map +1 -0
- package/lib/src/misc/DefaultEdge.d.ts +5 -0
- package/lib/src/misc/DefaultEdge.d.ts.map +1 -0
- package/lib/src/misc/DefaultEdge.js +15 -0
- package/lib/src/misc/DefaultEdge.js.map +1 -0
- package/lib/src/misc/DefaultNode.d.ts +5 -0
- package/lib/src/misc/DefaultNode.d.ts.map +1 -0
- package/lib/src/misc/DefaultNode.js +25 -0
- package/lib/src/misc/DefaultNode.js.map +1 -0
- package/lib/src/misc/DefaultNodeContent.d.ts +4 -0
- package/lib/src/misc/DefaultNodeContent.d.ts.map +1 -0
- package/lib/src/misc/DefaultNodeContent.js +58 -0
- package/lib/src/misc/DefaultNodeContent.js.map +1 -0
- package/lib/src/misc/DefaultNodeHeader.d.ts +13 -0
- package/lib/src/misc/DefaultNodeHeader.d.ts.map +1 -0
- package/lib/src/misc/DefaultNodeHeader.js +78 -0
- package/lib/src/misc/DefaultNodeHeader.js.map +1 -0
- package/lib/src/misc/Inspector.d.ts +12 -0
- package/lib/src/misc/Inspector.d.ts.map +1 -0
- package/lib/src/misc/Inspector.js +253 -0
- package/lib/src/misc/Inspector.js.map +1 -0
- package/lib/src/misc/IssueBadge.d.ts +7 -0
- package/lib/src/misc/IssueBadge.d.ts.map +1 -0
- package/lib/src/misc/IssueBadge.js +7 -0
- package/lib/src/misc/IssueBadge.js.map +1 -0
- package/lib/src/misc/KeyboardShortcutToast.d.ts +16 -0
- package/lib/src/misc/KeyboardShortcutToast.d.ts.map +1 -0
- package/lib/src/misc/KeyboardShortcutToast.js +40 -0
- package/lib/src/misc/KeyboardShortcutToast.js.map +1 -0
- package/lib/src/misc/NodeHandles.d.ts +18 -0
- package/lib/src/misc/NodeHandles.d.ts.map +1 -0
- package/lib/src/misc/NodeHandles.js +67 -0
- package/lib/src/misc/NodeHandles.js.map +1 -0
- package/lib/src/misc/SelectionActiveSync.d.ts +10 -0
- package/lib/src/misc/SelectionActiveSync.d.ts.map +1 -0
- package/lib/src/misc/SelectionActiveSync.js +21 -0
- package/lib/src/misc/SelectionActiveSync.js.map +1 -0
- package/lib/src/misc/WorkbenchCanvas.d.ts +23 -0
- package/lib/src/misc/WorkbenchCanvas.d.ts.map +1 -0
- package/lib/src/misc/WorkbenchCanvas.js +669 -0
- package/lib/src/misc/WorkbenchCanvas.js.map +1 -0
- package/lib/src/misc/WorkbenchStudio.d.ts +43 -0
- package/lib/src/misc/WorkbenchStudio.d.ts.map +1 -0
- package/lib/src/misc/WorkbenchStudio.js +463 -0
- package/lib/src/misc/WorkbenchStudio.js.map +1 -0
- package/lib/src/misc/constants.d.ts +4 -0
- package/lib/src/misc/constants.d.ts.map +1 -0
- package/lib/src/misc/constants.js +5 -0
- package/lib/src/misc/constants.js.map +1 -0
- package/lib/src/misc/context/WorkbenchContext.d.ts +133 -0
- package/lib/src/misc/context/WorkbenchContext.d.ts.map +1 -0
- package/lib/src/misc/context/WorkbenchContext.js +9 -0
- package/lib/src/misc/context/WorkbenchContext.js.map +1 -0
- package/lib/src/misc/context/WorkbenchContext.provider.d.ts +12 -0
- package/lib/src/misc/context/WorkbenchContext.provider.d.ts.map +1 -0
- package/lib/src/misc/context/WorkbenchContext.provider.js +995 -0
- package/lib/src/misc/context/WorkbenchContext.provider.js.map +1 -0
- package/lib/src/misc/context-menu/ContextMenuButton.d.ts +8 -0
- package/lib/src/misc/context-menu/ContextMenuButton.d.ts.map +1 -0
- package/lib/src/misc/context-menu/ContextMenuButton.js +10 -0
- package/lib/src/misc/context-menu/ContextMenuButton.js.map +1 -0
- package/lib/src/misc/context-menu/ContextMenuHandlers.d.ts +85 -0
- package/lib/src/misc/context-menu/ContextMenuHandlers.d.ts.map +1 -0
- package/lib/src/misc/context-menu/ContextMenuHandlers.js +2 -0
- package/lib/src/misc/context-menu/ContextMenuHandlers.js.map +1 -0
- package/lib/src/misc/context-menu/ContextMenuHelpers.d.ts +45 -0
- package/lib/src/misc/context-menu/ContextMenuHelpers.d.ts.map +1 -0
- package/lib/src/misc/context-menu/ContextMenuHelpers.js +182 -0
- package/lib/src/misc/context-menu/ContextMenuHelpers.js.map +1 -0
- package/lib/src/misc/context-menu/DefaultContextMenu.d.ts +3 -0
- package/lib/src/misc/context-menu/DefaultContextMenu.d.ts.map +1 -0
- package/lib/src/misc/context-menu/DefaultContextMenu.js +111 -0
- package/lib/src/misc/context-menu/DefaultContextMenu.js.map +1 -0
- package/lib/src/misc/context-menu/NodeContextMenu.d.ts +3 -0
- package/lib/src/misc/context-menu/NodeContextMenu.d.ts.map +1 -0
- package/lib/src/misc/context-menu/NodeContextMenu.js +51 -0
- package/lib/src/misc/context-menu/NodeContextMenu.js.map +1 -0
- package/lib/src/misc/context-menu/SelectionContextMenu.d.ts +3 -0
- package/lib/src/misc/context-menu/SelectionContextMenu.d.ts.map +1 -0
- package/lib/src/misc/context-menu/SelectionContextMenu.js +47 -0
- package/lib/src/misc/context-menu/SelectionContextMenu.js.map +1 -0
- package/lib/src/misc/hooks.d.ts +18 -0
- package/lib/src/misc/hooks.d.ts.map +1 -0
- package/lib/src/misc/hooks.js +275 -0
- package/lib/src/misc/hooks.js.map +1 -0
- package/lib/src/misc/layout.d.ts +117 -0
- package/lib/src/misc/layout.d.ts.map +1 -0
- package/lib/src/misc/layout.js +205 -0
- package/lib/src/misc/layout.js.map +1 -0
- package/lib/src/misc/load.d.ts +5 -0
- package/lib/src/misc/load.d.ts.map +1 -0
- package/lib/src/misc/load.js +106 -0
- package/lib/src/misc/load.js.map +1 -0
- package/lib/src/misc/mapping.d.ts +128 -0
- package/lib/src/misc/mapping.d.ts.map +1 -0
- package/lib/src/misc/mapping.js +270 -0
- package/lib/src/misc/mapping.js.map +1 -0
- package/lib/src/misc/merge-utils.d.ts +12 -0
- package/lib/src/misc/merge-utils.d.ts.map +1 -0
- package/lib/src/misc/merge-utils.js +51 -0
- package/lib/src/misc/merge-utils.js.map +1 -0
- package/lib/src/misc/thumbnail-utils.d.ts +53 -0
- package/lib/src/misc/thumbnail-utils.d.ts.map +1 -0
- package/lib/src/misc/thumbnail-utils.js +629 -0
- package/lib/src/misc/thumbnail-utils.js.map +1 -0
- package/lib/src/misc/types.d.ts +18 -0
- package/lib/src/misc/types.d.ts.map +1 -0
- package/lib/src/misc/types.js +2 -0
- package/lib/src/misc/types.js.map +1 -0
- package/lib/src/misc/value.d.ts +16 -0
- package/lib/src/misc/value.d.ts.map +1 -0
- package/lib/src/misc/value.js +114 -0
- package/lib/src/misc/value.js.map +1 -0
- package/lib/src/misc/viewport-utils.d.ts +6 -0
- package/lib/src/misc/viewport-utils.d.ts.map +1 -0
- package/lib/src/misc/viewport-utils.js +18 -0
- package/lib/src/misc/viewport-utils.js.map +1 -0
- package/lib/src/runtime/AbstractGraphRunner.d.ts +61 -0
- package/lib/src/runtime/AbstractGraphRunner.d.ts.map +1 -0
- package/lib/src/runtime/AbstractGraphRunner.js +63 -0
- package/lib/src/runtime/AbstractGraphRunner.js.map +1 -0
- package/lib/src/runtime/IGraphRunner.d.ts +100 -0
- package/lib/src/runtime/IGraphRunner.d.ts.map +1 -0
- package/lib/src/runtime/IGraphRunner.js +2 -0
- package/lib/src/runtime/IGraphRunner.js.map +1 -0
- package/lib/src/runtime/LocalGraphRunner.d.ts +60 -0
- package/lib/src/runtime/LocalGraphRunner.d.ts.map +1 -0
- package/lib/src/runtime/LocalGraphRunner.js +294 -0
- package/lib/src/runtime/LocalGraphRunner.js.map +1 -0
- package/lib/src/runtime/RemoteGraphRunner.d.ts +109 -0
- package/lib/src/runtime/RemoteGraphRunner.d.ts.map +1 -0
- package/lib/src/runtime/RemoteGraphRunner.js +696 -0
- package/lib/src/runtime/RemoteGraphRunner.js.map +1 -0
- package/package.json +4 -4
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { StopIcon, PlayIcon, FastForwardIcon } from "@phosphor-icons/react";
|
|
4
|
+
import { NODE_HEADER_HEIGHT_PX } from "./constants";
|
|
5
|
+
import { IssueBadge } from "./IssueBadge";
|
|
6
|
+
import { useWorkbenchContext } from "./context/WorkbenchContext";
|
|
7
|
+
export function DefaultNodeHeader({ id, typeId, validation, right, showId, }) {
|
|
8
|
+
const ctx = useWorkbenchContext();
|
|
9
|
+
const [isEditing, setIsEditing] = React.useState(false);
|
|
10
|
+
const [editValue, setEditValue] = React.useState("");
|
|
11
|
+
const inputRef = React.useRef(null);
|
|
12
|
+
// Use getNodeDisplayName if typeId is provided, otherwise use title prop
|
|
13
|
+
const displayName = typeId ? ctx.getNodeDisplayName(id) : id;
|
|
14
|
+
const effectiveTypeId = typeId ?? id;
|
|
15
|
+
// Get the default display name (without custom name) for comparison
|
|
16
|
+
const getDefaultDisplayName = React.useCallback(() => {
|
|
17
|
+
if (!typeId)
|
|
18
|
+
return id;
|
|
19
|
+
const node = ctx.wb.def.nodes.find((n) => n.nodeId === id);
|
|
20
|
+
if (!node)
|
|
21
|
+
return id;
|
|
22
|
+
const desc = ctx.wb.registry.nodes.get(node.typeId);
|
|
23
|
+
return desc?.displayName || node.typeId;
|
|
24
|
+
}, [ctx, id, typeId]);
|
|
25
|
+
const handleDoubleClick = React.useCallback((e) => {
|
|
26
|
+
// Only allow editing if typeId is provided (enables renaming)
|
|
27
|
+
if (!typeId)
|
|
28
|
+
return;
|
|
29
|
+
e.stopPropagation();
|
|
30
|
+
setIsEditing(true);
|
|
31
|
+
setEditValue(displayName);
|
|
32
|
+
}, [typeId, displayName]);
|
|
33
|
+
const handleSave = React.useCallback(() => {
|
|
34
|
+
if (!typeId)
|
|
35
|
+
return;
|
|
36
|
+
const trimmed = editValue.trim();
|
|
37
|
+
const defaultDisplayName = getDefaultDisplayName();
|
|
38
|
+
// If the trimmed value matches the default display name or typeId, clear the custom name
|
|
39
|
+
ctx.setNodeName(id, trimmed === defaultDisplayName || trimmed === effectiveTypeId ? undefined : trimmed);
|
|
40
|
+
setIsEditing(false);
|
|
41
|
+
}, [ctx, id, editValue, getDefaultDisplayName, effectiveTypeId, typeId]);
|
|
42
|
+
const handleCancel = React.useCallback(() => {
|
|
43
|
+
setIsEditing(false);
|
|
44
|
+
setEditValue(displayName);
|
|
45
|
+
}, [displayName]);
|
|
46
|
+
const handleKeyDown = React.useCallback((e) => {
|
|
47
|
+
if (e.key === "Enter") {
|
|
48
|
+
e.preventDefault();
|
|
49
|
+
e.stopPropagation();
|
|
50
|
+
handleSave();
|
|
51
|
+
}
|
|
52
|
+
else if (e.key === "Escape") {
|
|
53
|
+
e.preventDefault();
|
|
54
|
+
e.stopPropagation();
|
|
55
|
+
handleCancel();
|
|
56
|
+
}
|
|
57
|
+
}, [handleSave, handleCancel]);
|
|
58
|
+
React.useEffect(() => {
|
|
59
|
+
if (isEditing && inputRef.current) {
|
|
60
|
+
inputRef.current.focus();
|
|
61
|
+
inputRef.current.select();
|
|
62
|
+
}
|
|
63
|
+
}, [isEditing]);
|
|
64
|
+
return (_jsxs("div", { className: "flex items-center justify-center px-2 border-b border-solid border-gray-500 dark:border-gray-400 text-gray-600 dark:text-gray-300", style: {
|
|
65
|
+
maxHeight: NODE_HEADER_HEIGHT_PX,
|
|
66
|
+
minHeight: NODE_HEADER_HEIGHT_PX,
|
|
67
|
+
}, children: [isEditing ? (_jsx("input", { ref: inputRef, type: "text", value: editValue, onChange: (e) => setEditValue(e.target.value), onBlur: handleSave, onKeyDown: handleKeyDown, onClick: (e) => e.stopPropagation(), onMouseDown: (e) => e.stopPropagation(), className: "flex-1 h-full text-sm bg-transparent border border-blue-500 rounded px-1 outline-none wb-nodrag", style: { lineHeight: `${NODE_HEADER_HEIGHT_PX}px` } })) : (_jsx("strong", { className: `react-flow__node-title flex-1 h-full text-sm select-none truncate ${typeId ? "cursor-text" : ""}`, style: { lineHeight: `${NODE_HEADER_HEIGHT_PX}px` }, onDoubleClick: handleDoubleClick, title: typeId ? "Double-click to rename" : undefined, children: displayName })), _jsxs("div", { className: "flex items-center gap-1", children: [_jsx("button", { onClick: (e) => {
|
|
68
|
+
e.stopPropagation();
|
|
69
|
+
void ctx.runNode(id);
|
|
70
|
+
}, className: "w-4 h-4 flex items-center justify-center hover:bg-gray-200 dark:hover:bg-gray-700 rounded text-gray-600 dark:text-gray-400 hover:text-green-600 dark:hover:text-green-400 transition-colors", title: "Run node", children: _jsx(PlayIcon, { size: 10, weight: "fill" }) }), ctx.runMode === "manual" && (_jsxs(_Fragment, { children: [_jsx("button", { onClick: (e) => {
|
|
71
|
+
e.stopPropagation();
|
|
72
|
+
void ctx.runFromHere(id);
|
|
73
|
+
}, className: "w-4 h-4 flex items-center justify-center hover:bg-gray-200 dark:hover:bg-gray-700 rounded text-gray-600 dark:text-gray-400 hover:text-blue-600 dark:hover:text-blue-400 transition-colors", title: "Run from here", children: _jsx(FastForwardIcon, { size: 10, weight: "fill" }) }), _jsx("button", { onClick: (e) => {
|
|
74
|
+
e.stopPropagation();
|
|
75
|
+
ctx.abortNode(id);
|
|
76
|
+
}, className: "w-4 h-4 flex items-center justify-center hover:bg-gray-200 dark:hover:bg-gray-700 rounded text-gray-600 dark:text-gray-400 hover:text-red-600 dark:hover:text-red-400 transition-colors", title: "Abort node", children: _jsx(StopIcon, { size: 10, weight: "fill" }) })] })), right, validation.issues && validation.issues.length > 0 && (_jsx(IssueBadge, { level: validation.issues.some((i) => i.level === "error") ? "error" : "warning", size: 12, className: "w-3 h-3", title: validation.issues.map((v) => `${v.code}: ${v.message}`).join("; ") })), showId && _jsxs("span", { className: "text-[10px] opacity-70", children: ["(", id, ")"] })] })] }));
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=DefaultNodeHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefaultNodeHeader.js","sourceRoot":"","sources":["../../../src/misc/DefaultNodeHeader.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export declare function Inspector({ debug, autoScroll, hideWorkbench, onAutoScrollChange, onHideWorkbenchChange, toString, contextPanel, setInput, }: {
|
|
3
|
+
debug?: boolean;
|
|
4
|
+
autoScroll?: boolean;
|
|
5
|
+
hideWorkbench?: boolean;
|
|
6
|
+
onAutoScrollChange?: (v: boolean) => void;
|
|
7
|
+
onHideWorkbenchChange?: (v: boolean) => void;
|
|
8
|
+
toString: (typeId?: string, value?: unknown) => string;
|
|
9
|
+
contextPanel?: React.ReactNode;
|
|
10
|
+
setInput: (handle: string, value: string | number | undefined) => void;
|
|
11
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
//# sourceMappingURL=Inspector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Inspector.d.ts","sourceRoot":"","sources":["../../../src/misc/Inspector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAehE,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,qBAAqB,EACrB,QAAQ,EACR,YAAY,EACZ,QAAQ,GACT,EAAE;IACD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kBAAkB,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,qBAAqB,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,MAAM,CAAC;IACvD,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;CACxE,2CAwqBA"}
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useEffect, useState } from "react";
|
|
3
|
+
import { isInputPrivate, getInputTypeId, getInputDeclaredTypes, isTyped, unwrapTypeId, unwrapValue, } from "@bian-womp/spark-graph";
|
|
4
|
+
import { XIcon, CopyIcon, XCircleIcon } from "@phosphor-icons/react";
|
|
5
|
+
import { resolveOutputDisplay, prettyHandle } from "./value";
|
|
6
|
+
import { IssueBadge } from "./IssueBadge";
|
|
7
|
+
import { useWorkbenchContext } from "./context/WorkbenchContext";
|
|
8
|
+
import { DebugEvents } from "./DebugEvents";
|
|
9
|
+
export function Inspector({ debug, autoScroll, hideWorkbench, onAutoScrollChange, onHideWorkbenchChange, toString, contextPanel, setInput, }) {
|
|
10
|
+
const safeToString = (typeId, value) => {
|
|
11
|
+
try {
|
|
12
|
+
if (typeof toString === "function") {
|
|
13
|
+
return toString(typeId, value);
|
|
14
|
+
}
|
|
15
|
+
return String(value ?? "");
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return String(value ?? "");
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
const unwrapForDisplay = (declaredTypeId, value) => {
|
|
22
|
+
if (isTyped(value)) {
|
|
23
|
+
const t = unwrapTypeId(value) ?? declaredTypeId;
|
|
24
|
+
return { typeId: t, value: unwrapValue(value) };
|
|
25
|
+
}
|
|
26
|
+
return { typeId: declaredTypeId, value };
|
|
27
|
+
};
|
|
28
|
+
const { wb, registryVersion, selectedNodeId, selectedEdgeId, inputsMap, inputDefaultsMap, outputsMap, outputTypesMap, nodeStatus, edgeStatus, validationByNode, validationByEdge, validationGlobal, valuesTick, updateEdgeType, systemErrors, registryErrors, inputValidationErrors, clearSystemErrors, clearRegistryErrors, clearInputValidationErrors, removeSystemError, removeRegistryError, removeInputValidationError, handlesMap, } = useWorkbenchContext();
|
|
29
|
+
const nodeValidationIssues = validationByNode.issues;
|
|
30
|
+
const edgeValidationIssues = validationByEdge.issues;
|
|
31
|
+
const nodeValidationHandles = validationByNode;
|
|
32
|
+
const globalValidationIssues = validationGlobal;
|
|
33
|
+
const selectedNode = wb.def.nodes.find((n) => n.nodeId === selectedNodeId);
|
|
34
|
+
const selectedEdge = wb.def.edges.find((e) => e.id === selectedEdgeId);
|
|
35
|
+
// Use precomputed handles map from context
|
|
36
|
+
const effectiveHandles = selectedNode
|
|
37
|
+
? (handlesMap[selectedNode.nodeId] ?? {
|
|
38
|
+
inputs: {},
|
|
39
|
+
outputs: {},
|
|
40
|
+
inputDefaults: {},
|
|
41
|
+
})
|
|
42
|
+
: { inputs: {}, outputs: {}, inputDefaults: {} };
|
|
43
|
+
const inputHandles = Object.entries(effectiveHandles.inputs)
|
|
44
|
+
.filter(([k]) => !isInputPrivate(effectiveHandles.inputs, k))
|
|
45
|
+
.map(([k]) => k);
|
|
46
|
+
const outputHandles = Object.keys(effectiveHandles.outputs);
|
|
47
|
+
const nodeInputsRaw = selectedNodeId ? (inputsMap[selectedNodeId] ?? {}) : {};
|
|
48
|
+
const nodeInputsDefaults = selectedNodeId
|
|
49
|
+
? {
|
|
50
|
+
...effectiveHandles.inputDefaults,
|
|
51
|
+
...inputDefaultsMap[selectedNodeId],
|
|
52
|
+
}
|
|
53
|
+
: {};
|
|
54
|
+
// Keep defaults separate for placeholder use (don't merge into nodeInputs)
|
|
55
|
+
const nodeInputs = nodeInputsRaw;
|
|
56
|
+
const nodeOutputs = selectedNodeId ? (outputsMap[selectedNodeId] ?? {}) : {};
|
|
57
|
+
// Helper to truncate long values
|
|
58
|
+
const truncateValue = (str, maxLen = 50) => {
|
|
59
|
+
if (str.length <= maxLen)
|
|
60
|
+
return str;
|
|
61
|
+
const start = Math.floor(maxLen / 2) - 5;
|
|
62
|
+
const end = str.length - Math.floor(maxLen / 2) + 5;
|
|
63
|
+
return `${str.slice(0, start)}...${str.slice(end)}`;
|
|
64
|
+
};
|
|
65
|
+
// Helper to copy to clipboard
|
|
66
|
+
const copyToClipboard = (text) => {
|
|
67
|
+
navigator.clipboard.writeText(text).catch(() => {
|
|
68
|
+
// Fallback for older browsers
|
|
69
|
+
const textarea = document.createElement("textarea");
|
|
70
|
+
textarea.value = text;
|
|
71
|
+
document.body.appendChild(textarea);
|
|
72
|
+
textarea.select();
|
|
73
|
+
document.execCommand("copy");
|
|
74
|
+
document.body.removeChild(textarea);
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
const selectedNodeStatus = selectedNodeId ? nodeStatus?.[selectedNodeId] : undefined;
|
|
78
|
+
const selectedNodeValidation = selectedNodeId ? (nodeValidationIssues?.[selectedNodeId] ?? []) : [];
|
|
79
|
+
const selectedEdgeValidation = selectedEdge ? (edgeValidationIssues?.[selectedEdge.id] ?? []) : [];
|
|
80
|
+
const selectedNodeHandleValidation = selectedNodeId
|
|
81
|
+
? {
|
|
82
|
+
inputs: nodeValidationHandles?.inputs?.[selectedNodeId] ?? [],
|
|
83
|
+
outputs: nodeValidationHandles?.outputs?.[selectedNodeId] ?? [],
|
|
84
|
+
}
|
|
85
|
+
: { inputs: [], outputs: [] };
|
|
86
|
+
// Render edge status indicator
|
|
87
|
+
const renderEdgeStatus = useCallback(() => {
|
|
88
|
+
if (!selectedEdge)
|
|
89
|
+
return null;
|
|
90
|
+
const status = edgeStatus?.[selectedEdge.id];
|
|
91
|
+
if (status?.activeRuns > 0) {
|
|
92
|
+
return (_jsxs("div", { className: "mt-1 text-xs text-blue-700 bg-blue-50 border border-blue-200 rounded px-2 py-1", children: [_jsxs("div", { className: "font-semibold", children: ["Running (", status.activeRuns, ")"] }), _jsx("div", { className: "text-[10px] text-blue-600 mt-1", children: "Note: Edge runIds are not available in stats events" })] }));
|
|
93
|
+
}
|
|
94
|
+
return null;
|
|
95
|
+
}, [selectedEdge, edgeStatus]);
|
|
96
|
+
// Render linked input display value
|
|
97
|
+
const renderLinkedInputDisplay = useCallback((typeId, current) => {
|
|
98
|
+
const displayStr = safeToString(typeId, current);
|
|
99
|
+
const isLong = displayStr.length > 50;
|
|
100
|
+
const truncated = isLong ? truncateValue(displayStr) : displayStr;
|
|
101
|
+
return (_jsxs("div", { className: "flex items-center gap-1", children: [_jsx("span", { className: "truncate", children: truncated }), isLong && (_jsx("button", { className: "flex-shrink-0 p-1 hover:bg-gray-100 rounded", onClick: () => copyToClipboard(displayStr), title: "Copy full value", children: _jsx(CopyIcon, { size: 14 }) }))] }));
|
|
102
|
+
}, [safeToString, truncateValue, copyToClipboard]);
|
|
103
|
+
// Render output validation issues badge
|
|
104
|
+
const renderOutputValidationBadge = useCallback((handle) => {
|
|
105
|
+
const outIssues = selectedNodeHandleValidation.outputs.filter((m) => m.handle === handle);
|
|
106
|
+
if (outIssues.length === 0)
|
|
107
|
+
return null;
|
|
108
|
+
const outErr = outIssues.some((m) => m.level === "error");
|
|
109
|
+
const outTitle = outIssues.map((v) => `${v.code}: ${v.message}`).join("; ");
|
|
110
|
+
return _jsx(IssueBadge, { level: outErr ? "error" : "warning", size: 24, className: "ml-1 w-6 h-6", title: outTitle });
|
|
111
|
+
}, [selectedNodeHandleValidation]);
|
|
112
|
+
// Render output display value
|
|
113
|
+
const renderOutputDisplay = useCallback((outputValue, effectiveHandle) => {
|
|
114
|
+
const { typeId, value } = resolveOutputDisplay(outputValue, effectiveHandle);
|
|
115
|
+
const displayStr = safeToString(typeId, value);
|
|
116
|
+
const isLong = displayStr.length > 50;
|
|
117
|
+
const truncated = isLong ? truncateValue(displayStr) : displayStr;
|
|
118
|
+
return (_jsxs("div", { className: "flex items-center gap-1", children: [_jsx("span", { className: "truncate", children: truncated }), isLong && (_jsx("button", { className: "flex-shrink-0 p-1 hover:bg-gray-100 rounded", onClick: () => copyToClipboard(displayStr), title: "Copy full value", children: _jsx(CopyIcon, { size: 14 }) }))] }));
|
|
119
|
+
}, [safeToString, truncateValue, copyToClipboard]);
|
|
120
|
+
// Local drafts and originals for commit-on-blur/enter behavior
|
|
121
|
+
const [drafts, setDrafts] = useState({});
|
|
122
|
+
const [originals, setOriginals] = useState({});
|
|
123
|
+
// Initialize drafts from current inputs whenever selection or valuesTick change,
|
|
124
|
+
// but do not clobber fields currently being edited (dirty drafts)
|
|
125
|
+
useEffect(() => {
|
|
126
|
+
const shallowEqual = (a, b) => {
|
|
127
|
+
const ak = Object.keys(a);
|
|
128
|
+
const bk = Object.keys(b);
|
|
129
|
+
if (ak.length !== bk.length)
|
|
130
|
+
return false;
|
|
131
|
+
for (const k of ak)
|
|
132
|
+
if (a[k] !== b[k])
|
|
133
|
+
return false;
|
|
134
|
+
return true;
|
|
135
|
+
};
|
|
136
|
+
if (!selectedNodeId) {
|
|
137
|
+
if (Object.keys(drafts).length || Object.keys(originals).length) {
|
|
138
|
+
setDrafts({});
|
|
139
|
+
setOriginals({});
|
|
140
|
+
}
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
const handles = Object.keys(effectiveHandles.inputs);
|
|
144
|
+
const nextDrafts = { ...drafts };
|
|
145
|
+
const nextOriginals = { ...originals };
|
|
146
|
+
for (const h of handles) {
|
|
147
|
+
const typeId = getInputTypeId(effectiveHandles.inputs, h);
|
|
148
|
+
const current = nodeInputs[h];
|
|
149
|
+
const { typeId: displayTypeId, value: displayValue } = unwrapForDisplay(typeId, current);
|
|
150
|
+
const display = safeToString(displayTypeId, displayValue);
|
|
151
|
+
const wasOriginal = originals[h];
|
|
152
|
+
const isDirty = drafts[h] !== undefined && wasOriginal !== undefined && drafts[h] !== wasOriginal;
|
|
153
|
+
if (!isDirty) {
|
|
154
|
+
nextDrafts[h] = display;
|
|
155
|
+
nextOriginals[h] = display;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
if (!shallowEqual(drafts, nextDrafts))
|
|
159
|
+
setDrafts(nextDrafts);
|
|
160
|
+
if (!shallowEqual(originals, nextOriginals))
|
|
161
|
+
setOriginals(nextOriginals);
|
|
162
|
+
}, [selectedNodeId, selectedNode, wb.registry, registryVersion, valuesTick]);
|
|
163
|
+
const widthClass = debug ? "w-[480px]" : "w-[320px]";
|
|
164
|
+
const deleteEdgeById = (edgeId) => {
|
|
165
|
+
if (!edgeId)
|
|
166
|
+
return;
|
|
167
|
+
try {
|
|
168
|
+
wb.disconnect(edgeId);
|
|
169
|
+
}
|
|
170
|
+
catch { }
|
|
171
|
+
};
|
|
172
|
+
return (_jsxs("div", { className: `${widthClass} border-l border-gray-300 p-3 flex flex-col h-full min-h-0 overflow-auto select-none`, children: [_jsxs("div", { className: "flex-1 overflow-auto", children: [contextPanel && _jsx("div", { className: "mb-2", children: contextPanel }), inputValidationErrors.length > 0 && (_jsxs("div", { className: "mb-2 space-y-1", children: [inputValidationErrors.map((err, i) => (_jsxs("div", { className: "text-xs text-red-700 bg-red-50 border border-red-200 rounded px-2 py-1 flex items-start justify-between gap-2", children: [_jsxs("div", { className: "flex-1", children: [_jsx("div", { className: "font-semibold", children: "Input Validation Error" }), _jsx("div", { className: "break-words", children: err.message }), _jsxs("div", { className: "text-[10px] text-red-600 mt-1", children: [err.nodeId, ".", err.handle, " (type: ", err.typeId, ")"] })] }), _jsx("button", { className: "text-red-500 hover:text-red-700 text-[10px] px-1", onClick: () => removeInputValidationError(i), title: "Dismiss", children: _jsx(XIcon, { size: 10 }) })] }, i))), inputValidationErrors.length > 1 && (_jsx("button", { className: "text-xs text-red-600 hover:text-red-800 underline", onClick: clearInputValidationErrors, children: "Clear all" }))] })), systemErrors.length > 0 && (_jsxs("div", { className: "mb-2 space-y-1", children: [systemErrors.map((err, i) => (_jsxs("div", { className: "text-xs text-red-700 bg-red-50 border border-red-200 rounded px-2 py-1 flex items-start justify-between gap-2", children: [_jsxs("div", { className: "flex-1", children: [_jsx("div", { className: "font-semibold", children: err.code ? `Error ${err.code}` : "Error" }), _jsx("div", { className: "break-words", children: err.message })] }), _jsx("button", { className: "text-red-500 hover:text-red-700 text-[10px] px-1", onClick: () => removeSystemError(i), title: "Dismiss", children: _jsx(XIcon, { size: 10 }) })] }, i))), systemErrors.length > 1 && (_jsx("button", { className: "text-xs text-red-600 hover:text-red-800 underline", onClick: clearSystemErrors, children: "Clear all" }))] })), registryErrors.length > 0 && (_jsxs("div", { className: "mb-2 space-y-1", children: [registryErrors.map((err, i) => (_jsxs("div", { className: "text-xs text-amber-700 bg-amber-50 border border-amber-200 rounded px-2 py-1 flex items-start justify-between gap-2", children: [_jsxs("div", { className: "flex-1", children: [_jsx("div", { className: "font-semibold", children: "Registry Error" }), _jsx("div", { className: "break-words", children: err.message }), err.attempt && err.maxAttempts && (_jsxs("div", { className: "text-[10px] text-amber-600 mt-1", children: ["Attempt ", err.attempt, " of ", err.maxAttempts] }))] }), _jsx("button", { className: "text-amber-500 hover:text-amber-700 text-[10px] px-1", onClick: () => removeRegistryError(i), title: "Dismiss", children: _jsx(XIcon, { size: 10 }) })] }, i))), registryErrors.length > 1 && (_jsx("button", { className: "text-xs text-amber-600 hover:text-amber-800 underline", onClick: clearRegistryErrors, children: "Clear all" }))] })), _jsx("div", { className: "font-semibold mb-2", children: "Inspector" }), _jsxs("div", { className: "text-xs text-gray-500 mb-2", children: ["valuesTick: ", valuesTick] }), _jsx("div", { className: "flex-1", children: !selectedNode && !selectedEdge ? (_jsxs("div", { children: [_jsx("div", { className: "text-gray-500", children: "Select a node or edge." }), globalValidationIssues && globalValidationIssues.length > 0 && (_jsxs("div", { className: "mt-2 text-xs bg-red-50 border border-red-200 rounded px-2 py-1", children: [_jsx("div", { className: "font-semibold mb-1", children: "Validation" }), _jsx("ul", { className: "list-disc ml-4", children: globalValidationIssues.map((m, i) => (_jsxs("li", { className: "flex items-center gap-1", children: [_jsx(IssueBadge, { level: m.level, size: 24, className: "w-6 h-6" }), _jsx("span", { children: `${m.code}: ${m.message}` }), !!m.data?.edgeId && (_jsx("button", { className: "ml-2 text-[10px] px-1 py-[2px] border border-red-300 rounded text-red-700 hover:bg-red-50", onClick: (e) => {
|
|
173
|
+
e.stopPropagation();
|
|
174
|
+
deleteEdgeById(m.data?.edgeId);
|
|
175
|
+
}, title: "Delete referenced edge", children: "Delete edge" }))] }, i))) })] }))] })) : selectedEdge ? (_jsxs("div", { children: [_jsxs("div", { className: "mb-2", children: [_jsxs("div", { children: ["Edge: ", selectedEdge.id] }), _jsxs("div", { children: [selectedEdge.source.nodeId, ".", selectedEdge.source.handle, " \u2192 ", selectedEdge.target.nodeId, ".", selectedEdge.target.handle] }), renderEdgeStatus(), _jsx("div", { className: "mt-1", children: _jsx("button", { className: "text-xs px-2 py-1 border border-red-300 rounded text-red-700 hover:bg-red-50", onClick: (e) => {
|
|
176
|
+
e.stopPropagation();
|
|
177
|
+
deleteEdgeById(selectedEdge.id);
|
|
178
|
+
}, title: "Delete this edge", children: "Delete edge" }) }), _jsxs("div", { className: "flex items-center gap-2 mt-1", children: [_jsxs("label", { className: "w-20 flex flex-col", children: [_jsx("span", { children: "Type" }), _jsx("span", { className: "text-gray-500 text-[11px]", children: "DataTypeId" })] }), _jsxs("select", { className: "border border-gray-300 rounded px-2 py-1 focus:outline-none focus:ring-2 focus:ring-blue-500 w-full", value: selectedEdge.typeId ?? "", onChange: (e) => {
|
|
179
|
+
const v = e.target.value;
|
|
180
|
+
const next = v === "" ? undefined : v;
|
|
181
|
+
updateEdgeType(selectedEdge.id, next);
|
|
182
|
+
}, children: [_jsx("option", { value: "", children: "(infer from source)" }), Array.from(wb.registry.types.keys()).map((tid) => (_jsx("option", { value: tid, children: tid }, tid)))] })] })] }), selectedEdgeValidation.length > 0 && (_jsxs("div", { className: "mt-2 text-xs bg-red-50 border border-red-200 rounded px-2 py-1", children: [_jsx("div", { className: "font-semibold mb-1", children: "Validation" }), _jsx("ul", { className: "list-disc ml-4", children: selectedEdgeValidation.map((m, i) => (_jsxs("li", { className: "flex items-center gap-1", children: [_jsx(IssueBadge, { level: m.level, size: 24, className: "w-6 h-6" }), _jsx("span", { children: `${m.code}: ${m.message}` }), _jsx("button", { className: "ml-2 text-[10px] px-1 py-[2px] border border-red-300 rounded text-red-700 hover:bg-red-50", onClick: (e) => {
|
|
183
|
+
e.stopPropagation();
|
|
184
|
+
deleteEdgeById(selectedEdge.id);
|
|
185
|
+
}, title: "Delete this edge", children: "Delete edge" })] }, i))) })] }))] })) : (_jsxs("div", { children: [selectedNode && (_jsxs("div", { className: "mb-2", children: [_jsxs("div", { children: ["Node: ", selectedNode.nodeId] }), _jsxs("div", { children: ["Type: ", selectedNode.typeId] }), !!selectedNodeStatus?.activeRuns && selectedNodeStatus.activeRuns > 0 && (_jsxs("div", { className: "mt-1 text-xs text-blue-700 bg-blue-50 border border-blue-200 rounded px-2 py-1", children: [_jsxs("div", { className: "font-semibold", children: ["Running (", selectedNodeStatus.activeRuns, ")"] }), selectedNodeStatus.activeRunIds && selectedNodeStatus.activeRunIds.length > 0 ? (_jsxs("div", { className: "mt-1", children: [_jsx("div", { className: "text-[10px] text-blue-600", children: "RunIds:" }), _jsx("div", { className: "flex flex-wrap gap-1 mt-1", children: selectedNodeStatus.activeRunIds.map((runId, idx) => (_jsx("span", { className: "text-[10px] px-1.5 py-0.5 bg-blue-100 border border-blue-300 rounded font-mono", children: runId }, idx))) })] })) : (_jsx("div", { className: "text-[10px] text-blue-600 mt-1", children: "RunIds not available (some runs may have started without runId)" }))] })), !!selectedNodeStatus?.lastError && (_jsx("div", { className: "mt-2 text-sm text-red-700 bg-red-50 border border-red-200 rounded px-2 py-1 break-words", children: String(selectedNodeStatus.lastError?.message ?? selectedNodeStatus.lastError) }))] })), _jsxs("div", { className: "mb-2", children: [_jsx("div", { className: "font-semibold mb-1", children: "Inputs" }), inputHandles.length === 0 ? (_jsx("div", { className: "text-gray-500", children: "No inputs" })) : (inputHandles.map((h) => {
|
|
186
|
+
const typeId = getInputTypeId(effectiveHandles.inputs, h);
|
|
187
|
+
const declaredTypes = getInputDeclaredTypes(effectiveHandles.inputs, h);
|
|
188
|
+
const typeLabel = Array.isArray(declaredTypes) ? declaredTypes.join(" | ") : (typeId ?? "");
|
|
189
|
+
const isLinked = wb.def.edges.some((e) => e.target.nodeId === selectedNodeId && e.target.handle === h);
|
|
190
|
+
const inbound = new Set(wb.def.edges
|
|
191
|
+
.filter((e) => e.target.nodeId === selectedNodeId && e.target.handle === h)
|
|
192
|
+
.map((e) => e.target.handle));
|
|
193
|
+
const { typeId: defaultTypeId, value: defaultValue } = unwrapForDisplay(typeId, nodeInputsDefaults[h]);
|
|
194
|
+
const hasDefault = !inbound.has(h) && nodeInputsDefaults[h] !== undefined;
|
|
195
|
+
const defaultStr = hasDefault ? safeToString(defaultTypeId, defaultValue) : undefined;
|
|
196
|
+
const commonProps = {
|
|
197
|
+
style: { flex: 1 },
|
|
198
|
+
disabled: isLinked,
|
|
199
|
+
};
|
|
200
|
+
const current = nodeInputs[h];
|
|
201
|
+
const { typeId: displayTypeId, value: displayValue } = unwrapForDisplay(typeId, current);
|
|
202
|
+
const hasValue = displayValue !== undefined && displayValue !== null;
|
|
203
|
+
const value = drafts[h] ?? safeToString(displayTypeId, displayValue);
|
|
204
|
+
const placeholder = hasDefault ? defaultStr : undefined;
|
|
205
|
+
const onChangeText = (text) => setDrafts((d) => ({ ...d, [h]: text }));
|
|
206
|
+
const commit = () => {
|
|
207
|
+
const draft = drafts[h];
|
|
208
|
+
if (draft === undefined)
|
|
209
|
+
return;
|
|
210
|
+
// Only commit if draft differs from current value
|
|
211
|
+
const currentDisplay = safeToString(typeId, current);
|
|
212
|
+
if (draft === currentDisplay) {
|
|
213
|
+
// No change, just sync originals without calling setInput
|
|
214
|
+
setOriginals((o) => ({ ...o, [h]: draft }));
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
setInput(h, draft);
|
|
218
|
+
setOriginals((o) => ({ ...o, [h]: draft }));
|
|
219
|
+
};
|
|
220
|
+
const revert = () => {
|
|
221
|
+
const orig = originals[h] ?? safeToString(typeId, current);
|
|
222
|
+
setDrafts((d) => ({ ...d, [h]: orig }));
|
|
223
|
+
};
|
|
224
|
+
const clearInput = () => {
|
|
225
|
+
setInput(h, undefined);
|
|
226
|
+
setDrafts((d) => ({ ...d, [h]: "" }));
|
|
227
|
+
setOriginals((o) => ({ ...o, [h]: "" }));
|
|
228
|
+
};
|
|
229
|
+
const isEnum = displayTypeId?.startsWith("enum:");
|
|
230
|
+
const inIssues = selectedNodeHandleValidation.inputs.filter((m) => m.handle === h);
|
|
231
|
+
const hasValidation = inIssues.length > 0;
|
|
232
|
+
const hasErr = inIssues.some((m) => m.level === "error");
|
|
233
|
+
const title = inIssues.map((v) => `${v.code}: ${v.message}`).join("; ");
|
|
234
|
+
return (_jsxs("div", { className: "flex items-center gap-2 mb-1", children: [_jsxs("label", { className: "w-32 flex flex-col", children: [_jsx("span", { children: prettyHandle(h) }), _jsx("span", { className: "text-gray-500 text-[11px]", children: typeLabel })] }), hasValidation && (_jsx(IssueBadge, { level: hasErr ? "error" : "warning", size: 24, className: "ml-1 w-6 h-6", title: title })), isEnum ? (_jsxs("div", { className: "flex items-center gap-1 flex-1", children: [_jsxs("select", { className: "border border-gray-300 rounded px-2 py-1 focus:outline-none focus:ring-2 focus:ring-blue-500 flex-1 select-text", value: current !== undefined && current !== null ? String(current) : "", onChange: (e) => {
|
|
235
|
+
const val = e.target.value;
|
|
236
|
+
const raw = val === "" ? undefined : Number(val);
|
|
237
|
+
setInput(h, raw);
|
|
238
|
+
// keep drafts/originals in sync with label for display elsewhere
|
|
239
|
+
const display = safeToString(typeId, raw);
|
|
240
|
+
setDrafts((d) => ({ ...d, [h]: display }));
|
|
241
|
+
setOriginals((o) => ({ ...o, [h]: display }));
|
|
242
|
+
}, ...commonProps, children: [_jsx("option", { value: "", children: placeholder ? `Default: ${placeholder}` : "(select)" }), wb.registry.enums.get(typeId)?.options.map((opt) => (_jsx("option", { value: String(opt.value), children: opt.label }, opt.value)))] }), hasValue && !isLinked && (_jsx("button", { className: "flex-shrink-0 p-1 hover:bg-gray-100 rounded text-gray-500 hover:text-gray-700", onClick: clearInput, title: "Clear input value", children: _jsx(XCircleIcon, { size: 16 }) }))] })) : isLinked ? (_jsx("div", { className: "flex items-center gap-1 flex-1", children: _jsx("div", { className: "flex-1 min-w-0", children: renderLinkedInputDisplay(displayTypeId, displayValue) }) })) : (_jsxs("div", { className: "flex items-center gap-1 flex-1", children: [_jsx("input", { className: "border border-gray-300 rounded px-2 py-1 focus:outline-none focus:ring-2 focus:ring-blue-500 flex-1 select-text", placeholder: placeholder ? `Default: ${placeholder}` : undefined, value: value, onChange: (e) => onChangeText(e.target.value), onBlur: commit, onKeyDown: (e) => {
|
|
243
|
+
if (e.key === "Enter")
|
|
244
|
+
commit();
|
|
245
|
+
if (e.key === "Escape")
|
|
246
|
+
revert();
|
|
247
|
+
}, ...commonProps }), hasValue && !isLinked && (_jsx("button", { className: "flex-shrink-0 p-1 hover:bg-gray-100 rounded text-gray-500 hover:text-gray-700", onClick: clearInput, title: "Clear input value", children: _jsx(XCircleIcon, { size: 16 }) }))] }))] }, h));
|
|
248
|
+
}))] }), _jsxs("div", { children: [_jsx("div", { className: "font-semibold mb-1", children: "Outputs" }), outputHandles.length === 0 ? (_jsx("div", { className: "text-gray-500", children: "No outputs" })) : (outputHandles.map((h) => (_jsxs("div", { className: "flex items-center gap-2 mb-1", children: [_jsxs("label", { className: "w-20 flex flex-col", children: [_jsx("span", { children: prettyHandle(h) }), _jsx("span", { className: "text-gray-500 text-[11px]", children: outputTypesMap[selectedNodeId]?.[h] ?? "" })] }), _jsx("div", { className: "flex-1 min-w-0", children: renderOutputDisplay(nodeOutputs[h], effectiveHandles.outputs[h]) }), renderOutputValidationBadge(h)] }, h))))] }), selectedNodeValidation.length > 0 && (_jsxs("div", { className: "mt-2 text-xs bg-red-50 border border-red-200 rounded px-2 py-1", children: [_jsx("div", { className: "font-semibold mb-1", children: "Validation" }), _jsx("ul", { className: "list-disc ml-4", children: selectedNodeValidation.map((m, i) => (_jsxs("li", { className: "flex items-center gap-1", children: [_jsx(IssueBadge, { level: m.level, size: 24, className: "w-6 h-6" }), _jsx("span", { children: `${m.code}: ${m.message}` }), !!m.data?.edgeId && (_jsx("button", { className: "ml-2 text-[10px] px-1 py-[2px] border border-red-300 rounded text-red-700 hover:bg-red-50", onClick: (e) => {
|
|
249
|
+
e.stopPropagation();
|
|
250
|
+
deleteEdgeById(m.data?.edgeId);
|
|
251
|
+
}, title: "Delete referenced edge", children: "Delete edge" }))] }, i))) })] }))] })) })] }), debug && (_jsx("div", { className: "mt-3 flex-none min-h-0 h-[50%]", children: _jsx(DebugEvents, { autoScroll: !!autoScroll, hideWorkbench: !!hideWorkbench, onAutoScrollChange: onAutoScrollChange, onHideWorkbenchChange: onHideWorkbenchChange }) }))] }));
|
|
252
|
+
}
|
|
253
|
+
//# sourceMappingURL=Inspector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Inspector.js","sourceRoot":"","sources":["../../../src/misc/Inspector.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IssueBadge.d.ts","sourceRoot":"","sources":["../../../src/misc/IssueBadge.tsx"],"names":[],"mappings":"AAGA,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,KAAK,EACL,IAAS,EACT,SAAS,GACV,EAAE;IACD,KAAK,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,2CAYA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { WarningCircleIcon, XCircleIcon } from "@phosphor-icons/react";
|
|
3
|
+
export function IssueBadge({ level, title, size = 12, className, }) {
|
|
4
|
+
const colorClass = level === "error" ? "text-red-600" : "text-amber-600";
|
|
5
|
+
return (_jsx("button", { type: "button", className: `inline-flex items-center justify-center shrink-0 ${colorClass} ${className ?? ""}`, title: title, style: { width: size, height: size }, children: level === "error" ? _jsx(XCircleIcon, { size: size, weight: "fill" }) : _jsx(WarningCircleIcon, { size: size, weight: "fill" }) }));
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=IssueBadge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IssueBadge.js","sourceRoot":"","sources":["../../../src/misc/IssueBadge.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEvE,MAAM,UAAU,UAAU,CAAC,EACzB,KAAK,EACL,KAAK,EACL,IAAI,GAAG,EAAE,EACT,SAAS,GAMV;IACC,MAAM,UAAU,GAAG,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC;IACzE,OAAO,CACL,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,oDAAoD,UAAU,IAAI,SAAS,IAAI,EAAE,EAAE,EAC9F,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAEnC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,KAAC,WAAW,IAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAC,iBAAiB,IAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAC,MAAM,GAAG,GACzG,CACV,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
interface KeyboardShortcutToastProps {
|
|
2
|
+
message: string;
|
|
3
|
+
duration?: number;
|
|
4
|
+
onClose: () => void;
|
|
5
|
+
}
|
|
6
|
+
export declare function KeyboardShortcutToast({ message, duration, onClose }: KeyboardShortcutToastProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export declare function useKeyboardShortcutToast(): {
|
|
8
|
+
toast: {
|
|
9
|
+
message: string;
|
|
10
|
+
id: number;
|
|
11
|
+
} | null;
|
|
12
|
+
showToast: (message: string) => void;
|
|
13
|
+
hideToast: () => void;
|
|
14
|
+
};
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=KeyboardShortcutToast.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KeyboardShortcutToast.d.ts","sourceRoot":"","sources":["../../../src/misc/KeyboardShortcutToast.tsx"],"names":[],"mappings":"AAEA,UAAU,0BAA0B;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,qBAAqB,CAAC,EAAE,OAAO,EAAE,QAAe,EAAE,OAAO,EAAE,EAAE,0BAA0B,2CAsCtG;AAGD,wBAAgB,wBAAwB;;iBACQ,MAAM;YAAM,MAAM;;yBAEpC,MAAM;;EAUnC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState, useRef } from "react";
|
|
3
|
+
export function KeyboardShortcutToast({ message, duration = 1000, onClose }) {
|
|
4
|
+
const [isVisible, setIsVisible] = useState(true);
|
|
5
|
+
const onCloseRef = useRef(onClose);
|
|
6
|
+
const fadeOutTimerRef = useRef(null);
|
|
7
|
+
// Keep onClose ref up to date
|
|
8
|
+
useEffect(() => {
|
|
9
|
+
onCloseRef.current = onClose;
|
|
10
|
+
}, [onClose]);
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
const timer = setTimeout(() => {
|
|
13
|
+
setIsVisible(false);
|
|
14
|
+
// Wait for fade-out animation before calling onClose
|
|
15
|
+
fadeOutTimerRef.current = setTimeout(() => {
|
|
16
|
+
onCloseRef.current();
|
|
17
|
+
}, 300);
|
|
18
|
+
}, duration);
|
|
19
|
+
return () => {
|
|
20
|
+
clearTimeout(timer);
|
|
21
|
+
if (fadeOutTimerRef.current) {
|
|
22
|
+
clearTimeout(fadeOutTimerRef.current);
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
}, [duration]);
|
|
26
|
+
return (_jsx("div", { className: `fixed top-4 left-1/2 -translate-x-1/2 z-[2000] pointer-events-none transition-opacity duration-300 ${isVisible ? "opacity-100" : "opacity-0"}`, children: _jsx("div", { className: "bg-white border border-gray-300 rounded-lg shadow-lg px-2 py-1 text-sm text-gray-700 font-medium whitespace-nowrap", children: message }) }));
|
|
27
|
+
}
|
|
28
|
+
// Hook to manage toast state
|
|
29
|
+
export function useKeyboardShortcutToast() {
|
|
30
|
+
const [toast, setToast] = useState(null);
|
|
31
|
+
const showToast = (message) => {
|
|
32
|
+
const id = Date.now();
|
|
33
|
+
setToast({ message, id });
|
|
34
|
+
};
|
|
35
|
+
const hideToast = () => {
|
|
36
|
+
setToast(null);
|
|
37
|
+
};
|
|
38
|
+
return { toast, showToast, hideToast };
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=KeyboardShortcutToast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KeyboardShortcutToast.js","sourceRoot":"","sources":["../../../src/misc/KeyboardShortcutToast.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAQ3D,MAAM,UAAU,qBAAqB,CAAC,EAAE,OAAO,EAAE,QAAQ,GAAG,IAAI,EAAE,OAAO,EAA8B;IACrG,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,eAAe,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IAE5D,8BAA8B;IAC9B,SAAS,CAAC,GAAG,EAAE;QACb,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;IAC/B,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,qDAAqD;YACrD,eAAe,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBACxC,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,CAAC,EAAE,GAAG,CAAC,CAAC;QACV,CAAC,EAAE,QAAQ,CAAC,CAAC;QAEb,OAAO,GAAG,EAAE;YACV,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC;gBAC5B,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YACxC,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,OAAO,CACL,cACE,SAAS,EAAE,sGACT,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAC9B,EAAE,YAEF,cAAK,SAAS,EAAC,oHAAoH,YAChI,OAAO,GACJ,GACF,CACP,CAAC;AACJ,CAAC;AAED,6BAA6B;AAC7B,MAAM,UAAU,wBAAwB;IACtC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAyC,IAAI,CAAC,CAAC;IAEjF,MAAM,SAAS,GAAG,CAAC,OAAe,EAAE,EAAE;QACpC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtB,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5B,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,GAAG,EAAE;QACrB,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC,CAAC;IAEF,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { RFNodeData } from "./mapping";
|
|
3
|
+
export declare function NodeHandles({ data, isConnectable, getClassName, renderLabel, labelClassName, }: {
|
|
4
|
+
data: RFNodeData;
|
|
5
|
+
isConnectable: boolean;
|
|
6
|
+
getClassName?: (args: {
|
|
7
|
+
kind: "input" | "output";
|
|
8
|
+
id: string;
|
|
9
|
+
type: "source" | "target";
|
|
10
|
+
}) => string | undefined;
|
|
11
|
+
renderLabel?: (args: {
|
|
12
|
+
kind: "input" | "output";
|
|
13
|
+
id: string;
|
|
14
|
+
}) => React.ReactNode;
|
|
15
|
+
labelClassName?: string;
|
|
16
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export default NodeHandles;
|
|
18
|
+
//# sourceMappingURL=NodeHandles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeHandles.d.ts","sourceRoot":"","sources":["../../../src/misc/NodeHandles.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAqD5C,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,aAAa,EACb,YAAY,EACZ,WAAW,EACX,cAA4F,GAC7F,EAAE;IACD,IAAI,EAAE,UAAU,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAA;KAAE,KAAK,MAAM,GAAG,SAAS,CAAC;IACjH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,KAAK,KAAK,CAAC,SAAS,CAAC;IAClF,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,2CAiIA;AAED,eAAe,WAAW,CAAC"}
|