system-canvas-standalone 0.2.37 → 0.2.39
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 +41 -12
- package/dist/system-canvas.js.map +1 -1
- package/dist/system-canvas.min.js +11 -11
- package/dist/system-canvas.min.js.map +1 -1
- package/package.json +3 -3
package/dist/system-canvas.js
CHANGED
|
@@ -22382,6 +22382,7 @@ var SystemCanvas = (() => {
|
|
|
22382
22382
|
// ../react/dist/components/CollaboratorsOverlay.js
|
|
22383
22383
|
var import_jsx_runtime32 = __toESM(require_jsx_runtime(), 1);
|
|
22384
22384
|
var import_react31 = __toESM(require_react(), 1);
|
|
22385
|
+
var CLIP_GUARD_MARGIN = 100;
|
|
22385
22386
|
var STYLE_ID = "system-canvas-collab-keyframes";
|
|
22386
22387
|
function ensureKeyframes() {
|
|
22387
22388
|
if (typeof document === "undefined")
|
|
@@ -22402,7 +22403,7 @@ var SystemCanvas = (() => {
|
|
|
22402
22403
|
`;
|
|
22403
22404
|
document.head.appendChild(style);
|
|
22404
22405
|
}
|
|
22405
|
-
function CollaboratorsOverlay({ collaborators, viewport, nodeMap, flashNodeIds }) {
|
|
22406
|
+
function CollaboratorsOverlay({ collaborators, viewport, nodeMap, flashNodeIds, containerWidth = Infinity, containerHeight = Infinity }) {
|
|
22406
22407
|
const keyframesInjected = (0, import_react31.useRef)(false);
|
|
22407
22408
|
if (!keyframesInjected.current) {
|
|
22408
22409
|
ensureKeyframes();
|
|
@@ -22460,27 +22461,54 @@ var SystemCanvas = (() => {
|
|
|
22460
22461
|
if (!collab.cursor)
|
|
22461
22462
|
return null;
|
|
22462
22463
|
const screen = canvasToScreen(collab.cursor.x, collab.cursor.y, viewport);
|
|
22464
|
+
if (screen.x < -CLIP_GUARD_MARGIN || screen.x > containerWidth + CLIP_GUARD_MARGIN || screen.y < -CLIP_GUARD_MARGIN || screen.y > containerHeight + CLIP_GUARD_MARGIN) {
|
|
22465
|
+
return null;
|
|
22466
|
+
}
|
|
22463
22467
|
return (0, import_jsx_runtime32.jsxs)("div", { style: {
|
|
22464
22468
|
position: "absolute",
|
|
22465
22469
|
left: screen.x,
|
|
22466
22470
|
top: screen.y,
|
|
22467
22471
|
transform: "translate(0, 0)",
|
|
22468
22472
|
userSelect: "none"
|
|
22469
|
-
}, children: [(0, import_jsx_runtime32.jsx)("svg", { width: "16", height: "20", viewBox: "0 0 16 20", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: (0, import_jsx_runtime32.jsx)("path", { d: "M1 1L1 15L5 11L8 18L10 17L7 10L13 10L1 1Z", fill: collab.color, stroke: "#fff", strokeWidth: "1.5", strokeLinejoin: "round" }) }), (0, import_jsx_runtime32.
|
|
22473
|
+
}, children: [(0, import_jsx_runtime32.jsx)("svg", { width: "16", height: "20", viewBox: "0 0 16 20", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: (0, import_jsx_runtime32.jsx)("path", { d: "M1 1L1 15L5 11L8 18L10 17L7 10L13 10L1 1Z", fill: collab.color, stroke: "#fff", strokeWidth: "1.5", strokeLinejoin: "round" }) }), (0, import_jsx_runtime32.jsxs)("div", { style: {
|
|
22470
22474
|
position: "absolute",
|
|
22471
22475
|
top: 18,
|
|
22472
22476
|
left: 8,
|
|
22473
|
-
|
|
22474
|
-
|
|
22475
|
-
|
|
22477
|
+
display: "flex",
|
|
22478
|
+
alignItems: "center",
|
|
22479
|
+
gap: 4,
|
|
22480
|
+
background: collab.color,
|
|
22476
22481
|
borderRadius: 8,
|
|
22482
|
+
padding: "1px 4px 1px 2px",
|
|
22483
|
+
boxShadow: "0 1px 3px rgba(0,0,0,0.3)",
|
|
22484
|
+
whiteSpace: "nowrap",
|
|
22485
|
+
fontFamily: "sans-serif"
|
|
22486
|
+
}, children: [(0, import_jsx_runtime32.jsx)("div", { style: {
|
|
22487
|
+
width: 16,
|
|
22488
|
+
height: 16,
|
|
22489
|
+
borderRadius: "50%",
|
|
22490
|
+
overflow: "hidden",
|
|
22491
|
+
flexShrink: 0,
|
|
22492
|
+
display: "flex",
|
|
22493
|
+
alignItems: "center",
|
|
22494
|
+
justifyContent: "center",
|
|
22495
|
+
background: collab.image ? "transparent" : collab.color
|
|
22496
|
+
}, children: collab.image ? (0, import_jsx_runtime32.jsx)("img", { src: collab.image, width: 16, height: 16, style: { objectFit: "cover", borderRadius: "50%" } }) : (0, import_jsx_runtime32.jsx)("div", { style: {
|
|
22497
|
+
width: 16,
|
|
22498
|
+
height: 16,
|
|
22499
|
+
display: "flex",
|
|
22500
|
+
alignItems: "center",
|
|
22501
|
+
justifyContent: "center",
|
|
22477
22502
|
background: collab.color,
|
|
22478
22503
|
color: "#fff",
|
|
22479
|
-
|
|
22480
|
-
|
|
22481
|
-
|
|
22482
|
-
|
|
22483
|
-
|
|
22504
|
+
fontSize: 9,
|
|
22505
|
+
fontWeight: 700
|
|
22506
|
+
}, children: collab.name ? collab.name[0].toUpperCase() : "?" }) }), (0, import_jsx_runtime32.jsx)("span", { style: {
|
|
22507
|
+
fontSize: 11,
|
|
22508
|
+
lineHeight: "16px",
|
|
22509
|
+
color: "#fff",
|
|
22510
|
+
fontWeight: 500
|
|
22511
|
+
}, children: collab.name })] })] }, `cursor-${collab.id}`);
|
|
22484
22512
|
}), Array.from(flashNodeIds.keys()).map((nodeId) => {
|
|
22485
22513
|
const node = nodeMap.get(nodeId);
|
|
22486
22514
|
if (!node)
|
|
@@ -22888,7 +22916,8 @@ var SystemCanvas = (() => {
|
|
|
22888
22916
|
navigateToRoot: () => {
|
|
22889
22917
|
navigateToBreadcrumbRef.current(0);
|
|
22890
22918
|
},
|
|
22891
|
-
getViewport: () => viewportStateRef.current ?? { x: 0, y: 0, zoom: 1 }
|
|
22919
|
+
getViewport: () => viewportStateRef.current ?? { x: 0, y: 0, zoom: 1 },
|
|
22920
|
+
getSvgElement: () => viewportHandleRef.current?.getSvgElement() ?? null
|
|
22892
22921
|
}), [forwardedRef]);
|
|
22893
22922
|
const [editingId, setEditingId] = (0, import_react33.useState)(null);
|
|
22894
22923
|
const [selectedEdgeId, setSelectedEdgeId] = (0, import_react33.useState)(null);
|
|
@@ -23612,7 +23641,7 @@ var SystemCanvas = (() => {
|
|
|
23612
23641
|
fontFamily: theme.node.fontFamily,
|
|
23613
23642
|
fontSize: 12,
|
|
23614
23643
|
backdropFilter: "blur(8px)"
|
|
23615
|
-
}, children: "Loading..." }), (0, import_jsx_runtime34.jsx)(Viewport, { ref: viewportHandleRef, nodes, edges, nodeMap, theme, edgeStyle, columns: currentCanvas.columns, rows: currentCanvas.rows, canvases, minZoom: effectiveMinZoom, maxZoom: effectiveMaxZoom, defaultViewport, panMode, autoFit, canvasRef: currentCanvasRef, handoffTransform: pendingHandoff, onHandoffApplied: handleHandoffApplied, handoffFadeMs: zoomNavConfig.fadeDuration, onViewportChange: handleViewportChange, onNodeClick: handleNodeClick, onNodeDoubleClick: handleNodeDoubleClick, onNodeNavigate: handleNodeNavigate, onEdgeClick: handleEdgeClick, onEdgeDoubleClick: handleEdgeDoubleClick, onCanvasClick: editable ? handleCanvasClick : void 0, onCanvasContextMenu: handleCanvasContextMenu, onNodeContextMenu: handleNodeContextMenu, onEdgeContextMenu: handleEdgeContextMenu, onNodePointerDown: editable ? onNodePointerDown : void 0, selectedIds: editable ? selectedIds : void 0, marqueeRect: editable ? marqueeRect : null, marqueeActiveRef: editable ? marqueeActiveRef : void 0, editingId: editable ? editingId : null, selectedEdgeId: editable ? selectedEdgeId : null, editingEdgeId: editable ? editingEdgeId : null, dragOverrides, dropTargetId, resizeOverrides, onResizeHandlePointerDown: editable ? onResizeHandlePointerDown : void 0, onEditorCommit: handleEditorCommit, onEditorCancel: handleEditorCancel, onEdgeEditorCommit: handleEdgeEditorCommit, onEdgeEditorCancel: handleEdgeEditorCancel, onEdgeWaypointUpdate: editable ? handleEdgeWaypointUpdate : void 0, pendingEdge: editable ? pendingEdge : null, onConnectionHandlePointerDown: editable ? onConnectionHandlePointerDown : void 0, edgeCreateEnabled: editable, alignmentGuides: editable ? alignmentGuides : void 0, dimmedNodeIds: dimmedIds, highlightedNodeIds: matchingIds, activeMatchNodeId: activeMatchId, viewportState: collaboratorViewport }), collaborators.length > 0 || flashNodeIds.size > 0 ? (0, import_jsx_runtime34.jsx)(CollaboratorsOverlay, { collaborators, viewport: collaboratorViewport, nodeMap, flashNodeIds }) : null, showLaneHeaders && (0, import_jsx_runtime34.jsx)(LaneHeaders, { columns: currentCanvas.columns, rows: currentCanvas.rows, theme, getViewport: getViewportState, width: containerSize.width, height: containerSize.height, pinned: laneHeaders === "pinned" }), editable && showNodeToolbar && selectedIds.size === 1 && selectedResolvedNode && !editingId && (0, import_jsx_runtime34.jsx)(NodeToolbar, { node: selectedResolvedNode, theme, onPatch: (update) => {
|
|
23644
|
+
}, children: "Loading..." }), (0, import_jsx_runtime34.jsx)(Viewport, { ref: viewportHandleRef, nodes, edges, nodeMap, theme, edgeStyle, columns: currentCanvas.columns, rows: currentCanvas.rows, canvases, minZoom: effectiveMinZoom, maxZoom: effectiveMaxZoom, defaultViewport, panMode, autoFit, canvasRef: currentCanvasRef, handoffTransform: pendingHandoff, onHandoffApplied: handleHandoffApplied, handoffFadeMs: zoomNavConfig.fadeDuration, onViewportChange: handleViewportChange, onNodeClick: handleNodeClick, onNodeDoubleClick: handleNodeDoubleClick, onNodeNavigate: handleNodeNavigate, onEdgeClick: handleEdgeClick, onEdgeDoubleClick: handleEdgeDoubleClick, onCanvasClick: editable ? handleCanvasClick : void 0, onCanvasContextMenu: handleCanvasContextMenu, onNodeContextMenu: handleNodeContextMenu, onEdgeContextMenu: handleEdgeContextMenu, onNodePointerDown: editable ? onNodePointerDown : void 0, selectedIds: editable ? selectedIds : void 0, marqueeRect: editable ? marqueeRect : null, marqueeActiveRef: editable ? marqueeActiveRef : void 0, editingId: editable ? editingId : null, selectedEdgeId: editable ? selectedEdgeId : null, editingEdgeId: editable ? editingEdgeId : null, dragOverrides, dropTargetId, resizeOverrides, onResizeHandlePointerDown: editable ? onResizeHandlePointerDown : void 0, onEditorCommit: handleEditorCommit, onEditorCancel: handleEditorCancel, onEdgeEditorCommit: handleEdgeEditorCommit, onEdgeEditorCancel: handleEdgeEditorCancel, onEdgeWaypointUpdate: editable ? handleEdgeWaypointUpdate : void 0, pendingEdge: editable ? pendingEdge : null, onConnectionHandlePointerDown: editable ? onConnectionHandlePointerDown : void 0, edgeCreateEnabled: editable, alignmentGuides: editable ? alignmentGuides : void 0, dimmedNodeIds: dimmedIds, highlightedNodeIds: matchingIds, activeMatchNodeId: activeMatchId, viewportState: collaboratorViewport }), collaborators.length > 0 || flashNodeIds.size > 0 ? (0, import_jsx_runtime34.jsx)(CollaboratorsOverlay, { collaborators, viewport: collaboratorViewport, nodeMap, flashNodeIds, containerWidth: containerSize.width, containerHeight: containerSize.height }) : null, showLaneHeaders && (0, import_jsx_runtime34.jsx)(LaneHeaders, { columns: currentCanvas.columns, rows: currentCanvas.rows, theme, getViewport: getViewportState, width: containerSize.width, height: containerSize.height, pinned: laneHeaders === "pinned" }), editable && showNodeToolbar && selectedIds.size === 1 && selectedResolvedNode && !editingId && (0, import_jsx_runtime34.jsx)(NodeToolbar, { node: selectedResolvedNode, theme, onPatch: (update) => {
|
|
23616
23645
|
wrappedOnNodeUpdate(selectedResolvedNode.id, update, currentCanvasRef);
|
|
23617
23646
|
}, onDelete: () => {
|
|
23618
23647
|
wrappedOnNodeDelete(selectedResolvedNode.id, currentCanvasRef);
|