@uipath/apollo-react 6.24.0 → 6.25.0

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 (32) hide show
  1. package/dist/canvas/components/BaseCanvas/BaseCanvas.cjs +4 -1
  2. package/dist/canvas/components/BaseCanvas/BaseCanvas.d.ts.map +1 -1
  3. package/dist/canvas/components/BaseCanvas/BaseCanvas.js +4 -1
  4. package/dist/canvas/components/BaseCanvas/BaseCanvas.types.d.ts +1 -0
  5. package/dist/canvas/components/BaseCanvas/BaseCanvas.types.d.ts.map +1 -1
  6. package/dist/canvas/components/BaseCanvas/CanvasProviders.cjs +10 -6
  7. package/dist/canvas/components/BaseCanvas/CanvasProviders.d.ts +2 -1
  8. package/dist/canvas/components/BaseCanvas/CanvasProviders.d.ts.map +1 -1
  9. package/dist/canvas/components/BaseCanvas/CanvasProviders.js +10 -6
  10. package/dist/canvas/components/BaseCanvas/ConnectedHandlesContext.cjs +4 -11
  11. package/dist/canvas/components/BaseCanvas/ConnectedHandlesContext.d.ts.map +1 -1
  12. package/dist/canvas/components/BaseCanvas/ConnectedHandlesContext.js +1 -8
  13. package/dist/canvas/components/BaseCanvas/ReadOnlyNodesContext.cjs +111 -0
  14. package/dist/canvas/components/BaseCanvas/ReadOnlyNodesContext.d.ts +7 -0
  15. package/dist/canvas/components/BaseCanvas/ReadOnlyNodesContext.d.ts.map +1 -0
  16. package/dist/canvas/components/BaseCanvas/ReadOnlyNodesContext.js +71 -0
  17. package/dist/canvas/components/BaseCanvas/index.cjs +21 -5
  18. package/dist/canvas/components/BaseCanvas/index.d.ts +1 -0
  19. package/dist/canvas/components/BaseCanvas/index.d.ts.map +1 -1
  20. package/dist/canvas/components/BaseCanvas/index.js +2 -1
  21. package/dist/canvas/components/BaseCanvas/set-utils.cjs +46 -0
  22. package/dist/canvas/components/BaseCanvas/set-utils.d.ts +3 -0
  23. package/dist/canvas/components/BaseCanvas/set-utils.d.ts.map +1 -0
  24. package/dist/canvas/components/BaseCanvas/set-utils.js +9 -0
  25. package/dist/canvas/hooks/useIsomorphicLayoutEffect.cjs +37 -0
  26. package/dist/canvas/hooks/useIsomorphicLayoutEffect.d.ts +3 -0
  27. package/dist/canvas/hooks/useIsomorphicLayoutEffect.d.ts.map +1 -0
  28. package/dist/canvas/hooks/useIsomorphicLayoutEffect.js +3 -0
  29. package/dist/canvas/hooks/useLatestRef.cjs +2 -2
  30. package/dist/canvas/hooks/useLatestRef.d.ts.map +1 -1
  31. package/dist/canvas/hooks/useLatestRef.js +2 -2
  32. package/package.json +3 -3
@@ -35,12 +35,14 @@ const external_BaseCanvas_hooks_cjs_namespaceObject = require("./BaseCanvas.hook
35
35
  const external_CanvasBackground_cjs_namespaceObject = require("./CanvasBackground.cjs");
36
36
  const external_CanvasProviders_cjs_namespaceObject = require("./CanvasProviders.cjs");
37
37
  const external_PanShortcutTeachingUI_cjs_namespaceObject = require("./PanShortcutTeachingUI.cjs");
38
+ const external_ReadOnlyNodesContext_cjs_namespaceObject = require("./ReadOnlyNodesContext.cjs");
38
39
  const BaseCanvasInnerComponent = (props)=>{
39
40
  const { innerRef, fitViewOptions: fitViewOptionsProps, ...canvasProps } = props;
40
41
  const fitViewOptions = fitViewOptionsProps ?? external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.fitViewOptions;
41
- const { nodes = [], edges = [], nodeTypes, edgeTypes, children, mode = 'view', showBackground = true, backgroundColor = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.background.color, backgroundSecondaryColor = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.background.bgColor, backgroundVariant = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.background.variant, backgroundGap = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.background.gap, backgroundSize = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.background.size, isDarkMode, locale, minZoom = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.zoom.min, maxZoom = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.zoom.max, defaultViewport = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.defaultViewport, defaultEdgeOptions = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.edge, stickyNoteOptions, onNodesChange, onEdgesChange, onConnect, onConnectStart, onConnectEnd, onNodeClick, onNodeDragStart, onNodeDrag, onNodeDragStop, onPaneClick, onInit, onSelectionChange, proOptions = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.pro, connectionMode = react_cjs_namespaceObject.ConnectionMode.Loose, connectionLineComponent, connectionLineStyle, deleteKeyCode = null, selectNodesOnDrag = true, nodesDraggable = true, nodesConnectable = true, elementsSelectable = true, onlyRenderVisibleElements = true, zoomOnDoubleClick = true, snapToGrid = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.snapToGrid, snapGrid = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.snapGrid, initialAutoLayout, maintainNodesInView, onToolbarAction, breakpoints, panShortcutTeachingUIMessage = 'Hold Space and drag to pan around the canvas!', ...reactFlowProps } = canvasProps;
42
+ const { nodes = [], edges = [], nodeTypes, edgeTypes, children, mode = 'view', readOnlyNodeIds, showBackground = true, backgroundColor = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.background.color, backgroundSecondaryColor = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.background.bgColor, backgroundVariant = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.background.variant, backgroundGap = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.background.gap, backgroundSize = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.background.size, isDarkMode, locale, minZoom = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.zoom.min, maxZoom = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.zoom.max, defaultViewport = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.defaultViewport, defaultEdgeOptions = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.edge, stickyNoteOptions, onNodesChange, onEdgesChange, onConnect, onConnectStart, onConnectEnd, onNodeClick, onNodeDragStart, onNodeDrag, onNodeDragStop, onPaneClick, onInit, onSelectionChange, proOptions = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.pro, connectionMode = react_cjs_namespaceObject.ConnectionMode.Loose, connectionLineComponent, connectionLineStyle, deleteKeyCode = null, selectNodesOnDrag = true, nodesDraggable = true, nodesConnectable = true, elementsSelectable = true, onlyRenderVisibleElements = true, zoomOnDoubleClick = true, snapToGrid = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.snapToGrid, snapGrid = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.snapGrid, initialAutoLayout, maintainNodesInView, onToolbarAction, breakpoints, panShortcutTeachingUIMessage = 'Hold Space and drag to pan around the canvas!', ...reactFlowProps } = canvasProps;
42
43
  const isInteractive = 'readonly' !== mode;
43
44
  const isDesignMode = 'design' === mode;
45
+ const stableReadOnlyNodeIds = (0, external_ReadOnlyNodesContext_cjs_namespaceObject.useStableNodeIdSet)(readOnlyNodeIds);
44
46
  const [reactFlowInstance, setReactFlowInstance] = (0, external_react_namespaceObject.useState)();
45
47
  const { isReady } = (0, external_BaseCanvas_hooks_cjs_namespaceObject.useAutoLayout)(nodes, initialAutoLayout, fitViewOptions);
46
48
  const { ensureNodesInView, ensureAllNodesInView, centerNode } = (0, external_BaseCanvas_hooks_cjs_namespaceObject.useEnsureNodesInView)();
@@ -76,6 +78,7 @@ const BaseCanvasInnerComponent = (props)=>{
76
78
  isDarkMode: isDarkMode,
77
79
  locale: locale,
78
80
  stickyNoteOptions: stickyNoteOptions,
81
+ readOnlyNodeIds: stableReadOnlyNodeIds,
79
82
  children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(react_cjs_namespaceObject.ReactFlow, {
80
83
  ...reactFlowProps,
81
84
  colorMode: '',
@@ -1 +1 @@
1
- {"version":3,"file":"BaseCanvas.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/BaseCanvas/BaseCanvas.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,IAAI,EACJ,IAAI,EAEL,MAAM,0CAA0C,CAAC;AAElD,OAAO,EAIL,KAAK,YAAY,EAKlB,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAgNzE,eAAO,MAAM,UAAU,EAKjB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,EAC/D,KAAK,EAAE,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG;IAC3C,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;CACpD,KACE,YAAY,CAAC"}
1
+ {"version":3,"file":"BaseCanvas.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/BaseCanvas/BaseCanvas.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,IAAI,EACJ,IAAI,EAEL,MAAM,0CAA0C,CAAC;AAElD,OAAO,EAIL,KAAK,YAAY,EAKlB,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAoNzE,eAAO,MAAM,UAAU,EAKjB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,EAC/D,KAAK,EAAE,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG;IAC3C,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;CACpD,KACE,YAAY,CAAC"}
@@ -7,12 +7,14 @@ import { useAutoLayout, useEnsureNodesInView, useMaintainNodesInView } from "./B
7
7
  import { CanvasBackground } from "./CanvasBackground.js";
8
8
  import { CanvasProviders } from "./CanvasProviders.js";
9
9
  import { PanShortcutTeachingUI } from "./PanShortcutTeachingUI.js";
10
+ import { useStableNodeIdSet } from "./ReadOnlyNodesContext.js";
10
11
  const BaseCanvasInnerComponent = (props)=>{
11
12
  const { innerRef, fitViewOptions: fitViewOptionsProps, ...canvasProps } = props;
12
13
  const fitViewOptions = fitViewOptionsProps ?? BASE_CANVAS_DEFAULTS.fitViewOptions;
13
- const { nodes = [], edges = [], nodeTypes, edgeTypes, children, mode = 'view', showBackground = true, backgroundColor = BASE_CANVAS_DEFAULTS.background.color, backgroundSecondaryColor = BASE_CANVAS_DEFAULTS.background.bgColor, backgroundVariant = BASE_CANVAS_DEFAULTS.background.variant, backgroundGap = BASE_CANVAS_DEFAULTS.background.gap, backgroundSize = BASE_CANVAS_DEFAULTS.background.size, isDarkMode, locale, minZoom = BASE_CANVAS_DEFAULTS.zoom.min, maxZoom = BASE_CANVAS_DEFAULTS.zoom.max, defaultViewport = BASE_CANVAS_DEFAULTS.defaultViewport, defaultEdgeOptions = BASE_CANVAS_DEFAULTS.edge, stickyNoteOptions, onNodesChange, onEdgesChange, onConnect, onConnectStart, onConnectEnd, onNodeClick, onNodeDragStart, onNodeDrag, onNodeDragStop, onPaneClick, onInit, onSelectionChange, proOptions = BASE_CANVAS_DEFAULTS.pro, connectionMode = ConnectionMode.Loose, connectionLineComponent, connectionLineStyle, deleteKeyCode = null, selectNodesOnDrag = true, nodesDraggable = true, nodesConnectable = true, elementsSelectable = true, onlyRenderVisibleElements = true, zoomOnDoubleClick = true, snapToGrid = BASE_CANVAS_DEFAULTS.snapToGrid, snapGrid = BASE_CANVAS_DEFAULTS.snapGrid, initialAutoLayout, maintainNodesInView, onToolbarAction, breakpoints, panShortcutTeachingUIMessage = 'Hold Space and drag to pan around the canvas!', ...reactFlowProps } = canvasProps;
14
+ const { nodes = [], edges = [], nodeTypes, edgeTypes, children, mode = 'view', readOnlyNodeIds, showBackground = true, backgroundColor = BASE_CANVAS_DEFAULTS.background.color, backgroundSecondaryColor = BASE_CANVAS_DEFAULTS.background.bgColor, backgroundVariant = BASE_CANVAS_DEFAULTS.background.variant, backgroundGap = BASE_CANVAS_DEFAULTS.background.gap, backgroundSize = BASE_CANVAS_DEFAULTS.background.size, isDarkMode, locale, minZoom = BASE_CANVAS_DEFAULTS.zoom.min, maxZoom = BASE_CANVAS_DEFAULTS.zoom.max, defaultViewport = BASE_CANVAS_DEFAULTS.defaultViewport, defaultEdgeOptions = BASE_CANVAS_DEFAULTS.edge, stickyNoteOptions, onNodesChange, onEdgesChange, onConnect, onConnectStart, onConnectEnd, onNodeClick, onNodeDragStart, onNodeDrag, onNodeDragStop, onPaneClick, onInit, onSelectionChange, proOptions = BASE_CANVAS_DEFAULTS.pro, connectionMode = ConnectionMode.Loose, connectionLineComponent, connectionLineStyle, deleteKeyCode = null, selectNodesOnDrag = true, nodesDraggable = true, nodesConnectable = true, elementsSelectable = true, onlyRenderVisibleElements = true, zoomOnDoubleClick = true, snapToGrid = BASE_CANVAS_DEFAULTS.snapToGrid, snapGrid = BASE_CANVAS_DEFAULTS.snapGrid, initialAutoLayout, maintainNodesInView, onToolbarAction, breakpoints, panShortcutTeachingUIMessage = 'Hold Space and drag to pan around the canvas!', ...reactFlowProps } = canvasProps;
14
15
  const isInteractive = 'readonly' !== mode;
15
16
  const isDesignMode = 'design' === mode;
17
+ const stableReadOnlyNodeIds = useStableNodeIdSet(readOnlyNodeIds);
16
18
  const [reactFlowInstance, setReactFlowInstance] = useState();
17
19
  const { isReady } = useAutoLayout(nodes, initialAutoLayout, fitViewOptions);
18
20
  const { ensureNodesInView, ensureAllNodesInView, centerNode } = useEnsureNodesInView();
@@ -48,6 +50,7 @@ const BaseCanvasInnerComponent = (props)=>{
48
50
  isDarkMode: isDarkMode,
49
51
  locale: locale,
50
52
  stickyNoteOptions: stickyNoteOptions,
53
+ readOnlyNodeIds: stableReadOnlyNodeIds,
51
54
  children: /*#__PURE__*/ jsxs(ReactFlow, {
52
55
  ...reactFlowProps,
53
56
  colorMode: '',
@@ -16,6 +16,7 @@ export interface BaseCanvasFitViewOptions {
16
16
  }
17
17
  export interface BaseCanvasProps<NodeType extends Node = Node, EdgeType extends Edge = Edge> extends ReactFlowProps<NodeType, EdgeType> {
18
18
  mode?: 'design' | 'readonly' | 'view';
19
+ readOnlyNodeIds?: ReadonlySet<string> | readonly string[];
19
20
  stickyNoteOptions?: StickyNoteCanvasOptions;
20
21
  children?: ReactNode;
21
22
  showBackground?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"BaseCanvas.types.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/BaseCanvas/BaseCanvas.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,IAAI,EACJ,IAAI,EACJ,iBAAiB,EACjB,cAAc,EACf,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AAMtF,MAAM,WAAW,wBAAwB;IAOvC,OAAO,CAAC,EACJ,MAAM,GACN;QACE,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IAON,QAAQ,CAAC,EAAE,MAAM,CAAC;IAMlB,OAAO,CAAC,EAAE,MAAM,CAAC;IAMjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AASD,MAAM,WAAW,eAAe,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,CACzF,SAAQ,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAe1C,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;IAMtC,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;IAO5C,QAAQ,CAAC,EAAE,SAAS,CAAC;IAOrB,cAAc,CAAC,EAAE,OAAO,CAAC;IAKzB,eAAe,CAAC,EAAE,MAAM,CAAC;IAKzB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAOlC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IAOtC,aAAa,CAAC,EAAE,MAAM,CAAC;IAOvB,cAAc,CAAC,EAAE,MAAM,CAAC;IAcxB,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAkB/C,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAM/B,4BAA4B,CAAC,EAAE,MAAM,CAAC;IAUtC,cAAc,CAAC,EAAE,wBAAwB,CAAC;IAK1C,eAAe,CAAC,EAAE,oBAAoB,CAAC;IAMvC,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAW1B,UAAU,CAAC,EAAE,OAAO,CAAC;IAOrB,MAAM,CAAC,EAAE,eAAe,CAAC;CAC1B;AAMD,MAAM,WAAW,wBAAwB;IAKvC,OAAO,CAAC,EAAE,MAAM,CAAC;IAMjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAMlB,OAAO,CAAC,EAAE,MAAM,CAAC;IAMjB,OAAO,CAAC,EAAE,MAAM,CAAC;IAOjB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AASD,MAAM,WAAW,aAAa,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI;IAgBvF,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAa/E,oBAAoB,CAAC,OAAO,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAiB/D,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAyBrE,SAAS,EAAE,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,SAAS,CAAC;CAC9D"}
1
+ {"version":3,"file":"BaseCanvas.types.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/BaseCanvas/BaseCanvas.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,IAAI,EACJ,IAAI,EACJ,iBAAiB,EACjB,cAAc,EACf,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AAMtF,MAAM,WAAW,wBAAwB;IAOvC,OAAO,CAAC,EACJ,MAAM,GACN;QACE,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IAON,QAAQ,CAAC,EAAE,MAAM,CAAC;IAMlB,OAAO,CAAC,EAAE,MAAM,CAAC;IAMjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AASD,MAAM,WAAW,eAAe,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,CACzF,SAAQ,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAe1C,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;IAgBtC,eAAe,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,MAAM,EAAE,CAAC;IAM1D,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;IAO5C,QAAQ,CAAC,EAAE,SAAS,CAAC;IAOrB,cAAc,CAAC,EAAE,OAAO,CAAC;IAKzB,eAAe,CAAC,EAAE,MAAM,CAAC;IAKzB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAOlC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IAOtC,aAAa,CAAC,EAAE,MAAM,CAAC;IAOvB,cAAc,CAAC,EAAE,MAAM,CAAC;IAcxB,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAkB/C,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAM/B,4BAA4B,CAAC,EAAE,MAAM,CAAC;IAUtC,cAAc,CAAC,EAAE,wBAAwB,CAAC;IAK1C,eAAe,CAAC,EAAE,oBAAoB,CAAC;IAMvC,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAW1B,UAAU,CAAC,EAAE,OAAO,CAAC;IAOrB,MAAM,CAAC,EAAE,eAAe,CAAC;CAC1B;AAMD,MAAM,WAAW,wBAAwB;IAKvC,OAAO,CAAC,EAAE,MAAM,CAAC;IAMjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAMlB,OAAO,CAAC,EAAE,MAAM,CAAC;IAMjB,OAAO,CAAC,EAAE,MAAM,CAAC;IAOjB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AASD,MAAM,WAAW,aAAa,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI;IAgBvF,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAa/E,oBAAoB,CAAC,OAAO,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAiB/D,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAyBrE,SAAS,EAAE,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,SAAS,CAAC;CAC9D"}
@@ -35,8 +35,9 @@ const StickyNoteCanvasOptionsContext_cjs_namespaceObject = require("../StickyNot
35
35
  const external_BaseCanvasModeProvider_cjs_namespaceObject = require("./BaseCanvasModeProvider.cjs");
36
36
  const external_CanvasThemeContext_cjs_namespaceObject = require("./CanvasThemeContext.cjs");
37
37
  const external_ConnectedHandlesContext_cjs_namespaceObject = require("./ConnectedHandlesContext.cjs");
38
+ const external_ReadOnlyNodesContext_cjs_namespaceObject = require("./ReadOnlyNodesContext.cjs");
38
39
  const external_SelectionStateContext_cjs_namespaceObject = require("./SelectionStateContext.cjs");
39
- function CanvasProviders({ nodes, edges, mode, isDarkMode, locale, stickyNoteOptions, children }) {
40
+ function CanvasProviders({ nodes, edges, mode, isDarkMode, locale, stickyNoteOptions, readOnlyNodeIds, children }) {
40
41
  return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(index_cjs_namespaceObject.ApI18nProvider, {
41
42
  component: "canvas",
42
43
  locale: locale,
@@ -51,11 +52,14 @@ function CanvasProviders({ nodes, edges, mode, isDarkMode, locale, stickyNoteOpt
51
52
  children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(crossings_index_cjs_namespaceObject.EdgeCrossingsProvider, {
52
53
  children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_BaseCanvasModeProvider_cjs_namespaceObject.BaseCanvasModeProvider, {
53
54
  mode: mode,
54
- children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(StickyNoteCanvasOptionsContext_cjs_namespaceObject.StickyNoteCanvasOptionsProvider, {
55
- options: stickyNoteOptions,
56
- children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_SelectionStateContext_cjs_namespaceObject.SelectionStateProvider, {
57
- nodes: nodes,
58
- children: children
55
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_ReadOnlyNodesContext_cjs_namespaceObject.ReadOnlyNodesProvider, {
56
+ readOnlyNodeIds: readOnlyNodeIds,
57
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(StickyNoteCanvasOptionsContext_cjs_namespaceObject.StickyNoteCanvasOptionsProvider, {
58
+ options: stickyNoteOptions,
59
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_SelectionStateContext_cjs_namespaceObject.SelectionStateProvider, {
60
+ nodes: nodes,
61
+ children: children
62
+ })
59
63
  })
60
64
  })
61
65
  })
@@ -10,7 +10,8 @@ interface CanvasProvidersProps {
10
10
  isDarkMode?: boolean;
11
11
  locale?: BaseCanvasProps['locale'];
12
12
  stickyNoteOptions?: StickyNoteCanvasOptions;
13
+ readOnlyNodeIds?: ReadonlySet<string>;
13
14
  }
14
- export declare function CanvasProviders({ nodes, edges, mode, isDarkMode, locale, stickyNoteOptions, children, }: CanvasProvidersProps): import("react/jsx-runtime").JSX.Element;
15
+ export declare function CanvasProviders({ nodes, edges, mode, isDarkMode, locale, stickyNoteOptions, readOnlyNodeIds, children, }: CanvasProvidersProps): import("react/jsx-runtime").JSX.Element;
15
16
  export {};
16
17
  //# sourceMappingURL=CanvasProviders.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CanvasProviders.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/BaseCanvas/CanvasProviders.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,0CAA0C,CAAC;AAE3E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACtF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAM1D,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;IACnC,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;CAC7C;AAQD,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,KAAK,EACL,IAAI,EACJ,UAAU,EACV,MAAM,EACN,iBAAiB,EACjB,QAAQ,GACT,EAAE,oBAAoB,2CAoBtB"}
1
+ {"version":3,"file":"CanvasProviders.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/BaseCanvas/CanvasProviders.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,0CAA0C,CAAC;AAE3E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACtF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAO1D,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;IACnC,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;IAC5C,eAAe,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACvC;AAQD,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,KAAK,EACL,IAAI,EACJ,UAAU,EACV,MAAM,EACN,iBAAiB,EACjB,eAAe,EACf,QAAQ,GACT,EAAE,oBAAoB,2CAsBtB"}
@@ -7,8 +7,9 @@ import { StickyNoteCanvasOptionsProvider } from "../StickyNoteNode/StickyNoteCan
7
7
  import { BaseCanvasModeProvider } from "./BaseCanvasModeProvider.js";
8
8
  import { CanvasThemeProvider } from "./CanvasThemeContext.js";
9
9
  import { ConnectedHandlesProvider } from "./ConnectedHandlesContext.js";
10
+ import { ReadOnlyNodesProvider } from "./ReadOnlyNodesContext.js";
10
11
  import { SelectionStateProvider } from "./SelectionStateContext.js";
11
- function CanvasProviders({ nodes, edges, mode, isDarkMode, locale, stickyNoteOptions, children }) {
12
+ function CanvasProviders({ nodes, edges, mode, isDarkMode, locale, stickyNoteOptions, readOnlyNodeIds, children }) {
12
13
  return /*#__PURE__*/ jsx(ApI18nProvider, {
13
14
  component: "canvas",
14
15
  locale: locale,
@@ -23,11 +24,14 @@ function CanvasProviders({ nodes, edges, mode, isDarkMode, locale, stickyNoteOpt
23
24
  children: /*#__PURE__*/ jsx(EdgeCrossingsProvider, {
24
25
  children: /*#__PURE__*/ jsx(BaseCanvasModeProvider, {
25
26
  mode: mode,
26
- children: /*#__PURE__*/ jsx(StickyNoteCanvasOptionsProvider, {
27
- options: stickyNoteOptions,
28
- children: /*#__PURE__*/ jsx(SelectionStateProvider, {
29
- nodes: nodes,
30
- children: children
27
+ children: /*#__PURE__*/ jsx(ReadOnlyNodesProvider, {
28
+ readOnlyNodeIds: readOnlyNodeIds,
29
+ children: /*#__PURE__*/ jsx(StickyNoteCanvasOptionsProvider, {
30
+ options: stickyNoteOptions,
31
+ children: /*#__PURE__*/ jsx(SelectionStateProvider, {
32
+ nodes: nodes,
33
+ children: children
34
+ })
31
35
  })
32
36
  })
33
37
  })
@@ -29,7 +29,7 @@ __webpack_require__.d(__webpack_exports__, {
29
29
  });
30
30
  const jsx_runtime_namespaceObject = require("react/jsx-runtime");
31
31
  const external_react_namespaceObject = require("react");
32
- const EMPTY_SET = Object.freeze(new Set());
32
+ const external_set_utils_cjs_namespaceObject = require("./set-utils.cjs");
33
33
  class ConnectedHandlesStore {
34
34
  map = new Map();
35
35
  listeners = new Map();
@@ -46,7 +46,7 @@ class ConnectedHandlesStore {
46
46
  };
47
47
  }
48
48
  getSnapshot(nodeId) {
49
- return this.map.get(nodeId) ?? EMPTY_SET;
49
+ return this.map.get(nodeId) ?? external_set_utils_cjs_namespaceObject.EMPTY_SET;
50
50
  }
51
51
  update(edges) {
52
52
  const nextMap = buildConnectedHandlesMap(edges);
@@ -55,7 +55,7 @@ class ConnectedHandlesStore {
55
55
  const changedNodeIds = new Set();
56
56
  for (const [nodeId, nextSet] of nextMap){
57
57
  const prevSet = prevMap.get(nodeId);
58
- if (setsEqual(prevSet, nextSet)) finalMap.set(nodeId, prevSet);
58
+ if ((0, external_set_utils_cjs_namespaceObject.setsEqual)(prevSet, nextSet)) finalMap.set(nodeId, prevSet);
59
59
  else {
60
60
  finalMap.set(nodeId, nextSet);
61
61
  changedNodeIds.add(nodeId);
@@ -70,13 +70,6 @@ class ConnectedHandlesStore {
70
70
  }
71
71
  }
72
72
  }
73
- function setsEqual(a, b) {
74
- if (a === b) return true;
75
- if (!a || !b) return false;
76
- if (a.size !== b.size) return false;
77
- for (const value of a)if (!b.has(value)) return false;
78
- return true;
79
- }
80
73
  function buildConnectedHandlesMap(edges) {
81
74
  const map = new Map();
82
75
  for (const edge of edges){
@@ -122,7 +115,7 @@ function useConnectedHandles(nodeId) {
122
115
  store,
123
116
  nodeId
124
117
  ]);
125
- const getSnapshot = (0, external_react_namespaceObject.useCallback)(()=>store?.getSnapshot(nodeId) ?? EMPTY_SET, [
118
+ const getSnapshot = (0, external_react_namespaceObject.useCallback)(()=>store?.getSnapshot(nodeId) ?? external_set_utils_cjs_namespaceObject.EMPTY_SET, [
126
119
  store,
127
120
  nodeId
128
121
  ]);
@@ -1 +1 @@
1
- {"version":3,"file":"ConnectedHandlesContext.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/BaseCanvas/ConnectedHandlesContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0CAA0C,CAAC;AACrE,OAAO,EAEL,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AA6If,wBAAgB,wBAAwB,CAAC,EACvC,KAAK,EACL,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;CACrB,2CAgBA;AAMD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAgBvE"}
1
+ {"version":3,"file":"ConnectedHandlesContext.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/BaseCanvas/ConnectedHandlesContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0CAA0C,CAAC;AACrE,OAAO,EAEL,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AA8Hf,wBAAgB,wBAAwB,CAAC,EACvC,KAAK,EACL,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;CACrB,2CAgBA;AAMD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAgBvE"}
@@ -1,6 +1,6 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { createContext, useCallback, useContext, useEffect, useRef, useSyncExternalStore } from "react";
3
- const EMPTY_SET = Object.freeze(new Set());
3
+ import { EMPTY_SET, setsEqual } from "./set-utils.js";
4
4
  class ConnectedHandlesStore {
5
5
  map = new Map();
6
6
  listeners = new Map();
@@ -41,13 +41,6 @@ class ConnectedHandlesStore {
41
41
  }
42
42
  }
43
43
  }
44
- function setsEqual(a, b) {
45
- if (a === b) return true;
46
- if (!a || !b) return false;
47
- if (a.size !== b.size) return false;
48
- for (const value of a)if (!b.has(value)) return false;
49
- return true;
50
- }
51
44
  function buildConnectedHandlesMap(edges) {
52
45
  const map = new Map();
53
46
  for (const edge of edges){
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ useIsNodeReadOnly: ()=>useIsNodeReadOnly,
28
+ ReadOnlyNodesProvider: ()=>ReadOnlyNodesProvider,
29
+ useStableNodeIdSet: ()=>useStableNodeIdSet
30
+ });
31
+ const jsx_runtime_namespaceObject = require("react/jsx-runtime");
32
+ const external_react_namespaceObject = require("react");
33
+ const useIsomorphicLayoutEffect_cjs_namespaceObject = require("../../hooks/useIsomorphicLayoutEffect.cjs");
34
+ const external_set_utils_cjs_namespaceObject = require("./set-utils.cjs");
35
+ class ReadOnlyNodesStore {
36
+ ids;
37
+ listeners = new Map();
38
+ constructor(initial = external_set_utils_cjs_namespaceObject.EMPTY_SET){
39
+ this.ids = 0 === initial.size ? external_set_utils_cjs_namespaceObject.EMPTY_SET : new Set(initial);
40
+ }
41
+ subscribe(nodeId, listener) {
42
+ let nodeListeners = this.listeners.get(nodeId);
43
+ if (!nodeListeners) {
44
+ nodeListeners = new Set();
45
+ this.listeners.set(nodeId, nodeListeners);
46
+ }
47
+ nodeListeners.add(listener);
48
+ return ()=>{
49
+ nodeListeners.delete(listener);
50
+ if (0 === nodeListeners.size) this.listeners.delete(nodeId);
51
+ };
52
+ }
53
+ isReadOnly(nodeId) {
54
+ return this.ids.has(nodeId);
55
+ }
56
+ update(next) {
57
+ const prev = this.ids;
58
+ if ((0, external_set_utils_cjs_namespaceObject.setsEqual)(prev, next)) return;
59
+ const changedNodeIds = new Set();
60
+ for (const id of next)if (!prev.has(id)) changedNodeIds.add(id);
61
+ for (const id of prev)if (!next.has(id)) changedNodeIds.add(id);
62
+ this.ids = 0 === next.size ? external_set_utils_cjs_namespaceObject.EMPTY_SET : new Set(next);
63
+ for (const nodeId of changedNodeIds){
64
+ const nodeListeners = this.listeners.get(nodeId);
65
+ if (nodeListeners) for (const listener of nodeListeners)listener();
66
+ }
67
+ }
68
+ }
69
+ const ReadOnlyNodesContext = /*#__PURE__*/ (0, external_react_namespaceObject.createContext)(null);
70
+ function useStableNodeIdSet(ids) {
71
+ const ref = (0, external_react_namespaceObject.useRef)(external_set_utils_cjs_namespaceObject.EMPTY_SET);
72
+ const next = void 0 === ids ? external_set_utils_cjs_namespaceObject.EMPTY_SET : ids instanceof Set ? ids : new Set(ids);
73
+ if (!(0, external_set_utils_cjs_namespaceObject.setsEqual)(ref.current, next)) ref.current = 0 === next.size ? external_set_utils_cjs_namespaceObject.EMPTY_SET : new Set(next);
74
+ return ref.current;
75
+ }
76
+ const ReadOnlyNodesProvider = ({ children, readOnlyNodeIds })=>{
77
+ const storeRef = (0, external_react_namespaceObject.useRef)(void 0);
78
+ if (!storeRef.current) storeRef.current = new ReadOnlyNodesStore(readOnlyNodeIds);
79
+ (0, useIsomorphicLayoutEffect_cjs_namespaceObject.useIsomorphicLayoutEffect)(()=>{
80
+ storeRef.current?.update(readOnlyNodeIds ?? external_set_utils_cjs_namespaceObject.EMPTY_SET);
81
+ }, [
82
+ readOnlyNodeIds
83
+ ]);
84
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(ReadOnlyNodesContext.Provider, {
85
+ value: storeRef.current,
86
+ children: children
87
+ });
88
+ };
89
+ function useIsNodeReadOnly(nodeId) {
90
+ const store = (0, external_react_namespaceObject.useContext)(ReadOnlyNodesContext);
91
+ const subscribe = (0, external_react_namespaceObject.useCallback)((onStoreChange)=>store?.subscribe(nodeId, onStoreChange) ?? (()=>{}), [
92
+ store,
93
+ nodeId
94
+ ]);
95
+ const getSnapshot = (0, external_react_namespaceObject.useCallback)(()=>store?.isReadOnly(nodeId) ?? false, [
96
+ store,
97
+ nodeId
98
+ ]);
99
+ return (0, external_react_namespaceObject.useSyncExternalStore)(subscribe, getSnapshot, getSnapshot);
100
+ }
101
+ exports.ReadOnlyNodesProvider = __webpack_exports__.ReadOnlyNodesProvider;
102
+ exports.useIsNodeReadOnly = __webpack_exports__.useIsNodeReadOnly;
103
+ exports.useStableNodeIdSet = __webpack_exports__.useStableNodeIdSet;
104
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
105
+ "ReadOnlyNodesProvider",
106
+ "useIsNodeReadOnly",
107
+ "useStableNodeIdSet"
108
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
109
+ Object.defineProperty(exports, '__esModule', {
110
+ value: true
111
+ });
@@ -0,0 +1,7 @@
1
+ import type React from 'react';
2
+ export declare function useStableNodeIdSet(ids: ReadonlySet<string> | readonly string[] | undefined): ReadonlySet<string>;
3
+ export declare const ReadOnlyNodesProvider: React.FC<React.PropsWithChildren<{
4
+ readOnlyNodeIds?: ReadonlySet<string>;
5
+ }>>;
6
+ export declare function useIsNodeReadOnly(nodeId: string): boolean;
7
+ //# sourceMappingURL=ReadOnlyNodesContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReadOnlyNodesContext.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/BaseCanvas/ReadOnlyNodesContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAuF/B,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,GACvD,WAAW,CAAC,MAAM,CAAC,CASrB;AAMD,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAC1C,KAAK,CAAC,iBAAiB,CAAC;IAAE,eAAe,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC,CAoBnE,CAAC;AAOF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAUzD"}
@@ -0,0 +1,71 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { createContext, useCallback, useContext, useRef, useSyncExternalStore } from "react";
3
+ import { useIsomorphicLayoutEffect } from "../../hooks/useIsomorphicLayoutEffect.js";
4
+ import { EMPTY_SET, setsEqual } from "./set-utils.js";
5
+ class ReadOnlyNodesStore {
6
+ ids;
7
+ listeners = new Map();
8
+ constructor(initial = EMPTY_SET){
9
+ this.ids = 0 === initial.size ? EMPTY_SET : new Set(initial);
10
+ }
11
+ subscribe(nodeId, listener) {
12
+ let nodeListeners = this.listeners.get(nodeId);
13
+ if (!nodeListeners) {
14
+ nodeListeners = new Set();
15
+ this.listeners.set(nodeId, nodeListeners);
16
+ }
17
+ nodeListeners.add(listener);
18
+ return ()=>{
19
+ nodeListeners.delete(listener);
20
+ if (0 === nodeListeners.size) this.listeners.delete(nodeId);
21
+ };
22
+ }
23
+ isReadOnly(nodeId) {
24
+ return this.ids.has(nodeId);
25
+ }
26
+ update(next) {
27
+ const prev = this.ids;
28
+ if (setsEqual(prev, next)) return;
29
+ const changedNodeIds = new Set();
30
+ for (const id of next)if (!prev.has(id)) changedNodeIds.add(id);
31
+ for (const id of prev)if (!next.has(id)) changedNodeIds.add(id);
32
+ this.ids = 0 === next.size ? EMPTY_SET : new Set(next);
33
+ for (const nodeId of changedNodeIds){
34
+ const nodeListeners = this.listeners.get(nodeId);
35
+ if (nodeListeners) for (const listener of nodeListeners)listener();
36
+ }
37
+ }
38
+ }
39
+ const ReadOnlyNodesContext = /*#__PURE__*/ createContext(null);
40
+ function useStableNodeIdSet(ids) {
41
+ const ref = useRef(EMPTY_SET);
42
+ const next = void 0 === ids ? EMPTY_SET : ids instanceof Set ? ids : new Set(ids);
43
+ if (!setsEqual(ref.current, next)) ref.current = 0 === next.size ? EMPTY_SET : new Set(next);
44
+ return ref.current;
45
+ }
46
+ const ReadOnlyNodesProvider = ({ children, readOnlyNodeIds })=>{
47
+ const storeRef = useRef(void 0);
48
+ if (!storeRef.current) storeRef.current = new ReadOnlyNodesStore(readOnlyNodeIds);
49
+ useIsomorphicLayoutEffect(()=>{
50
+ storeRef.current?.update(readOnlyNodeIds ?? EMPTY_SET);
51
+ }, [
52
+ readOnlyNodeIds
53
+ ]);
54
+ return /*#__PURE__*/ jsx(ReadOnlyNodesContext.Provider, {
55
+ value: storeRef.current,
56
+ children: children
57
+ });
58
+ };
59
+ function useIsNodeReadOnly(nodeId) {
60
+ const store = useContext(ReadOnlyNodesContext);
61
+ const subscribe = useCallback((onStoreChange)=>store?.subscribe(nodeId, onStoreChange) ?? (()=>{}), [
62
+ store,
63
+ nodeId
64
+ ]);
65
+ const getSnapshot = useCallback(()=>store?.isReadOnly(nodeId) ?? false, [
66
+ store,
67
+ nodeId
68
+ ]);
69
+ return useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
70
+ }
71
+ export { ReadOnlyNodesProvider, useIsNodeReadOnly, useStableNodeIdSet };
@@ -27,6 +27,9 @@ var __webpack_modules__ = {
27
27
  "./ConnectedHandlesContext" (module) {
28
28
  module.exports = require("./ConnectedHandlesContext.cjs");
29
29
  },
30
+ "./ReadOnlyNodesContext" (module) {
31
+ module.exports = require("./ReadOnlyNodesContext.cjs");
32
+ },
30
33
  "./SelectionStateContext" (module) {
31
34
  module.exports = require("./SelectionStateContext.cjs");
32
35
  }
@@ -75,12 +78,14 @@ var __webpack_exports__ = {};
75
78
  (()=>{
76
79
  __webpack_require__.r(__webpack_exports__);
77
80
  __webpack_require__.d(__webpack_exports__, {
78
- BaseCanvas: ()=>_BaseCanvas__rspack_import_0.BaseCanvas
81
+ BaseCanvas: ()=>_BaseCanvas__rspack_import_0.BaseCanvas,
82
+ useIsNodeReadOnly: ()=>_ReadOnlyNodesContext__rspack_import_9.useIsNodeReadOnly
79
83
  });
80
84
  var _BaseCanvas__rspack_import_0 = __webpack_require__("./BaseCanvas?388c");
81
85
  var _BaseCanvas_constants__rspack_import_1 = __webpack_require__("./BaseCanvas.constants");
82
86
  var __rspack_reexport = {};
83
87
  for(const __rspack_import_key in _BaseCanvas_constants__rspack_import_1)if ([
88
+ "useIsNodeReadOnly",
84
89
  "BaseCanvas",
85
90
  "default"
86
91
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_BaseCanvas_constants__rspack_import_1[__rspack_import_key];
@@ -88,6 +93,7 @@ var __webpack_exports__ = {};
88
93
  var _BaseCanvas_hooks__rspack_import_2 = __webpack_require__("./BaseCanvas.hooks");
89
94
  var __rspack_reexport = {};
90
95
  for(const __rspack_import_key in _BaseCanvas_hooks__rspack_import_2)if ([
96
+ "useIsNodeReadOnly",
91
97
  "BaseCanvas",
92
98
  "default"
93
99
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_BaseCanvas_hooks__rspack_import_2[__rspack_import_key];
@@ -95,6 +101,7 @@ var __webpack_exports__ = {};
95
101
  var _BaseCanvas_types__rspack_import_3 = __webpack_require__("./BaseCanvas.types");
96
102
  var __rspack_reexport = {};
97
103
  for(const __rspack_import_key in _BaseCanvas_types__rspack_import_3)if ([
104
+ "useIsNodeReadOnly",
98
105
  "BaseCanvas",
99
106
  "default"
100
107
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_BaseCanvas_types__rspack_import_3[__rspack_import_key];
@@ -102,6 +109,7 @@ var __webpack_exports__ = {};
102
109
  var _BaseCanvasModeProvider__rspack_import_4 = __webpack_require__("./BaseCanvasModeProvider");
103
110
  var __rspack_reexport = {};
104
111
  for(const __rspack_import_key in _BaseCanvasModeProvider__rspack_import_4)if ([
112
+ "useIsNodeReadOnly",
105
113
  "BaseCanvas",
106
114
  "default"
107
115
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_BaseCanvasModeProvider__rspack_import_4[__rspack_import_key];
@@ -109,6 +117,7 @@ var __webpack_exports__ = {};
109
117
  var _CanvasBackground__rspack_import_5 = __webpack_require__("./CanvasBackground");
110
118
  var __rspack_reexport = {};
111
119
  for(const __rspack_import_key in _CanvasBackground__rspack_import_5)if ([
120
+ "useIsNodeReadOnly",
112
121
  "BaseCanvas",
113
122
  "default"
114
123
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_CanvasBackground__rspack_import_5[__rspack_import_key];
@@ -116,6 +125,7 @@ var __webpack_exports__ = {};
116
125
  var _CanvasProviders__rspack_import_6 = __webpack_require__("./CanvasProviders");
117
126
  var __rspack_reexport = {};
118
127
  for(const __rspack_import_key in _CanvasProviders__rspack_import_6)if ([
128
+ "useIsNodeReadOnly",
119
129
  "BaseCanvas",
120
130
  "default"
121
131
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_CanvasProviders__rspack_import_6[__rspack_import_key];
@@ -123,6 +133,7 @@ var __webpack_exports__ = {};
123
133
  var _CanvasThemeContext__rspack_import_7 = __webpack_require__("./CanvasThemeContext");
124
134
  var __rspack_reexport = {};
125
135
  for(const __rspack_import_key in _CanvasThemeContext__rspack_import_7)if ([
136
+ "useIsNodeReadOnly",
126
137
  "BaseCanvas",
127
138
  "default"
128
139
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_CanvasThemeContext__rspack_import_7[__rspack_import_key];
@@ -130,21 +141,26 @@ var __webpack_exports__ = {};
130
141
  var _ConnectedHandlesContext__rspack_import_8 = __webpack_require__("./ConnectedHandlesContext");
131
142
  var __rspack_reexport = {};
132
143
  for(const __rspack_import_key in _ConnectedHandlesContext__rspack_import_8)if ([
144
+ "useIsNodeReadOnly",
133
145
  "BaseCanvas",
134
146
  "default"
135
147
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_ConnectedHandlesContext__rspack_import_8[__rspack_import_key];
136
148
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
137
- var _SelectionStateContext__rspack_import_9 = __webpack_require__("./SelectionStateContext");
149
+ var _ReadOnlyNodesContext__rspack_import_9 = __webpack_require__("./ReadOnlyNodesContext");
150
+ var _SelectionStateContext__rspack_import_10 = __webpack_require__("./SelectionStateContext");
138
151
  var __rspack_reexport = {};
139
- for(const __rspack_import_key in _SelectionStateContext__rspack_import_9)if ([
152
+ for(const __rspack_import_key in _SelectionStateContext__rspack_import_10)if ([
153
+ "useIsNodeReadOnly",
140
154
  "BaseCanvas",
141
155
  "default"
142
- ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_SelectionStateContext__rspack_import_9[__rspack_import_key];
156
+ ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_SelectionStateContext__rspack_import_10[__rspack_import_key];
143
157
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
144
158
  })();
145
159
  exports.BaseCanvas = __webpack_exports__.BaseCanvas;
160
+ exports.useIsNodeReadOnly = __webpack_exports__.useIsNodeReadOnly;
146
161
  for(var __rspack_i in __webpack_exports__)if (-1 === [
147
- "BaseCanvas"
162
+ "BaseCanvas",
163
+ "useIsNodeReadOnly"
148
164
  ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
149
165
  Object.defineProperty(exports, '__esModule', {
150
166
  value: true
@@ -7,5 +7,6 @@ export * from './CanvasBackground';
7
7
  export * from './CanvasProviders';
8
8
  export * from './CanvasThemeContext';
9
9
  export * from './ConnectedHandlesContext';
10
+ export { useIsNodeReadOnly } from './ReadOnlyNodesContext';
10
11
  export * from './SelectionStateContext';
11
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/BaseCanvas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/BaseCanvas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAG1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,cAAc,yBAAyB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { BaseCanvas } from "./BaseCanvas.js";
2
+ import { useIsNodeReadOnly } from "./ReadOnlyNodesContext.js";
2
3
  export * from "./BaseCanvas.constants.js";
3
4
  export * from "./BaseCanvas.hooks.js";
4
5
  export * from "./BaseCanvas.types.js";
@@ -8,4 +9,4 @@ export * from "./CanvasProviders.js";
8
9
  export * from "./CanvasThemeContext.js";
9
10
  export * from "./ConnectedHandlesContext.js";
10
11
  export * from "./SelectionStateContext.js";
11
- export { BaseCanvas };
12
+ export { BaseCanvas, useIsNodeReadOnly };
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ EMPTY_SET: ()=>EMPTY_SET,
28
+ setsEqual: ()=>setsEqual
29
+ });
30
+ const EMPTY_SET = new Set();
31
+ function setsEqual(a, b) {
32
+ if (a === b) return true;
33
+ if (!a || !b) return false;
34
+ if (a.size !== b.size) return false;
35
+ for (const value of a)if (!b.has(value)) return false;
36
+ return true;
37
+ }
38
+ exports.EMPTY_SET = __webpack_exports__.EMPTY_SET;
39
+ exports.setsEqual = __webpack_exports__.setsEqual;
40
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
41
+ "EMPTY_SET",
42
+ "setsEqual"
43
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
44
+ Object.defineProperty(exports, '__esModule', {
45
+ value: true
46
+ });
@@ -0,0 +1,3 @@
1
+ export declare const EMPTY_SET: ReadonlySet<string>;
2
+ export declare function setsEqual(a?: ReadonlySet<string>, b?: ReadonlySet<string>): boolean;
3
+ //# sourceMappingURL=set-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-utils.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/BaseCanvas/set-utils.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,SAAS,EAAE,WAAW,CAAC,MAAM,CAAqB,CAAC;AAGhE,wBAAgB,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAUnF"}
@@ -0,0 +1,9 @@
1
+ const EMPTY_SET = new Set();
2
+ function setsEqual(a, b) {
3
+ if (a === b) return true;
4
+ if (!a || !b) return false;
5
+ if (a.size !== b.size) return false;
6
+ for (const value of a)if (!b.has(value)) return false;
7
+ return true;
8
+ }
9
+ export { EMPTY_SET, setsEqual };
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ useIsomorphicLayoutEffect: ()=>useIsomorphicLayoutEffect
28
+ });
29
+ const external_react_namespaceObject = require("react");
30
+ const useIsomorphicLayoutEffect = "u" < typeof window ? external_react_namespaceObject.useEffect : external_react_namespaceObject.useLayoutEffect;
31
+ exports.useIsomorphicLayoutEffect = __webpack_exports__.useIsomorphicLayoutEffect;
32
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
33
+ "useIsomorphicLayoutEffect"
34
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
35
+ Object.defineProperty(exports, '__esModule', {
36
+ value: true
37
+ });
@@ -0,0 +1,3 @@
1
+ import { useEffect } from 'react';
2
+ export declare const useIsomorphicLayoutEffect: typeof useEffect;
3
+ //# sourceMappingURL=useIsomorphicLayoutEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIsomorphicLayoutEffect.d.ts","sourceRoot":"","sources":["../../../src/canvas/hooks/useIsomorphicLayoutEffect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAmB,MAAM,OAAO,CAAC;AAQnD,eAAO,MAAM,yBAAyB,kBACuB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { useEffect, useLayoutEffect } from "react";
2
+ const useIsomorphicLayoutEffect = "u" < typeof window ? useEffect : useLayoutEffect;
3
+ export { useIsomorphicLayoutEffect };
@@ -27,10 +27,10 @@ __webpack_require__.d(__webpack_exports__, {
27
27
  useLatestRef: ()=>useLatestRef
28
28
  });
29
29
  const external_react_namespaceObject = require("react");
30
- const useIsomorphicLayoutEffect = "u" > typeof window ? external_react_namespaceObject.useLayoutEffect : external_react_namespaceObject.useEffect;
30
+ const external_useIsomorphicLayoutEffect_cjs_namespaceObject = require("./useIsomorphicLayoutEffect.cjs");
31
31
  function useLatestRef(value) {
32
32
  const ref = (0, external_react_namespaceObject.useRef)(value);
33
- useIsomorphicLayoutEffect(()=>{
33
+ (0, external_useIsomorphicLayoutEffect_cjs_namespaceObject.useIsomorphicLayoutEffect)(()=>{
34
34
  ref.current = value;
35
35
  }, [
36
36
  value
@@ -1 +1 @@
1
- {"version":3,"file":"useLatestRef.d.ts","sourceRoot":"","sources":["../../../src/canvas/hooks/useLatestRef.ts"],"names":[],"mappings":"AAIA,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,gCAMvC"}
1
+ {"version":3,"file":"useLatestRef.d.ts","sourceRoot":"","sources":["../../../src/canvas/hooks/useLatestRef.ts"],"names":[],"mappings":"AAGA,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,gCAMvC"}
@@ -1,5 +1,5 @@
1
- import { useEffect, useLayoutEffect, useRef } from "react";
2
- const useIsomorphicLayoutEffect = "u" > typeof window ? useLayoutEffect : useEffect;
1
+ import { useRef } from "react";
2
+ import { useIsomorphicLayoutEffect } from "./useIsomorphicLayoutEffect.js";
3
3
  function useLatestRef(value) {
4
4
  const ref = useRef(value);
5
5
  useIsomorphicLayoutEffect(()=>{
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uipath/apollo-react",
3
- "version": "6.24.0",
3
+ "version": "6.25.0",
4
4
  "description": "Apollo Design System - React component library with Material UI theming",
5
5
  "repository": {
6
6
  "type": "git",
@@ -220,9 +220,9 @@
220
220
  "use-sync-external-store": "^1.2.0",
221
221
  "zod": "^4.3.5",
222
222
  "zustand": "^5.0.9",
223
+ "@uipath/apollo-core": "5.13.0",
223
224
  "@uipath/apollo-ui-icons": "1.0.0",
224
- "@uipath/apollo-wind": "2.35.0",
225
- "@uipath/apollo-core": "5.13.0"
225
+ "@uipath/apollo-wind": "2.35.0"
226
226
  },
227
227
  "devDependencies": {
228
228
  "@lingui/cli": "^5.6.1",