@burdenoff/fluidgrids-fe-sdk 2026.721.2 → 2026.723.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.
Files changed (36) hide show
  1. package/dist/ExecutionDetailPage-3E66352F.js +8 -0
  2. package/dist/{ExecutionDetailPage-6ASC7CJW.js.map → ExecutionDetailPage-3E66352F.js.map} +1 -1
  3. package/dist/ExecutionsListPage-N6ZTA42U.js +8 -0
  4. package/dist/{ExecutionsListPage-OWOKDVXQ.js.map → ExecutionsListPage-N6ZTA42U.js.map} +1 -1
  5. package/dist/{WorkflowBuilder-UADGCKNH.js → WorkflowBuilder-JQVFFWQB.js} +6 -6
  6. package/dist/{WorkflowBuilder-UADGCKNH.js.map → WorkflowBuilder-JQVFFWQB.js.map} +1 -1
  7. package/dist/WorkflowsList-IKUTWG7U.js +10 -0
  8. package/dist/{WorkflowsList-AY6ZANWN.js.map → WorkflowsList-IKUTWG7U.js.map} +1 -1
  9. package/dist/{blocks-RO3MCVHA.js → blocks-UL5FEAD7.js} +4 -4
  10. package/dist/{blocks-RO3MCVHA.js.map → blocks-UL5FEAD7.js.map} +1 -1
  11. package/dist/{chunk-ZPBFAT6K.js → chunk-2WURM2ZA.js} +3 -3
  12. package/dist/{chunk-ZPBFAT6K.js.map → chunk-2WURM2ZA.js.map} +1 -1
  13. package/dist/{chunk-OHIRHNRJ.js → chunk-47457KC3.js} +3 -3
  14. package/dist/{chunk-OHIRHNRJ.js.map → chunk-47457KC3.js.map} +1 -1
  15. package/dist/{chunk-4NTHFDKQ.js → chunk-H7WSQN2I.js} +29 -3
  16. package/dist/chunk-H7WSQN2I.js.map +1 -0
  17. package/dist/{chunk-52EJMXGS.js → chunk-IMRLGRX2.js} +3 -3
  18. package/dist/{chunk-52EJMXGS.js.map → chunk-IMRLGRX2.js.map} +1 -1
  19. package/dist/{chunk-R72R5HRD.js → chunk-NCGZIY5C.js} +123 -12
  20. package/dist/chunk-NCGZIY5C.js.map +1 -0
  21. package/dist/{chunk-2MQR3DMF.js → chunk-VICF7CEB.js} +47 -218
  22. package/dist/chunk-VICF7CEB.js.map +1 -0
  23. package/dist/{chunk-EQVBECAC.js → chunk-YN6AXJJO.js} +3 -3
  24. package/dist/{chunk-EQVBECAC.js.map → chunk-YN6AXJJO.js.map} +1 -1
  25. package/dist/{chunk-DVSO5MTE.js → chunk-YQO6STP6.js} +4 -4
  26. package/dist/{chunk-DVSO5MTE.js.map → chunk-YQO6STP6.js.map} +1 -1
  27. package/dist/index.d.ts +62 -7
  28. package/dist/index.js +15 -15
  29. package/dist/index.js.map +1 -1
  30. package/package.json +1 -1
  31. package/dist/ExecutionDetailPage-6ASC7CJW.js +0 -8
  32. package/dist/ExecutionsListPage-OWOKDVXQ.js +0 -8
  33. package/dist/WorkflowsList-AY6ZANWN.js +0 -10
  34. package/dist/chunk-2MQR3DMF.js.map +0 -1
  35. package/dist/chunk-4NTHFDKQ.js.map +0 -1
  36. package/dist/chunk-R72R5HRD.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-2MQR3DMF.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-VICF7CEB.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-OHIRHNRJ.js';
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-4NTHFDKQ.js';
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';
@@ -4078,7 +4078,7 @@ function DesktopSidebarFragment({
4078
4078
  if (nodes) {
4079
4079
  const requiredNodeTypes = [];
4080
4080
  try {
4081
- const { NODE_CONFIGS: NODE_CONFIGS3, ensureNodeConfigsLoaded: ensureNodeConfigsLoaded2 } = await import('./blocks-RO3MCVHA.js');
4081
+ const { NODE_CONFIGS: NODE_CONFIGS3, ensureNodeConfigsLoaded: ensureNodeConfigsLoaded2 } = await import('./blocks-UL5FEAD7.js');
4082
4082
  await ensureNodeConfigsLoaded2().catch(() => {
4083
4083
  });
4084
4084
  const workflowNodeTypes = [
@@ -12433,6 +12433,100 @@ function SwitchRulesEditor({
12433
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." })
12434
12434
  ] });
12435
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
+ }
12436
12530
  function coerceNumber(type, raw) {
12437
12531
  if (raw.trim() === "") return void 0;
12438
12532
  const n = type === "integer" ? parseInt(raw, 10) : parseFloat(raw);
@@ -12477,7 +12571,7 @@ function nodeSubtitle(node) {
12477
12571
  const data = asRecord(node?.data);
12478
12572
  return typeof data?.operation_name === "string" ? data.operation_name : void 0;
12479
12573
  }
12480
- var SECTION_LABEL = "text-[11px] font-semibold uppercase tracking-[0.12em] text-muted-foreground";
12574
+ var SECTION_LABEL2 = "text-[11px] font-semibold uppercase tracking-[0.12em] text-muted-foreground";
12481
12575
  function NodeDetailView() {
12482
12576
  const ndv = useFlowStore((s) => s.workflow.ndv);
12483
12577
  const nodes = useFlowStore((s) => s.workflow.nodes);
@@ -12562,6 +12656,16 @@ function NodeDetailView() {
12562
12656
  [currentOp]
12563
12657
  );
12564
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
+ );
12565
12669
  const pickerFields = useMemo(() => flattenFields(inputFields), [inputFields]);
12566
12670
  const mapping = currentEdge?.mapping?.definition ?? {};
12567
12671
  const argsState = useMemo(() => {
@@ -12738,7 +12842,7 @@ function NodeDetailView() {
12738
12842
  className: "flex min-h-0 min-w-[180px] flex-col bg-card/40",
12739
12843
  children: [
12740
12844
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 px-4 py-2.5", children: [
12741
- /* @__PURE__ */ jsx("span", { className: SECTION_LABEL, children: "Input" }),
12845
+ /* @__PURE__ */ jsx("span", { className: SECTION_LABEL2, children: "Input" }),
12742
12846
  sourceIds.length > 0 && /* @__PURE__ */ jsx(
12743
12847
  "select",
12744
12848
  {
@@ -12797,8 +12901,15 @@ function NodeDetailView() {
12797
12901
  className: "min-h-0 flex-1 space-y-4 overflow-auto p-4",
12798
12902
  "data-testid": "ndv-params",
12799
12903
  children: [
12904
+ isWebhookTrigger && /* @__PURE__ */ jsx(
12905
+ WebhookUrlField,
12906
+ {
12907
+ webhookUrl,
12908
+ loading: webhookUrlLoading
12909
+ }
12910
+ ),
12800
12911
  connectionAdapters.length > 0 && /* @__PURE__ */ jsxs("div", { className: "space-y-2", "data-testid": "ndv-connections", children: [
12801
- /* @__PURE__ */ jsx("div", { className: SECTION_LABEL, children: "Connections" }),
12912
+ /* @__PURE__ */ jsx("div", { className: SECTION_LABEL2, children: "Connections" }),
12802
12913
  /* @__PURE__ */ jsx(
12803
12914
  ConnectionSelector,
12804
12915
  {
@@ -12965,7 +13076,7 @@ function NodeDetailView() {
12965
13076
  className: "flex min-h-0 min-w-[180px] flex-col bg-card/40",
12966
13077
  children: [
12967
13078
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 px-4 py-2.5", children: [
12968
- /* @__PURE__ */ jsx("span", { className: SECTION_LABEL, children: "Output" }),
13079
+ /* @__PURE__ */ jsx("span", { className: SECTION_LABEL2, children: "Output" }),
12969
13080
  outputFields.length > 0 && /* @__PURE__ */ jsxs("div", { className: "ml-auto flex items-center gap-1", children: [
12970
13081
  /* @__PURE__ */ jsx(
12971
13082
  ToggleChip,
@@ -13852,7 +13963,7 @@ function WorkflowItem({
13852
13963
  };
13853
13964
  const requiredNodeTypes = [];
13854
13965
  try {
13855
- const { NODE_CONFIGS: NODE_CONFIGS3, ensureNodeConfigsLoaded: ensureNodeConfigsLoaded2 } = await import('./blocks-RO3MCVHA.js');
13966
+ const { NODE_CONFIGS: NODE_CONFIGS3, ensureNodeConfigsLoaded: ensureNodeConfigsLoaded2 } = await import('./blocks-UL5FEAD7.js');
13856
13967
  await ensureNodeConfigsLoaded2().catch(() => {
13857
13968
  });
13858
13969
  const workflowNodeTypes = [
@@ -14121,5 +14232,5 @@ function WorkflowBuilder() {
14121
14232
  }
14122
14233
 
14123
14234
  export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, FlowBuilderPage, FluidGridsProvider, TemplateCard, WorkflowBuilder, useFluidGridsContext, useImportWorkflowTemplate, useWorkflowTemplates };
14124
- //# sourceMappingURL=chunk-R72R5HRD.js.map
14125
- //# sourceMappingURL=chunk-R72R5HRD.js.map
14235
+ //# sourceMappingURL=chunk-NCGZIY5C.js.map
14236
+ //# sourceMappingURL=chunk-NCGZIY5C.js.map