system-canvas-standalone 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/system-canvas.js
CHANGED
|
@@ -12759,7 +12759,7 @@ var SystemCanvas = (() => {
|
|
|
12759
12759
|
render: () => render,
|
|
12760
12760
|
themes: () => themes
|
|
12761
12761
|
});
|
|
12762
|
-
var
|
|
12762
|
+
var import_react24 = __toESM(require_react(), 1);
|
|
12763
12763
|
var import_client = __toESM(require_client(), 1);
|
|
12764
12764
|
|
|
12765
12765
|
// ../react/dist/components/SystemCanvas.js
|
|
@@ -14649,15 +14649,19 @@ var SystemCanvas = (() => {
|
|
|
14649
14649
|
// ../react/dist/hooks/useCanvasInteraction.js
|
|
14650
14650
|
var import_react2 = __toESM(require_react(), 1);
|
|
14651
14651
|
function useCanvasInteraction(options) {
|
|
14652
|
-
const { onNodeClick, onNodeDoubleClick, onEdgeClick, onEdgeDoubleClick, onContextMenu, onNavigableNodeClick, viewport, editable, onSelect, onBeginEdit, onSelectEdge, onBeginEditEdge } = options;
|
|
14652
|
+
const { onNodeClick, onNodeDoubleClick, onEdgeClick, onEdgeDoubleClick, onContextMenu, onNavigableNodeClick, viewport, editable, onSelect, onToggleSelect, onBeginEdit, onSelectEdge, onBeginEditEdge } = options;
|
|
14653
14653
|
const handleNodeClick = (0, import_react2.useCallback)((node, event) => {
|
|
14654
14654
|
event.stopPropagation();
|
|
14655
14655
|
if (editable) {
|
|
14656
|
-
|
|
14657
|
-
|
|
14656
|
+
if (event.shiftKey && onToggleSelect) {
|
|
14657
|
+
onToggleSelect(node.id);
|
|
14658
|
+
} else {
|
|
14659
|
+
onSelect?.(node.id);
|
|
14660
|
+
onSelectEdge?.(null);
|
|
14661
|
+
}
|
|
14658
14662
|
}
|
|
14659
14663
|
onNodeClick?.(node);
|
|
14660
|
-
}, [editable, onNodeClick, onSelect, onSelectEdge]);
|
|
14664
|
+
}, [editable, onNodeClick, onSelect, onToggleSelect, onSelectEdge]);
|
|
14661
14665
|
const handleNodeDoubleClick = (0, import_react2.useCallback)((node, event) => {
|
|
14662
14666
|
event.stopPropagation();
|
|
14663
14667
|
onNodeDoubleClick?.(node);
|
|
@@ -14736,7 +14740,7 @@ var SystemCanvas = (() => {
|
|
|
14736
14740
|
var import_react3 = __toESM(require_react(), 1);
|
|
14737
14741
|
var DRAG_THRESHOLD = 3;
|
|
14738
14742
|
function useNodeDrag(options) {
|
|
14739
|
-
const { viewport, nodesRef, onCommit, svgRef, canDropNodeOn, onNodeDrop } = options;
|
|
14743
|
+
const { viewport, nodesRef, onCommit, svgRef, canDropNodeOn, onNodeDrop, selectedIdsRef } = options;
|
|
14740
14744
|
const [dragOverrides, setDragOverrides] = (0, import_react3.useState)(() => /* @__PURE__ */ new Map());
|
|
14741
14745
|
const [isDragging, setIsDragging] = (0, import_react3.useState)(false);
|
|
14742
14746
|
const [dropTargetId, setDropTargetId] = (0, import_react3.useState)(null);
|
|
@@ -14748,6 +14752,8 @@ var SystemCanvas = (() => {
|
|
|
14748
14752
|
onNodeDropRef.current = onNodeDrop;
|
|
14749
14753
|
const svgRefRef = (0, import_react3.useRef)(svgRef);
|
|
14750
14754
|
svgRefRef.current = svgRef;
|
|
14755
|
+
const emptySetRef = (0, import_react3.useRef)(/* @__PURE__ */ new Set());
|
|
14756
|
+
const effectiveSelectedIdsRef = selectedIdsRef ?? emptySetRef;
|
|
14751
14757
|
const dropTargetIdRef = (0, import_react3.useRef)(null);
|
|
14752
14758
|
const computeDropTarget = (0, import_react3.useCallback)((clientX, clientY) => {
|
|
14753
14759
|
const cb = canDropNodeOnRef.current;
|
|
@@ -14869,12 +14875,22 @@ var SystemCanvas = (() => {
|
|
|
14869
14875
|
return;
|
|
14870
14876
|
event.stopPropagation();
|
|
14871
14877
|
const moving = /* @__PURE__ */ new Map();
|
|
14872
|
-
|
|
14873
|
-
if (
|
|
14874
|
-
const
|
|
14875
|
-
|
|
14876
|
-
if (
|
|
14877
|
-
moving.set(
|
|
14878
|
+
const sel = effectiveSelectedIdsRef.current;
|
|
14879
|
+
if (sel && sel.size > 1 && sel.has(node.id) && nodesRef.current) {
|
|
14880
|
+
for (const id2 of sel) {
|
|
14881
|
+
const n = nodesRef.current.find((r) => r.id === id2);
|
|
14882
|
+
if (n) {
|
|
14883
|
+
moving.set(id2, { startX: n.x, startY: n.y });
|
|
14884
|
+
}
|
|
14885
|
+
}
|
|
14886
|
+
} else {
|
|
14887
|
+
moving.set(node.id, { startX: node.x, startY: node.y });
|
|
14888
|
+
if (node.type === "group" && nodesRef.current) {
|
|
14889
|
+
const children2 = getGroupChildren(node, nodesRef.current);
|
|
14890
|
+
for (const c of children2) {
|
|
14891
|
+
if (!moving.has(c.id)) {
|
|
14892
|
+
moving.set(c.id, { startX: c.x, startY: c.y });
|
|
14893
|
+
}
|
|
14878
14894
|
}
|
|
14879
14895
|
}
|
|
14880
14896
|
}
|
|
@@ -18092,7 +18108,7 @@ var SystemCanvas = (() => {
|
|
|
18092
18108
|
|
|
18093
18109
|
// ../react/dist/hooks/useViewport.js
|
|
18094
18110
|
function useViewport(options) {
|
|
18095
|
-
const { minZoom, maxZoom, defaultViewport, onViewportChange } = options;
|
|
18111
|
+
const { minZoom, maxZoom, defaultViewport, onViewportChange, marqueeActiveRef } = options;
|
|
18096
18112
|
const svgRef = (0, import_react7.useRef)(null);
|
|
18097
18113
|
const groupRef = (0, import_react7.useRef)(null);
|
|
18098
18114
|
const viewport = (0, import_react7.useRef)(defaultViewport ?? { x: 0, y: 0, zoom: 1 });
|
|
@@ -18105,6 +18121,8 @@ var SystemCanvas = (() => {
|
|
|
18105
18121
|
if (!svg || !group)
|
|
18106
18122
|
return;
|
|
18107
18123
|
const zoomBehavior = zoom_default2().scaleExtent([minZoom, maxZoom]).filter((event) => {
|
|
18124
|
+
if (marqueeActiveRef?.current && event.type !== "wheel")
|
|
18125
|
+
return false;
|
|
18108
18126
|
if (event.button)
|
|
18109
18127
|
return false;
|
|
18110
18128
|
if (event.type === "wheel")
|
|
@@ -20760,6 +20778,12 @@ var SystemCanvas = (() => {
|
|
|
20760
20778
|
}, getViewport: getViewportState, containerWidth: containerSize.width, containerHeight: containerSize.height, render: renderNodeToolbar }), editable && (renderAddNodeButton ? renderAddNodeButton(renderProps) : (0, import_jsx_runtime28.jsx)(AddNodeButton, { ...renderProps })), nodeContextMenu && (0, import_jsx_runtime28.jsx)(NodeContextMenuOverlay, { state: contextMenuState, config: nodeContextMenu, theme, onClose: () => setContextMenuState(null) })] });
|
|
20761
20779
|
});
|
|
20762
20780
|
|
|
20781
|
+
// ../react/dist/hooks/useMultiSelect.js
|
|
20782
|
+
var import_react22 = __toESM(require_react(), 1);
|
|
20783
|
+
|
|
20784
|
+
// ../react/dist/hooks/useMultiSelectClipboard.js
|
|
20785
|
+
var import_react23 = __toESM(require_react(), 1);
|
|
20786
|
+
|
|
20763
20787
|
// src/index.tsx
|
|
20764
20788
|
function resolveThemeOption(theme) {
|
|
20765
20789
|
if (typeof theme === "string") {
|
|
@@ -20868,7 +20892,7 @@ var SystemCanvas = (() => {
|
|
|
20868
20892
|
onEdgeUpdate: handleEdgeUpdate,
|
|
20869
20893
|
onEdgeDelete: handleEdgeDelete
|
|
20870
20894
|
};
|
|
20871
|
-
root2.render(
|
|
20895
|
+
root2.render(import_react24.default.createElement(SystemCanvas, props));
|
|
20872
20896
|
};
|
|
20873
20897
|
doRender();
|
|
20874
20898
|
return {
|