@uipath/apollo-react 6.23.1 → 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.
- package/dist/canvas/components/BaseCanvas/BaseCanvas.cjs +4 -1
- package/dist/canvas/components/BaseCanvas/BaseCanvas.d.ts.map +1 -1
- package/dist/canvas/components/BaseCanvas/BaseCanvas.js +4 -1
- package/dist/canvas/components/BaseCanvas/BaseCanvas.types.d.ts +1 -0
- package/dist/canvas/components/BaseCanvas/BaseCanvas.types.d.ts.map +1 -1
- package/dist/canvas/components/BaseCanvas/CanvasProviders.cjs +10 -6
- package/dist/canvas/components/BaseCanvas/CanvasProviders.d.ts +2 -1
- package/dist/canvas/components/BaseCanvas/CanvasProviders.d.ts.map +1 -1
- package/dist/canvas/components/BaseCanvas/CanvasProviders.js +10 -6
- package/dist/canvas/components/BaseCanvas/ConnectedHandlesContext.cjs +4 -11
- package/dist/canvas/components/BaseCanvas/ConnectedHandlesContext.d.ts.map +1 -1
- package/dist/canvas/components/BaseCanvas/ConnectedHandlesContext.js +1 -8
- package/dist/canvas/components/BaseCanvas/ReadOnlyNodesContext.cjs +111 -0
- package/dist/canvas/components/BaseCanvas/ReadOnlyNodesContext.d.ts +7 -0
- package/dist/canvas/components/BaseCanvas/ReadOnlyNodesContext.d.ts.map +1 -0
- package/dist/canvas/components/BaseCanvas/ReadOnlyNodesContext.js +71 -0
- package/dist/canvas/components/BaseCanvas/index.cjs +21 -5
- package/dist/canvas/components/BaseCanvas/index.d.ts +1 -0
- package/dist/canvas/components/BaseCanvas/index.d.ts.map +1 -1
- package/dist/canvas/components/BaseCanvas/index.js +2 -1
- package/dist/canvas/components/BaseCanvas/set-utils.cjs +46 -0
- package/dist/canvas/components/BaseCanvas/set-utils.d.ts +3 -0
- package/dist/canvas/components/BaseCanvas/set-utils.d.ts.map +1 -0
- package/dist/canvas/components/BaseCanvas/set-utils.js +9 -0
- package/dist/canvas/components/CanvasLeftSidebar/CanvasLeftSidebar.cjs +245 -0
- package/dist/canvas/components/CanvasLeftSidebar/CanvasLeftSidebar.d.ts +30 -0
- package/dist/canvas/components/CanvasLeftSidebar/CanvasLeftSidebar.d.ts.map +1 -0
- package/dist/canvas/components/CanvasLeftSidebar/CanvasLeftSidebar.js +196 -0
- package/dist/canvas/components/CanvasLeftSidebar/index.cjs +51 -0
- package/dist/canvas/components/CanvasLeftSidebar/index.d.ts +3 -0
- package/dist/canvas/components/CanvasLeftSidebar/index.d.ts.map +1 -0
- package/dist/canvas/components/CanvasLeftSidebar/index.js +2 -0
- package/dist/canvas/components/CanvasTakeoverModal/CanvasTakeoverModal.cjs +156 -0
- package/dist/canvas/components/CanvasTakeoverModal/CanvasTakeoverModal.d.ts +17 -0
- package/dist/canvas/components/CanvasTakeoverModal/CanvasTakeoverModal.d.ts.map +1 -0
- package/dist/canvas/components/CanvasTakeoverModal/CanvasTakeoverModal.js +112 -0
- package/dist/canvas/components/CanvasTakeoverModal/index.cjs +36 -0
- package/dist/canvas/components/CanvasTakeoverModal/index.d.ts +3 -0
- package/dist/canvas/components/CanvasTakeoverModal/index.d.ts.map +1 -0
- package/dist/canvas/components/CanvasTakeoverModal/index.js +2 -0
- package/dist/canvas/components/NodePropertyPanel/NodePropertyPanelLayout.cjs +75 -0
- package/dist/canvas/components/NodePropertyPanel/NodePropertyPanelLayout.d.ts +9 -0
- package/dist/canvas/components/NodePropertyPanel/NodePropertyPanelLayout.d.ts.map +1 -0
- package/dist/canvas/components/NodePropertyPanel/NodePropertyPanelLayout.js +41 -0
- package/dist/canvas/components/NodePropertyPanel/index.cjs +4 -0
- package/dist/canvas/components/NodePropertyPanel/index.d.ts +1 -0
- package/dist/canvas/components/NodePropertyPanel/index.d.ts.map +1 -1
- package/dist/canvas/components/NodePropertyPanel/index.js +2 -1
- package/dist/canvas/components/ToolbarButton.cjs +3 -2
- package/dist/canvas/components/ToolbarButton.d.ts +2 -1
- package/dist/canvas/components/ToolbarButton.d.ts.map +1 -1
- package/dist/canvas/components/ToolbarButton.js +3 -2
- package/dist/canvas/components/index.cjs +66 -52
- package/dist/canvas/components/index.d.ts +2 -0
- package/dist/canvas/components/index.d.ts.map +1 -1
- package/dist/canvas/components/index.js +2 -0
- package/dist/canvas/hooks/useIsomorphicLayoutEffect.cjs +37 -0
- package/dist/canvas/hooks/useIsomorphicLayoutEffect.d.ts +3 -0
- package/dist/canvas/hooks/useIsomorphicLayoutEffect.d.ts.map +1 -0
- package/dist/canvas/hooks/useIsomorphicLayoutEffect.js +3 -0
- package/dist/canvas/hooks/useLatestRef.cjs +2 -2
- package/dist/canvas/hooks/useLatestRef.d.ts.map +1 -1
- package/dist/canvas/hooks/useLatestRef.js +2 -2
- package/dist/canvas/styles/tailwind.canvas.css +1 -1
- package/package.json +2 -2
|
@@ -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;
|
|
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;
|
|
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)(
|
|
55
|
-
|
|
56
|
-
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(
|
|
57
|
-
|
|
58
|
-
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;
|
|
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(
|
|
27
|
-
|
|
28
|
-
children: /*#__PURE__*/ jsx(
|
|
29
|
-
|
|
30
|
-
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
|
|
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;
|
|
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
|
-
|
|
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
|
|
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
|
|
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] = ()=>
|
|
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;
|
|
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 @@
|
|
|
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"}
|