@burdenoff/fluidgrids-fe-sdk 2026.721.1 → 2026.723.1
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/ExecutionDetailPage-3E66352F.js +8 -0
- package/dist/{ExecutionDetailPage-6ASC7CJW.js.map → ExecutionDetailPage-3E66352F.js.map} +1 -1
- package/dist/ExecutionsListPage-N6ZTA42U.js +8 -0
- package/dist/{ExecutionsListPage-OWOKDVXQ.js.map → ExecutionsListPage-N6ZTA42U.js.map} +1 -1
- package/dist/{WorkflowBuilder-BUBJLTBN.js → WorkflowBuilder-TDCWGV55.js} +6 -6
- package/dist/{WorkflowBuilder-BUBJLTBN.js.map → WorkflowBuilder-TDCWGV55.js.map} +1 -1
- package/dist/WorkflowsList-IKUTWG7U.js +10 -0
- package/dist/{WorkflowsList-AY6ZANWN.js.map → WorkflowsList-IKUTWG7U.js.map} +1 -1
- package/dist/{blocks-S63X5XLG.js → blocks-NRIL7V7G.js} +4 -4
- package/dist/{blocks-S63X5XLG.js.map → blocks-NRIL7V7G.js.map} +1 -1
- package/dist/{chunk-ZPBFAT6K.js → chunk-2WURM2ZA.js} +3 -3
- package/dist/{chunk-ZPBFAT6K.js.map → chunk-2WURM2ZA.js.map} +1 -1
- package/dist/{chunk-OHIRHNRJ.js → chunk-47457KC3.js} +3 -3
- package/dist/{chunk-OHIRHNRJ.js.map → chunk-47457KC3.js.map} +1 -1
- package/dist/{chunk-4NTHFDKQ.js → chunk-H7WSQN2I.js} +29 -3
- package/dist/chunk-H7WSQN2I.js.map +1 -0
- package/dist/{chunk-52EJMXGS.js → chunk-IMRLGRX2.js} +3 -3
- package/dist/{chunk-52EJMXGS.js.map → chunk-IMRLGRX2.js.map} +1 -1
- package/dist/{chunk-X6I7YBLP.js → chunk-MMIHLPRC.js} +139 -18
- package/dist/chunk-MMIHLPRC.js.map +1 -0
- package/dist/{chunk-4IMAQMRN.js → chunk-TT2UP3ZC.js} +16 -5
- package/dist/chunk-TT2UP3ZC.js.map +1 -0
- package/dist/{chunk-EQVBECAC.js → chunk-YN6AXJJO.js} +3 -3
- package/dist/{chunk-EQVBECAC.js.map → chunk-YN6AXJJO.js.map} +1 -1
- package/dist/{chunk-DVSO5MTE.js → chunk-YQO6STP6.js} +4 -4
- package/dist/{chunk-DVSO5MTE.js.map → chunk-YQO6STP6.js.map} +1 -1
- package/dist/index.d.ts +62 -7
- package/dist/index.js +15 -15
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/ExecutionDetailPage-6ASC7CJW.js +0 -8
- package/dist/ExecutionsListPage-OWOKDVXQ.js +0 -8
- package/dist/WorkflowsList-AY6ZANWN.js +0 -10
- package/dist/chunk-4IMAQMRN.js.map +0 -1
- package/dist/chunk-4NTHFDKQ.js.map +0 -1
- package/dist/chunk-X6I7YBLP.js.map +0 -1
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { Dialog as Dialog$1, DialogContent as DialogContent$1, DialogHeader as DialogHeader$1, DialogTitle as DialogTitle$1, DialogDescription as DialogDescription$1, Input as Input$1, DialogFooter } from './chunk-MRVS73S2.js';
|
|
2
2
|
import { Badge as Badge$1, Button } from './chunk-DBOMRIP5.js';
|
|
3
|
-
import { refetchStoreNodes, registerWorkflowNodeTypes, ensureNodeConfigsLoaded, onNodeTypesUpdate, NODE_TYPES, getNodeMetadata, AVAILABLE_NODES, useInsertNode, useSaveWorkflow, useNodeExecution, getNodeDetail, ConnectionSelector, NODES_METADATA, NODE_CONFIGS, isNodeConfigsInitialized, NODES, NodePropertyPanel } from './chunk-
|
|
3
|
+
import { refetchStoreNodes, registerWorkflowNodeTypes, ensureNodeConfigsLoaded, onNodeTypesUpdate, NODE_TYPES, getNodeMetadata, AVAILABLE_NODES, useInsertNode, useSaveWorkflow, useNodeExecution, getNodeDetail, ConnectionSelector, NODES_METADATA, NODE_CONFIGS, isNodeConfigsInitialized, NODES, NodePropertyPanel } from './chunk-TT2UP3ZC.js';
|
|
4
4
|
import { createGlobalStoreClient, setGlobalStoreClient, resetGlobalStoreClient, getGlobalStoreClient } from './chunk-BQXHJIER.js';
|
|
5
5
|
import { BrowseWorkflowTemplatesDocument, InstallWorkflowNodeDocument, InstallPurchasedNodeDocument, GetMyNodeInstallationsDocument, BrowseWorkflowNodesDocument, UninstallWorkflowNodeDocument, CreateStoreOrderDocument } from './chunk-PNOA7CQV.js';
|
|
6
|
-
import { useLazyWorkflowDefinition, useCreateWorkflow, useWorkflowVersions, useRestoreWorkflowVersion, useActivateWorkflow, useDeactivateWorkflow } from './chunk-
|
|
6
|
+
import { useLazyWorkflowDefinition, useCreateWorkflow, useWorkflowVersions, useRestoreWorkflowVersion, useActivateWorkflow, useDeactivateWorkflow } from './chunk-47457KC3.js';
|
|
7
7
|
import { useFlowStore } from './chunk-KU64CCSV.js';
|
|
8
8
|
import { SdkPermissionButton, FLUIDGRIDS_PERMISSIONS } from './chunk-UIY2HBWA.js';
|
|
9
9
|
import { cn } from './chunk-3ZYUGTIT.js';
|
|
10
|
-
import { throwIfResultError, NodeSchemaIntrospectionDocument, NodeUsageStatusDocument, RemoveNodeFromWorkflowsDocument } from './chunk-
|
|
11
|
-
import { createFluidGridsClient, setFluidGridsClient, resetFluidGridsClient, getFluidGridsClient } from './chunk-5BDQNSP3.js';
|
|
10
|
+
import { throwIfResultError, NodeSchemaIntrospectionDocument, EventRegistrationsDocument, NodeUsageStatusDocument, RemoveNodeFromWorkflowsDocument } from './chunk-H7WSQN2I.js';
|
|
11
|
+
import { createFluidGridsClient, setFluidGridsClient, resetFluidGridsClient, getFluidGridsClient, getFluidGridsClientSafe } from './chunk-5BDQNSP3.js';
|
|
12
12
|
import { validateTrustedOrigin, setFluidGridsConfig, resetFluidGridsConfig, getFluidGridsConfig } from './chunk-WWU2O2SR.js';
|
|
13
13
|
import { deepClone, applyTemplateInputs } from './chunk-XQP33UJR.js';
|
|
14
14
|
import { useNavigate, useParams } from 'react-router-dom';
|
|
@@ -2259,6 +2259,11 @@ gql$1`
|
|
|
2259
2259
|
`;
|
|
2260
2260
|
|
|
2261
2261
|
// src/builder/components/flow-builder/components/store/store-node-availability.ts
|
|
2262
|
+
function userSelectableOperationCount(nodeType) {
|
|
2263
|
+
if (!nodeType) return 0;
|
|
2264
|
+
const ops = NODE_CONFIGS.find((c) => c.type === nodeType)?.operations ?? [];
|
|
2265
|
+
return ops.filter((op) => !op.isAdapterOperation && !op.internal).length;
|
|
2266
|
+
}
|
|
2262
2267
|
function getStoreNodeType(node, isInstalled) {
|
|
2263
2268
|
const manifestNodeType = node.manifest?.nodeType;
|
|
2264
2269
|
return manifestNodeType ?? (isInstalled ? `store/${node.slug}` : void 0);
|
|
@@ -2270,11 +2275,9 @@ function getStoreNodeAvailability(node, isInstalled) {
|
|
|
2270
2275
|
(availableNode) => availableNode.type === nodeType && (availableNode.publishType === "BUILTIN" || availableNode.publishType === void 0)
|
|
2271
2276
|
);
|
|
2272
2277
|
const isPrebuilt = !isInstalled && (isInternalBuiltin || isRegistryBacked);
|
|
2273
|
-
|
|
2274
|
-
|
|
2275
|
-
|
|
2276
|
-
isDraggable: !!nodeType && (isInstalled || isPrebuilt)
|
|
2277
|
-
};
|
|
2278
|
+
const available = !!nodeType && (isInstalled || isPrebuilt);
|
|
2279
|
+
const isDraggable = available && userSelectableOperationCount(nodeType) <= 1;
|
|
2280
|
+
return { nodeType, isPrebuilt, isDraggable };
|
|
2278
2281
|
}
|
|
2279
2282
|
|
|
2280
2283
|
// src/builder/contants/symbols.ts
|
|
@@ -2871,11 +2874,18 @@ var UninstallNodeDialog = ({
|
|
|
2871
2874
|
function isTriggerOperation(op) {
|
|
2872
2875
|
return op.role === "trigger" || !!op.delivery || op.type === "subscription";
|
|
2873
2876
|
}
|
|
2877
|
+
function userSelectableOperations(ops) {
|
|
2878
|
+
return (ops ?? []).filter(
|
|
2879
|
+
(op) => !op.isAdapterOperation && !op.internal
|
|
2880
|
+
);
|
|
2881
|
+
}
|
|
2874
2882
|
function StoreNodeOperations({ nodeType }) {
|
|
2875
2883
|
const [, bump] = useState(0);
|
|
2876
2884
|
useEffect(() => onNodeTypesUpdate(() => bump((n) => n + 1)), []);
|
|
2877
2885
|
const config = nodeType ? NODE_CONFIGS.find((c) => c.type === nodeType) : void 0;
|
|
2878
|
-
const operations =
|
|
2886
|
+
const operations = userSelectableOperations(
|
|
2887
|
+
config?.operations
|
|
2888
|
+
);
|
|
2879
2889
|
const handleDragStart = useCallback(
|
|
2880
2890
|
(e, opName) => {
|
|
2881
2891
|
if (!nodeType) return;
|
|
@@ -4068,7 +4078,7 @@ function DesktopSidebarFragment({
|
|
|
4068
4078
|
if (nodes) {
|
|
4069
4079
|
const requiredNodeTypes = [];
|
|
4070
4080
|
try {
|
|
4071
|
-
const { NODE_CONFIGS: NODE_CONFIGS3, ensureNodeConfigsLoaded: ensureNodeConfigsLoaded2 } = await import('./blocks-
|
|
4081
|
+
const { NODE_CONFIGS: NODE_CONFIGS3, ensureNodeConfigsLoaded: ensureNodeConfigsLoaded2 } = await import('./blocks-NRIL7V7G.js');
|
|
4072
4082
|
await ensureNodeConfigsLoaded2().catch(() => {
|
|
4073
4083
|
});
|
|
4074
4084
|
const workflowNodeTypes = [
|
|
@@ -12423,6 +12433,100 @@ function SwitchRulesEditor({
|
|
|
12423
12433
|
/* @__PURE__ */ jsx("p", { className: "text-[10px] leading-snug text-muted-foreground", children: "Rules are checked top-down; the first matching rule routes the item to its output. Each rule renders as an output handle on the node." })
|
|
12424
12434
|
] });
|
|
12425
12435
|
}
|
|
12436
|
+
var SECTION_LABEL = "text-[11px] font-semibold uppercase tracking-[0.12em] text-muted-foreground";
|
|
12437
|
+
function WebhookUrlField({ webhookUrl, loading }) {
|
|
12438
|
+
const [copied, setCopied] = useState(false);
|
|
12439
|
+
const handleCopy = async () => {
|
|
12440
|
+
if (!webhookUrl) return;
|
|
12441
|
+
try {
|
|
12442
|
+
await navigator.clipboard.writeText(webhookUrl);
|
|
12443
|
+
setCopied(true);
|
|
12444
|
+
setTimeout(() => setCopied(false), 1500);
|
|
12445
|
+
} catch {
|
|
12446
|
+
}
|
|
12447
|
+
};
|
|
12448
|
+
return /* @__PURE__ */ jsxs("div", { className: "space-y-2", "data-testid": "ndv-webhook-url", children: [
|
|
12449
|
+
/* @__PURE__ */ jsx("div", { className: SECTION_LABEL, children: "Webhook URL" }),
|
|
12450
|
+
webhookUrl ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
12451
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-stretch gap-2", children: [
|
|
12452
|
+
/* @__PURE__ */ jsx(
|
|
12453
|
+
"input",
|
|
12454
|
+
{
|
|
12455
|
+
readOnly: true,
|
|
12456
|
+
value: webhookUrl,
|
|
12457
|
+
onFocus: (e) => e.currentTarget.select(),
|
|
12458
|
+
className: "min-w-0 flex-1 rounded-md border border-border bg-muted/40 px-3 py-2 font-mono text-xs text-foreground outline-none focus:border-primary"
|
|
12459
|
+
}
|
|
12460
|
+
),
|
|
12461
|
+
/* @__PURE__ */ jsxs(
|
|
12462
|
+
"button",
|
|
12463
|
+
{
|
|
12464
|
+
type: "button",
|
|
12465
|
+
onClick: handleCopy,
|
|
12466
|
+
className: cn$1(
|
|
12467
|
+
"inline-flex shrink-0 items-center gap-1.5 rounded-md border border-border px-3 py-2 text-xs font-medium transition-colors",
|
|
12468
|
+
copied ? "border-primary bg-primary/10 text-primary" : "bg-background text-foreground hover:bg-muted"
|
|
12469
|
+
),
|
|
12470
|
+
"aria-label": "Copy webhook URL",
|
|
12471
|
+
children: [
|
|
12472
|
+
/* @__PURE__ */ jsx(
|
|
12473
|
+
Icon,
|
|
12474
|
+
{
|
|
12475
|
+
icon: copied ? "mdi:check" : "mdi:content-copy",
|
|
12476
|
+
className: "h-4 w-4"
|
|
12477
|
+
}
|
|
12478
|
+
),
|
|
12479
|
+
copied ? "Copied" : "Copy"
|
|
12480
|
+
]
|
|
12481
|
+
}
|
|
12482
|
+
)
|
|
12483
|
+
] }),
|
|
12484
|
+
/* @__PURE__ */ jsx("p", { className: "text-[11px] text-muted-foreground", children: "Send HTTP requests to this URL to trigger the workflow." })
|
|
12485
|
+
] }) : /* @__PURE__ */ jsx("div", { className: "rounded-md border border-dashed border-border bg-muted/40 px-3 py-2 text-xs text-muted-foreground", children: loading ? "Loading webhook URL\u2026" : "Save the workflow to generate its webhook URL." })
|
|
12486
|
+
] });
|
|
12487
|
+
}
|
|
12488
|
+
function useWebhookRegistration(workflowKey, triggerNodeId, enabled = true) {
|
|
12489
|
+
const [registration, setRegistration] = useState(
|
|
12490
|
+
null
|
|
12491
|
+
);
|
|
12492
|
+
const [loading, setLoading] = useState(false);
|
|
12493
|
+
const [error, setError] = useState(null);
|
|
12494
|
+
const fetchData = useCallback(async () => {
|
|
12495
|
+
if (!enabled || !workflowKey || !triggerNodeId) {
|
|
12496
|
+
setRegistration(null);
|
|
12497
|
+
return;
|
|
12498
|
+
}
|
|
12499
|
+
const client = getFluidGridsClientSafe();
|
|
12500
|
+
if (!client) return;
|
|
12501
|
+
setLoading(true);
|
|
12502
|
+
setError(null);
|
|
12503
|
+
try {
|
|
12504
|
+
const result = await client.query({
|
|
12505
|
+
query: EventRegistrationsDocument,
|
|
12506
|
+
variables: { workflowKey },
|
|
12507
|
+
fetchPolicy: "network-only"
|
|
12508
|
+
});
|
|
12509
|
+
const match = result.data?.eventRegistrations?.find(
|
|
12510
|
+
(r) => r.triggerNodeId === triggerNodeId
|
|
12511
|
+
) ?? null;
|
|
12512
|
+
setRegistration(match);
|
|
12513
|
+
} catch (err) {
|
|
12514
|
+
setError(err);
|
|
12515
|
+
} finally {
|
|
12516
|
+
setLoading(false);
|
|
12517
|
+
}
|
|
12518
|
+
}, [enabled, workflowKey, triggerNodeId]);
|
|
12519
|
+
useEffect(() => {
|
|
12520
|
+
fetchData();
|
|
12521
|
+
}, [fetchData]);
|
|
12522
|
+
return {
|
|
12523
|
+
registration,
|
|
12524
|
+
webhookUrl: registration?.webhookUrl ?? null,
|
|
12525
|
+
loading,
|
|
12526
|
+
error,
|
|
12527
|
+
refetch: fetchData
|
|
12528
|
+
};
|
|
12529
|
+
}
|
|
12426
12530
|
function coerceNumber(type, raw) {
|
|
12427
12531
|
if (raw.trim() === "") return void 0;
|
|
12428
12532
|
const n = type === "integer" ? parseInt(raw, 10) : parseFloat(raw);
|
|
@@ -12467,7 +12571,7 @@ function nodeSubtitle(node) {
|
|
|
12467
12571
|
const data = asRecord(node?.data);
|
|
12468
12572
|
return typeof data?.operation_name === "string" ? data.operation_name : void 0;
|
|
12469
12573
|
}
|
|
12470
|
-
var
|
|
12574
|
+
var SECTION_LABEL2 = "text-[11px] font-semibold uppercase tracking-[0.12em] text-muted-foreground";
|
|
12471
12575
|
function NodeDetailView() {
|
|
12472
12576
|
const ndv = useFlowStore((s) => s.workflow.ndv);
|
|
12473
12577
|
const nodes = useFlowStore((s) => s.workflow.nodes);
|
|
@@ -12552,6 +12656,16 @@ function NodeDetailView() {
|
|
|
12552
12656
|
[currentOp]
|
|
12553
12657
|
);
|
|
12554
12658
|
const params = useMemo(() => paramsFromOperation(currentOp), [currentOp]);
|
|
12659
|
+
const isWebhookTrigger = useMemo(
|
|
12660
|
+
() => !!asRecord(currentOp?.output_fields)?.webhookUrl,
|
|
12661
|
+
[currentOp]
|
|
12662
|
+
);
|
|
12663
|
+
const workflowKey = useFlowStore((s) => s.workflow.workflowKey);
|
|
12664
|
+
const { webhookUrl, loading: webhookUrlLoading } = useWebhookRegistration(
|
|
12665
|
+
workflowKey || void 0,
|
|
12666
|
+
node?.id,
|
|
12667
|
+
isWebhookTrigger && open
|
|
12668
|
+
);
|
|
12555
12669
|
const pickerFields = useMemo(() => flattenFields(inputFields), [inputFields]);
|
|
12556
12670
|
const mapping = currentEdge?.mapping?.definition ?? {};
|
|
12557
12671
|
const argsState = useMemo(() => {
|
|
@@ -12728,7 +12842,7 @@ function NodeDetailView() {
|
|
|
12728
12842
|
className: "flex min-h-0 min-w-[180px] flex-col bg-card/40",
|
|
12729
12843
|
children: [
|
|
12730
12844
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 px-4 py-2.5", children: [
|
|
12731
|
-
/* @__PURE__ */ jsx("span", { className:
|
|
12845
|
+
/* @__PURE__ */ jsx("span", { className: SECTION_LABEL2, children: "Input" }),
|
|
12732
12846
|
sourceIds.length > 0 && /* @__PURE__ */ jsx(
|
|
12733
12847
|
"select",
|
|
12734
12848
|
{
|
|
@@ -12787,8 +12901,15 @@ function NodeDetailView() {
|
|
|
12787
12901
|
className: "min-h-0 flex-1 space-y-4 overflow-auto p-4",
|
|
12788
12902
|
"data-testid": "ndv-params",
|
|
12789
12903
|
children: [
|
|
12904
|
+
isWebhookTrigger && /* @__PURE__ */ jsx(
|
|
12905
|
+
WebhookUrlField,
|
|
12906
|
+
{
|
|
12907
|
+
webhookUrl,
|
|
12908
|
+
loading: webhookUrlLoading
|
|
12909
|
+
}
|
|
12910
|
+
),
|
|
12790
12911
|
connectionAdapters.length > 0 && /* @__PURE__ */ jsxs("div", { className: "space-y-2", "data-testid": "ndv-connections", children: [
|
|
12791
|
-
/* @__PURE__ */ jsx("div", { className:
|
|
12912
|
+
/* @__PURE__ */ jsx("div", { className: SECTION_LABEL2, children: "Connections" }),
|
|
12792
12913
|
/* @__PURE__ */ jsx(
|
|
12793
12914
|
ConnectionSelector,
|
|
12794
12915
|
{
|
|
@@ -12955,7 +13076,7 @@ function NodeDetailView() {
|
|
|
12955
13076
|
className: "flex min-h-0 min-w-[180px] flex-col bg-card/40",
|
|
12956
13077
|
children: [
|
|
12957
13078
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 px-4 py-2.5", children: [
|
|
12958
|
-
/* @__PURE__ */ jsx("span", { className:
|
|
13079
|
+
/* @__PURE__ */ jsx("span", { className: SECTION_LABEL2, children: "Output" }),
|
|
12959
13080
|
outputFields.length > 0 && /* @__PURE__ */ jsxs("div", { className: "ml-auto flex items-center gap-1", children: [
|
|
12960
13081
|
/* @__PURE__ */ jsx(
|
|
12961
13082
|
ToggleChip,
|
|
@@ -13842,7 +13963,7 @@ function WorkflowItem({
|
|
|
13842
13963
|
};
|
|
13843
13964
|
const requiredNodeTypes = [];
|
|
13844
13965
|
try {
|
|
13845
|
-
const { NODE_CONFIGS: NODE_CONFIGS3, ensureNodeConfigsLoaded: ensureNodeConfigsLoaded2 } = await import('./blocks-
|
|
13966
|
+
const { NODE_CONFIGS: NODE_CONFIGS3, ensureNodeConfigsLoaded: ensureNodeConfigsLoaded2 } = await import('./blocks-NRIL7V7G.js');
|
|
13846
13967
|
await ensureNodeConfigsLoaded2().catch(() => {
|
|
13847
13968
|
});
|
|
13848
13969
|
const workflowNodeTypes = [
|
|
@@ -14111,5 +14232,5 @@ function WorkflowBuilder() {
|
|
|
14111
14232
|
}
|
|
14112
14233
|
|
|
14113
14234
|
export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, FlowBuilderPage, FluidGridsProvider, TemplateCard, WorkflowBuilder, useFluidGridsContext, useImportWorkflowTemplate, useWorkflowTemplates };
|
|
14114
|
-
//# sourceMappingURL=chunk-
|
|
14115
|
-
//# sourceMappingURL=chunk-
|
|
14235
|
+
//# sourceMappingURL=chunk-MMIHLPRC.js.map
|
|
14236
|
+
//# sourceMappingURL=chunk-MMIHLPRC.js.map
|