@genfeedai/workflow-ui 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/canvas.js +13 -13
- package/dist/canvas.mjs +7 -7
- package/dist/{chunk-HPQT36RR.js → chunk-3TMV3K34.js} +18 -27
- package/dist/{chunk-Z7PWFZG5.js → chunk-4MZ62VMF.js} +8 -1
- package/dist/{chunk-VOGL2WCE.mjs → chunk-7P2JWDC7.mjs} +9 -18
- package/dist/{chunk-FT64PCUP.mjs → chunk-AOTUCJMA.mjs} +6 -15
- package/dist/{chunk-LAJ34AH2.mjs → chunk-AUZR6REQ.mjs} +4 -7
- package/dist/{chunk-EC2ZIWOK.js → chunk-AXFOCPPP.js} +36 -45
- package/dist/{chunk-CETJJ73S.js → chunk-BMFRA6GK.js} +28 -37
- package/dist/{chunk-XV5Z5XYR.mjs → chunk-E3YBVMYZ.mjs} +403 -59
- package/dist/{chunk-H6LZKSLY.js → chunk-ECD5J2BA.js} +496 -152
- package/dist/{chunk-ADWNF7V3.js → chunk-EMGXUNBL.js} +3 -3
- package/dist/{chunk-22PDGHNQ.mjs → chunk-HCXI63ME.mjs} +2 -2
- package/dist/{chunk-UQQUWGHW.mjs → chunk-IASLG6IA.mjs} +1 -1
- package/dist/chunk-IHF35QZD.js +1095 -0
- package/dist/{chunk-E544XUBL.js → chunk-KDIWRSYV.js} +8 -11
- package/dist/chunk-RIGVIEYB.mjs +1093 -0
- package/dist/{chunk-SW7QNEZU.js → chunk-SEV2DWKF.js} +30 -30
- package/dist/{chunk-CSUBLSKZ.mjs → chunk-SQK4JDYY.mjs} +27 -36
- package/dist/{chunk-AC6TWLRT.mjs → chunk-ZJWP5KGZ.mjs} +8 -2
- package/dist/hooks.js +15 -15
- package/dist/hooks.mjs +5 -5
- package/dist/index.js +42 -42
- package/dist/index.mjs +9 -9
- package/dist/lib.js +1 -1
- package/dist/lib.mjs +1 -1
- package/dist/nodes.js +38 -38
- package/dist/nodes.mjs +5 -5
- package/dist/panels.js +7 -7
- package/dist/panels.mjs +4 -4
- package/dist/provider.js +1 -1
- package/dist/provider.mjs +1 -1
- package/dist/stores.js +8 -8
- package/dist/stores.mjs +3 -3
- package/dist/toolbar.js +10 -10
- package/dist/toolbar.mjs +4 -4
- package/dist/ui.js +1 -1
- package/dist/ui.mjs +1 -1
- package/dist/workflowStore-7SDJC4UR.mjs +3 -0
- package/dist/workflowStore-LNJQ5RZG.js +12 -0
- package/package.json +1 -1
- package/dist/chunk-BJ3R5R32.mjs +0 -2163
- package/dist/chunk-NSDLGLAQ.js +0 -2166
- package/dist/workflowStore-4EGKJLYK.mjs +0 -3
- package/dist/workflowStore-KM32FDL7.js +0 -12
package/dist/canvas.js
CHANGED
|
@@ -1,45 +1,45 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('./chunk-
|
|
3
|
+
var chunkBMFRA6GK_js = require('./chunk-BMFRA6GK.js');
|
|
4
|
+
require('./chunk-ECD5J2BA.js');
|
|
5
5
|
require('./chunk-3SPPKCWR.js');
|
|
6
6
|
require('./chunk-3YFFDHC5.js');
|
|
7
|
-
require('./chunk-
|
|
8
|
-
require('./chunk-
|
|
7
|
+
require('./chunk-EMGXUNBL.js');
|
|
8
|
+
require('./chunk-3TMV3K34.js');
|
|
9
9
|
require('./chunk-5HJFQVUR.js');
|
|
10
10
|
require('./chunk-EMUMKW5C.js');
|
|
11
11
|
require('./chunk-6DOEUDD5.js');
|
|
12
12
|
require('./chunk-JLWKW3G5.js');
|
|
13
|
-
require('./chunk-
|
|
14
|
-
require('./chunk-
|
|
13
|
+
require('./chunk-AXFOCPPP.js');
|
|
14
|
+
require('./chunk-IHF35QZD.js');
|
|
15
15
|
require('./chunk-5LQ4QBR5.js');
|
|
16
16
|
require('./chunk-RJ262NXS.js');
|
|
17
17
|
require('./chunk-RXNEDWK2.js');
|
|
18
|
-
require('./chunk-
|
|
18
|
+
require('./chunk-4MZ62VMF.js');
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
Object.defineProperty(exports, "GroupOverlay", {
|
|
23
23
|
enumerable: true,
|
|
24
|
-
get: function () { return
|
|
24
|
+
get: function () { return chunkBMFRA6GK_js.GroupOverlay; }
|
|
25
25
|
});
|
|
26
26
|
Object.defineProperty(exports, "HelperLines", {
|
|
27
27
|
enumerable: true,
|
|
28
|
-
get: function () { return
|
|
28
|
+
get: function () { return chunkBMFRA6GK_js.HelperLines; }
|
|
29
29
|
});
|
|
30
30
|
Object.defineProperty(exports, "NodeSearch", {
|
|
31
31
|
enumerable: true,
|
|
32
|
-
get: function () { return
|
|
32
|
+
get: function () { return chunkBMFRA6GK_js.NodeSearch; }
|
|
33
33
|
});
|
|
34
34
|
Object.defineProperty(exports, "PauseEdge", {
|
|
35
35
|
enumerable: true,
|
|
36
|
-
get: function () { return
|
|
36
|
+
get: function () { return chunkBMFRA6GK_js.PauseEdge; }
|
|
37
37
|
});
|
|
38
38
|
Object.defineProperty(exports, "ShortcutHelpModal", {
|
|
39
39
|
enumerable: true,
|
|
40
|
-
get: function () { return
|
|
40
|
+
get: function () { return chunkBMFRA6GK_js.ShortcutHelpModal; }
|
|
41
41
|
});
|
|
42
42
|
Object.defineProperty(exports, "WorkflowCanvas", {
|
|
43
43
|
enumerable: true,
|
|
44
|
-
get: function () { return
|
|
44
|
+
get: function () { return chunkBMFRA6GK_js.WorkflowCanvas; }
|
|
45
45
|
});
|
package/dist/canvas.mjs
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
export { GroupOverlay, HelperLines, NodeSearch, PauseEdge, ShortcutHelpModal, WorkflowCanvas } from './chunk-
|
|
2
|
-
import './chunk-
|
|
1
|
+
export { GroupOverlay, HelperLines, NodeSearch, PauseEdge, ShortcutHelpModal, WorkflowCanvas } from './chunk-7P2JWDC7.mjs';
|
|
2
|
+
import './chunk-E3YBVMYZ.mjs';
|
|
3
3
|
import './chunk-ZJD5WMR3.mjs';
|
|
4
4
|
import './chunk-E323WAZG.mjs';
|
|
5
|
-
import './chunk-
|
|
6
|
-
import './chunk-
|
|
5
|
+
import './chunk-IASLG6IA.mjs';
|
|
6
|
+
import './chunk-AOTUCJMA.mjs';
|
|
7
7
|
import './chunk-7SKSRSS7.mjs';
|
|
8
8
|
import './chunk-EFXQT23N.mjs';
|
|
9
9
|
import './chunk-CV4M7CNU.mjs';
|
|
10
10
|
import './chunk-LDN7IX4Y.mjs';
|
|
11
|
-
import './chunk-
|
|
12
|
-
import './chunk-
|
|
11
|
+
import './chunk-SQK4JDYY.mjs';
|
|
12
|
+
import './chunk-RIGVIEYB.mjs';
|
|
13
13
|
import './chunk-MLJJBBTB.mjs';
|
|
14
14
|
import './chunk-FT33LFII.mjs';
|
|
15
15
|
import './chunk-VRN3UWE5.mjs';
|
|
16
|
-
import './chunk-
|
|
16
|
+
import './chunk-ZJWP5KGZ.mjs';
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
var chunk5HJFQVUR_js = require('./chunk-5HJFQVUR.js');
|
|
4
4
|
var chunkEMUMKW5C_js = require('./chunk-EMUMKW5C.js');
|
|
5
|
-
var
|
|
6
|
-
var
|
|
5
|
+
var chunkAXFOCPPP_js = require('./chunk-AXFOCPPP.js');
|
|
6
|
+
var chunkIHF35QZD_js = require('./chunk-IHF35QZD.js');
|
|
7
7
|
var chunkRJ262NXS_js = require('./chunk-RJ262NXS.js');
|
|
8
|
-
var chunkZ7PWFZG5_js = require('./chunk-Z7PWFZG5.js');
|
|
9
8
|
var react = require('react');
|
|
10
9
|
var lucideReact = require('lucide-react');
|
|
11
10
|
var jsxRuntime = require('react/jsx-runtime');
|
|
11
|
+
var types = require('@genfeedai/types');
|
|
12
12
|
var shallow = require('zustand/react/shallow');
|
|
13
13
|
|
|
14
14
|
function useAIGenNode({
|
|
@@ -16,7 +16,7 @@ function useAIGenNode({
|
|
|
16
16
|
selectedModel,
|
|
17
17
|
schemaParams
|
|
18
18
|
}) {
|
|
19
|
-
const updateNodeData =
|
|
19
|
+
const updateNodeData = chunkIHF35QZD_js.useWorkflowStore((state) => state.updateNodeData);
|
|
20
20
|
const schemaProperties = react.useMemo(() => {
|
|
21
21
|
const schema = selectedModel?.inputSchema;
|
|
22
22
|
return schema?.properties;
|
|
@@ -34,7 +34,7 @@ function useAIGenNode({
|
|
|
34
34
|
const componentSchemas = selectedModel?.componentSchemas;
|
|
35
35
|
const handleSchemaParamChange = react.useCallback(
|
|
36
36
|
(key, value) => {
|
|
37
|
-
const currentNode =
|
|
37
|
+
const currentNode = chunkIHF35QZD_js.useWorkflowStore.getState().getNodeById(nodeId);
|
|
38
38
|
const currentData = currentNode?.data;
|
|
39
39
|
updateNodeData(nodeId, {
|
|
40
40
|
schemaParams: {
|
|
@@ -136,13 +136,10 @@ function useAutoLoadModelSchema({
|
|
|
136
136
|
};
|
|
137
137
|
}, [currentModel, selectedModel, modelIdMap, onModelSelect, modelSchema]);
|
|
138
138
|
}
|
|
139
|
-
|
|
140
|
-
// src/hooks/useRequiredInputs.ts
|
|
141
|
-
var import_types = chunkZ7PWFZG5_js.__toESM(chunkNSDLGLAQ_js.require_dist());
|
|
142
139
|
function useRequiredInputs(nodeId, nodeType) {
|
|
143
|
-
const edges =
|
|
140
|
+
const edges = chunkIHF35QZD_js.useWorkflowStore((state) => state.edges);
|
|
144
141
|
return react.useMemo(() => {
|
|
145
|
-
const nodeDef =
|
|
142
|
+
const nodeDef = types.NODE_DEFINITIONS[nodeType];
|
|
146
143
|
if (!nodeDef) {
|
|
147
144
|
return { hasRequiredInputs: true, missingInputs: [], connectionStatus: /* @__PURE__ */ new Map() };
|
|
148
145
|
}
|
|
@@ -164,9 +161,6 @@ function useRequiredInputs(nodeId, nodeType) {
|
|
|
164
161
|
};
|
|
165
162
|
}, [nodeId, nodeType, edges]);
|
|
166
163
|
}
|
|
167
|
-
|
|
168
|
-
// src/hooks/useCanGenerate.ts
|
|
169
|
-
var import_types2 = chunkZ7PWFZG5_js.__toESM(chunkNSDLGLAQ_js.require_dist());
|
|
170
164
|
function extractOutputValue(node, handleType) {
|
|
171
165
|
const data = node.data;
|
|
172
166
|
if (handleType === "text") {
|
|
@@ -187,12 +181,12 @@ function useCanGenerate({
|
|
|
187
181
|
schemaParams
|
|
188
182
|
}) {
|
|
189
183
|
const { hasRequiredInputs, missingInputs } = useRequiredInputs(nodeId, nodeType);
|
|
190
|
-
const getConnectedInputs =
|
|
184
|
+
const getConnectedInputs = chunkIHF35QZD_js.useWorkflowStore((state) => state.getConnectedInputs);
|
|
191
185
|
const incomingEdgesSelector = react.useCallback(
|
|
192
186
|
(state) => state.edges.filter((e) => e.target === nodeId),
|
|
193
187
|
[nodeId]
|
|
194
188
|
);
|
|
195
|
-
const incomingEdges =
|
|
189
|
+
const incomingEdges = chunkIHF35QZD_js.useWorkflowStore(shallow.useShallow(incomingEdgesSelector));
|
|
196
190
|
const connectedOutputsSelector = react.useCallback(
|
|
197
191
|
(state) => {
|
|
198
192
|
const outputs = {};
|
|
@@ -206,7 +200,7 @@ function useCanGenerate({
|
|
|
206
200
|
},
|
|
207
201
|
[incomingEdges]
|
|
208
202
|
);
|
|
209
|
-
|
|
203
|
+
chunkIHF35QZD_js.useWorkflowStore(shallow.useShallow(connectedOutputsSelector));
|
|
210
204
|
return react.useMemo(() => {
|
|
211
205
|
const missingItems = [];
|
|
212
206
|
for (const inputId of missingInputs) {
|
|
@@ -217,7 +211,7 @@ function useCanGenerate({
|
|
|
217
211
|
});
|
|
218
212
|
}
|
|
219
213
|
const connectedInputs = getConnectedInputs(nodeId);
|
|
220
|
-
const nodeDef =
|
|
214
|
+
const nodeDef = types.NODE_DEFINITIONS[nodeType];
|
|
221
215
|
const requiredHandleIds = new Set(
|
|
222
216
|
nodeDef?.inputs.filter((h) => h.required).map((h) => h.id) ?? []
|
|
223
217
|
);
|
|
@@ -267,7 +261,7 @@ function useCanGenerate({
|
|
|
267
261
|
]);
|
|
268
262
|
}
|
|
269
263
|
function useModelSelection({ nodeId, modelMap, fallbackModel }) {
|
|
270
|
-
const updateNodeData =
|
|
264
|
+
const updateNodeData = chunkIHF35QZD_js.useWorkflowStore((state) => state.updateNodeData);
|
|
271
265
|
const handleModelSelect = react.useCallback(
|
|
272
266
|
(model) => {
|
|
273
267
|
const internalModel = modelMap[model.id] ?? fallbackModel;
|
|
@@ -290,15 +284,12 @@ function useModelSelection({ nodeId, modelMap, fallbackModel }) {
|
|
|
290
284
|
);
|
|
291
285
|
return { handleModelSelect };
|
|
292
286
|
}
|
|
293
|
-
|
|
294
|
-
// src/hooks/useNodeExecution.ts
|
|
295
|
-
var import_types3 = chunkZ7PWFZG5_js.__toESM(chunkNSDLGLAQ_js.require_dist());
|
|
296
287
|
function useNodeExecution(nodeId) {
|
|
297
|
-
const updateNodeData =
|
|
298
|
-
const executeNode =
|
|
299
|
-
const stopNodeExecution =
|
|
288
|
+
const updateNodeData = chunkIHF35QZD_js.useWorkflowStore((state) => state.updateNodeData);
|
|
289
|
+
const executeNode = chunkAXFOCPPP_js.useExecutionStore((state) => state.executeNode);
|
|
290
|
+
const stopNodeExecution = chunkAXFOCPPP_js.useExecutionStore((state) => state.stopNodeExecution);
|
|
300
291
|
const handleGenerate = react.useCallback(() => {
|
|
301
|
-
updateNodeData(nodeId, { status:
|
|
292
|
+
updateNodeData(nodeId, { status: types.NodeStatusEnum.PROCESSING });
|
|
302
293
|
executeNode(nodeId);
|
|
303
294
|
}, [nodeId, executeNode, updateNodeData]);
|
|
304
295
|
const handleStop = react.useCallback(() => {
|
|
@@ -324,8 +315,8 @@ function useMediaUpload({
|
|
|
324
315
|
buildUrlUpdate,
|
|
325
316
|
buildRemoveUpdate
|
|
326
317
|
}) {
|
|
327
|
-
const updateNodeData =
|
|
328
|
-
const workflowId =
|
|
318
|
+
const updateNodeData = chunkIHF35QZD_js.useWorkflowStore((state) => state.updateNodeData);
|
|
319
|
+
const workflowId = chunkIHF35QZD_js.useWorkflowStore((state) => state.workflowId);
|
|
329
320
|
const { fileUpload } = chunkRJ262NXS_js.useWorkflowUIConfig();
|
|
330
321
|
const fileInputRef = react.useRef(null);
|
|
331
322
|
const [showUrlInput, setShowUrlInput] = react.useState(false);
|
|
@@ -6,7 +6,13 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
|
6
6
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
7
|
var __getProtoOf = Object.getPrototypeOf;
|
|
8
8
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
-
var
|
|
9
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
10
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
11
|
+
}) : x)(function(x) {
|
|
12
|
+
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
13
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
14
|
+
});
|
|
15
|
+
var __commonJS = (cb, mod) => function __require2() {
|
|
10
16
|
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
11
17
|
};
|
|
12
18
|
var __copyProps = (to, from, except, desc) => {
|
|
@@ -27,4 +33,5 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
27
33
|
));
|
|
28
34
|
|
|
29
35
|
exports.__commonJS = __commonJS;
|
|
36
|
+
exports.__require = __require;
|
|
30
37
|
exports.__toESM = __toESM;
|
|
@@ -1,22 +1,19 @@
|
|
|
1
|
-
import { nodeTypes } from './chunk-
|
|
1
|
+
import { nodeTypes } from './chunk-E3YBVMYZ.mjs';
|
|
2
2
|
import { getMediaFromNode } from './chunk-E323WAZG.mjs';
|
|
3
|
-
import { useCanvasKeyboardShortcuts } from './chunk-
|
|
3
|
+
import { useCanvasKeyboardShortcuts } from './chunk-IASLG6IA.mjs';
|
|
4
4
|
import { Button } from './chunk-7SKSRSS7.mjs';
|
|
5
5
|
import { usePromptEditorStore } from './chunk-CV4M7CNU.mjs';
|
|
6
|
-
import { useUIStore, useSettingsStore, useExecutionStore } from './chunk-
|
|
7
|
-
import {
|
|
8
|
-
import { __toESM } from './chunk-AC6TWLRT.mjs';
|
|
6
|
+
import { useUIStore, useSettingsStore, useExecutionStore } from './chunk-SQK4JDYY.mjs';
|
|
7
|
+
import { useWorkflowStore } from './chunk-RIGVIEYB.mjs';
|
|
9
8
|
import { useNodes, ViewportPortal, useViewport, useStore, getBezierPath, BaseEdge, useReactFlow, ReactFlow, SelectionMode, ConnectionMode, Background, BackgroundVariant, Controls, MiniMap } from '@xyflow/react';
|
|
10
9
|
import { Pause, Palette, Lock, Unlock, Trash2, Search, X, Keyboard, PanelLeft, Download, ChevronLeft, ChevronRight, ZoomOut, ZoomIn } from 'lucide-react';
|
|
11
10
|
import { memo, useMemo, useState, useCallback, useEffect, useRef } from 'react';
|
|
12
11
|
import '@xyflow/react/dist/style.css';
|
|
12
|
+
import { NODE_DEFINITIONS } from '@genfeedai/types';
|
|
13
13
|
import { clsx } from 'clsx';
|
|
14
14
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
15
15
|
import Image from 'next/image';
|
|
16
16
|
|
|
17
|
-
// src/canvas/WorkflowCanvas.tsx
|
|
18
|
-
var import_types3 = __toESM(require_dist());
|
|
19
|
-
|
|
20
17
|
// src/types/groups.ts
|
|
21
18
|
var GROUP_COLORS = {
|
|
22
19
|
purple: {
|
|
@@ -556,9 +553,6 @@ function HelperLinesComponent({ draggingNodeId }) {
|
|
|
556
553
|
);
|
|
557
554
|
}
|
|
558
555
|
var HelperLines = memo(HelperLinesComponent);
|
|
559
|
-
|
|
560
|
-
// src/canvas/NodeSearch.tsx
|
|
561
|
-
var import_types = __toESM(require_dist());
|
|
562
556
|
function NodeSearch() {
|
|
563
557
|
const { activeModal, closeModal } = useUIStore();
|
|
564
558
|
const { nodes, setSelectedNodeIds } = useWorkflowStore();
|
|
@@ -581,7 +575,7 @@ function NodeSearch() {
|
|
|
581
575
|
const label = (node.data.label || "").toLowerCase();
|
|
582
576
|
const type = (node.type || "").toLowerCase();
|
|
583
577
|
const comment = (node.data.comment || "").toLowerCase();
|
|
584
|
-
const nodeDefLabel =
|
|
578
|
+
const nodeDefLabel = NODE_DEFINITIONS[node.type]?.label?.toLowerCase() || "";
|
|
585
579
|
return label.includes(query) || type.includes(query) || comment.includes(query) || nodeDefLabel.includes(query);
|
|
586
580
|
});
|
|
587
581
|
}, [nodes, search]);
|
|
@@ -681,7 +675,7 @@ function NodeSearch() {
|
|
|
681
675
|
)
|
|
682
676
|
] }),
|
|
683
677
|
/* @__PURE__ */ jsx("div", { ref: listRef, className: "max-h-[300px] overflow-y-auto space-y-1", children: filteredNodes.length === 0 ? /* @__PURE__ */ jsx("div", { className: "text-center text-muted-foreground py-8", children: search ? `No nodes found for "${search}"` : "No nodes in workflow" }) : filteredNodes.map((node, index) => {
|
|
684
|
-
const nodeDef =
|
|
678
|
+
const nodeDef = NODE_DEFINITIONS[node.type];
|
|
685
679
|
const comment = node.data.comment;
|
|
686
680
|
return /* @__PURE__ */ jsxs(
|
|
687
681
|
"button",
|
|
@@ -862,9 +856,6 @@ function ShortcutHelpModal() {
|
|
|
862
856
|
}
|
|
863
857
|
);
|
|
864
858
|
}
|
|
865
|
-
|
|
866
|
-
// src/nodes/NodeDetailModal.tsx
|
|
867
|
-
var import_types2 = __toESM(require_dist());
|
|
868
859
|
var PROMPT_NODE_TYPES = ["prompt"];
|
|
869
860
|
function NodeDetailModal() {
|
|
870
861
|
const { activeModal, nodeDetailNodeId, nodeDetailStartIndex, closeNodeDetailModal } = useUIStore();
|
|
@@ -893,7 +884,7 @@ function NodeDetailModal() {
|
|
|
893
884
|
}, [node]);
|
|
894
885
|
const nodeDef = useMemo(() => {
|
|
895
886
|
if (!node) return null;
|
|
896
|
-
return
|
|
887
|
+
return NODE_DEFINITIONS[node.type];
|
|
897
888
|
}, [node]);
|
|
898
889
|
const imageUrls = mediaInfo.urls ?? [];
|
|
899
890
|
const hasMultipleImages = imageUrls.length > 1;
|
|
@@ -1123,7 +1114,7 @@ function supportsImageInput(schema) {
|
|
|
1123
1114
|
function getEdgeDataType(edge, nodeMap) {
|
|
1124
1115
|
const sourceNode = nodeMap.get(edge.source);
|
|
1125
1116
|
if (!sourceNode) return null;
|
|
1126
|
-
const nodeDef =
|
|
1117
|
+
const nodeDef = NODE_DEFINITIONS[sourceNode.type];
|
|
1127
1118
|
if (!nodeDef) return null;
|
|
1128
1119
|
const sourceHandle = nodeDef.outputs.find((h) => h.id === edge.sourceHandle);
|
|
1129
1120
|
return sourceHandle?.type ?? null;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Button } from './chunk-7SKSRSS7.mjs';
|
|
2
2
|
import { extractEnumValues, supportsImageInput, validateRequiredSchemaFields, CONNECTION_FIELDS, getSchemaDefaults, getImageDimensions, getVideoMetadata } from './chunk-EFXQT23N.mjs';
|
|
3
|
-
import { useExecutionStore } from './chunk-
|
|
4
|
-
import {
|
|
3
|
+
import { useExecutionStore } from './chunk-SQK4JDYY.mjs';
|
|
4
|
+
import { useWorkflowStore } from './chunk-RIGVIEYB.mjs';
|
|
5
5
|
import { useWorkflowUIConfig } from './chunk-FT33LFII.mjs';
|
|
6
|
-
import { __toESM } from './chunk-AC6TWLRT.mjs';
|
|
7
6
|
import { useMemo, useCallback, useRef, useEffect, useState } from 'react';
|
|
8
7
|
import { ChevronDown, Expand, Square, Play } from 'lucide-react';
|
|
9
8
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
9
|
+
import { NODE_DEFINITIONS, NodeStatusEnum } from '@genfeedai/types';
|
|
10
10
|
import { useShallow } from 'zustand/react/shallow';
|
|
11
11
|
|
|
12
12
|
function useAIGenNode({
|
|
@@ -134,13 +134,10 @@ function useAutoLoadModelSchema({
|
|
|
134
134
|
};
|
|
135
135
|
}, [currentModel, selectedModel, modelIdMap, onModelSelect, modelSchema]);
|
|
136
136
|
}
|
|
137
|
-
|
|
138
|
-
// src/hooks/useRequiredInputs.ts
|
|
139
|
-
var import_types = __toESM(require_dist());
|
|
140
137
|
function useRequiredInputs(nodeId, nodeType) {
|
|
141
138
|
const edges = useWorkflowStore((state) => state.edges);
|
|
142
139
|
return useMemo(() => {
|
|
143
|
-
const nodeDef =
|
|
140
|
+
const nodeDef = NODE_DEFINITIONS[nodeType];
|
|
144
141
|
if (!nodeDef) {
|
|
145
142
|
return { hasRequiredInputs: true, missingInputs: [], connectionStatus: /* @__PURE__ */ new Map() };
|
|
146
143
|
}
|
|
@@ -162,9 +159,6 @@ function useRequiredInputs(nodeId, nodeType) {
|
|
|
162
159
|
};
|
|
163
160
|
}, [nodeId, nodeType, edges]);
|
|
164
161
|
}
|
|
165
|
-
|
|
166
|
-
// src/hooks/useCanGenerate.ts
|
|
167
|
-
var import_types2 = __toESM(require_dist());
|
|
168
162
|
function extractOutputValue(node, handleType) {
|
|
169
163
|
const data = node.data;
|
|
170
164
|
if (handleType === "text") {
|
|
@@ -215,7 +209,7 @@ function useCanGenerate({
|
|
|
215
209
|
});
|
|
216
210
|
}
|
|
217
211
|
const connectedInputs = getConnectedInputs(nodeId);
|
|
218
|
-
const nodeDef =
|
|
212
|
+
const nodeDef = NODE_DEFINITIONS[nodeType];
|
|
219
213
|
const requiredHandleIds = new Set(
|
|
220
214
|
nodeDef?.inputs.filter((h) => h.required).map((h) => h.id) ?? []
|
|
221
215
|
);
|
|
@@ -288,15 +282,12 @@ function useModelSelection({ nodeId, modelMap, fallbackModel }) {
|
|
|
288
282
|
);
|
|
289
283
|
return { handleModelSelect };
|
|
290
284
|
}
|
|
291
|
-
|
|
292
|
-
// src/hooks/useNodeExecution.ts
|
|
293
|
-
var import_types3 = __toESM(require_dist());
|
|
294
285
|
function useNodeExecution(nodeId) {
|
|
295
286
|
const updateNodeData = useWorkflowStore((state) => state.updateNodeData);
|
|
296
287
|
const executeNode = useExecutionStore((state) => state.executeNode);
|
|
297
288
|
const stopNodeExecution = useExecutionStore((state) => state.stopNodeExecution);
|
|
298
289
|
const handleGenerate = useCallback(() => {
|
|
299
|
-
updateNodeData(nodeId, { status:
|
|
290
|
+
updateNodeData(nodeId, { status: NodeStatusEnum.PROCESSING });
|
|
300
291
|
executeNode(nodeId);
|
|
301
292
|
}, [nodeId, executeNode, updateNodeData]);
|
|
302
293
|
const handleStop = useCallback(() => {
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
import { useExecutionStore, useUIStore } from './chunk-
|
|
2
|
-
import {
|
|
3
|
-
import { __toESM } from './chunk-AC6TWLRT.mjs';
|
|
1
|
+
import { useExecutionStore, useUIStore } from './chunk-SQK4JDYY.mjs';
|
|
2
|
+
import { getNodesByCategory } from '@genfeedai/types';
|
|
4
3
|
import { Bug, Trash2, X, ChevronDown, ChevronRight, Copy, PanelLeftClose, Search, GitBranch, ArrowLeftFromLine, ArrowRightToLine, Download, Eye, CheckCircle, Columns2, LayoutGrid, Subtitles, Pencil, Grid3X3, Maximize, Crop, Film, Scissors, Layers, Wand2, Maximize2, Navigation, AudioLines, Mic, Brain, Video, Sparkles, Puzzle, Volume2, FileVideo, FileText, MessageSquare, Image } from 'lucide-react';
|
|
5
4
|
import { forwardRef, memo, useCallback, useState, useMemo } from 'react';
|
|
6
5
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
7
6
|
|
|
8
|
-
// src/panels/NodePalette.tsx
|
|
9
|
-
var import_types = __toESM(require_dist());
|
|
10
7
|
var ICONS = {
|
|
11
8
|
// Input
|
|
12
9
|
Image,
|
|
@@ -105,7 +102,7 @@ function NodeCard({ type, label, description, icon, category }) {
|
|
|
105
102
|
);
|
|
106
103
|
}
|
|
107
104
|
function CategorySection({ category, isExpanded, onToggle }) {
|
|
108
|
-
const nodes =
|
|
105
|
+
const nodes = getNodesByCategory()[category];
|
|
109
106
|
return /* @__PURE__ */ jsxs("div", { className: "border-b border-[var(--border)] last:border-0", children: [
|
|
110
107
|
/* @__PURE__ */ jsxs(
|
|
111
108
|
"button",
|
|
@@ -138,7 +135,7 @@ function NodePalette() {
|
|
|
138
135
|
const [expandedCategories, setExpandedCategories] = useState(
|
|
139
136
|
/* @__PURE__ */ new Set(["input"])
|
|
140
137
|
);
|
|
141
|
-
const nodesByCategory = useMemo(() =>
|
|
138
|
+
const nodesByCategory = useMemo(() => getNodesByCategory(), []);
|
|
142
139
|
const filteredNodes = useMemo(() => {
|
|
143
140
|
if (!searchQuery.trim()) return null;
|
|
144
141
|
const query = searchQuery.toLowerCase();
|