orcasvn-react-diagrams 0.1.63 → 0.1.65
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/cjs/index.js +64 -44
- package/dist/esm/index.js +64 -44
- package/dist/esm/index.js.map +1 -1
- package/package.json +1 -1
package/dist/cjs/index.js
CHANGED
|
@@ -7752,13 +7752,13 @@ var SelectionFrame = function (props) {
|
|
|
7752
7752
|
// off();
|
|
7753
7753
|
// }
|
|
7754
7754
|
// }, [])
|
|
7755
|
-
var getMousePosition = function (event) {
|
|
7755
|
+
var getMousePosition = React.useCallback(function (event) {
|
|
7756
7756
|
var position = windowsPositionToPaperPosition({
|
|
7757
7757
|
x: event.clientX,
|
|
7758
7758
|
y: event.clientY
|
|
7759
7759
|
}, propContainer, zoom);
|
|
7760
7760
|
return position;
|
|
7761
|
-
};
|
|
7761
|
+
}, [propContainer, zoom]);
|
|
7762
7762
|
var addRectHandleMouseDown = function (event) {
|
|
7763
7763
|
event.stopPropagation();
|
|
7764
7764
|
if (!draggingCircle) {
|
|
@@ -7794,7 +7794,7 @@ var SelectionFrame = function (props) {
|
|
|
7794
7794
|
setStartY(mouseEvent.clientY);
|
|
7795
7795
|
}
|
|
7796
7796
|
}
|
|
7797
|
-
}, [draggingRect, propOnMove,
|
|
7797
|
+
}, [draggingRect, propOnMove, getMousePosition, propMovingRate, lastMoveTime, xFromMouse, yFromMouse]);
|
|
7798
7798
|
React.useEffect(function () {
|
|
7799
7799
|
var addRectHandleMouseUp = function () {
|
|
7800
7800
|
setDraggingRect(false);
|
|
@@ -7880,7 +7880,7 @@ var SelectionFrame = function (props) {
|
|
|
7880
7880
|
//logging the end of the circle handle mouse move
|
|
7881
7881
|
logger.debug('SelectionFrame: circleHandleMouseMove ended', container);
|
|
7882
7882
|
};
|
|
7883
|
-
}, [draggingCircle, width, height, curX, curY, lastMoveTime, propContainer, propMovingRate, propOnResize, propResizability, startX, startY]);
|
|
7883
|
+
}, [draggingCircle, width, height, curX, curY, lastMoveTime, propContainer, getMousePosition, propMovingRate, propOnResize, propResizability, startX, startY]);
|
|
7884
7884
|
var rectangleSize = Math.max(width, height);
|
|
7885
7885
|
var leftX = framePadding;
|
|
7886
7886
|
var topY = framePadding;
|
|
@@ -9496,18 +9496,18 @@ var Paper = function (props) {
|
|
|
9496
9496
|
var textsRef = React.useRef(texts); //Cache texts to avoid re-render when texts changed
|
|
9497
9497
|
var size = props.size;
|
|
9498
9498
|
var selectedElementAbsPosition = React.useMemo(function () { return selectedElement ? getAbsolutePosition(selectedElement) : null; }, [selectedElement, selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.position, selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.size]);
|
|
9499
|
-
var onPortMoved = props.onPortMoved, onPortSelected = props.onPortSelected, onPortMouseDown = props.onPortMouseDown, onPortMouseUp = props.onPortMouseUp, onPortsChanged = props.onPortsChanged, onPortContextMenu = props.onPortContextMenu, onElementSelected = props.onElementSelected, onElementsChanged = props.onElementsChanged, onElementContextMenu = props.onElementContextMenu, onElementMouseUp = props.onElementMouseUp, onElementMouseDown = props.onElementMouseDown, onElementMouseMove = props.onElementMouseMove, onElementMouseLeave = props.onElementMouseLeave, onElementDeleted = props.onElementDeleted, onLinksChanged = props.onLinksChanged, onLinkSelected = props.onLinkSelected, onTextSelected = props.onTextSelected, onTextsChanged = props.onTextsChanged, manuallyTriggerRenderElementHandler = props.manuallyTriggerRenderElementHandler, manuallyTriggerRenderPortHandler = props.manuallyTriggerRenderPortHandler, onCreatingPortByLinking = props.onCreatingPortByLinking, onCreatingLink = props.onCreatingLink, manuallySelectElementHandler = props.manuallySelectElementHandler, manuallyTriggerDraggingElementHandler = props.manuallyTriggerDraggingElementHandler, manuallyTriggerStartedLinkingHandler = props.manuallyTriggerStartedLinkingHandler;
|
|
9499
|
+
var onPortMoved = props.onPortMoved, onPortSelected = props.onPortSelected, onPortMouseDown = props.onPortMouseDown, onPortMouseUp = props.onPortMouseUp, onPortsChanged = props.onPortsChanged, onPortContextMenu = props.onPortContextMenu, onElementSelected = props.onElementSelected, onElementsChanged = props.onElementsChanged, onElementResized = props.onElementResized, onElementContextMenu = props.onElementContextMenu, onElementMouseUp = props.onElementMouseUp, onElementMouseDown = props.onElementMouseDown, onElementMouseMove = props.onElementMouseMove, onElementMoved = props.onElementMoved, onElementMouseLeave = props.onElementMouseLeave, onElementDeleted = props.onElementDeleted, onLinksChanged = props.onLinksChanged, onLinkSelected = props.onLinkSelected, onTextSelected = props.onTextSelected, onTextsChanged = props.onTextsChanged, manuallyTriggerRenderElementHandler = props.manuallyTriggerRenderElementHandler, manuallyTriggerRenderPortHandler = props.manuallyTriggerRenderPortHandler, onCreatingPortByLinking = props.onCreatingPortByLinking, onCreatingLink = props.onCreatingLink, manuallySelectElementHandler = props.manuallySelectElementHandler, manuallyTriggerDraggingElementHandler = props.manuallyTriggerDraggingElementHandler, manuallyTriggerStartedLinkingHandler = props.manuallyTriggerStartedLinkingHandler;
|
|
9500
9500
|
React.useEffect(function () {
|
|
9501
9501
|
zoomRef.current = zoom;
|
|
9502
9502
|
}, [zoom]);
|
|
9503
9503
|
React.useEffect(function () {
|
|
9504
|
-
setElements(props.elements);
|
|
9504
|
+
setElements(__spreadArray([], props.elements, true));
|
|
9505
9505
|
}, [props.elements]);
|
|
9506
9506
|
React.useEffect(function () {
|
|
9507
|
-
setLinks(props.links || []);
|
|
9507
|
+
setLinks(__spreadArray([], props.links || [], true));
|
|
9508
9508
|
}, [props.links]);
|
|
9509
9509
|
React.useEffect(function () {
|
|
9510
|
-
setTexts(props.texts);
|
|
9510
|
+
setTexts(__spreadArray([], props.texts, true));
|
|
9511
9511
|
}, [props.texts]);
|
|
9512
9512
|
React.useEffect(function () {
|
|
9513
9513
|
var off = manuallyTriggerRenderElementHandler(function (elementId) {
|
|
@@ -9555,10 +9555,15 @@ var Paper = function (props) {
|
|
|
9555
9555
|
};
|
|
9556
9556
|
}
|
|
9557
9557
|
}, [manuallyTriggerStartedLinkingHandler, paperEventEmitter]);
|
|
9558
|
+
var updateElementsTree = React.useCallback(function () {
|
|
9559
|
+
var parsedElementsInTree = convertElementsToTree(elements);
|
|
9560
|
+
setElementsInTree(parsedElementsInTree);
|
|
9561
|
+
}, [elements]);
|
|
9558
9562
|
//Cache elements to avoid re-render when elements changed
|
|
9559
9563
|
React.useEffect(function () {
|
|
9560
9564
|
elementsRef.current = elements;
|
|
9561
|
-
|
|
9565
|
+
updateElementsTree();
|
|
9566
|
+
}, [elements, updateElementsTree]);
|
|
9562
9567
|
//Cache links to avoid re-render when links changed
|
|
9563
9568
|
React.useEffect(function () {
|
|
9564
9569
|
linksRef.current = links;
|
|
@@ -9570,10 +9575,6 @@ var Paper = function (props) {
|
|
|
9570
9575
|
useKeyboardCommands({
|
|
9571
9576
|
element: paperContainerRef.current
|
|
9572
9577
|
});
|
|
9573
|
-
var updateElementsTree = React.useCallback(function () {
|
|
9574
|
-
var parsedElementsInTree = convertElementsToTree(elements);
|
|
9575
|
-
setElementsInTree(parsedElementsInTree);
|
|
9576
|
-
}, [elements]);
|
|
9577
9578
|
//Cache tempLink to avoid re-render when tempLink changed
|
|
9578
9579
|
React.useEffect(function () {
|
|
9579
9580
|
tempLinkRef.current = tempLink;
|
|
@@ -9581,17 +9582,16 @@ var Paper = function (props) {
|
|
|
9581
9582
|
//Listen text is selected
|
|
9582
9583
|
React.useEffect(function () {
|
|
9583
9584
|
var textSelectedListener = paperEventEmitter.onTextSelected(function (text) {
|
|
9584
|
-
var _a;
|
|
9585
9585
|
setSelectedElement(undefined);
|
|
9586
9586
|
setSelectedElementSVG(null);
|
|
9587
9587
|
setSelectedLink(undefined);
|
|
9588
9588
|
//broadcast selected text to parent component
|
|
9589
|
-
|
|
9589
|
+
onTextSelected === null || onTextSelected === void 0 ? void 0 : onTextSelected(text);
|
|
9590
9590
|
});
|
|
9591
9591
|
return function () {
|
|
9592
9592
|
textSelectedListener.off();
|
|
9593
9593
|
};
|
|
9594
|
-
}, []);
|
|
9594
|
+
}, [paperEventEmitter, onTextSelected]);
|
|
9595
9595
|
//Listen port is selected
|
|
9596
9596
|
React.useEffect(function () {
|
|
9597
9597
|
var portSelectedListener = paperEventEmitter.onPortSelected(function (port, elementId) {
|
|
@@ -9640,11 +9640,11 @@ var Paper = function (props) {
|
|
|
9640
9640
|
parentChangedCancelers.forEach(function (canceller) { return canceller === null || canceller === void 0 ? void 0 : canceller(); });
|
|
9641
9641
|
addedPortCancelers.forEach(function (canceller) { return canceller(); });
|
|
9642
9642
|
};
|
|
9643
|
-
}, [
|
|
9644
|
-
//Update elements tree when length of elements change
|
|
9645
|
-
|
|
9646
|
-
|
|
9647
|
-
}, [elements, updateElementsTree])
|
|
9643
|
+
}, [updateElementsTree, onElementsChanged]);
|
|
9644
|
+
// //Update elements tree when length of elements change
|
|
9645
|
+
// useEffect(() => {
|
|
9646
|
+
// updateElementsTree();
|
|
9647
|
+
// }, [elements, updateElementsTree])
|
|
9648
9648
|
//Get all child elements of the deleted element
|
|
9649
9649
|
var getChildOfElement = React.useCallback(function (element) {
|
|
9650
9650
|
if (!element.childrenElementsInTree)
|
|
@@ -9823,7 +9823,6 @@ var Paper = function (props) {
|
|
|
9823
9823
|
}
|
|
9824
9824
|
}, [onLinksChanged]);
|
|
9825
9825
|
var handlePortMoved = React.useCallback(function (port, elementId, oldPosition, newPosition) {
|
|
9826
|
-
var _a;
|
|
9827
9826
|
var element = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
9828
9827
|
if (element) {
|
|
9829
9828
|
//set links equals a clone links to re-render links with new position
|
|
@@ -9838,21 +9837,44 @@ var Paper = function (props) {
|
|
|
9838
9837
|
}
|
|
9839
9838
|
return link;
|
|
9840
9839
|
});
|
|
9841
|
-
setLinks(
|
|
9840
|
+
setLinks(function (prev) {
|
|
9841
|
+
return prev.map(function (link) {
|
|
9842
|
+
var _a, _b;
|
|
9843
|
+
if (link.sourceElement.id === elementId && link.sourcePort.id === port.id) {
|
|
9844
|
+
link.sourcePort.position = newPosition;
|
|
9845
|
+
}
|
|
9846
|
+
if (((_a = link.targetElement) === null || _a === void 0 ? void 0 : _a.id) === elementId && ((_b = link.targetPort) === null || _b === void 0 ? void 0 : _b.id) === port.id) {
|
|
9847
|
+
link.targetPort.position = newPosition;
|
|
9848
|
+
}
|
|
9849
|
+
return link;
|
|
9850
|
+
});
|
|
9851
|
+
});
|
|
9842
9852
|
if (onLinksChanged) {
|
|
9843
9853
|
onLinksChanged(newLinks);
|
|
9844
9854
|
}
|
|
9845
9855
|
var newElements = elementsRef.current;
|
|
9846
|
-
|
|
9847
|
-
|
|
9848
|
-
|
|
9849
|
-
|
|
9850
|
-
|
|
9851
|
-
|
|
9852
|
-
});
|
|
9856
|
+
// newElements[updatedElementIndex].ports = newElements[updatedElementIndex].ports?.map(p => {
|
|
9857
|
+
// if (p.id === port.id) {
|
|
9858
|
+
// p.position = newPosition
|
|
9859
|
+
// }
|
|
9860
|
+
// return p
|
|
9861
|
+
// })
|
|
9853
9862
|
//Update port position in element, not re-render
|
|
9854
9863
|
//To avoid re-render
|
|
9855
|
-
setElements(
|
|
9864
|
+
setElements(function (prev) {
|
|
9865
|
+
var _a;
|
|
9866
|
+
var newElements = __spreadArray([], prev, true);
|
|
9867
|
+
var updatedElement = newElements.find(function (e) { return e.id === elementId; });
|
|
9868
|
+
if (updatedElement) {
|
|
9869
|
+
updatedElement.ports = (_a = updatedElement.ports) === null || _a === void 0 ? void 0 : _a.map(function (p) {
|
|
9870
|
+
if (p.id === port.id) {
|
|
9871
|
+
p.position = newPosition;
|
|
9872
|
+
}
|
|
9873
|
+
return p;
|
|
9874
|
+
});
|
|
9875
|
+
}
|
|
9876
|
+
return newElements;
|
|
9877
|
+
});
|
|
9856
9878
|
if (onElementsChanged) {
|
|
9857
9879
|
onElementsChanged(newElements);
|
|
9858
9880
|
}
|
|
@@ -10210,6 +10232,7 @@ var Paper = function (props) {
|
|
|
10210
10232
|
}
|
|
10211
10233
|
}, [onElementMouseLeave]);
|
|
10212
10234
|
var renderElementInTree = React.useCallback(function (element) {
|
|
10235
|
+
logger.info("Rendering element tree for element ".concat(element.id));
|
|
10213
10236
|
//use the defined react element or the default Element component
|
|
10214
10237
|
var ReactElement = element.reactElement || Element$1;
|
|
10215
10238
|
return (React.createElement("g", { id: "group-of-element-".concat(element.id), key: element.id },
|
|
@@ -10224,25 +10247,22 @@ var Paper = function (props) {
|
|
|
10224
10247
|
}, objectX: selectedElementAbsPosition === null || selectedElementAbsPosition === void 0 ? void 0 : selectedElementAbsPosition.x, objectY: selectedElementAbsPosition === null || selectedElementAbsPosition === void 0 ? void 0 : selectedElementAbsPosition.y, width: selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.size.width, height: selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.size.height, zoom: zoom, draggingByDefault: autoEnabledDraggingSelectedElement,
|
|
10225
10248
|
//movingOffsetThreshold: ELEMENT_MOVING_OFFSET_THRESHOLD,
|
|
10226
10249
|
onMouseDown: function (ev) {
|
|
10227
|
-
var _a;
|
|
10228
10250
|
if (selectedElement) {
|
|
10229
10251
|
var paperPosition = windowsPositionToPaperPosition({
|
|
10230
10252
|
x: ev.clientX,
|
|
10231
10253
|
y: ev.clientY
|
|
10232
10254
|
}, paperContainerRef.current, zoomRef.current);
|
|
10233
|
-
|
|
10255
|
+
onElementMouseDown === null || onElementMouseDown === void 0 ? void 0 : onElementMouseDown(ev, selectedElement, paperPosition);
|
|
10234
10256
|
}
|
|
10235
10257
|
}, onMouseUp: function (ev) {
|
|
10236
|
-
var _a;
|
|
10237
10258
|
if (selectedElement) {
|
|
10238
10259
|
var paperPosition = windowsPositionToPaperPosition({
|
|
10239
10260
|
x: ev.clientX,
|
|
10240
10261
|
y: ev.clientY
|
|
10241
10262
|
}, paperContainerRef.current, zoomRef.current);
|
|
10242
|
-
|
|
10263
|
+
onElementMouseUp === null || onElementMouseUp === void 0 ? void 0 : onElementMouseUp(ev, selectedElement, paperPosition);
|
|
10243
10264
|
}
|
|
10244
10265
|
}, onMove: function (newX, newY) {
|
|
10245
|
-
var _a;
|
|
10246
10266
|
if (!selectedElement)
|
|
10247
10267
|
return;
|
|
10248
10268
|
var oldPosition = __assign({}, selectedElement.position);
|
|
@@ -10279,13 +10299,13 @@ var Paper = function (props) {
|
|
|
10279
10299
|
}
|
|
10280
10300
|
return link;
|
|
10281
10301
|
});
|
|
10282
|
-
|
|
10302
|
+
onLinksChanged === null || onLinksChanged === void 0 ? void 0 : onLinksChanged(newLinks);
|
|
10283
10303
|
// End updating the position of links connected to the selected element
|
|
10284
10304
|
//Set state to re-render UI with new position
|
|
10285
10305
|
setElementsInTree(function (prev) { return __spreadArray([], prev, true); });
|
|
10286
|
-
if (
|
|
10306
|
+
if (onElementMoved) {
|
|
10287
10307
|
console.log('onElementMoved', selectedElement.position, paperPosition);
|
|
10288
|
-
|
|
10308
|
+
onElementMoved(selectedElement.position, selectedElement, indexSelectedElement, paperPosition);
|
|
10289
10309
|
}
|
|
10290
10310
|
paperEventEmitter.emitElementMoved(selectedElement, oldPosition, selectedElement.position);
|
|
10291
10311
|
setMouseDownedOnPaper(false);
|
|
@@ -10298,16 +10318,16 @@ var Paper = function (props) {
|
|
|
10298
10318
|
elements[indexSelectedElement].size = newSize;
|
|
10299
10319
|
var newElements = __spreadArray([], elements, true);
|
|
10300
10320
|
setElements(newElements);
|
|
10301
|
-
if (
|
|
10302
|
-
|
|
10321
|
+
if (onElementsChanged) {
|
|
10322
|
+
onElementsChanged(newElements);
|
|
10303
10323
|
}
|
|
10304
|
-
if (
|
|
10305
|
-
|
|
10324
|
+
if (onElementResized) {
|
|
10325
|
+
onElementResized(newSize, selectedElement, indexSelectedElement);
|
|
10306
10326
|
}
|
|
10307
10327
|
paperEventEmitter.emitElementResized(selectedElement, oldSize, newSize);
|
|
10308
10328
|
setMouseDownedOnPaper(false);
|
|
10309
10329
|
} }))));
|
|
10310
|
-
}, [manuallyTriggerRenderPortHandler, handleElementClicked, handleContextMenu, handleMouseUp, handleMouseDown, handleMouseMove, handleMouseLeave, handlePortMoved, handlePortMouseDown, handlePortMouseUp, handlePortsChanged, handlePortContextMenu, handleMouseUpAtLinkedPortPlaceholder, handleElementTextChange,
|
|
10330
|
+
}, [manuallyTriggerRenderPortHandler, handleElementClicked, handleContextMenu, handleMouseUp, handleMouseDown, handleMouseMove, handleMouseLeave, handlePortMoved, handlePortMouseDown, handlePortMouseUp, handlePortsChanged, handlePortContextMenu, handleMouseUpAtLinkedPortPlaceholder, handleElementTextChange, selectedElement, selectedElementSVG, selectedElementAbsPosition === null || selectedElementAbsPosition === void 0 ? void 0 : selectedElementAbsPosition.x, selectedElementAbsPosition === null || selectedElementAbsPosition === void 0 ? void 0 : selectedElementAbsPosition.y, zoom, autoEnabledDraggingSelectedElement, elements, getChildOfElement, paperEventEmitter, onElementResized, onElementsChanged, onElementMoved, onElementMouseDown, onElementMouseUp, onLinksChanged]);
|
|
10311
10331
|
var ElementsInTree = React.useMemo(function () {
|
|
10312
10332
|
return elementsInTree.map(function (element, index) {
|
|
10313
10333
|
return renderElementInTree(element);
|
package/dist/esm/index.js
CHANGED
|
@@ -7748,13 +7748,13 @@ var SelectionFrame = function (props) {
|
|
|
7748
7748
|
// off();
|
|
7749
7749
|
// }
|
|
7750
7750
|
// }, [])
|
|
7751
|
-
var getMousePosition = function (event) {
|
|
7751
|
+
var getMousePosition = useCallback(function (event) {
|
|
7752
7752
|
var position = windowsPositionToPaperPosition({
|
|
7753
7753
|
x: event.clientX,
|
|
7754
7754
|
y: event.clientY
|
|
7755
7755
|
}, propContainer, zoom);
|
|
7756
7756
|
return position;
|
|
7757
|
-
};
|
|
7757
|
+
}, [propContainer, zoom]);
|
|
7758
7758
|
var addRectHandleMouseDown = function (event) {
|
|
7759
7759
|
event.stopPropagation();
|
|
7760
7760
|
if (!draggingCircle) {
|
|
@@ -7790,7 +7790,7 @@ var SelectionFrame = function (props) {
|
|
|
7790
7790
|
setStartY(mouseEvent.clientY);
|
|
7791
7791
|
}
|
|
7792
7792
|
}
|
|
7793
|
-
}, [draggingRect, propOnMove,
|
|
7793
|
+
}, [draggingRect, propOnMove, getMousePosition, propMovingRate, lastMoveTime, xFromMouse, yFromMouse]);
|
|
7794
7794
|
useEffect(function () {
|
|
7795
7795
|
var addRectHandleMouseUp = function () {
|
|
7796
7796
|
setDraggingRect(false);
|
|
@@ -7876,7 +7876,7 @@ var SelectionFrame = function (props) {
|
|
|
7876
7876
|
//logging the end of the circle handle mouse move
|
|
7877
7877
|
logger.debug('SelectionFrame: circleHandleMouseMove ended', container);
|
|
7878
7878
|
};
|
|
7879
|
-
}, [draggingCircle, width, height, curX, curY, lastMoveTime, propContainer, propMovingRate, propOnResize, propResizability, startX, startY]);
|
|
7879
|
+
}, [draggingCircle, width, height, curX, curY, lastMoveTime, propContainer, getMousePosition, propMovingRate, propOnResize, propResizability, startX, startY]);
|
|
7880
7880
|
var rectangleSize = Math.max(width, height);
|
|
7881
7881
|
var leftX = framePadding;
|
|
7882
7882
|
var topY = framePadding;
|
|
@@ -9492,18 +9492,18 @@ var Paper = function (props) {
|
|
|
9492
9492
|
var textsRef = useRef(texts); //Cache texts to avoid re-render when texts changed
|
|
9493
9493
|
var size = props.size;
|
|
9494
9494
|
var selectedElementAbsPosition = useMemo(function () { return selectedElement ? getAbsolutePosition(selectedElement) : null; }, [selectedElement, selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.position, selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.size]);
|
|
9495
|
-
var onPortMoved = props.onPortMoved, onPortSelected = props.onPortSelected, onPortMouseDown = props.onPortMouseDown, onPortMouseUp = props.onPortMouseUp, onPortsChanged = props.onPortsChanged, onPortContextMenu = props.onPortContextMenu, onElementSelected = props.onElementSelected, onElementsChanged = props.onElementsChanged, onElementContextMenu = props.onElementContextMenu, onElementMouseUp = props.onElementMouseUp, onElementMouseDown = props.onElementMouseDown, onElementMouseMove = props.onElementMouseMove, onElementMouseLeave = props.onElementMouseLeave, onElementDeleted = props.onElementDeleted, onLinksChanged = props.onLinksChanged, onLinkSelected = props.onLinkSelected, onTextSelected = props.onTextSelected, onTextsChanged = props.onTextsChanged, manuallyTriggerRenderElementHandler = props.manuallyTriggerRenderElementHandler, manuallyTriggerRenderPortHandler = props.manuallyTriggerRenderPortHandler, onCreatingPortByLinking = props.onCreatingPortByLinking, onCreatingLink = props.onCreatingLink, manuallySelectElementHandler = props.manuallySelectElementHandler, manuallyTriggerDraggingElementHandler = props.manuallyTriggerDraggingElementHandler, manuallyTriggerStartedLinkingHandler = props.manuallyTriggerStartedLinkingHandler;
|
|
9495
|
+
var onPortMoved = props.onPortMoved, onPortSelected = props.onPortSelected, onPortMouseDown = props.onPortMouseDown, onPortMouseUp = props.onPortMouseUp, onPortsChanged = props.onPortsChanged, onPortContextMenu = props.onPortContextMenu, onElementSelected = props.onElementSelected, onElementsChanged = props.onElementsChanged, onElementResized = props.onElementResized, onElementContextMenu = props.onElementContextMenu, onElementMouseUp = props.onElementMouseUp, onElementMouseDown = props.onElementMouseDown, onElementMouseMove = props.onElementMouseMove, onElementMoved = props.onElementMoved, onElementMouseLeave = props.onElementMouseLeave, onElementDeleted = props.onElementDeleted, onLinksChanged = props.onLinksChanged, onLinkSelected = props.onLinkSelected, onTextSelected = props.onTextSelected, onTextsChanged = props.onTextsChanged, manuallyTriggerRenderElementHandler = props.manuallyTriggerRenderElementHandler, manuallyTriggerRenderPortHandler = props.manuallyTriggerRenderPortHandler, onCreatingPortByLinking = props.onCreatingPortByLinking, onCreatingLink = props.onCreatingLink, manuallySelectElementHandler = props.manuallySelectElementHandler, manuallyTriggerDraggingElementHandler = props.manuallyTriggerDraggingElementHandler, manuallyTriggerStartedLinkingHandler = props.manuallyTriggerStartedLinkingHandler;
|
|
9496
9496
|
useEffect(function () {
|
|
9497
9497
|
zoomRef.current = zoom;
|
|
9498
9498
|
}, [zoom]);
|
|
9499
9499
|
useEffect(function () {
|
|
9500
|
-
setElements(props.elements);
|
|
9500
|
+
setElements(__spreadArray([], props.elements, true));
|
|
9501
9501
|
}, [props.elements]);
|
|
9502
9502
|
useEffect(function () {
|
|
9503
|
-
setLinks(props.links || []);
|
|
9503
|
+
setLinks(__spreadArray([], props.links || [], true));
|
|
9504
9504
|
}, [props.links]);
|
|
9505
9505
|
useEffect(function () {
|
|
9506
|
-
setTexts(props.texts);
|
|
9506
|
+
setTexts(__spreadArray([], props.texts, true));
|
|
9507
9507
|
}, [props.texts]);
|
|
9508
9508
|
useEffect(function () {
|
|
9509
9509
|
var off = manuallyTriggerRenderElementHandler(function (elementId) {
|
|
@@ -9551,10 +9551,15 @@ var Paper = function (props) {
|
|
|
9551
9551
|
};
|
|
9552
9552
|
}
|
|
9553
9553
|
}, [manuallyTriggerStartedLinkingHandler, paperEventEmitter]);
|
|
9554
|
+
var updateElementsTree = useCallback(function () {
|
|
9555
|
+
var parsedElementsInTree = convertElementsToTree(elements);
|
|
9556
|
+
setElementsInTree(parsedElementsInTree);
|
|
9557
|
+
}, [elements]);
|
|
9554
9558
|
//Cache elements to avoid re-render when elements changed
|
|
9555
9559
|
useEffect(function () {
|
|
9556
9560
|
elementsRef.current = elements;
|
|
9557
|
-
|
|
9561
|
+
updateElementsTree();
|
|
9562
|
+
}, [elements, updateElementsTree]);
|
|
9558
9563
|
//Cache links to avoid re-render when links changed
|
|
9559
9564
|
useEffect(function () {
|
|
9560
9565
|
linksRef.current = links;
|
|
@@ -9566,10 +9571,6 @@ var Paper = function (props) {
|
|
|
9566
9571
|
useKeyboardCommands({
|
|
9567
9572
|
element: paperContainerRef.current
|
|
9568
9573
|
});
|
|
9569
|
-
var updateElementsTree = useCallback(function () {
|
|
9570
|
-
var parsedElementsInTree = convertElementsToTree(elements);
|
|
9571
|
-
setElementsInTree(parsedElementsInTree);
|
|
9572
|
-
}, [elements]);
|
|
9573
9574
|
//Cache tempLink to avoid re-render when tempLink changed
|
|
9574
9575
|
useEffect(function () {
|
|
9575
9576
|
tempLinkRef.current = tempLink;
|
|
@@ -9577,17 +9578,16 @@ var Paper = function (props) {
|
|
|
9577
9578
|
//Listen text is selected
|
|
9578
9579
|
useEffect(function () {
|
|
9579
9580
|
var textSelectedListener = paperEventEmitter.onTextSelected(function (text) {
|
|
9580
|
-
var _a;
|
|
9581
9581
|
setSelectedElement(undefined);
|
|
9582
9582
|
setSelectedElementSVG(null);
|
|
9583
9583
|
setSelectedLink(undefined);
|
|
9584
9584
|
//broadcast selected text to parent component
|
|
9585
|
-
|
|
9585
|
+
onTextSelected === null || onTextSelected === void 0 ? void 0 : onTextSelected(text);
|
|
9586
9586
|
});
|
|
9587
9587
|
return function () {
|
|
9588
9588
|
textSelectedListener.off();
|
|
9589
9589
|
};
|
|
9590
|
-
}, []);
|
|
9590
|
+
}, [paperEventEmitter, onTextSelected]);
|
|
9591
9591
|
//Listen port is selected
|
|
9592
9592
|
useEffect(function () {
|
|
9593
9593
|
var portSelectedListener = paperEventEmitter.onPortSelected(function (port, elementId) {
|
|
@@ -9636,11 +9636,11 @@ var Paper = function (props) {
|
|
|
9636
9636
|
parentChangedCancelers.forEach(function (canceller) { return canceller === null || canceller === void 0 ? void 0 : canceller(); });
|
|
9637
9637
|
addedPortCancelers.forEach(function (canceller) { return canceller(); });
|
|
9638
9638
|
};
|
|
9639
|
-
}, [
|
|
9640
|
-
//Update elements tree when length of elements change
|
|
9641
|
-
useEffect(
|
|
9642
|
-
|
|
9643
|
-
}, [elements, updateElementsTree])
|
|
9639
|
+
}, [updateElementsTree, onElementsChanged]);
|
|
9640
|
+
// //Update elements tree when length of elements change
|
|
9641
|
+
// useEffect(() => {
|
|
9642
|
+
// updateElementsTree();
|
|
9643
|
+
// }, [elements, updateElementsTree])
|
|
9644
9644
|
//Get all child elements of the deleted element
|
|
9645
9645
|
var getChildOfElement = useCallback(function (element) {
|
|
9646
9646
|
if (!element.childrenElementsInTree)
|
|
@@ -9819,7 +9819,6 @@ var Paper = function (props) {
|
|
|
9819
9819
|
}
|
|
9820
9820
|
}, [onLinksChanged]);
|
|
9821
9821
|
var handlePortMoved = useCallback(function (port, elementId, oldPosition, newPosition) {
|
|
9822
|
-
var _a;
|
|
9823
9822
|
var element = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
9824
9823
|
if (element) {
|
|
9825
9824
|
//set links equals a clone links to re-render links with new position
|
|
@@ -9834,21 +9833,44 @@ var Paper = function (props) {
|
|
|
9834
9833
|
}
|
|
9835
9834
|
return link;
|
|
9836
9835
|
});
|
|
9837
|
-
setLinks(
|
|
9836
|
+
setLinks(function (prev) {
|
|
9837
|
+
return prev.map(function (link) {
|
|
9838
|
+
var _a, _b;
|
|
9839
|
+
if (link.sourceElement.id === elementId && link.sourcePort.id === port.id) {
|
|
9840
|
+
link.sourcePort.position = newPosition;
|
|
9841
|
+
}
|
|
9842
|
+
if (((_a = link.targetElement) === null || _a === void 0 ? void 0 : _a.id) === elementId && ((_b = link.targetPort) === null || _b === void 0 ? void 0 : _b.id) === port.id) {
|
|
9843
|
+
link.targetPort.position = newPosition;
|
|
9844
|
+
}
|
|
9845
|
+
return link;
|
|
9846
|
+
});
|
|
9847
|
+
});
|
|
9838
9848
|
if (onLinksChanged) {
|
|
9839
9849
|
onLinksChanged(newLinks);
|
|
9840
9850
|
}
|
|
9841
9851
|
var newElements = elementsRef.current;
|
|
9842
|
-
|
|
9843
|
-
|
|
9844
|
-
|
|
9845
|
-
|
|
9846
|
-
|
|
9847
|
-
|
|
9848
|
-
});
|
|
9852
|
+
// newElements[updatedElementIndex].ports = newElements[updatedElementIndex].ports?.map(p => {
|
|
9853
|
+
// if (p.id === port.id) {
|
|
9854
|
+
// p.position = newPosition
|
|
9855
|
+
// }
|
|
9856
|
+
// return p
|
|
9857
|
+
// })
|
|
9849
9858
|
//Update port position in element, not re-render
|
|
9850
9859
|
//To avoid re-render
|
|
9851
|
-
setElements(
|
|
9860
|
+
setElements(function (prev) {
|
|
9861
|
+
var _a;
|
|
9862
|
+
var newElements = __spreadArray([], prev, true);
|
|
9863
|
+
var updatedElement = newElements.find(function (e) { return e.id === elementId; });
|
|
9864
|
+
if (updatedElement) {
|
|
9865
|
+
updatedElement.ports = (_a = updatedElement.ports) === null || _a === void 0 ? void 0 : _a.map(function (p) {
|
|
9866
|
+
if (p.id === port.id) {
|
|
9867
|
+
p.position = newPosition;
|
|
9868
|
+
}
|
|
9869
|
+
return p;
|
|
9870
|
+
});
|
|
9871
|
+
}
|
|
9872
|
+
return newElements;
|
|
9873
|
+
});
|
|
9852
9874
|
if (onElementsChanged) {
|
|
9853
9875
|
onElementsChanged(newElements);
|
|
9854
9876
|
}
|
|
@@ -10206,6 +10228,7 @@ var Paper = function (props) {
|
|
|
10206
10228
|
}
|
|
10207
10229
|
}, [onElementMouseLeave]);
|
|
10208
10230
|
var renderElementInTree = useCallback(function (element) {
|
|
10231
|
+
logger.info("Rendering element tree for element ".concat(element.id));
|
|
10209
10232
|
//use the defined react element or the default Element component
|
|
10210
10233
|
var ReactElement = element.reactElement || Element$1;
|
|
10211
10234
|
return (React.createElement("g", { id: "group-of-element-".concat(element.id), key: element.id },
|
|
@@ -10220,25 +10243,22 @@ var Paper = function (props) {
|
|
|
10220
10243
|
}, objectX: selectedElementAbsPosition === null || selectedElementAbsPosition === void 0 ? void 0 : selectedElementAbsPosition.x, objectY: selectedElementAbsPosition === null || selectedElementAbsPosition === void 0 ? void 0 : selectedElementAbsPosition.y, width: selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.size.width, height: selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.size.height, zoom: zoom, draggingByDefault: autoEnabledDraggingSelectedElement,
|
|
10221
10244
|
//movingOffsetThreshold: ELEMENT_MOVING_OFFSET_THRESHOLD,
|
|
10222
10245
|
onMouseDown: function (ev) {
|
|
10223
|
-
var _a;
|
|
10224
10246
|
if (selectedElement) {
|
|
10225
10247
|
var paperPosition = windowsPositionToPaperPosition({
|
|
10226
10248
|
x: ev.clientX,
|
|
10227
10249
|
y: ev.clientY
|
|
10228
10250
|
}, paperContainerRef.current, zoomRef.current);
|
|
10229
|
-
|
|
10251
|
+
onElementMouseDown === null || onElementMouseDown === void 0 ? void 0 : onElementMouseDown(ev, selectedElement, paperPosition);
|
|
10230
10252
|
}
|
|
10231
10253
|
}, onMouseUp: function (ev) {
|
|
10232
|
-
var _a;
|
|
10233
10254
|
if (selectedElement) {
|
|
10234
10255
|
var paperPosition = windowsPositionToPaperPosition({
|
|
10235
10256
|
x: ev.clientX,
|
|
10236
10257
|
y: ev.clientY
|
|
10237
10258
|
}, paperContainerRef.current, zoomRef.current);
|
|
10238
|
-
|
|
10259
|
+
onElementMouseUp === null || onElementMouseUp === void 0 ? void 0 : onElementMouseUp(ev, selectedElement, paperPosition);
|
|
10239
10260
|
}
|
|
10240
10261
|
}, onMove: function (newX, newY) {
|
|
10241
|
-
var _a;
|
|
10242
10262
|
if (!selectedElement)
|
|
10243
10263
|
return;
|
|
10244
10264
|
var oldPosition = __assign({}, selectedElement.position);
|
|
@@ -10275,13 +10295,13 @@ var Paper = function (props) {
|
|
|
10275
10295
|
}
|
|
10276
10296
|
return link;
|
|
10277
10297
|
});
|
|
10278
|
-
|
|
10298
|
+
onLinksChanged === null || onLinksChanged === void 0 ? void 0 : onLinksChanged(newLinks);
|
|
10279
10299
|
// End updating the position of links connected to the selected element
|
|
10280
10300
|
//Set state to re-render UI with new position
|
|
10281
10301
|
setElementsInTree(function (prev) { return __spreadArray([], prev, true); });
|
|
10282
|
-
if (
|
|
10302
|
+
if (onElementMoved) {
|
|
10283
10303
|
console.log('onElementMoved', selectedElement.position, paperPosition);
|
|
10284
|
-
|
|
10304
|
+
onElementMoved(selectedElement.position, selectedElement, indexSelectedElement, paperPosition);
|
|
10285
10305
|
}
|
|
10286
10306
|
paperEventEmitter.emitElementMoved(selectedElement, oldPosition, selectedElement.position);
|
|
10287
10307
|
setMouseDownedOnPaper(false);
|
|
@@ -10294,16 +10314,16 @@ var Paper = function (props) {
|
|
|
10294
10314
|
elements[indexSelectedElement].size = newSize;
|
|
10295
10315
|
var newElements = __spreadArray([], elements, true);
|
|
10296
10316
|
setElements(newElements);
|
|
10297
|
-
if (
|
|
10298
|
-
|
|
10317
|
+
if (onElementsChanged) {
|
|
10318
|
+
onElementsChanged(newElements);
|
|
10299
10319
|
}
|
|
10300
|
-
if (
|
|
10301
|
-
|
|
10320
|
+
if (onElementResized) {
|
|
10321
|
+
onElementResized(newSize, selectedElement, indexSelectedElement);
|
|
10302
10322
|
}
|
|
10303
10323
|
paperEventEmitter.emitElementResized(selectedElement, oldSize, newSize);
|
|
10304
10324
|
setMouseDownedOnPaper(false);
|
|
10305
10325
|
} }))));
|
|
10306
|
-
}, [manuallyTriggerRenderPortHandler, handleElementClicked, handleContextMenu, handleMouseUp, handleMouseDown, handleMouseMove, handleMouseLeave, handlePortMoved, handlePortMouseDown, handlePortMouseUp, handlePortsChanged, handlePortContextMenu, handleMouseUpAtLinkedPortPlaceholder, handleElementTextChange,
|
|
10326
|
+
}, [manuallyTriggerRenderPortHandler, handleElementClicked, handleContextMenu, handleMouseUp, handleMouseDown, handleMouseMove, handleMouseLeave, handlePortMoved, handlePortMouseDown, handlePortMouseUp, handlePortsChanged, handlePortContextMenu, handleMouseUpAtLinkedPortPlaceholder, handleElementTextChange, selectedElement, selectedElementSVG, selectedElementAbsPosition === null || selectedElementAbsPosition === void 0 ? void 0 : selectedElementAbsPosition.x, selectedElementAbsPosition === null || selectedElementAbsPosition === void 0 ? void 0 : selectedElementAbsPosition.y, zoom, autoEnabledDraggingSelectedElement, elements, getChildOfElement, paperEventEmitter, onElementResized, onElementsChanged, onElementMoved, onElementMouseDown, onElementMouseUp, onLinksChanged]);
|
|
10307
10327
|
var ElementsInTree = useMemo(function () {
|
|
10308
10328
|
return elementsInTree.map(function (element, index) {
|
|
10309
10329
|
return renderElementInTree(element);
|