@burdenoff/fluidgrids-fe-sdk 2026.720.1 → 2026.721.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/{WorkflowBuilder-COJQ2YBJ.js → WorkflowBuilder-UADGCKNH.js} +4 -4
- package/dist/{WorkflowBuilder-COJQ2YBJ.js.map → WorkflowBuilder-UADGCKNH.js.map} +1 -1
- package/dist/{blocks-J3YIE73T.js → blocks-RO3MCVHA.js} +3 -3
- package/dist/{blocks-J3YIE73T.js.map → blocks-RO3MCVHA.js.map} +1 -1
- package/dist/{chunk-S2Z7ZTGV.js → chunk-2MQR3DMF.js} +287 -68
- package/dist/chunk-2MQR3DMF.js.map +1 -0
- package/dist/{chunk-JVARXRIW.js → chunk-R72R5HRD.js} +21 -79
- package/dist/chunk-R72R5HRD.js.map +1 -0
- package/dist/index.js +4 -4
- package/package.json +1 -1
- package/dist/chunk-JVARXRIW.js.map +0 -1
- package/dist/chunk-S2Z7ZTGV.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { WorkflowBuilder } from './chunk-
|
|
1
|
+
export { WorkflowBuilder } from './chunk-R72R5HRD.js';
|
|
2
2
|
import './chunk-MRVS73S2.js';
|
|
3
3
|
import './chunk-DBOMRIP5.js';
|
|
4
|
-
import './chunk-
|
|
4
|
+
import './chunk-2MQR3DMF.js';
|
|
5
5
|
import './chunk-BQXHJIER.js';
|
|
6
6
|
import './chunk-PNOA7CQV.js';
|
|
7
7
|
import './chunk-OHIRHNRJ.js';
|
|
@@ -12,5 +12,5 @@ import './chunk-4NTHFDKQ.js';
|
|
|
12
12
|
import './chunk-5BDQNSP3.js';
|
|
13
13
|
import './chunk-WWU2O2SR.js';
|
|
14
14
|
import './chunk-XQP33UJR.js';
|
|
15
|
-
//# sourceMappingURL=WorkflowBuilder-
|
|
16
|
-
//# sourceMappingURL=WorkflowBuilder-
|
|
15
|
+
//# sourceMappingURL=WorkflowBuilder-UADGCKNH.js.map
|
|
16
|
+
//# sourceMappingURL=WorkflowBuilder-UADGCKNH.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"WorkflowBuilder-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"WorkflowBuilder-UADGCKNH.js"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { AVAILABLE_NODES, NODES, NODES_METADATA, NODE_CONFIGS, NODE_TYPES, ensureNodeConfigsLoaded, fetchNodeManifest, isNodeConfigsInitialized, onNodeTypesUpdate, refetchStoreNodes, registerWorkflowNodeTypes } from './chunk-
|
|
1
|
+
export { AVAILABLE_NODES, NODES, NODES_METADATA, NODE_CONFIGS, NODE_TYPES, ensureNodeConfigsLoaded, fetchNodeManifest, isNodeConfigsInitialized, onNodeTypesUpdate, refetchStoreNodes, registerWorkflowNodeTypes } from './chunk-2MQR3DMF.js';
|
|
2
2
|
import './chunk-BQXHJIER.js';
|
|
3
3
|
import './chunk-PNOA7CQV.js';
|
|
4
4
|
import './chunk-KU64CCSV.js';
|
|
@@ -7,5 +7,5 @@ import './chunk-3ZYUGTIT.js';
|
|
|
7
7
|
import './chunk-4NTHFDKQ.js';
|
|
8
8
|
import './chunk-5BDQNSP3.js';
|
|
9
9
|
import './chunk-WWU2O2SR.js';
|
|
10
|
-
//# sourceMappingURL=blocks-
|
|
11
|
-
//# sourceMappingURL=blocks-
|
|
10
|
+
//# sourceMappingURL=blocks-RO3MCVHA.js.map
|
|
11
|
+
//# sourceMappingURL=blocks-RO3MCVHA.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"blocks-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"blocks-RO3MCVHA.js"}
|
|
@@ -9060,6 +9060,79 @@ function useNodeExecution() {
|
|
|
9060
9060
|
findTriggerNode
|
|
9061
9061
|
};
|
|
9062
9062
|
}
|
|
9063
|
+
function buildOperationSeed(type, operationName, existingData) {
|
|
9064
|
+
const config2 = NODE_CONFIGS.find((c) => c.type === type);
|
|
9065
|
+
if (!config2) return null;
|
|
9066
|
+
const operations = config2.operations ?? [];
|
|
9067
|
+
const op = operations.find((o) => o.name === operationName);
|
|
9068
|
+
if (!op) return null;
|
|
9069
|
+
const manifest = config2.defaultData?.nodeData;
|
|
9070
|
+
const prevArgs = existingData.args ?? {};
|
|
9071
|
+
const manifestOps = manifest?.operations;
|
|
9072
|
+
const outputHandles = manifest?.outputHandles ?? manifestOps?.outputHandles;
|
|
9073
|
+
const inputHandles = manifest?.inputHandles ?? manifestOps?.inputHandles;
|
|
9074
|
+
return {
|
|
9075
|
+
...existingData,
|
|
9076
|
+
operation_name: op.name,
|
|
9077
|
+
operation_type: op.type,
|
|
9078
|
+
args: {
|
|
9079
|
+
// Preserve default context/credentials; seed state from the op defaults.
|
|
9080
|
+
...prevArgs,
|
|
9081
|
+
state: { ...op.adaptive_card?.defaultValue ?? {} }
|
|
9082
|
+
},
|
|
9083
|
+
// Slim manifest: keep node-level metadata but only the pinned operation.
|
|
9084
|
+
nodeData: {
|
|
9085
|
+
...manifest ?? {},
|
|
9086
|
+
...outputHandles !== void 0 ? { outputHandles } : {},
|
|
9087
|
+
...inputHandles !== void 0 ? { inputHandles } : {},
|
|
9088
|
+
operations: [op]
|
|
9089
|
+
}
|
|
9090
|
+
};
|
|
9091
|
+
}
|
|
9092
|
+
function useInsertNode() {
|
|
9093
|
+
const { addNodes, screenToFlowPosition, getNodes, updateNode } = useReactFlow();
|
|
9094
|
+
return useCallback(
|
|
9095
|
+
(type, pos, operationName) => {
|
|
9096
|
+
const _pos = pos || screenToFlowPosition({
|
|
9097
|
+
x: window.innerWidth / 2,
|
|
9098
|
+
y: window.innerHeight / 2
|
|
9099
|
+
});
|
|
9100
|
+
getNodes().forEach((node) => {
|
|
9101
|
+
if (node.selected) {
|
|
9102
|
+
updateNode(node.id, { selected: false });
|
|
9103
|
+
}
|
|
9104
|
+
});
|
|
9105
|
+
const newNode = createNodeWithDefaultData(type, {
|
|
9106
|
+
position: _pos,
|
|
9107
|
+
selected: true
|
|
9108
|
+
});
|
|
9109
|
+
let pinTo = operationName;
|
|
9110
|
+
if (!pinTo) {
|
|
9111
|
+
const config2 = NODE_CONFIGS.find((c) => c.type === type);
|
|
9112
|
+
const allOps = config2?.operations ?? [];
|
|
9113
|
+
const ops = allOps.filter(
|
|
9114
|
+
(op) => !op.isAdapterOperation && !op.internal
|
|
9115
|
+
);
|
|
9116
|
+
if (ops.length === 1 && ops[0]?.name) {
|
|
9117
|
+
pinTo = ops[0].name;
|
|
9118
|
+
} else if (ops.length === 0 && allOps.length > 0) {
|
|
9119
|
+
pinTo = allOps.find((op) => op.isAdapterOperation)?.name;
|
|
9120
|
+
}
|
|
9121
|
+
}
|
|
9122
|
+
if (pinTo) {
|
|
9123
|
+
const seeded = buildOperationSeed(
|
|
9124
|
+
type,
|
|
9125
|
+
pinTo,
|
|
9126
|
+
newNode.data ?? {}
|
|
9127
|
+
);
|
|
9128
|
+
if (seeded) newNode.data = seeded;
|
|
9129
|
+
}
|
|
9130
|
+
addNodes(newNode);
|
|
9131
|
+
return newNode;
|
|
9132
|
+
},
|
|
9133
|
+
[screenToFlowPosition, getNodes, addNodes, updateNode]
|
|
9134
|
+
);
|
|
9135
|
+
}
|
|
9063
9136
|
function isAdapterCompatible(adapterFilter, adapterType, targetNodeKind, targetAdapterOutputType, targetNodeType) {
|
|
9064
9137
|
if (adapterType && targetAdapterOutputType && adapterType !== targetAdapterOutputType) {
|
|
9065
9138
|
return false;
|
|
@@ -9076,72 +9149,216 @@ function isAdapterCompatible(adapterFilter, adapterType, targetNodeKind, targetA
|
|
|
9076
9149
|
}
|
|
9077
9150
|
return true;
|
|
9078
9151
|
}
|
|
9079
|
-
function
|
|
9152
|
+
function useCompatibleSubNodes(adapter) {
|
|
9153
|
+
return useMemo(() => {
|
|
9154
|
+
const out = [];
|
|
9155
|
+
for (const cfg of NODE_CONFIGS) {
|
|
9156
|
+
const nodeData = cfg.defaultData?.nodeData;
|
|
9157
|
+
if (!nodeData?.adapterOutputType && !nodeData?.supportsAdapterMode) {
|
|
9158
|
+
continue;
|
|
9159
|
+
}
|
|
9160
|
+
if (!isAdapterCompatible(
|
|
9161
|
+
adapter.filter,
|
|
9162
|
+
adapter.type,
|
|
9163
|
+
nodeData?.kind,
|
|
9164
|
+
nodeData?.adapterOutputType,
|
|
9165
|
+
cfg.type
|
|
9166
|
+
)) {
|
|
9167
|
+
continue;
|
|
9168
|
+
}
|
|
9169
|
+
const ops = cfg.operations ?? [];
|
|
9170
|
+
out.push({
|
|
9171
|
+
type: cfg.type,
|
|
9172
|
+
title: cfg.detail?.title || nodeData?.name || cfg.type,
|
|
9173
|
+
icon: cfg.detail?.icon || nodeData?.icon || "mynaui:puzzle",
|
|
9174
|
+
description: cfg.detail?.description || nodeData?.description,
|
|
9175
|
+
adapterOperation: ops.find((o) => o.isAdapterOperation)?.name
|
|
9176
|
+
});
|
|
9177
|
+
}
|
|
9178
|
+
return out.sort((a, b) => a.title.localeCompare(b.title));
|
|
9179
|
+
}, [adapter.filter, adapter.type]);
|
|
9180
|
+
}
|
|
9181
|
+
function AdapterPort({
|
|
9080
9182
|
nodeId,
|
|
9081
|
-
|
|
9183
|
+
adapter,
|
|
9184
|
+
index,
|
|
9185
|
+
total
|
|
9082
9186
|
}) {
|
|
9083
|
-
const
|
|
9084
|
-
nodeLookup: nodeLookup2,
|
|
9085
|
-
edges: edges2
|
|
9086
|
-
}));
|
|
9187
|
+
const edges = useStore((s) => s.edges);
|
|
9087
9188
|
const { getNode } = useReactFlow();
|
|
9088
|
-
|
|
9089
|
-
|
|
9090
|
-
|
|
9091
|
-
|
|
9092
|
-
|
|
9093
|
-
|
|
9094
|
-
|
|
9095
|
-
|
|
9096
|
-
|
|
9097
|
-
|
|
9098
|
-
|
|
9099
|
-
|
|
9100
|
-
|
|
9101
|
-
|
|
9102
|
-
|
|
9103
|
-
|
|
9189
|
+
const insertNode = useInsertNode();
|
|
9190
|
+
const onConnect = useFlowStore((s) => s.actions.edges.onConnect);
|
|
9191
|
+
const [pickerOpen, setPickerOpen] = useState(false);
|
|
9192
|
+
const candidates = useCompatibleSubNodes(adapter);
|
|
9193
|
+
const connectionCount = edges.filter(
|
|
9194
|
+
(e) => e.source === nodeId && e.sourceHandle === adapter.name
|
|
9195
|
+
).length;
|
|
9196
|
+
const isAtMaxConnections = adapter.maxConnections != null && adapter.maxConnections !== void 0 && connectionCount >= adapter.maxConnections;
|
|
9197
|
+
const hasConnection = connectionCount > 0;
|
|
9198
|
+
const diamondColor = hasConnection ? "bg-[var(--color-accent-primary)]" : "bg-[var(--color-text-muted)]";
|
|
9199
|
+
const lineColor = hasConnection ? "before:bg-[var(--color-accent-primary)]" : "before:bg-[var(--color-border-strong)]";
|
|
9200
|
+
const addSubNode = useCallback(
|
|
9201
|
+
(candidate) => {
|
|
9202
|
+
setPickerOpen(false);
|
|
9203
|
+
const parent = getNode(nodeId);
|
|
9204
|
+
const origin = parent?.position ?? { x: 0, y: 0 };
|
|
9205
|
+
const parentHeight = parent?.measured?.height ?? 180;
|
|
9206
|
+
const SPACING = 180;
|
|
9207
|
+
const position = {
|
|
9208
|
+
x: origin.x + (index - (total - 1) / 2) * SPACING,
|
|
9209
|
+
y: origin.y + parentHeight + 190
|
|
9210
|
+
};
|
|
9211
|
+
const created = insertNode(
|
|
9212
|
+
candidate.type,
|
|
9213
|
+
position,
|
|
9214
|
+
candidate.adapterOperation
|
|
9215
|
+
);
|
|
9216
|
+
if (!created?.id) return;
|
|
9217
|
+
created.data = {
|
|
9218
|
+
...created.data,
|
|
9219
|
+
isAdapterInstance: true
|
|
9220
|
+
};
|
|
9221
|
+
onConnect({
|
|
9222
|
+
source: nodeId,
|
|
9223
|
+
sourceHandle: adapter.name,
|
|
9224
|
+
target: created.id,
|
|
9225
|
+
targetHandle: "target"
|
|
9226
|
+
});
|
|
9227
|
+
},
|
|
9228
|
+
[getNode, nodeId, index, total, insertNode, onConnect, adapter.name]
|
|
9229
|
+
);
|
|
9230
|
+
return /* @__PURE__ */ jsx("div", { className: "relative", children: /* @__PURE__ */ jsxs(
|
|
9231
|
+
"div",
|
|
9232
|
+
{
|
|
9233
|
+
className: `p-0.5 m-0.5 text-center before:content-[''] before:h-[95%] before:left-1/2 before:-translate-x-1/2 before:w-0.5 ${lineColor} before:absolute before:top-0 before:pointer-events-none`,
|
|
9234
|
+
children: [
|
|
9235
|
+
/* @__PURE__ */ jsx("div", { className: "absolute -top-3 left-1/2 transform -translate-x-1/2 pointer-events-none", children: /* @__PURE__ */ jsx(
|
|
9236
|
+
"div",
|
|
9237
|
+
{
|
|
9238
|
+
className: `w-3 h-3 ${diamondColor} rotate-45 transition-transform hover:scale-110`
|
|
9239
|
+
}
|
|
9240
|
+
) }),
|
|
9241
|
+
/* @__PURE__ */ jsx("div", { className: "mt-3 z-10 absolute left-1/2 transform -translate-x-1/2 font-medium bg-surface h-fit pointer-events-none", children: /* @__PURE__ */ jsxs("span", { className: "text-xs max-w-fit relative font-medium text-[var(--color-text-secondary)] whitespace-nowrap", children: [
|
|
9242
|
+
adapter?.name,
|
|
9243
|
+
adapter?.required && /* @__PURE__ */ jsx("span", { className: "text-[var(--color-status-error-text)] absolute -right-2 top-[1px]", children: "*" })
|
|
9244
|
+
] }) }),
|
|
9245
|
+
/* @__PURE__ */ jsxs("div", { className: "mt-16 flex flex-col items-center gap-1.5", children: [
|
|
9246
|
+
!isAtMaxConnections && /* @__PURE__ */ jsx(
|
|
9247
|
+
"button",
|
|
9248
|
+
{
|
|
9249
|
+
type: "button",
|
|
9250
|
+
title: `Add ${adapter.name}`,
|
|
9251
|
+
"aria-label": `Add ${adapter.name}`,
|
|
9252
|
+
onClick: (e) => {
|
|
9253
|
+
e.stopPropagation();
|
|
9254
|
+
setPickerOpen((v) => !v);
|
|
9255
|
+
},
|
|
9256
|
+
className: "w-5 h-5 border-2 border-[var(--color-border-strong)] rounded text-[var(--color-text-secondary)] text-lg leading-none font-bold bg-surface flex items-center justify-center transition-colors hover:border-[var(--color-accent-primary)] hover:text-[var(--color-accent-primary)] cursor-pointer",
|
|
9257
|
+
children: "+"
|
|
9258
|
+
}
|
|
9259
|
+
),
|
|
9260
|
+
isAtMaxConnections && /* @__PURE__ */ jsx(
|
|
9104
9261
|
"div",
|
|
9105
9262
|
{
|
|
9106
|
-
|
|
9263
|
+
title: `${adapter.name} is full`,
|
|
9264
|
+
className: "w-5 h-5 border-2 border-[var(--color-border-subtle)] rounded text-[var(--color-text-disabled)] text-lg leading-none font-bold bg-surface flex items-center justify-center",
|
|
9265
|
+
children: "\u2022"
|
|
9107
9266
|
}
|
|
9108
|
-
)
|
|
9109
|
-
/* @__PURE__ */ jsx(
|
|
9110
|
-
|
|
9111
|
-
|
|
9112
|
-
|
|
9113
|
-
|
|
9114
|
-
|
|
9115
|
-
|
|
9116
|
-
|
|
9117
|
-
|
|
9118
|
-
|
|
9119
|
-
|
|
9120
|
-
|
|
9121
|
-
|
|
9122
|
-
|
|
9123
|
-
|
|
9124
|
-
|
|
9125
|
-
|
|
9126
|
-
|
|
9127
|
-
|
|
9128
|
-
|
|
9129
|
-
|
|
9130
|
-
return isAdapterCompatible(
|
|
9131
|
-
adapter.filter,
|
|
9132
|
-
adapter.type,
|
|
9133
|
-
targetNodeData?.kind,
|
|
9134
|
-
targetNodeData?.adapterOutputType,
|
|
9135
|
-
targetNode.type
|
|
9136
|
-
);
|
|
9137
|
-
}
|
|
9267
|
+
),
|
|
9268
|
+
/* @__PURE__ */ jsx(
|
|
9269
|
+
Handle,
|
|
9270
|
+
{
|
|
9271
|
+
type: "source",
|
|
9272
|
+
position: Position.Bottom,
|
|
9273
|
+
id: adapter?.name,
|
|
9274
|
+
className: "!relative !top-auto !left-auto !right-auto !bottom-auto !transform-none !w-2.5 !h-2.5 !min-w-0 !min-h-0 !rounded-full !border-0 bg-[var(--color-accent-primary)]",
|
|
9275
|
+
isConnectable: !isAtMaxConnections,
|
|
9276
|
+
isValidConnection: (connection) => {
|
|
9277
|
+
if (!adapter.type && !adapter.filter) return true;
|
|
9278
|
+
const targetNode = getNode(connection.target);
|
|
9279
|
+
if (!targetNode) return true;
|
|
9280
|
+
const targetData = targetNode.data;
|
|
9281
|
+
const targetNodeData = targetData?.nodeData;
|
|
9282
|
+
return isAdapterCompatible(
|
|
9283
|
+
adapter.filter,
|
|
9284
|
+
adapter.type,
|
|
9285
|
+
targetNodeData?.kind,
|
|
9286
|
+
targetNodeData?.adapterOutputType,
|
|
9287
|
+
targetNode.type
|
|
9288
|
+
);
|
|
9138
9289
|
}
|
|
9139
|
-
|
|
9290
|
+
}
|
|
9291
|
+
)
|
|
9292
|
+
] }),
|
|
9293
|
+
pickerOpen && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
9294
|
+
/* @__PURE__ */ jsx(
|
|
9295
|
+
"div",
|
|
9296
|
+
{
|
|
9297
|
+
className: "fixed inset-0 z-40",
|
|
9298
|
+
onClick: () => setPickerOpen(false)
|
|
9299
|
+
}
|
|
9300
|
+
),
|
|
9301
|
+
/* @__PURE__ */ jsxs("div", { className: "absolute z-50 top-[86px] left-1/2 -translate-x-1/2 w-60 rounded-lg border border-[var(--color-border-default)] bg-[var(--color-surface-elevated)] shadow-xl overflow-hidden text-left nodrag nowheel", children: [
|
|
9302
|
+
/* @__PURE__ */ jsxs("div", { className: "px-3 py-2 border-b border-[var(--color-border-subtle)]", children: [
|
|
9303
|
+
/* @__PURE__ */ jsxs("p", { className: "text-xs font-semibold text-[var(--color-text-primary)]", children: [
|
|
9304
|
+
"Add ",
|
|
9305
|
+
adapter.name
|
|
9306
|
+
] }),
|
|
9307
|
+
/* @__PURE__ */ jsxs("p", { className: "text-[10px] text-[var(--color-text-muted)]", children: [
|
|
9308
|
+
candidates.length,
|
|
9309
|
+
" compatible node",
|
|
9310
|
+
candidates.length === 1 ? "" : "s"
|
|
9311
|
+
] })
|
|
9312
|
+
] }),
|
|
9313
|
+
/* @__PURE__ */ jsxs("div", { className: "max-h-56 overflow-y-auto", children: [
|
|
9314
|
+
candidates.length === 0 && /* @__PURE__ */ jsx("p", { className: "px-3 py-3 text-[11px] text-[var(--color-text-muted)]", children: "No compatible node installed. Publish and install one from the Node Store first." }),
|
|
9315
|
+
candidates.map((c) => /* @__PURE__ */ jsxs(
|
|
9316
|
+
"button",
|
|
9317
|
+
{
|
|
9318
|
+
type: "button",
|
|
9319
|
+
onClick: (e) => {
|
|
9320
|
+
e.stopPropagation();
|
|
9321
|
+
addSubNode(c);
|
|
9322
|
+
},
|
|
9323
|
+
className: "w-full flex items-start gap-2 px-3 py-2 hover:bg-[var(--color-bg-elevated)] transition-colors text-left",
|
|
9324
|
+
children: [
|
|
9325
|
+
/* @__PURE__ */ jsx(
|
|
9326
|
+
Icon,
|
|
9327
|
+
{
|
|
9328
|
+
icon: c.icon,
|
|
9329
|
+
className: "size-4 mt-0.5 shrink-0 text-[var(--color-accent-primary)]"
|
|
9330
|
+
}
|
|
9331
|
+
),
|
|
9332
|
+
/* @__PURE__ */ jsxs("span", { className: "min-w-0", children: [
|
|
9333
|
+
/* @__PURE__ */ jsx("span", { className: "block text-xs text-[var(--color-text-primary)] truncate", children: c.title }),
|
|
9334
|
+
c.description && /* @__PURE__ */ jsx("span", { className: "block text-[10px] text-[var(--color-text-muted)] line-clamp-2", children: c.description })
|
|
9335
|
+
] })
|
|
9336
|
+
]
|
|
9337
|
+
},
|
|
9338
|
+
c.type
|
|
9339
|
+
))
|
|
9340
|
+
] })
|
|
9140
9341
|
] })
|
|
9141
|
-
]
|
|
9142
|
-
|
|
9143
|
-
|
|
9144
|
-
|
|
9342
|
+
] })
|
|
9343
|
+
]
|
|
9344
|
+
}
|
|
9345
|
+
) });
|
|
9346
|
+
}
|
|
9347
|
+
function AdapterConnectors({
|
|
9348
|
+
nodeId,
|
|
9349
|
+
adapters
|
|
9350
|
+
}) {
|
|
9351
|
+
if (!adapters || adapters.length === 0) return null;
|
|
9352
|
+
return /* @__PURE__ */ jsx("div", { className: "left-0 w-full flex justify-around mt-[6.5px]", children: adapters.map((adapter, i) => /* @__PURE__ */ jsx(
|
|
9353
|
+
AdapterPort,
|
|
9354
|
+
{
|
|
9355
|
+
nodeId,
|
|
9356
|
+
adapter,
|
|
9357
|
+
index: i,
|
|
9358
|
+
total: adapters.length
|
|
9359
|
+
},
|
|
9360
|
+
adapter.name
|
|
9361
|
+
)) });
|
|
9145
9362
|
}
|
|
9146
9363
|
function SubNodeComponent({
|
|
9147
9364
|
id,
|
|
@@ -9155,14 +9372,16 @@ function SubNodeComponent({
|
|
|
9155
9372
|
const [showNodePropertiesOf] = useFlowStore(
|
|
9156
9373
|
useShallow((s) => [s.actions.sidebar.showNodePropertiesOf])
|
|
9157
9374
|
);
|
|
9375
|
+
const openNdv = useFlowStore((s) => s.actions.ndv.open);
|
|
9158
9376
|
const [nodeStatuses] = useFlowStore(
|
|
9159
9377
|
useShallow((s) => [s.execution.nodeStatuses])
|
|
9160
9378
|
);
|
|
9161
9379
|
const nodeStatus = nodeStatuses[id] || "idle";
|
|
9162
9380
|
const statusRing = nodeStatus === "success" ? "ring-2 ring-[var(--color-status-success-border)]" : nodeStatus === "error" ? "ring-2 ring-[var(--color-status-error-border)]" : nodeStatus === "running" ? "ring-2 ring-[var(--color-status-info-border)] animate-pulse" : "";
|
|
9163
9381
|
const handleShowNodeProperties = useCallback(() => {
|
|
9382
|
+
openNdv({ nodeId: id, type: nodeType });
|
|
9164
9383
|
showNodePropertiesOf({ id, type: nodeType });
|
|
9165
|
-
}, [id, nodeType, showNodePropertiesOf]);
|
|
9384
|
+
}, [id, nodeType, openNdv, showNodePropertiesOf]);
|
|
9166
9385
|
return (
|
|
9167
9386
|
// `relative` anchors the absolute delete button; `group` enables its hover reveal.
|
|
9168
9387
|
/* @__PURE__ */ jsxs("div", { className: "relative group flex flex-col items-center", children: [
|
|
@@ -9173,26 +9392,26 @@ function SubNodeComponent({
|
|
|
9173
9392
|
position: Position.Top,
|
|
9174
9393
|
id: "target",
|
|
9175
9394
|
isConnectable,
|
|
9176
|
-
className: "size-2.5 bg-accent border-2 border-
|
|
9395
|
+
className: "size-2.5 bg-[var(--color-accent-primary)] border-2 border-[var(--color-border-strong)]"
|
|
9177
9396
|
}
|
|
9178
9397
|
),
|
|
9179
|
-
/* @__PURE__ */ jsx("div", { className: "w-0.5 h-4 border-l-2 border-dashed border-
|
|
9180
|
-
/* @__PURE__ */ jsx("span", { className: "text-[10px] text-
|
|
9398
|
+
/* @__PURE__ */ jsx("div", { className: "w-0.5 h-4 border-l-2 border-dashed border-[var(--color-border-strong)]" }),
|
|
9399
|
+
/* @__PURE__ */ jsx("span", { className: "text-[10px] text-[var(--color-text-muted)] font-medium mb-1", children: meta.title.includes("Model") ? "Model" : meta.title.includes("Memory") ? "Memory" : meta.title.includes("Tool") ? "Tool" : meta.title.includes("Parser") ? "Parser" : "Adapter" }),
|
|
9181
9400
|
/* @__PURE__ */ jsx(
|
|
9182
9401
|
"div",
|
|
9183
9402
|
{
|
|
9184
|
-
className: `w-14 h-14 rounded-full bg-
|
|
9403
|
+
className: `w-14 h-14 rounded-full bg-[var(--color-surface-elevated)] border-2 border-[var(--color-border-strong)] flex items-center justify-center shadow-lg cursor-pointer transition-all hover:border-[var(--color-accent-primary)] hover:shadow-xl ${statusRing}`,
|
|
9185
9404
|
onDoubleClick: handleShowNodeProperties,
|
|
9186
9405
|
"data-selected": selected,
|
|
9187
9406
|
children: /* @__PURE__ */ jsx(Icon, { icon: meta.icon, className: "w-7 h-7 text-accent opacity-80" })
|
|
9188
9407
|
}
|
|
9189
9408
|
),
|
|
9190
|
-
/* @__PURE__ */ jsx("span", { className: "mt-1.5 text-xs text-
|
|
9409
|
+
/* @__PURE__ */ jsx("span", { className: "mt-1.5 text-xs text-[var(--color-text-secondary)] font-medium text-center max-w-24 leading-tight", children: meta.title }),
|
|
9191
9410
|
/* @__PURE__ */ jsx(
|
|
9192
9411
|
"button",
|
|
9193
9412
|
{
|
|
9194
9413
|
onClick: () => deleteNode(id),
|
|
9195
|
-
className: "absolute -top-1 -right-1 w-4 h-4 rounded-full bg-
|
|
9414
|
+
className: "absolute -top-1 -right-1 w-4 h-4 rounded-full bg-[var(--color-status-error)] text-white text-[10px] flex items-center justify-center opacity-0 group-hover:opacity-100 hover:bg-[var(--color-status-error)] transition-opacity",
|
|
9196
9415
|
children: "\xD7"
|
|
9197
9416
|
}
|
|
9198
9417
|
),
|
|
@@ -9749,6 +9968,6 @@ function registerWorkflowNodeTypes(workflowNodes) {
|
|
|
9749
9968
|
}
|
|
9750
9969
|
}
|
|
9751
9970
|
|
|
9752
|
-
export { AVAILABLE_NODES, ConfigSchemaForm, ConnectionFormDialog, ConnectionSelector, NODES, NODES_METADATA, NODE_CONFIGS, NODE_TYPES, NodePropertyPanel, ProviderPicker,
|
|
9753
|
-
//# sourceMappingURL=chunk-
|
|
9754
|
-
//# sourceMappingURL=chunk-
|
|
9971
|
+
export { AVAILABLE_NODES, ConfigSchemaForm, ConnectionFormDialog, ConnectionSelector, NODES, NODES_METADATA, NODE_CONFIGS, NODE_TYPES, NodePropertyPanel, ProviderPicker, ensureNodeConfigsLoaded, fetchNodeManifest, getNodeDetail, getNodeMetadata, getProviderForm, isNodeConfigsInitialized, listCustomBlocks, onNodeTypesUpdate, refetchStoreNodes, registerCustomBlock, registerWorkflowNodeTypes, resolveUiSpec, stripSubmitActions, useConnection, useConnectionDialog, useConnections, useConnectionsByProvider, useCreateConnection, useInitiateOAuth, useInsertNode, useNodeExecution, useProviderByKey, useProviderCatalog, useProviders, useSaveWorkflow };
|
|
9972
|
+
//# sourceMappingURL=chunk-2MQR3DMF.js.map
|
|
9973
|
+
//# sourceMappingURL=chunk-2MQR3DMF.js.map
|