orcasvn-react-diagrams 0.1.60 → 0.1.62
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 +139 -150
- package/dist/esm/index.js +139 -150
- package/dist/esm/index.js.map +1 -1
- package/package.json +1 -1
package/dist/cjs/index.js
CHANGED
|
@@ -8421,7 +8421,7 @@ var Port1 = React.forwardRef(function (props, ref) {
|
|
|
8421
8421
|
else {
|
|
8422
8422
|
return React.createElement(Circle, { onMouseDown: function (e) { return onMouseDown === null || onMouseDown === void 0 ? void 0 : onMouseDown(id, e); }, onMouseUp: function (e) { return onMouseUp === null || onMouseUp === void 0 ? void 0 : onMouseUp(id, e); }, onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, onMouseMove: function (e) { return onMouseMove === null || onMouseMove === void 0 ? void 0 : onMouseMove(id, e); }, onClick: function (e) { return onSelected === null || onSelected === void 0 ? void 0 : onSelected(id, e); }, onContextMenu: function (e) { return onContextMenu === null || onContextMenu === void 0 ? void 0 : onContextMenu(id, e); }, ref: ref, x: x, y: y, positioningAnchor: exports.PositioningAnchor.Center, height: height, width: width, stroke: "black", fill: "black" }, children);
|
|
8423
8423
|
}
|
|
8424
|
-
}, [props]);
|
|
8424
|
+
}, [children, height, id, onContextMenu, onMouseDown, onMouseEnter, onMouseLeave, onMouseMove, onMouseUp, onSelected, props, ref, renderShape, rotationAngle, width, x, y]);
|
|
8425
8425
|
return (React.createElement(React.Fragment, null,
|
|
8426
8426
|
renderedShape,
|
|
8427
8427
|
label && renderLabel(label)));
|
|
@@ -8770,10 +8770,14 @@ var ElementWrapper = React.forwardRef(function (_a, ref) {
|
|
|
8770
8770
|
});
|
|
8771
8771
|
|
|
8772
8772
|
var Element = React.forwardRef(function (props, forwardedRef) {
|
|
8773
|
-
var id = props.id, x = props.x, y = props.y, width = props.width, height = props.height, cssClass = props.cssClass, portPlaceholderShape = props.portPlaceholderShape, children = props.children, container = props.container, parentAbsolutePosition = props.parentAbsolutePosition, textsPlaceHolderFlexStyle = props.textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition = props.textsPlaceHolderFlexboxPosition, textsPlaceHolderClassName = props.textsPlaceHolderClassName, texts = props.texts, portSlideRailSVGClassName = props.portSlideRailSVGClassName, portMoveableAreas = props.portMoveableAreas, portDirection = props.portDirection, defaultPortSize = props.defaultPortSize, onClick = props.onClick, onContextMenu = props.onContextMenu, renderShape = props.renderShape; props.onMoved; var onPortMoved = props.onPortMoved; props.onResized; var onPortMouseDown = props.onPortMouseDown, onPortMouseUp = props.onPortMouseUp, onMouseMove = props.onMouseMove, onMouseLeave = props.onMouseLeave, onMouseUp = props.onMouseUp, onMouseDown = props.onMouseDown, onMouseUpAtLinkedPortPlaceholder = props.onMouseUpAtLinkedPortPlaceholder, onTextUpdated = props.onTextUpdated, onPortContextMenu = props.onPortContextMenu
|
|
8773
|
+
var id = props.id, x = props.x, y = props.y, width = props.width, height = props.height, cssClass = props.cssClass, portPlaceholderShape = props.portPlaceholderShape, children = props.children, container = props.container, parentAbsolutePosition = props.parentAbsolutePosition, textsPlaceHolderFlexStyle = props.textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition = props.textsPlaceHolderFlexboxPosition, textsPlaceHolderClassName = props.textsPlaceHolderClassName, texts = props.texts, portSlideRailSVGClassName = props.portSlideRailSVGClassName, portMoveableAreas = props.portMoveableAreas, portDirection = props.portDirection, defaultPortSize = props.defaultPortSize, onClick = props.onClick, onContextMenu = props.onContextMenu, renderShape = props.renderShape; props.onMoved; var onPortMoved = props.onPortMoved; props.onResized; var onPortMouseDown = props.onPortMouseDown, onPortMouseUp = props.onPortMouseUp, onMouseMove = props.onMouseMove, onMouseLeave = props.onMouseLeave, onMouseUp = props.onMouseUp, onMouseDown = props.onMouseDown, onMouseUpAtLinkedPortPlaceholder = props.onMouseUpAtLinkedPortPlaceholder, onTextUpdated = props.onTextUpdated, onPortContextMenu = props.onPortContextMenu, onPortsChanged = props.onPortsChanged, onManuallyTriggerRenderPort = props.onManuallyTriggerRenderPort;
|
|
8774
|
+
var propPorts = props.ports;
|
|
8774
8775
|
var _a = React.useState(), selectedPort = _a[0], setSelectedPort = _a[1];
|
|
8775
8776
|
var _b = React.useState(), hoveredPort = _b[0], setHoveredPort = _b[1];
|
|
8776
|
-
var _c = React.useState(
|
|
8777
|
+
var _c = React.useState((propPorts === null || propPorts === void 0 ? void 0 : propPorts.map(function (p) {
|
|
8778
|
+
var portState = __assign(__assign({}, p), { ref: React.createRef() });
|
|
8779
|
+
return portState;
|
|
8780
|
+
})) || []), ports = _c[0], setPorts = _c[1];
|
|
8777
8781
|
var _d = React.useState(false), someElementLinkStarted = _d[0], setSomeElementLinkStarted = _d[1];
|
|
8778
8782
|
var _e = React.useState(), potentialPortPosition = _e[0], setPotentialPortPosition = _e[1];
|
|
8779
8783
|
var _paperEventEmitterContext = React.useContext(paperEventEmitterContext);
|
|
@@ -8792,12 +8796,11 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
8792
8796
|
position.y += parentAbsolutePosition.y;
|
|
8793
8797
|
}
|
|
8794
8798
|
return position;
|
|
8795
|
-
}, [x, y, parentAbsolutePosition
|
|
8799
|
+
}, [x, y, parentAbsolutePosition]);
|
|
8796
8800
|
var elementAbsPosition = React.useMemo(function () { return getElementAbsPosition(); }, [getElementAbsPosition]);
|
|
8797
8801
|
//Listen to manually trigger render event
|
|
8798
8802
|
React.useEffect(function () {
|
|
8799
|
-
var
|
|
8800
|
-
var off = (_a = props.onManuallyTriggerRenderPort) === null || _a === void 0 ? void 0 : _a.call(props, function (portId, elementId) {
|
|
8803
|
+
var off = onManuallyTriggerRenderPort === null || onManuallyTriggerRenderPort === void 0 ? void 0 : onManuallyTriggerRenderPort(function (portId, elementId) {
|
|
8801
8804
|
if (elementId !== id)
|
|
8802
8805
|
return;
|
|
8803
8806
|
logger.info('onManuallyTriggerRenderPort', id);
|
|
@@ -8806,17 +8809,19 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
8806
8809
|
return function () {
|
|
8807
8810
|
off === null || off === void 0 ? void 0 : off();
|
|
8808
8811
|
};
|
|
8809
|
-
}, [
|
|
8810
|
-
//
|
|
8811
|
-
React.
|
|
8812
|
-
|
|
8813
|
-
|
|
8812
|
+
}, [id, onManuallyTriggerRenderPort]);
|
|
8813
|
+
//Normalize port position
|
|
8814
|
+
var normalizePortPosition = React.useCallback(function (tempNewPosition) {
|
|
8815
|
+
var newPosition = correctPortPositionInElement(tempNewPosition, width, height, portMoveableAreas, portSlideRailSVGClassName, elementRef.current || undefined);
|
|
8816
|
+
return newPosition || tempNewPosition;
|
|
8817
|
+
}, [width, height, portMoveableAreas, portSlideRailSVGClassName]);
|
|
8814
8818
|
//Listen a new port is created, after add new port to ports state
|
|
8815
8819
|
React.useEffect(function () {
|
|
8816
|
-
logger.info('Ports changed', props.ports);
|
|
8817
8820
|
setPorts(function (prev) {
|
|
8818
|
-
var _a
|
|
8819
|
-
|
|
8821
|
+
var _a;
|
|
8822
|
+
if (propPorts === undefined)
|
|
8823
|
+
return [];
|
|
8824
|
+
var newState = (_a = propPorts.map(function (p, index) {
|
|
8820
8825
|
var prevPortState = prev.find(function (_p) { return _p.id === p.id; });
|
|
8821
8826
|
var newPortState;
|
|
8822
8827
|
//If port is existed, keep the ref of the port
|
|
@@ -8835,9 +8840,14 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
8835
8840
|
newPortState.ref = React.createRef();
|
|
8836
8841
|
}
|
|
8837
8842
|
return newPortState;
|
|
8838
|
-
})) !== null &&
|
|
8843
|
+
})) !== null && _a !== void 0 ? _a : [];
|
|
8844
|
+
return newState;
|
|
8839
8845
|
});
|
|
8840
|
-
}, [
|
|
8846
|
+
}, [_paperEventEmitterContext, normalizePortPosition, id, onPortMoved, propPorts]);
|
|
8847
|
+
//Update portsRef when ports changed
|
|
8848
|
+
React.useEffect(function () {
|
|
8849
|
+
portsRef.current = ports;
|
|
8850
|
+
}, [ports]);
|
|
8841
8851
|
//Normalize port position when element is resized
|
|
8842
8852
|
React.useEffect(function () {
|
|
8843
8853
|
var newPorts = portsRef.current.map(function (port) {
|
|
@@ -8848,22 +8858,21 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
8848
8858
|
return port;
|
|
8849
8859
|
});
|
|
8850
8860
|
setPorts(newPorts);
|
|
8851
|
-
}, [width, height]);
|
|
8861
|
+
}, [width, height, _paperEventEmitterContext, id, onPortsChanged, normalizePortPosition, onPortMoved]);
|
|
8852
8862
|
//Listen trigger of Delete key, handle delete port is selected
|
|
8853
8863
|
React.useEffect(function () {
|
|
8854
8864
|
var listener = _paperEventEmitterContext.onCommandDeleteSelectedPort(function () {
|
|
8855
|
-
var _a;
|
|
8856
8865
|
if (selectedPort) {
|
|
8857
8866
|
var newPorts = portsRef.current.filter(function (p) { return p.id !== selectedPort.id; });
|
|
8858
8867
|
setPorts(newPorts);
|
|
8859
8868
|
setSelectedPort(undefined);
|
|
8860
|
-
|
|
8869
|
+
onPortsChanged === null || onPortsChanged === void 0 ? void 0 : onPortsChanged(newPorts, id);
|
|
8861
8870
|
}
|
|
8862
8871
|
});
|
|
8863
8872
|
return function () {
|
|
8864
8873
|
listener.off();
|
|
8865
8874
|
};
|
|
8866
|
-
}, [
|
|
8875
|
+
}, [_paperEventEmitterContext, id, onPortsChanged, selectedPort]);
|
|
8867
8876
|
React.useEffect(function () {
|
|
8868
8877
|
//Listener onMouseDown event on #paper-container
|
|
8869
8878
|
var eventListener = _paperEventEmitterContext.onPaperClicked(function (ev) {
|
|
@@ -8872,16 +8881,10 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
8872
8881
|
return function () {
|
|
8873
8882
|
eventListener.off();
|
|
8874
8883
|
};
|
|
8875
|
-
}, []);
|
|
8876
|
-
//Normalize port position
|
|
8877
|
-
var normalizePortPosition = React.useCallback(function (tempNewPosition) {
|
|
8878
|
-
var newPosition = correctPortPositionInElement(tempNewPosition, width, height, portMoveableAreas, portSlideRailSVGClassName, elementRef.current || undefined);
|
|
8879
|
-
return newPosition || tempNewPosition;
|
|
8880
|
-
}, [width, height, portMoveableAreas, portSlideRailSVGClassName, elementRef.current]);
|
|
8884
|
+
}, [_paperEventEmitterContext]);
|
|
8881
8885
|
React.useEffect(function () {
|
|
8882
8886
|
//listen element resize to update position of the ports by element size.
|
|
8883
8887
|
var eleResizeListener = _paperEventEmitterContext.onElementResized(id, function () {
|
|
8884
|
-
var _a;
|
|
8885
8888
|
var isChanged = false;
|
|
8886
8889
|
var newPorts = portsRef.current.map(function (port) {
|
|
8887
8890
|
var newPosition = normalizePortPosition({ x: port.position.x, y: port.position.y });
|
|
@@ -8895,13 +8898,13 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
8895
8898
|
});
|
|
8896
8899
|
setPorts(newPorts);
|
|
8897
8900
|
if (isChanged) {
|
|
8898
|
-
|
|
8901
|
+
onPortsChanged === null || onPortsChanged === void 0 ? void 0 : onPortsChanged(newPorts, id);
|
|
8899
8902
|
}
|
|
8900
8903
|
});
|
|
8901
8904
|
return function () {
|
|
8902
8905
|
eleResizeListener.off();
|
|
8903
8906
|
};
|
|
8904
|
-
}, [onPortMoved, normalizePortPosition, width, height, portMoveableAreas, portSlideRailSVGClassName]);
|
|
8907
|
+
}, [_paperEventEmitterContext, id, onPortsChanged, onPortMoved, normalizePortPosition, width, height, portMoveableAreas, portSlideRailSVGClassName]);
|
|
8905
8908
|
//Listen creating element link started, ended.
|
|
8906
8909
|
React.useEffect(function () {
|
|
8907
8910
|
var elementStartedListener = _paperEventEmitterContext.onElementLinkStarted(function (tempLink) {
|
|
@@ -8918,7 +8921,7 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
8918
8921
|
elementStartedListener.off();
|
|
8919
8922
|
elementEndedListener.off();
|
|
8920
8923
|
};
|
|
8921
|
-
}, []);
|
|
8924
|
+
}, [id, _paperEventEmitterContext]);
|
|
8922
8925
|
//Listen another port is selected
|
|
8923
8926
|
React.useEffect(function () {
|
|
8924
8927
|
var portSelectedListener = _paperEventEmitterContext.onPortSelected(function (port, elementId) {
|
|
@@ -8929,7 +8932,7 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
8929
8932
|
return function () {
|
|
8930
8933
|
portSelectedListener.off();
|
|
8931
8934
|
};
|
|
8932
|
-
}, []);
|
|
8935
|
+
}, [_paperEventEmitterContext, id]);
|
|
8933
8936
|
//Listen text is selected
|
|
8934
8937
|
React.useEffect(function () {
|
|
8935
8938
|
var textSelectedListener = _paperEventEmitterContext.onTextSelected(function (text) {
|
|
@@ -8938,7 +8941,7 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
8938
8941
|
return function () {
|
|
8939
8942
|
textSelectedListener.off();
|
|
8940
8943
|
};
|
|
8941
|
-
}, []);
|
|
8944
|
+
}, [_paperEventEmitterContext]);
|
|
8942
8945
|
//Listen another element is selected
|
|
8943
8946
|
React.useEffect(function () {
|
|
8944
8947
|
var portSelectedListener = _paperEventEmitterContext.onElementSelected(function (element) {
|
|
@@ -8947,7 +8950,7 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
8947
8950
|
return function () {
|
|
8948
8951
|
portSelectedListener.off();
|
|
8949
8952
|
};
|
|
8950
|
-
}, []);
|
|
8953
|
+
}, [_paperEventEmitterContext]);
|
|
8951
8954
|
var handleSelectedPort = React.useCallback(function (portId, e) {
|
|
8952
8955
|
e.stopPropagation();
|
|
8953
8956
|
logger.debug('Port selected', portId, e);
|
|
@@ -8956,9 +8959,9 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
8956
8959
|
return;
|
|
8957
8960
|
setSelectedPort(port);
|
|
8958
8961
|
_paperEventEmitterContext.emitPortSelected(port, id);
|
|
8959
|
-
}, [_paperEventEmitterContext]);
|
|
8962
|
+
}, [id, _paperEventEmitterContext]);
|
|
8960
8963
|
//Calculate the position of the 4 vertices of a rectangle relative to element
|
|
8961
|
-
var calculateSlideRailRectSVGPositions = function (slideRailSVG) {
|
|
8964
|
+
var calculateSlideRailRectSVGPositions = React.useCallback(function (slideRailSVG) {
|
|
8962
8965
|
var coordinates = getRectangleCorners(slideRailSVG);
|
|
8963
8966
|
var ownerSVG = slideRailSVG.ownerSVGElement;
|
|
8964
8967
|
var rotationAngle = getElementRotationInfo(ownerSVG);
|
|
@@ -8968,7 +8971,7 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
8968
8971
|
coordinates = getRotatedRectangleCoordinates(coordinates, rotationCenterX, rotationCenterY, rotationAngle);
|
|
8969
8972
|
}
|
|
8970
8973
|
return coordinates;
|
|
8971
|
-
};
|
|
8974
|
+
}, [width, height]);
|
|
8972
8975
|
var getSlideRailSVG = React.useCallback(function (portSlideRailSVGClassName) {
|
|
8973
8976
|
var _a;
|
|
8974
8977
|
var slideRailSVG = (_a = elementRef.current) === null || _a === void 0 ? void 0 : _a.querySelector(".".concat(portSlideRailSVGClassName));
|
|
@@ -9001,7 +9004,7 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
9001
9004
|
return;
|
|
9002
9005
|
_paperEventEmitterContext.emitPortMouseDown(e, port, id);
|
|
9003
9006
|
onPortMouseDown === null || onPortMouseDown === void 0 ? void 0 : onPortMouseDown(e, port, id);
|
|
9004
|
-
}, [_paperEventEmitterContext]);
|
|
9007
|
+
}, [id, onPortMouseDown, _paperEventEmitterContext]);
|
|
9005
9008
|
//Handle when mouse up on port
|
|
9006
9009
|
var handlePortMouseUp = React.useCallback(function (portId, e) {
|
|
9007
9010
|
e.stopPropagation();
|
|
@@ -9014,7 +9017,7 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
9014
9017
|
if (potentialPortPosition) {
|
|
9015
9018
|
setPotentialPortPosition(undefined);
|
|
9016
9019
|
}
|
|
9017
|
-
}, [_paperEventEmitterContext, potentialPortPosition]);
|
|
9020
|
+
}, [id, onPortMouseUp, _paperEventEmitterContext, potentialPortPosition]);
|
|
9018
9021
|
//Update state when label of port is moved
|
|
9019
9022
|
var handlePortLabelMoved = React.useCallback(function (newX, newY, portId) {
|
|
9020
9023
|
setPorts(function (prevPorts) {
|
|
@@ -9168,7 +9171,7 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
9168
9171
|
break;
|
|
9169
9172
|
}
|
|
9170
9173
|
return rotationAngle;
|
|
9171
|
-
}, [width, height, portSlideRailSVGClassName, portDirection, getSlideRailSVG, normalizePortPosition]);
|
|
9174
|
+
}, [width, height, portSlideRailSVGClassName, portDirection, getSlideRailSVG, normalizePortPosition, calculateSlideRailRectSVGPositions]);
|
|
9172
9175
|
var renderedShape = React.useMemo(function () {
|
|
9173
9176
|
if (renderShape)
|
|
9174
9177
|
return renderShape(props);
|
|
@@ -9183,7 +9186,7 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
9183
9186
|
}
|
|
9184
9187
|
}, []);
|
|
9185
9188
|
//log element render
|
|
9186
|
-
logger.debug('Rendering Element', id, x, y, width, height, cssClass, portPlaceholderShape, children, container, parentAbsolutePosition, textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition, textsPlaceHolderClassName, texts, portSlideRailSVGClassName, portMoveableAreas, portDirection, defaultPortSize);
|
|
9189
|
+
logger.debug('Rendering Element', id, x, y, width, height, cssClass, portPlaceholderShape, children, container, parentAbsolutePosition, textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition, textsPlaceHolderClassName, texts, ports, portSlideRailSVGClassName, portMoveableAreas, portDirection, defaultPortSize);
|
|
9187
9190
|
return (React.createElement(React.Fragment, null,
|
|
9188
9191
|
React.createElement(ElementWrapper, { ref: elementRef, x: x, y: y, cssClass: cssClass, onClick: function (e) { return onClick ? onClick(id, e, elementRef.current) : true; }, onMouseMove: handleElementMouseMove, onMouseLeave: handleElementMouseLeave, onMouseDown: handleElementMouseDown, onMouseUp: handleElementMouseUp, onContextMenu: function (e) { return onContextMenu ? onContextMenu(id, e, elementRef.current) : true; } },
|
|
9189
9192
|
renderedShape,
|
|
@@ -9475,6 +9478,7 @@ var Paper = function (props) {
|
|
|
9475
9478
|
var textsRef = React.useRef(texts); //Cache texts to avoid re-render when texts changed
|
|
9476
9479
|
var size = props.size;
|
|
9477
9480
|
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]);
|
|
9481
|
+
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, 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;
|
|
9478
9482
|
React.useEffect(function () {
|
|
9479
9483
|
zoomRef.current = zoom;
|
|
9480
9484
|
}, [zoom]);
|
|
@@ -9488,40 +9492,37 @@ var Paper = function (props) {
|
|
|
9488
9492
|
setTexts(props.texts);
|
|
9489
9493
|
}, [props.texts]);
|
|
9490
9494
|
React.useEffect(function () {
|
|
9491
|
-
var off =
|
|
9495
|
+
var off = manuallyTriggerRenderElementHandler(function (elementId) {
|
|
9492
9496
|
var newElements = __spreadArray([], elements, true);
|
|
9493
9497
|
setElements(newElements);
|
|
9494
|
-
if (
|
|
9495
|
-
|
|
9498
|
+
if (onElementsChanged) {
|
|
9499
|
+
onElementsChanged(newElements);
|
|
9496
9500
|
}
|
|
9497
9501
|
});
|
|
9498
9502
|
return function () {
|
|
9499
9503
|
off();
|
|
9500
9504
|
};
|
|
9501
|
-
}, [
|
|
9505
|
+
}, [manuallyTriggerRenderElementHandler, onElementsChanged, elements, selectedElement]);
|
|
9502
9506
|
React.useEffect(function () {
|
|
9503
|
-
var _a, _b;
|
|
9504
9507
|
var offs = [];
|
|
9505
|
-
offs.push(
|
|
9506
|
-
var _a;
|
|
9508
|
+
offs.push(manuallySelectElementHandler === null || manuallySelectElementHandler === void 0 ? void 0 : manuallySelectElementHandler(function (element) {
|
|
9507
9509
|
setSelectedElement(element || undefined);
|
|
9508
9510
|
if (element) {
|
|
9509
|
-
|
|
9511
|
+
onElementSelected === null || onElementSelected === void 0 ? void 0 : onElementSelected(element);
|
|
9510
9512
|
}
|
|
9511
9513
|
}));
|
|
9512
|
-
offs.push(
|
|
9513
|
-
var _a;
|
|
9514
|
+
offs.push(manuallyTriggerDraggingElementHandler === null || manuallyTriggerDraggingElementHandler === void 0 ? void 0 : manuallyTriggerDraggingElementHandler(function (element) {
|
|
9514
9515
|
setSelectedElement(element);
|
|
9515
|
-
|
|
9516
|
+
onElementSelected === null || onElementSelected === void 0 ? void 0 : onElementSelected(element);
|
|
9516
9517
|
setAutoEnabledDraggingSelectedElement(true);
|
|
9517
9518
|
}));
|
|
9518
9519
|
return function () {
|
|
9519
9520
|
offs.forEach(function (off) { return off(); });
|
|
9520
9521
|
};
|
|
9521
|
-
}, [
|
|
9522
|
+
}, [manuallySelectElementHandler, manuallyTriggerDraggingElementHandler, onElementSelected]);
|
|
9522
9523
|
React.useEffect(function () {
|
|
9523
|
-
if (
|
|
9524
|
-
var off_1 =
|
|
9524
|
+
if (manuallyTriggerStartedLinkingHandler) {
|
|
9525
|
+
var off_1 = manuallyTriggerStartedLinkingHandler(function (sourceElement, sourcePort) {
|
|
9525
9526
|
var newLink = {
|
|
9526
9527
|
id: generateUniqueId(),
|
|
9527
9528
|
points: [],
|
|
@@ -9535,7 +9536,7 @@ var Paper = function (props) {
|
|
|
9535
9536
|
off_1();
|
|
9536
9537
|
};
|
|
9537
9538
|
}
|
|
9538
|
-
}, [
|
|
9539
|
+
}, [manuallyTriggerStartedLinkingHandler, paperEventEmitter]);
|
|
9539
9540
|
//Cache elements to avoid re-render when elements changed
|
|
9540
9541
|
React.useEffect(function () {
|
|
9541
9542
|
elementsRef.current = elements;
|
|
@@ -9551,10 +9552,10 @@ var Paper = function (props) {
|
|
|
9551
9552
|
useKeyboardCommands({
|
|
9552
9553
|
element: paperContainerRef.current
|
|
9553
9554
|
});
|
|
9554
|
-
var updateElementsTree = function () {
|
|
9555
|
+
var updateElementsTree = React.useCallback(function () {
|
|
9555
9556
|
var parsedElementsInTree = convertElementsToTree(elements);
|
|
9556
9557
|
setElementsInTree(parsedElementsInTree);
|
|
9557
|
-
};
|
|
9558
|
+
}, [elements]);
|
|
9558
9559
|
//Cache tempLink to avoid re-render when tempLink changed
|
|
9559
9560
|
React.useEffect(function () {
|
|
9560
9561
|
tempLinkRef.current = tempLink;
|
|
@@ -9576,20 +9577,19 @@ var Paper = function (props) {
|
|
|
9576
9577
|
//Listen port is selected
|
|
9577
9578
|
React.useEffect(function () {
|
|
9578
9579
|
var portSelectedListener = paperEventEmitter.onPortSelected(function (port, elementId) {
|
|
9579
|
-
var _a;
|
|
9580
9580
|
setSelectedElement(undefined);
|
|
9581
9581
|
setSelectedElementSVG(null);
|
|
9582
9582
|
setSelectedLink(undefined);
|
|
9583
9583
|
//broadcast selected port to parent component
|
|
9584
9584
|
var element = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
9585
9585
|
if (element) {
|
|
9586
|
-
|
|
9586
|
+
onPortSelected === null || onPortSelected === void 0 ? void 0 : onPortSelected(port, element);
|
|
9587
9587
|
}
|
|
9588
9588
|
});
|
|
9589
9589
|
return function () {
|
|
9590
9590
|
portSelectedListener.off();
|
|
9591
9591
|
};
|
|
9592
|
-
}, []);
|
|
9592
|
+
}, [paperEventEmitter, onPortSelected]);
|
|
9593
9593
|
React.useEffect(function () {
|
|
9594
9594
|
//Listen parent of elements changed, then update elements tree
|
|
9595
9595
|
var parentChangedCancelers = elementsRef.current.map(function (element) {
|
|
@@ -9613,8 +9613,8 @@ var Paper = function (props) {
|
|
|
9613
9613
|
});
|
|
9614
9614
|
//Set state to re-render component
|
|
9615
9615
|
setElements(newElements);
|
|
9616
|
-
if (
|
|
9617
|
-
|
|
9616
|
+
if (onElementsChanged) {
|
|
9617
|
+
onElementsChanged(newElements);
|
|
9618
9618
|
}
|
|
9619
9619
|
});
|
|
9620
9620
|
});
|
|
@@ -9622,13 +9622,13 @@ var Paper = function (props) {
|
|
|
9622
9622
|
parentChangedCancelers.forEach(function (canceller) { return canceller === null || canceller === void 0 ? void 0 : canceller(); });
|
|
9623
9623
|
addedPortCancelers.forEach(function (canceller) { return canceller(); });
|
|
9624
9624
|
};
|
|
9625
|
-
}, [elements]);
|
|
9625
|
+
}, [elements, updateElementsTree, onElementsChanged]);
|
|
9626
9626
|
//Update elements tree when length of elements change
|
|
9627
9627
|
React.useEffect(function () {
|
|
9628
9628
|
updateElementsTree();
|
|
9629
|
-
}, [elements]);
|
|
9629
|
+
}, [elements, updateElementsTree]);
|
|
9630
9630
|
//Get all child elements of the deleted element
|
|
9631
|
-
var getChildOfElement = function (element) {
|
|
9631
|
+
var getChildOfElement = React.useCallback(function (element) {
|
|
9632
9632
|
if (!element.childrenElementsInTree)
|
|
9633
9633
|
return [];
|
|
9634
9634
|
var childElms = element.childrenElementsInTree;
|
|
@@ -9636,10 +9636,9 @@ var Paper = function (props) {
|
|
|
9636
9636
|
return __spreadArray(__spreadArray([], acc, true), getChildOfElement(ele), true);
|
|
9637
9637
|
}, []);
|
|
9638
9638
|
return __spreadArray(__spreadArray([], childElms, true), childOfChildElements, true);
|
|
9639
|
-
};
|
|
9639
|
+
}, []);
|
|
9640
9640
|
//Listen command delete selected for element
|
|
9641
9641
|
React.useEffect(function () {
|
|
9642
|
-
var _a;
|
|
9643
9642
|
var listener = paperEventEmitter.onCommandDeleteSelectedElement(function () {
|
|
9644
9643
|
if (selectedElement) {
|
|
9645
9644
|
selectedElement.parentElement = undefined; //Remove parent element to avoid memory leak. This will remove the element from the parent element's childrenElements array.
|
|
@@ -9649,15 +9648,15 @@ var Paper = function (props) {
|
|
|
9649
9648
|
var newElements = prevElements.filter(function (e) { return !deletedElementIds_1.includes(e.id); });
|
|
9650
9649
|
//Set state to re-render component
|
|
9651
9650
|
setElements(newElements);
|
|
9652
|
-
if (
|
|
9653
|
-
|
|
9651
|
+
if (onElementsChanged) {
|
|
9652
|
+
onElementsChanged(newElements);
|
|
9654
9653
|
}
|
|
9655
9654
|
//Update links
|
|
9656
9655
|
var prevLinks = linksRef.current;
|
|
9657
9656
|
var newLinks = prevLinks.filter(function (l) { return !deletedElementIds_1.includes(l.sourceElement.id) && !deletedElementIds_1.includes(l.targetElement.id); });
|
|
9658
9657
|
setLinks(newLinks);
|
|
9659
|
-
if (
|
|
9660
|
-
|
|
9658
|
+
if (onLinksChanged) {
|
|
9659
|
+
onLinksChanged(newLinks);
|
|
9661
9660
|
}
|
|
9662
9661
|
setSelectedElement(undefined);
|
|
9663
9662
|
setSelectedElementSVG(null);
|
|
@@ -9665,56 +9664,54 @@ var Paper = function (props) {
|
|
|
9665
9664
|
});
|
|
9666
9665
|
//broadcast selected element to parent component
|
|
9667
9666
|
if (selectedElement) {
|
|
9668
|
-
|
|
9667
|
+
onElementSelected === null || onElementSelected === void 0 ? void 0 : onElementSelected(selectedElement);
|
|
9669
9668
|
}
|
|
9670
9669
|
return function () {
|
|
9671
9670
|
listener.off();
|
|
9672
9671
|
};
|
|
9673
|
-
}, [selectedElement,
|
|
9672
|
+
}, [selectedElement, onElementSelected, onElementsChanged, onLinksChanged, getChildOfElement, paperEventEmitter]);
|
|
9674
9673
|
//Listen command delete selected for link
|
|
9675
9674
|
React.useEffect(function () {
|
|
9676
|
-
var _a;
|
|
9677
9675
|
var listener = paperEventEmitter.onCommandDeleteSelectedLink(function () {
|
|
9678
9676
|
if (selectedLink) {
|
|
9679
9677
|
var prevLinks = linksRef.current;
|
|
9680
9678
|
var newLinks = prevLinks.filter(function (l) { return l.id !== selectedLink.id; });
|
|
9681
9679
|
setLinks(links);
|
|
9682
9680
|
setSelectedLink(undefined);
|
|
9683
|
-
if (
|
|
9684
|
-
|
|
9681
|
+
if (onLinksChanged) {
|
|
9682
|
+
onLinksChanged(newLinks);
|
|
9685
9683
|
}
|
|
9686
9684
|
}
|
|
9687
9685
|
});
|
|
9688
9686
|
//broadcast selected link to parent component
|
|
9689
9687
|
if (selectedLink) {
|
|
9690
|
-
|
|
9688
|
+
onLinkSelected === null || onLinkSelected === void 0 ? void 0 : onLinkSelected(selectedLink);
|
|
9691
9689
|
}
|
|
9692
9690
|
return function () {
|
|
9693
9691
|
listener.off();
|
|
9694
9692
|
};
|
|
9695
|
-
}, [selectedLink,
|
|
9693
|
+
}, [selectedLink, onLinksChanged, onLinkSelected, links, paperEventEmitter]);
|
|
9696
9694
|
//Listen command delete selected for Text
|
|
9697
9695
|
React.useEffect(function () {
|
|
9698
|
-
var _a;
|
|
9699
9696
|
var listener = paperEventEmitter.onCommandDeleteSelectedText(function () {
|
|
9700
9697
|
if (selectedText) {
|
|
9701
9698
|
var prevTexts = textsRef.current;
|
|
9702
9699
|
var newTexts = prevTexts.filter(function (t) { return t.id !== selectedText.id; });
|
|
9703
9700
|
setTexts(newTexts);
|
|
9704
|
-
if (
|
|
9705
|
-
|
|
9701
|
+
if (onTextsChanged) {
|
|
9702
|
+
onTextsChanged(newTexts);
|
|
9706
9703
|
}
|
|
9707
9704
|
setSelectedText(undefined);
|
|
9708
9705
|
}
|
|
9709
9706
|
});
|
|
9710
9707
|
//broadcast selected text to parent component
|
|
9711
9708
|
if (selectedText) {
|
|
9712
|
-
|
|
9709
|
+
onTextSelected === null || onTextSelected === void 0 ? void 0 : onTextSelected(selectedText);
|
|
9713
9710
|
}
|
|
9714
9711
|
return function () {
|
|
9715
9712
|
listener.off();
|
|
9716
9713
|
};
|
|
9717
|
-
}, [selectedText,
|
|
9714
|
+
}, [selectedText, onTextsChanged, onTextSelected, texts, paperEventEmitter]);
|
|
9718
9715
|
var handlePaperMouseMove = function (ev) {
|
|
9719
9716
|
var _a;
|
|
9720
9717
|
var _b = windowsPositionToPaperPosition({
|
|
@@ -9793,19 +9790,19 @@ var Paper = function (props) {
|
|
|
9793
9790
|
links[updatedLinkIndex].path = path;
|
|
9794
9791
|
var newLinks = __spreadArray([], links, true);
|
|
9795
9792
|
setLinks(newLinks);
|
|
9796
|
-
if (
|
|
9797
|
-
|
|
9793
|
+
if (onLinksChanged) {
|
|
9794
|
+
onLinksChanged(newLinks);
|
|
9798
9795
|
}
|
|
9799
|
-
}, [
|
|
9796
|
+
}, [onLinksChanged, links]);
|
|
9800
9797
|
var handlePointsOfLinkChange = React.useCallback(function (points, linkId) {
|
|
9801
9798
|
var newLinks = __spreadArray([], linksRef.current, true);
|
|
9802
9799
|
var updatedLinkIndex = newLinks.findIndex(function (l) { return l.id === linkId; });
|
|
9803
9800
|
newLinks[updatedLinkIndex].points = points;
|
|
9804
9801
|
setLinks(newLinks);
|
|
9805
|
-
if (
|
|
9806
|
-
|
|
9802
|
+
if (onLinksChanged) {
|
|
9803
|
+
onLinksChanged(newLinks);
|
|
9807
9804
|
}
|
|
9808
|
-
}, [
|
|
9805
|
+
}, [onLinksChanged]);
|
|
9809
9806
|
var handlePortMoved = React.useCallback(function (port, elementId, oldPosition, newPosition) {
|
|
9810
9807
|
var _a;
|
|
9811
9808
|
var element = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
@@ -9823,8 +9820,8 @@ var Paper = function (props) {
|
|
|
9823
9820
|
return link;
|
|
9824
9821
|
});
|
|
9825
9822
|
setLinks(newLinks);
|
|
9826
|
-
if (
|
|
9827
|
-
|
|
9823
|
+
if (onLinksChanged) {
|
|
9824
|
+
onLinksChanged(newLinks);
|
|
9828
9825
|
}
|
|
9829
9826
|
var newElements = elementsRef.current;
|
|
9830
9827
|
var updatedElementIndex = newElements.findIndex(function (e) { return e.id === elementId; });
|
|
@@ -9837,17 +9834,16 @@ var Paper = function (props) {
|
|
|
9837
9834
|
//Update port position in element, not re-render
|
|
9838
9835
|
//To avoid re-render
|
|
9839
9836
|
setElements(newElements);
|
|
9840
|
-
if (
|
|
9841
|
-
|
|
9837
|
+
if (onElementsChanged) {
|
|
9838
|
+
onElementsChanged(newElements);
|
|
9842
9839
|
}
|
|
9843
|
-
if (
|
|
9844
|
-
|
|
9840
|
+
if (onPortMoved) {
|
|
9841
|
+
onPortMoved(newPosition, port, element);
|
|
9845
9842
|
}
|
|
9846
9843
|
}
|
|
9847
|
-
}, [
|
|
9844
|
+
}, [onPortMoved, onElementsChanged, onLinksChanged]);
|
|
9848
9845
|
//Handle creating a new element link
|
|
9849
9846
|
var handlePortMouseDown = React.useCallback(function (ev, port, elementId) {
|
|
9850
|
-
var _a;
|
|
9851
9847
|
ev.stopPropagation();
|
|
9852
9848
|
var element = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
9853
9849
|
var paperPosition = windowsPositionToPaperPosition({
|
|
@@ -9857,7 +9853,7 @@ var Paper = function (props) {
|
|
|
9857
9853
|
console.log(paperPosition);
|
|
9858
9854
|
//broadcast port mouse down to parent component
|
|
9859
9855
|
if (element) {
|
|
9860
|
-
|
|
9856
|
+
onPortMouseDown === null || onPortMouseDown === void 0 ? void 0 : onPortMouseDown(port, element, paperPosition);
|
|
9861
9857
|
}
|
|
9862
9858
|
if (!tempLinkRef.current && element) {
|
|
9863
9859
|
//handle create temp element link;
|
|
@@ -9870,13 +9866,13 @@ var Paper = function (props) {
|
|
|
9870
9866
|
setTempLink(newLink);
|
|
9871
9867
|
paperEventEmitter.emitElementLinkStarted(newLink);
|
|
9872
9868
|
}
|
|
9873
|
-
}, [paperEventEmitter,
|
|
9869
|
+
}, [paperEventEmitter, onPortMouseDown]);
|
|
9874
9870
|
var createElementLink = React.useCallback(function (sourcePort, sourceElement, targetPort, targetElement) {
|
|
9875
9871
|
//if no onCreatingLink prop, no link will be created
|
|
9876
|
-
if (!
|
|
9872
|
+
if (!onCreatingLink) {
|
|
9877
9873
|
return null;
|
|
9878
9874
|
}
|
|
9879
|
-
var newElementLink =
|
|
9875
|
+
var newElementLink = onCreatingLink(sourcePort, sourceElement, targetPort, targetElement);
|
|
9880
9876
|
if (!newElementLink)
|
|
9881
9877
|
return null;
|
|
9882
9878
|
//Automatic bending, if is not defined points
|
|
@@ -9885,9 +9881,8 @@ var Paper = function (props) {
|
|
|
9885
9881
|
newElementLink = automationAddPointsToLink(newElementLink, elements_1, MAX_LINK_KNOT_COUNT);
|
|
9886
9882
|
}
|
|
9887
9883
|
return newElementLink;
|
|
9888
|
-
}, [
|
|
9884
|
+
}, [onCreatingLink]);
|
|
9889
9885
|
var handlePortMouseUp = React.useCallback(function (ev, port, elementId) {
|
|
9890
|
-
var _a;
|
|
9891
9886
|
ev.stopPropagation();
|
|
9892
9887
|
var element = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
9893
9888
|
var paperPosition = windowsPositionToPaperPosition({
|
|
@@ -9896,7 +9891,7 @@ var Paper = function (props) {
|
|
|
9896
9891
|
}, paperContainerRef.current, zoomRef.current);
|
|
9897
9892
|
//broadcast port mouse down to parent component
|
|
9898
9893
|
if (element) {
|
|
9899
|
-
|
|
9894
|
+
onPortMouseUp === null || onPortMouseUp === void 0 ? void 0 : onPortMouseUp(port, element, paperPosition);
|
|
9900
9895
|
}
|
|
9901
9896
|
//Create new element link, if has tempLink
|
|
9902
9897
|
if (tempLinkRef.current) {
|
|
@@ -9904,7 +9899,7 @@ var Paper = function (props) {
|
|
|
9904
9899
|
var isMouseUpOnNotSelf = tempLinkRef.current.sourcePort.id !== port.id || tempLinkRef.current.sourceElement.id !== elementId;
|
|
9905
9900
|
var newElementLink = null;
|
|
9906
9901
|
if (isMouseUpOnNotSelf) {
|
|
9907
|
-
var
|
|
9902
|
+
var _a = tempLinkRef.current, sourcePort = _a.sourcePort, sourceElement = _a.sourceElement;
|
|
9908
9903
|
var targetElement = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
9909
9904
|
newElementLink = createElementLink(sourcePort, sourceElement, port, targetElement);
|
|
9910
9905
|
}
|
|
@@ -9912,8 +9907,8 @@ var Paper = function (props) {
|
|
|
9912
9907
|
var prevLinks = linksRef.current;
|
|
9913
9908
|
var newLinks = __spreadArray(__spreadArray([], prevLinks, true), [newElementLink], false);
|
|
9914
9909
|
setLinks(newLinks);
|
|
9915
|
-
if (
|
|
9916
|
-
|
|
9910
|
+
if (onLinksChanged) {
|
|
9911
|
+
onLinksChanged(newLinks);
|
|
9917
9912
|
}
|
|
9918
9913
|
paperEventEmitter.emitElementLinkEnded(newElementLink);
|
|
9919
9914
|
}
|
|
@@ -9922,14 +9917,14 @@ var Paper = function (props) {
|
|
|
9922
9917
|
}
|
|
9923
9918
|
setTempLink(null);
|
|
9924
9919
|
}
|
|
9925
|
-
}, [paperEventEmitter, createElementLink,
|
|
9920
|
+
}, [paperEventEmitter, createElementLink, onPortMouseUp, onLinksChanged]);
|
|
9926
9921
|
var handlePortsChanged = React.useCallback(function (ports, elementId) {
|
|
9927
9922
|
var element = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
9928
9923
|
if (element) {
|
|
9929
9924
|
//broadcast ports changed to parent component
|
|
9930
|
-
|
|
9925
|
+
onPortsChanged(ports, element);
|
|
9931
9926
|
}
|
|
9932
|
-
}, [
|
|
9927
|
+
}, [onPortsChanged]);
|
|
9933
9928
|
var handleLinkLabelMoved = React.useCallback(function (newX, newY, index, labelType) {
|
|
9934
9929
|
var prevLinks = linksRef.current;
|
|
9935
9930
|
var newLinks = __spreadArray([], prevLinks, true);
|
|
@@ -9953,10 +9948,10 @@ var Paper = function (props) {
|
|
|
9953
9948
|
}
|
|
9954
9949
|
}
|
|
9955
9950
|
setLinks(newLinks);
|
|
9956
|
-
if (
|
|
9957
|
-
|
|
9951
|
+
if (onLinksChanged) {
|
|
9952
|
+
onLinksChanged(newLinks);
|
|
9958
9953
|
}
|
|
9959
|
-
}, [
|
|
9954
|
+
}, [onLinksChanged]);
|
|
9960
9955
|
var handleLinkLabelResized = React.useCallback(function (width, height, index, labelType) {
|
|
9961
9956
|
var prevLinks = linksRef.current;
|
|
9962
9957
|
var newLinks = __spreadArray([], prevLinks, true);
|
|
@@ -9988,10 +9983,10 @@ var Paper = function (props) {
|
|
|
9988
9983
|
}
|
|
9989
9984
|
}
|
|
9990
9985
|
setLinks(newLinks);
|
|
9991
|
-
if (
|
|
9992
|
-
|
|
9986
|
+
if (onLinksChanged) {
|
|
9987
|
+
onLinksChanged(newLinks);
|
|
9993
9988
|
}
|
|
9994
|
-
}, [
|
|
9989
|
+
}, [onLinksChanged]);
|
|
9995
9990
|
var handleLinkLabelContentChanged = React.useCallback(function (newValue, index, labelType) {
|
|
9996
9991
|
var prevLinks = linksRef.current;
|
|
9997
9992
|
var newLinks = __spreadArray([], prevLinks, true);
|
|
@@ -10011,10 +10006,10 @@ var Paper = function (props) {
|
|
|
10011
10006
|
}
|
|
10012
10007
|
}
|
|
10013
10008
|
setLinks(newLinks);
|
|
10014
|
-
if (
|
|
10015
|
-
|
|
10009
|
+
if (onLinksChanged) {
|
|
10010
|
+
onLinksChanged(newLinks);
|
|
10016
10011
|
}
|
|
10017
|
-
}, [
|
|
10012
|
+
}, [onLinksChanged]);
|
|
10018
10013
|
var handleSelectLink = function (link, index) {
|
|
10019
10014
|
setSelectedLink(link);
|
|
10020
10015
|
};
|
|
@@ -10067,20 +10062,20 @@ var Paper = function (props) {
|
|
|
10067
10062
|
var newLinks = __spreadArray([], prevLinks, true);
|
|
10068
10063
|
newLinks.splice(index, 1);
|
|
10069
10064
|
setLinks(newLinks);
|
|
10070
|
-
if (
|
|
10071
|
-
|
|
10065
|
+
if (onLinksChanged) {
|
|
10066
|
+
onLinksChanged(newLinks);
|
|
10072
10067
|
}
|
|
10073
10068
|
};
|
|
10074
|
-
}, [
|
|
10069
|
+
}, [onLinksChanged]);
|
|
10075
10070
|
var handleMouseUpAtLinkedPortPlaceholder = React.useCallback(function (link, position, targetElementId) {
|
|
10076
10071
|
var targetElement = elementsRef.current.find(function (e) { return e.id === targetElementId; });
|
|
10077
10072
|
if (!targetElement)
|
|
10078
10073
|
return;
|
|
10079
10074
|
logger.info("A port could have been created at position ".concat(JSON.stringify(position), " on element ").concat(targetElementId, " by linking from element ").concat(link.sourceElement.id));
|
|
10080
|
-
if (
|
|
10075
|
+
if (onCreatingPortByLinking) {
|
|
10081
10076
|
var sourcePort = link.sourcePort, sourceElement = link.sourceElement;
|
|
10082
10077
|
//Handle create port via onCreatingPortByLinking prop
|
|
10083
|
-
var targetPort =
|
|
10078
|
+
var targetPort = onCreatingPortByLinking(sourceElement, sourcePort, targetElement, position);
|
|
10084
10079
|
if (targetPort) {
|
|
10085
10080
|
//Add new port to target element
|
|
10086
10081
|
targetElement.addPort(targetPort);
|
|
@@ -10091,8 +10086,8 @@ var Paper = function (props) {
|
|
|
10091
10086
|
var prevLinks = linksRef.current;
|
|
10092
10087
|
var newLinks = __spreadArray(__spreadArray([], prevLinks, true), [newElementLink], false);
|
|
10093
10088
|
setLinks(newLinks);
|
|
10094
|
-
if (
|
|
10095
|
-
|
|
10089
|
+
if (onLinksChanged) {
|
|
10090
|
+
onLinksChanged(newLinks);
|
|
10096
10091
|
}
|
|
10097
10092
|
paperEventEmitter.emitElementLinkEnded(newElementLink);
|
|
10098
10093
|
setTempLink(null);
|
|
@@ -10103,7 +10098,7 @@ var Paper = function (props) {
|
|
|
10103
10098
|
//Clear tempLink
|
|
10104
10099
|
setTempLink(null);
|
|
10105
10100
|
paperEventEmitter.emitElementLinkEnded();
|
|
10106
|
-
}, [
|
|
10101
|
+
}, [onCreatingPortByLinking, createElementLink, paperEventEmitter, onLinksChanged]);
|
|
10107
10102
|
var handleElementTextChange = React.useCallback(function (elementId, textId, newContent) {
|
|
10108
10103
|
var prevElms = elementsRef.current;
|
|
10109
10104
|
var newElements = prevElms.map(function (curEle) {
|
|
@@ -10117,10 +10112,10 @@ var Paper = function (props) {
|
|
|
10117
10112
|
return curEle;
|
|
10118
10113
|
});
|
|
10119
10114
|
setElements(newElements);
|
|
10120
|
-
if (
|
|
10121
|
-
|
|
10115
|
+
if (onElementsChanged) {
|
|
10116
|
+
onElementsChanged(newElements);
|
|
10122
10117
|
}
|
|
10123
|
-
}, [
|
|
10118
|
+
}, [onElementsChanged]);
|
|
10124
10119
|
var handleElementClicked = React.useCallback(function (elementId, e, ref) {
|
|
10125
10120
|
e.stopPropagation();
|
|
10126
10121
|
var tempLink = tempLinkRef.current;
|
|
@@ -10141,73 +10136,67 @@ var Paper = function (props) {
|
|
|
10141
10136
|
setMouseDownedOnPaper(false);
|
|
10142
10137
|
}, [paperEventEmitter]);
|
|
10143
10138
|
var handlePortContextMenu = React.useCallback(function (port, elementId, e) {
|
|
10144
|
-
var _a;
|
|
10145
10139
|
e.preventDefault();
|
|
10146
10140
|
var element = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
10147
10141
|
if (element) {
|
|
10148
|
-
|
|
10142
|
+
onPortContextMenu === null || onPortContextMenu === void 0 ? void 0 : onPortContextMenu(port, element, e);
|
|
10149
10143
|
}
|
|
10150
|
-
}, [
|
|
10144
|
+
}, [onPortContextMenu]);
|
|
10151
10145
|
var handleContextMenu = React.useCallback(function (elementId, e, ref) {
|
|
10152
|
-
var _a;
|
|
10153
10146
|
e.preventDefault();
|
|
10154
10147
|
var element = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
10155
10148
|
if (element) {
|
|
10156
10149
|
handleElementClicked(elementId, e, ref);
|
|
10157
|
-
|
|
10150
|
+
onElementContextMenu === null || onElementContextMenu === void 0 ? void 0 : onElementContextMenu(element, e);
|
|
10158
10151
|
}
|
|
10159
|
-
}, [
|
|
10152
|
+
}, [onElementContextMenu, handleElementClicked]);
|
|
10160
10153
|
var handleMouseUp = React.useCallback(function (ev, elementId) {
|
|
10161
|
-
var _a;
|
|
10162
10154
|
var element = elementsRef.current.find(function (ele) { return ele.id === elementId; });
|
|
10163
10155
|
var paperPosition = windowsPositionToPaperPosition({
|
|
10164
10156
|
x: ev.clientX,
|
|
10165
10157
|
y: ev.clientY
|
|
10166
10158
|
}, paperContainerRef.current, zoomRef.current);
|
|
10167
10159
|
if (element) {
|
|
10168
|
-
|
|
10160
|
+
onElementMouseUp === null || onElementMouseUp === void 0 ? void 0 : onElementMouseUp(ev, element, paperPosition);
|
|
10169
10161
|
}
|
|
10170
|
-
}, [
|
|
10162
|
+
}, [onElementMouseUp]);
|
|
10171
10163
|
var handleMouseDown = React.useCallback(function (ev, elementId) {
|
|
10172
|
-
var _a;
|
|
10173
10164
|
var element = elementsRef.current.find(function (ele) { return ele.id === elementId; });
|
|
10174
10165
|
var paperPosition = windowsPositionToPaperPosition({
|
|
10175
10166
|
x: ev.clientX,
|
|
10176
10167
|
y: ev.clientY
|
|
10177
10168
|
}, paperContainerRef.current, zoomRef.current);
|
|
10178
10169
|
if (element) {
|
|
10179
|
-
|
|
10170
|
+
onElementMouseDown === null || onElementMouseDown === void 0 ? void 0 : onElementMouseDown(ev, element, paperPosition);
|
|
10180
10171
|
}
|
|
10181
|
-
}, [
|
|
10172
|
+
}, [onElementMouseDown]);
|
|
10182
10173
|
var handleMouseMove = React.useCallback(function (ev, elementId) {
|
|
10183
|
-
var _a;
|
|
10184
10174
|
var element = elementsRef.current.find(function (ele) { return ele.id === elementId; });
|
|
10185
10175
|
var paperPosition = windowsPositionToPaperPosition({
|
|
10186
10176
|
x: ev.clientX,
|
|
10187
10177
|
y: ev.clientY
|
|
10188
10178
|
}, paperContainerRef.current, zoomRef.current);
|
|
10189
10179
|
if (element) {
|
|
10190
|
-
|
|
10180
|
+
onElementMouseMove === null || onElementMouseMove === void 0 ? void 0 : onElementMouseMove(ev, element, paperPosition);
|
|
10191
10181
|
}
|
|
10192
|
-
}, [
|
|
10182
|
+
}, [onElementMouseMove]);
|
|
10193
10183
|
var handleMouseLeave = React.useCallback(function (ev, elementId) {
|
|
10194
|
-
var _a;
|
|
10195
10184
|
var element = elementsRef.current.find(function (ele) { return ele.id === elementId; });
|
|
10196
10185
|
var paperPosition = windowsPositionToPaperPosition({
|
|
10197
10186
|
x: ev.clientX,
|
|
10198
10187
|
y: ev.clientY
|
|
10199
10188
|
}, paperContainerRef.current, zoomRef.current);
|
|
10200
10189
|
if (element) {
|
|
10201
|
-
|
|
10190
|
+
onElementMouseLeave === null || onElementMouseLeave === void 0 ? void 0 : onElementMouseLeave(ev, element, paperPosition);
|
|
10202
10191
|
}
|
|
10203
|
-
}, [
|
|
10192
|
+
}, [onElementMouseLeave]);
|
|
10204
10193
|
var renderElementInTree = React.useCallback(function (element) {
|
|
10205
10194
|
//use the defined react element or the default Element component
|
|
10206
10195
|
var ReactElement = element.reactElement || Element$1;
|
|
10207
10196
|
return (React.createElement("g", { id: "group-of-element-".concat(element.id), key: element.id },
|
|
10208
10197
|
React.createElement(ReactElement, { key: "element-".concat(element.id), id: element.id, ref: function (refDOM) { return element.DOM = refDOM; }, height: element.size.height, width: element.size.width, x: element.positionAnchor === exports.PositioningAnchor.Center ? element.position.x - element.size.width / 2 : element.position.x, y: element.positionAnchor === exports.PositioningAnchor.Center ? element.position.y - element.size.height / 2 : element.position.y, onClick: handleElementClicked, onContextMenu: handleContextMenu, onMouseUp: handleMouseUp, onMouseDown: handleMouseDown, onMouseMove: handleMouseMove, onMouseLeave: handleMouseLeave, container: paperContainerRef.current, renderShape: element.renderShape, cssClass: element.cssClass, texts: element.texts, ports: element.ports, portMoveableAreas: element.portMoveableAreas, portSlideRailSVGClassName: element.portSlideRailSVGClassName, portDirection: element.portDirection, defaultPortSize: element.defaultPortSize, onPortMoved: handlePortMoved, onPortMouseDown: handlePortMouseDown, onPortMouseUp: handlePortMouseUp, onPortsChanged: handlePortsChanged, onPortContextMenu: handlePortContextMenu,
|
|
10209
10198
|
// portPlaceholderShape={(<Circle x={0} y={0} width={10} height={10} fill='red' positioningAnchor={PositioningAnchor.Center} />)}
|
|
10210
|
-
onMouseUpAtLinkedPortPlaceholder: handleMouseUpAtLinkedPortPlaceholder, onTextUpdated: handleElementTextChange, onManuallyTriggerRenderPort:
|
|
10199
|
+
onMouseUpAtLinkedPortPlaceholder: handleMouseUpAtLinkedPortPlaceholder, onTextUpdated: handleElementTextChange, onManuallyTriggerRenderPort: manuallyTriggerRenderPortHandler, textsPlaceHolderClassName: element.textsPlaceHolderClassName, textsPlaceHolderFlexStyle: element.textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition: element.textsPlaceHolderFlexboxPosition, parentAbsolutePosition: element.parentElement ? getAbsolutePosition(element.parentElement) : undefined },
|
|
10211
10200
|
element.childrenElementsInTree && element.childrenElementsInTree.map(renderElementInTree),
|
|
10212
10201
|
!!paperContainerRef.current && !!selectedElement && selectedElement.id === element.id &&
|
|
10213
10202
|
React.createElement(SelectionFrame, { key: selectedElement.id, container: paperContainerRef.current, targetSVGElement: selectedElementSVG || undefined, resizability: (selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.resizability) || {
|
|
@@ -10299,7 +10288,7 @@ var Paper = function (props) {
|
|
|
10299
10288
|
paperEventEmitter.emitElementResized(selectedElement, oldSize, newSize);
|
|
10300
10289
|
setMouseDownedOnPaper(false);
|
|
10301
10290
|
} }))));
|
|
10302
|
-
}, [handleElementClicked, handleContextMenu, handleMouseUp, handleMouseDown, handleMouseMove, handleMouseLeave, handlePortMoved, handlePortMouseDown, handlePortMouseUp, handlePortsChanged, handlePortContextMenu, handleMouseUpAtLinkedPortPlaceholder, handleElementTextChange, props, 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]);
|
|
10291
|
+
}, [manuallyTriggerRenderPortHandler, handleElementClicked, handleContextMenu, handleMouseUp, handleMouseDown, handleMouseMove, handleMouseLeave, handlePortMoved, handlePortMouseDown, handlePortMouseUp, handlePortsChanged, handlePortContextMenu, handleMouseUpAtLinkedPortPlaceholder, handleElementTextChange, props, 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]);
|
|
10303
10292
|
var ElementsInTree = React.useMemo(function () {
|
|
10304
10293
|
return elementsInTree.map(function (element, index) {
|
|
10305
10294
|
return renderElementInTree(element);
|