@burdenoff/fluidgrids-fe-sdk 2026.801.5 → 2026.801.7

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.
@@ -1,6 +1,6 @@
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, NODE_TYPE_DRAG_DATA_FORMAT, NODE_OPERATION_DRAG_DATA_FORMAT, useSaveWorkflow, STICKY_NOTE_TYPE, useNodeExecution, getNodeDetail, mergeStickyNotes, buildStickyNode, ConnectionSelector, nodeAccent, NODES_METADATA, isNodeConfigsInitialized, NODE_CONFIGS, NODES, NodePropertyPanel, resolveInputHandles } from './chunk-33QRAWG2.js';
3
+ import { refetchStoreNodes, registerWorkflowNodeTypes, ensureNodeConfigsLoaded, onNodeTypesUpdate, NODE_TYPES, getNodeMetadata, AVAILABLE_NODES, useInsertNode, NODE_TYPE_DRAG_DATA_FORMAT, NODE_OPERATION_DRAG_DATA_FORMAT, useSaveWorkflow, STICKY_NOTE_TYPE, useNodeExecution, getNodeDetail, mergeStickyNotes, buildStickyNode, ConnectionSelector, nodeAccent, NodeTypeIcon, NODES_METADATA, isNodeConfigsInitialized, NODE_CONFIGS, isImageIcon, NODES, NodePropertyPanel, resolveInputHandles } from './chunk-EPBEVBMQ.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
6
  import { useLazyWorkflowDefinition, useCreateWorkflow, useWorkflowVersions, useRestoreWorkflowVersion, useActivateWorkflow, useDeleteWorkflow, useDeactivateWorkflow } from './chunk-NMS2QUXG.js';
@@ -2314,7 +2314,7 @@ function StoreNodeListItem({
2314
2314
  className: "w-full flex items-center gap-3 px-2 py-2.5 rounded-md hover:bg-muted/60 transition-colors text-left group",
2315
2315
  style: isDraggable ? { cursor: "grab" } : void 0,
2316
2316
  children: [
2317
- /* @__PURE__ */ jsx("div", { className: "relative size-9 shrink-0 rounded-lg bg-muted flex items-center justify-center overflow-hidden", children: icon ? /* @__PURE__ */ jsx("img", { src: icon, alt: name, className: "w-full h-full object-cover" }) : /* @__PURE__ */ jsx("span", { className: "text-sm font-bold text-muted-foreground", children: name.charAt(0).toUpperCase() }) }),
2317
+ /* @__PURE__ */ jsx("div", { className: "relative size-9 shrink-0 rounded-lg bg-muted flex items-center justify-center overflow-hidden", children: icon ? isImageIcon(icon) ? /* @__PURE__ */ jsx("img", { src: icon, alt: name, className: "w-full h-full object-cover" }) : /* @__PURE__ */ jsx(Icon, { icon, className: "size-5 text-muted-foreground" }) : /* @__PURE__ */ jsx("span", { className: "text-sm font-bold text-muted-foreground", children: name.charAt(0).toUpperCase() }) }),
2318
2318
  /* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
2319
2319
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 flex-wrap", children: [
2320
2320
  /* @__PURE__ */ jsx("span", { className: "text-sm font-medium text-foreground group-hover:text-primary transition-colors truncate", children: name }),
@@ -3282,13 +3282,19 @@ function StoreNodeDetail({ node, onBack }) {
3282
3282
  ) }),
3283
3283
  /* @__PURE__ */ jsxs("div", { className: "flex-1 overflow-y-auto px-3 pb-2", children: [
3284
3284
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center text-center py-4", children: [
3285
- /* @__PURE__ */ jsx("div", { className: "size-16 rounded-xl bg-muted flex items-center justify-center overflow-hidden mb-3", children: node.icon ? /* @__PURE__ */ jsx(
3285
+ /* @__PURE__ */ jsx("div", { className: "size-16 rounded-xl bg-muted flex items-center justify-center overflow-hidden mb-3", children: node.icon ? isImageIcon(node.icon) ? /* @__PURE__ */ jsx(
3286
3286
  "img",
3287
3287
  {
3288
3288
  src: node.icon,
3289
3289
  alt: node.name,
3290
3290
  className: "w-full h-full object-cover"
3291
3291
  }
3292
+ ) : /* @__PURE__ */ jsx(
3293
+ Icon,
3294
+ {
3295
+ icon: node.icon,
3296
+ className: "size-8 text-muted-foreground"
3297
+ }
3292
3298
  ) : /* @__PURE__ */ jsx("span", { className: "text-2xl font-bold text-muted-foreground", children: node.name.charAt(0).toUpperCase() }) }),
3293
3299
  /* @__PURE__ */ jsx("h2", { className: "text-base font-semibold text-foreground leading-tight", children: node.name }),
3294
3300
  (node.authorName || node.publisher?.name) && /* @__PURE__ */ jsxs("p", { className: "text-xs text-muted-foreground mt-1 flex items-center gap-1", children: [
@@ -4283,7 +4289,7 @@ function DesktopSidebarFragment({
4283
4289
  if (nodes) {
4284
4290
  const requiredNodeTypes = [];
4285
4291
  try {
4286
- const { NODE_CONFIGS: NODE_CONFIGS3, ensureNodeConfigsLoaded: ensureNodeConfigsLoaded2 } = await import('./blocks-HIWIS6OD.js');
4292
+ const { NODE_CONFIGS: NODE_CONFIGS3, ensureNodeConfigsLoaded: ensureNodeConfigsLoaded2 } = await import('./blocks-MP4MLAOE.js');
4287
4293
  await ensureNodeConfigsLoaded2().catch(() => {
4288
4294
  });
4289
4295
  const workflowNodeTypes = [
@@ -10987,7 +10993,14 @@ function NodeList({ nodes, onNodeAdd }) {
10987
10993
  disabled: !node.__enabled,
10988
10994
  className: "flex items-center rounded-xl bg-transparent p-1 transition disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-20 active:bg-card-foreground/10 hover:bg-card-foreground/10",
10989
10995
  children: [
10990
- /* @__PURE__ */ jsx("div", { className: "size-7 flex shrink-0 items-center justify-center border border-card-foreground/10 rounded-lg bg-card", children: /* @__PURE__ */ jsx(Icon, { icon: node.icon, className: "size-4 text-card-foreground" }) }),
10996
+ /* @__PURE__ */ jsx("div", { className: "size-7 flex shrink-0 items-center justify-center border border-card-foreground/10 rounded-lg bg-card", children: /* @__PURE__ */ jsx(
10997
+ NodeTypeIcon,
10998
+ {
10999
+ icon: node.icon,
11000
+ alt: node.title,
11001
+ className: "size-4 text-card-foreground"
11002
+ }
11003
+ ) }),
10991
11004
  /* @__PURE__ */ jsx("div", { className: "ml-2 text-sm text-card-foreground/80", children: node.title })
10992
11005
  ]
10993
11006
  },
@@ -13576,6 +13589,7 @@ var PANEL_EST_HEIGHT = 480;
13576
13589
  var MAPPER_WIDTH = 260;
13577
13590
  var VIEWPORT_MARGIN = 12;
13578
13591
  var NODE_GAP = 14;
13592
+ var MAPPER_GAP = 10;
13579
13593
  function useNodeScreenRect(nodeId) {
13580
13594
  const { flowToScreenPosition } = useReactFlow();
13581
13595
  const raw = useStore((s) => {
@@ -13649,15 +13663,31 @@ function QuickConfigPanelInner({
13649
13663
  return () => ro.disconnect();
13650
13664
  }, []);
13651
13665
  const placement = useMemo(() => {
13666
+ const mapperCoords = (panelLeft, panelTop) => {
13667
+ const leftPlacement = panelLeft - MAPPER_GAP - MAPPER_WIDTH;
13668
+ const rightPlacement = panelLeft + PANEL_WIDTH + MAPPER_GAP;
13669
+ const rawLeft2 = leftPlacement >= VIEWPORT_MARGIN ? leftPlacement : rightPlacement;
13670
+ return {
13671
+ mapperLeft: clamp(
13672
+ rawLeft2,
13673
+ VIEWPORT_MARGIN,
13674
+ window.innerWidth - MAPPER_WIDTH - VIEWPORT_MARGIN
13675
+ ),
13676
+ mapperTop: panelTop
13677
+ };
13678
+ };
13652
13679
  if (!nodeRect) {
13680
+ const left2 = window.innerWidth / 2 - PANEL_WIDTH / 2;
13681
+ const top2 = window.innerHeight / 4;
13653
13682
  return {
13654
13683
  side: "right",
13655
- left: window.innerWidth / 2 - PANEL_WIDTH / 2,
13656
- top: window.innerHeight / 4,
13684
+ left: left2,
13685
+ top: top2,
13657
13686
  connectorLeft: 0,
13658
13687
  connectorWidth: 0,
13659
13688
  connectorTop: 0,
13660
- hasConnector: false
13689
+ hasConnector: false,
13690
+ ...mapperCoords(left2, top2)
13661
13691
  };
13662
13692
  }
13663
13693
  const need = PANEL_WIDTH + NODE_GAP + VIEWPORT_MARGIN;
@@ -13688,7 +13718,8 @@ function QuickConfigPanelInner({
13688
13718
  connectorLeft,
13689
13719
  connectorWidth,
13690
13720
  connectorTop,
13691
- hasConnector: connectorWidth > 1
13721
+ hasConnector: connectorWidth > 1,
13722
+ ...mapperCoords(left, top)
13692
13723
  };
13693
13724
  }, [nodeRect, panelH]);
13694
13725
  useEffect(() => {
@@ -13708,7 +13739,6 @@ function QuickConfigPanelInner({
13708
13739
  const expandToNdv = () => {
13709
13740
  openNdv({ nodeId, type });
13710
13741
  };
13711
- const mapperStyle = placement.side === "right" ? { left: "100%", marginLeft: 10, top: 0 } : { right: "100%", marginRight: 10, top: 0 };
13712
13742
  return /* @__PURE__ */ jsxs(Fragment, { children: [
13713
13743
  placement.hasConnector && /* @__PURE__ */ jsx(
13714
13744
  "div",
@@ -13726,7 +13756,50 @@ function QuickConfigPanelInner({
13726
13756
  }
13727
13757
  }
13728
13758
  ),
13729
- /* @__PURE__ */ jsxs(
13759
+ showMapper && /* @__PURE__ */ jsxs(
13760
+ "div",
13761
+ {
13762
+ className: "fixed overflow-hidden rounded-xl border border-border bg-card shadow-xl",
13763
+ style: {
13764
+ left: placement.mapperLeft,
13765
+ top: placement.mapperTop,
13766
+ width: MAPPER_WIDTH,
13767
+ maxHeight: "min(60vh, 480px)",
13768
+ zIndex: 301,
13769
+ display: "flex",
13770
+ flexDirection: "column"
13771
+ },
13772
+ "data-testid": "quick-config-mapper",
13773
+ children: [
13774
+ /* @__PURE__ */ jsxs("div", { className: "flex shrink-0 items-center gap-2 border-b border-border px-3 py-2", children: [
13775
+ /* @__PURE__ */ jsx(
13776
+ Icon,
13777
+ {
13778
+ icon: "mdi:tray-arrow-down",
13779
+ className: "size-3.5 text-muted-foreground"
13780
+ }
13781
+ ),
13782
+ /* @__PURE__ */ jsx("span", { className: "text-[11px] font-semibold uppercase tracking-[0.12em] text-muted-foreground", children: "Input" }),
13783
+ sourceIds.length > 0 && /* @__PURE__ */ jsx(
13784
+ "select",
13785
+ {
13786
+ className: "ml-auto max-w-[55%] truncate rounded-md border border-input bg-background px-1.5 py-0.5 text-[11px] text-foreground outline-none focus:border-primary",
13787
+ value: selectedSource ?? "",
13788
+ onChange: (e) => setSelectedSource(e.target.value),
13789
+ "data-testid": "qc-source-selector",
13790
+ children: sourceIds.map((sid) => {
13791
+ const sn = nodes.find((n) => n.id === sid);
13792
+ return /* @__PURE__ */ jsx("option", { value: sid, children: nodeTitle(sn) }, sid);
13793
+ })
13794
+ }
13795
+ )
13796
+ ] }),
13797
+ /* @__PURE__ */ jsx("div", { className: "min-h-0 flex-1 overflow-auto px-2 py-2", children: inputFields.length > 0 ? /* @__PURE__ */ jsx(FieldTree, { fields: inputFields, draggable: true }) : /* @__PURE__ */ jsx("p", { className: "px-2 py-4 text-center text-xs text-muted-foreground", children: sourceIds.length === 0 ? "Connect an upstream node to map its fields." : "The selected source has no declared output fields." }) }),
13798
+ /* @__PURE__ */ jsx("p", { className: "shrink-0 border-t border-border px-3 py-1.5 text-[10px] leading-snug text-muted-foreground", children: "Drag a field onto a parameter to map it." })
13799
+ ]
13800
+ }
13801
+ ),
13802
+ /* @__PURE__ */ jsx(
13730
13803
  "div",
13731
13804
  {
13732
13805
  className: "fixed",
@@ -13737,138 +13810,95 @@ function QuickConfigPanelInner({
13737
13810
  width: PANEL_WIDTH
13738
13811
  },
13739
13812
  "data-testid": "quick-config-panel",
13740
- children: [
13741
- showMapper && /* @__PURE__ */ jsxs(
13742
- "div",
13743
- {
13744
- className: "absolute overflow-hidden rounded-xl border border-border bg-card shadow-xl",
13745
- style: {
13746
- ...mapperStyle,
13747
- width: MAPPER_WIDTH,
13748
- maxHeight: "min(60vh, 480px)",
13749
- display: "flex",
13750
- flexDirection: "column"
13751
- },
13752
- "data-testid": "quick-config-mapper",
13753
- children: [
13754
- /* @__PURE__ */ jsxs("div", { className: "flex shrink-0 items-center gap-2 border-b border-border px-3 py-2", children: [
13755
- /* @__PURE__ */ jsx(
13756
- Icon,
13757
- {
13758
- icon: "mdi:tray-arrow-down",
13759
- className: "size-3.5 text-muted-foreground"
13760
- }
13761
- ),
13762
- /* @__PURE__ */ jsx("span", { className: "text-[11px] font-semibold uppercase tracking-[0.12em] text-muted-foreground", children: "Input" }),
13763
- sourceIds.length > 0 && /* @__PURE__ */ jsx(
13764
- "select",
13765
- {
13766
- className: "ml-auto max-w-[55%] truncate rounded-md border border-input bg-background px-1.5 py-0.5 text-[11px] text-foreground outline-none focus:border-primary",
13767
- value: selectedSource ?? "",
13768
- onChange: (e) => setSelectedSource(e.target.value),
13769
- "data-testid": "qc-source-selector",
13770
- children: sourceIds.map((sid) => {
13771
- const sn = nodes.find((n) => n.id === sid);
13772
- return /* @__PURE__ */ jsx("option", { value: sid, children: nodeTitle(sn) }, sid);
13773
- })
13774
- }
13775
- )
13776
- ] }),
13777
- /* @__PURE__ */ jsx("div", { className: "min-h-0 flex-1 overflow-auto px-2 py-2", children: inputFields.length > 0 ? /* @__PURE__ */ jsx(FieldTree, { fields: inputFields, draggable: true }) : /* @__PURE__ */ jsx("p", { className: "px-2 py-4 text-center text-xs text-muted-foreground", children: sourceIds.length === 0 ? "Connect an upstream node to map its fields." : "The selected source has no declared output fields." }) }),
13778
- /* @__PURE__ */ jsx("p", { className: "shrink-0 border-t border-border px-3 py-1.5 text-[10px] leading-snug text-muted-foreground", children: "Drag a field onto a parameter to map it." })
13779
- ]
13780
- }
13781
- ),
13782
- /* @__PURE__ */ jsxs(
13783
- "div",
13784
- {
13785
- ref: cardRef,
13786
- className: "flex flex-col overflow-hidden rounded-xl border border-border bg-card shadow-2xl animate-in fade-in zoom-in-95 duration-150",
13787
- style: {
13788
- maxHeight: "min(70vh, 560px)",
13789
- borderTop: `3px solid ${accent}`
13790
- },
13791
- children: [
13792
- /* @__PURE__ */ jsxs("div", { className: "flex shrink-0 items-center gap-2.5 border-b border-border px-3 py-2.5 select-none", children: [
13793
- /* @__PURE__ */ jsx(
13794
- "div",
13795
- {
13796
- className: "flex size-7 shrink-0 items-center justify-center rounded-lg",
13797
- style: {
13798
- backgroundColor: `color-mix(in srgb, ${accent} 13%, transparent)`,
13799
- color: accent,
13800
- border: `1px solid color-mix(in srgb, ${accent} 26%, transparent)`
13801
- },
13802
- children: /* @__PURE__ */ jsx(Icon, { icon: meta.icon, className: "size-4" })
13803
- }
13804
- ),
13805
- /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
13806
- /* @__PURE__ */ jsx("p", { className: "truncate text-sm font-semibold leading-tight text-foreground", children: nodeTitle(node) }),
13807
- subtitle && /* @__PURE__ */ jsx("p", { className: "truncate font-mono text-[11px] leading-tight text-muted-foreground", children: subtitle })
13808
- ] }),
13809
- /* @__PURE__ */ jsx(
13810
- "button",
13811
- {
13812
- type: "button",
13813
- title: showMapper ? "Hide input data" : "Map data from input",
13814
- "aria-label": "Toggle input mapper",
13815
- onClick: () => setShowMapper((v) => !v),
13816
- className: `rounded-md p-1.5 transition-colors hover:bg-muted ${showMapper ? "text-primary" : "text-muted-foreground"} hover:text-foreground`,
13817
- "data-testid": "qc-toggle-mapper",
13818
- children: /* @__PURE__ */ jsx(Icon, { icon: "mdi:tray-arrow-down", className: "size-4" })
13819
- }
13820
- ),
13821
- /* @__PURE__ */ jsx(
13822
- "button",
13823
- {
13824
- type: "button",
13825
- title: "Open full editor",
13826
- "aria-label": "Open full editor",
13827
- onClick: expandToNdv,
13828
- className: "rounded-md p-1.5 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground",
13829
- "data-testid": "qc-expand",
13830
- children: /* @__PURE__ */ jsx(Icon, { icon: "mdi:arrow-expand", className: "size-4" })
13831
- }
13832
- ),
13833
- /* @__PURE__ */ jsx(
13834
- "button",
13835
- {
13836
- type: "button",
13837
- title: "Close",
13838
- "aria-label": "Close",
13839
- onClick: close,
13840
- className: "rounded-md p-1.5 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground",
13841
- "data-testid": "qc-close",
13842
- children: /* @__PURE__ */ jsx(Icon, { icon: "mdi:close", className: "size-4" })
13843
- }
13844
- )
13845
- ] }),
13813
+ children: /* @__PURE__ */ jsxs(
13814
+ "div",
13815
+ {
13816
+ ref: cardRef,
13817
+ className: "flex flex-col overflow-hidden rounded-xl border border-border bg-card shadow-2xl animate-in fade-in zoom-in-95 duration-150",
13818
+ style: {
13819
+ maxHeight: "min(70vh, 560px)",
13820
+ borderTop: `3px solid ${accent}`
13821
+ },
13822
+ children: [
13823
+ /* @__PURE__ */ jsxs("div", { className: "flex shrink-0 items-center gap-2.5 border-b border-border px-3 py-2.5 select-none", children: [
13846
13824
  /* @__PURE__ */ jsx(
13847
13825
  "div",
13848
13826
  {
13849
- className: "min-h-0 flex-1 space-y-4 overflow-auto p-3",
13850
- "data-testid": "qc-params",
13851
- onFocusCapture: (e) => {
13852
- const tag = e.target.tagName;
13853
- if (sourceIds.length > 0 && (tag === "INPUT" || tag === "SELECT" || tag === "TEXTAREA")) {
13854
- setShowMapper(true);
13855
- }
13827
+ className: "flex size-7 shrink-0 items-center justify-center rounded-lg",
13828
+ style: {
13829
+ backgroundColor: `color-mix(in srgb, ${accent} 13%, transparent)`,
13830
+ color: accent,
13831
+ border: `1px solid color-mix(in srgb, ${accent} 26%, transparent)`
13856
13832
  },
13857
- children: /* @__PURE__ */ jsx(
13858
- NodeParamsForm,
13859
- {
13860
- config,
13861
- nodeType: node.type,
13862
- testIdPrefix: "qc"
13863
- }
13864
- )
13833
+ children: /* @__PURE__ */ jsx(NodeTypeIcon, { icon: meta.icon, className: "size-4" })
13865
13834
  }
13866
13835
  ),
13867
- /* @__PURE__ */ jsx("p", { className: "shrink-0 border-t border-border px-3 py-1.5 text-[10px] leading-snug text-muted-foreground", children: "Changes apply instantly \xB7 double-click the node for the full editor" })
13868
- ]
13869
- }
13870
- )
13871
- ]
13836
+ /* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1", children: [
13837
+ /* @__PURE__ */ jsx("p", { className: "truncate text-sm font-semibold leading-tight text-foreground", children: nodeTitle(node) }),
13838
+ subtitle && /* @__PURE__ */ jsx("p", { className: "truncate font-mono text-[11px] leading-tight text-muted-foreground", children: subtitle })
13839
+ ] }),
13840
+ /* @__PURE__ */ jsx(
13841
+ "button",
13842
+ {
13843
+ type: "button",
13844
+ title: showMapper ? "Hide input data" : "Map data from input",
13845
+ "aria-label": "Toggle input mapper",
13846
+ onClick: () => setShowMapper((v) => !v),
13847
+ className: `rounded-md p-1.5 transition-colors hover:bg-muted ${showMapper ? "text-primary" : "text-muted-foreground"} hover:text-foreground`,
13848
+ "data-testid": "qc-toggle-mapper",
13849
+ children: /* @__PURE__ */ jsx(Icon, { icon: "mdi:tray-arrow-down", className: "size-4" })
13850
+ }
13851
+ ),
13852
+ /* @__PURE__ */ jsx(
13853
+ "button",
13854
+ {
13855
+ type: "button",
13856
+ title: "Open full editor",
13857
+ "aria-label": "Open full editor",
13858
+ onClick: expandToNdv,
13859
+ className: "rounded-md p-1.5 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground",
13860
+ "data-testid": "qc-expand",
13861
+ children: /* @__PURE__ */ jsx(Icon, { icon: "mdi:arrow-expand", className: "size-4" })
13862
+ }
13863
+ ),
13864
+ /* @__PURE__ */ jsx(
13865
+ "button",
13866
+ {
13867
+ type: "button",
13868
+ title: "Close",
13869
+ "aria-label": "Close",
13870
+ onClick: close,
13871
+ className: "rounded-md p-1.5 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground",
13872
+ "data-testid": "qc-close",
13873
+ children: /* @__PURE__ */ jsx(Icon, { icon: "mdi:close", className: "size-4" })
13874
+ }
13875
+ )
13876
+ ] }),
13877
+ /* @__PURE__ */ jsx(
13878
+ "div",
13879
+ {
13880
+ className: "min-h-0 flex-1 space-y-4 overflow-auto p-3",
13881
+ "data-testid": "qc-params",
13882
+ onFocusCapture: (e) => {
13883
+ const tag = e.target.tagName;
13884
+ if (sourceIds.length > 0 && (tag === "INPUT" || tag === "SELECT" || tag === "TEXTAREA")) {
13885
+ setShowMapper(true);
13886
+ }
13887
+ },
13888
+ children: /* @__PURE__ */ jsx(
13889
+ NodeParamsForm,
13890
+ {
13891
+ config,
13892
+ nodeType: node.type,
13893
+ testIdPrefix: "qc"
13894
+ }
13895
+ )
13896
+ }
13897
+ ),
13898
+ /* @__PURE__ */ jsx("p", { className: "shrink-0 border-t border-border px-3 py-1.5 text-[10px] leading-snug text-muted-foreground", children: "Changes apply instantly \xB7 double-click the node for the full editor" })
13899
+ ]
13900
+ }
13901
+ )
13872
13902
  }
13873
13903
  )
13874
13904
  ] });
@@ -14894,7 +14924,7 @@ function WorkflowItem({
14894
14924
  };
14895
14925
  const requiredNodeTypes = [];
14896
14926
  try {
14897
- const { NODE_CONFIGS: NODE_CONFIGS3, ensureNodeConfigsLoaded: ensureNodeConfigsLoaded2 } = await import('./blocks-HIWIS6OD.js');
14927
+ const { NODE_CONFIGS: NODE_CONFIGS3, ensureNodeConfigsLoaded: ensureNodeConfigsLoaded2 } = await import('./blocks-MP4MLAOE.js');
14898
14928
  await ensureNodeConfigsLoaded2().catch(() => {
14899
14929
  });
14900
14930
  const workflowNodeTypes = [
@@ -15192,5 +15222,5 @@ function WorkflowBuilder() {
15192
15222
  }
15193
15223
 
15194
15224
  export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, FlowBuilderPage, FluidGridsProvider, TemplateCard, WorkflowBuilder, useFluidGridsContext, useImportWorkflowTemplate, useWorkflowTemplates };
15195
- //# sourceMappingURL=chunk-CUCRQ7BD.js.map
15196
- //# sourceMappingURL=chunk-CUCRQ7BD.js.map
15225
+ //# sourceMappingURL=chunk-SGSRBNQJ.js.map
15226
+ //# sourceMappingURL=chunk-SGSRBNQJ.js.map