@burdenoff/fluidgrids-fe-sdk 2026.730.3 → 2026.731.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.
@@ -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, useSaveWorkflow, useNodeExecution, getNodeDetail, ConnectionSelector, NODES_METADATA, NODE_CONFIGS, isNodeConfigsInitialized, NODES, NodePropertyPanel } from './chunk-JTET2M65.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, ConnectionSelector, mergeStickyNotes, buildStickyNode, NODES_METADATA, NODE_CONFIGS, isNodeConfigsInitialized, NODES, NodePropertyPanel } from './chunk-TH764V3S.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, useDeactivateWorkflow } from './chunk-42PCKNPK.js';
@@ -2282,10 +2282,6 @@ function getStoreNodeAvailability(node, isInstalled) {
2282
2282
  const isDraggable = available && userSelectableOperationCount(nodeType) <= 1;
2283
2283
  return { nodeType, isPrebuilt, isDraggable };
2284
2284
  }
2285
-
2286
- // src/builder/contants/symbols.ts
2287
- var NODE_TYPE_DRAG_DATA_FORMAT = "application/flow-builder.node-type";
2288
- var NODE_OPERATION_DRAG_DATA_FORMAT = "application/flow-builder.node-operation";
2289
2285
  function StoreNodeListItem({
2290
2286
  name,
2291
2287
  description,
@@ -4078,7 +4074,7 @@ function DesktopSidebarFragment({
4078
4074
  if (nodes) {
4079
4075
  const requiredNodeTypes = [];
4080
4076
  try {
4081
- const { NODE_CONFIGS: NODE_CONFIGS3, ensureNodeConfigsLoaded: ensureNodeConfigsLoaded2 } = await import('./blocks-M44L2H7I.js');
4077
+ const { NODE_CONFIGS: NODE_CONFIGS3, ensureNodeConfigsLoaded: ensureNodeConfigsLoaded2 } = await import('./blocks-UUACLZOU.js');
4082
4078
  await ensureNodeConfigsLoaded2().catch(() => {
4083
4079
  });
4084
4080
  const workflowNodeTypes = [
@@ -10529,6 +10525,23 @@ function useIsValidConnection(nodes, edges) {
10529
10525
  [nodes, edges]
10530
10526
  );
10531
10527
  }
10528
+ function useInsertStickyNote() {
10529
+ const { addNodes, getNodes, screenToFlowPosition, updateNode } = useReactFlow();
10530
+ return useCallback(() => {
10531
+ const position = screenToFlowPosition({
10532
+ x: window.innerWidth / 2,
10533
+ y: window.innerHeight / 2
10534
+ });
10535
+ position.x += Math.round((Math.random() - 0.5) * 40);
10536
+ position.y += Math.round((Math.random() - 0.5) * 40);
10537
+ getNodes().forEach((n) => {
10538
+ if (n.selected) updateNode(n.id, { selected: false });
10539
+ });
10540
+ const sticky = buildStickyNode(position);
10541
+ addNodes(sticky);
10542
+ return sticky;
10543
+ }, [addNodes, getNodes, screenToFlowPosition, updateNode]);
10544
+ }
10532
10545
  var ZOOM_DURATION = 500;
10533
10546
  var NODE_WIDTH = 220;
10534
10547
  var NODE_HEIGHT = 80;
@@ -10581,8 +10594,23 @@ function CanvasControls() {
10581
10594
  return next;
10582
10595
  });
10583
10596
  }, [setEdges]);
10597
+ const insertStickyNote = useInsertStickyNote();
10598
+ useEffect(() => {
10599
+ if (isReadOnly) return;
10600
+ const onKeyDown = (e) => {
10601
+ if (!e.shiftKey || e.key.toLowerCase() !== "s") return;
10602
+ if (e.metaKey || e.ctrlKey || e.altKey) return;
10603
+ const t = e.target;
10604
+ if (t && (t.tagName === "INPUT" || t.tagName === "TEXTAREA" || t.isContentEditable))
10605
+ return;
10606
+ e.preventDefault();
10607
+ insertStickyNote();
10608
+ };
10609
+ window.addEventListener("keydown", onKeyDown);
10610
+ return () => window.removeEventListener("keydown", onKeyDown);
10611
+ }, [insertStickyNote, isReadOnly]);
10584
10612
  const tidyUp = useCallback(() => {
10585
- const nodes = getNodes();
10613
+ const nodes = getNodes().filter((n) => n.type !== STICKY_NOTE_TYPE);
10586
10614
  const edges = getEdges();
10587
10615
  if (nodes.length === 0) return;
10588
10616
  const outgoing = {};
@@ -10724,7 +10752,15 @@ function CanvasControls() {
10724
10752
  )
10725
10753
  }
10726
10754
  ),
10727
- /* @__PURE__ */ jsx(ControlBtn, { title: "Tidy up layout", onClick: tidyUp, children: /* @__PURE__ */ jsx(LayoutGrid, { className: "size-4" }) })
10755
+ /* @__PURE__ */ jsx(ControlBtn, { title: "Tidy up layout", onClick: tidyUp, children: /* @__PURE__ */ jsx(LayoutGrid, { className: "size-4" }) }),
10756
+ /* @__PURE__ */ jsx(
10757
+ ControlBtn,
10758
+ {
10759
+ title: "Add sticky note (Shift+S)",
10760
+ onClick: insertStickyNote,
10761
+ children: /* @__PURE__ */ jsx(Icon, { icon: "mdi:note-plus-outline", className: "size-4" })
10762
+ }
10763
+ )
10728
10764
  ] })
10729
10765
  ]
10730
10766
  }
@@ -10918,6 +10954,7 @@ function useFlowValidator(onValidate) {
10918
10954
  let isEndConnected = false;
10919
10955
  const nodesWithEmptyTarget = [];
10920
10956
  for (const node of nodes) {
10957
+ if (node.type === STICKY_NOTE_TYPE) continue;
10921
10958
  const { outgoingEdges, incomingEdges } = findEdges(node, connectedEdges);
10922
10959
  const isTrigger = isNodeTrigger(node);
10923
10960
  if (isTrigger) {
@@ -14039,7 +14076,7 @@ function WorkflowItem({
14039
14076
  };
14040
14077
  const requiredNodeTypes = [];
14041
14078
  try {
14042
- const { NODE_CONFIGS: NODE_CONFIGS3, ensureNodeConfigsLoaded: ensureNodeConfigsLoaded2 } = await import('./blocks-M44L2H7I.js');
14079
+ const { NODE_CONFIGS: NODE_CONFIGS3, ensureNodeConfigsLoaded: ensureNodeConfigsLoaded2 } = await import('./blocks-UUACLZOU.js');
14043
14080
  await ensureNodeConfigsLoaded2().catch(() => {
14044
14081
  });
14045
14082
  const workflowNodeTypes = [
@@ -14142,6 +14179,9 @@ function WorkflowItem({
14142
14179
  if (defData) {
14143
14180
  const workflowState = {
14144
14181
  ...defData,
14182
+ // Sticky notes are stored under a separate definition key — merge
14183
+ // them back onto the canvas alongside the executable nodes.
14184
+ nodes: mergeStickyNotes(defData),
14145
14185
  id: result?.workflowKey ?? "",
14146
14186
  workflowKey: result?.workflowKey ?? "",
14147
14187
  version: result?.version ?? "",
@@ -14308,5 +14348,5 @@ function WorkflowBuilder() {
14308
14348
  }
14309
14349
 
14310
14350
  export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, FlowBuilderPage, FluidGridsProvider, TemplateCard, WorkflowBuilder, useFluidGridsContext, useImportWorkflowTemplate, useWorkflowTemplates };
14311
- //# sourceMappingURL=chunk-DZTLVUGS.js.map
14312
- //# sourceMappingURL=chunk-DZTLVUGS.js.map
14351
+ //# sourceMappingURL=chunk-UHUNDVWH.js.map
14352
+ //# sourceMappingURL=chunk-UHUNDVWH.js.map