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 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; props.onPortsChanged;
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([]), ports = _c[0], setPorts = _c[1];
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 === null || parentAbsolutePosition === void 0 ? void 0 : parentAbsolutePosition.x, parentAbsolutePosition === null || parentAbsolutePosition === void 0 ? void 0 : parentAbsolutePosition.y]);
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 _a;
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
- }, [props.onManuallyTriggerRenderPort]);
8810
- //Update portsRef when ports changed
8811
- React.useEffect(function () {
8812
- portsRef.current = ports;
8813
- }, [ports]);
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, _b;
8819
- return (_b = (_a = props.ports) === null || _a === void 0 ? void 0 : _a.map(function (p, index) {
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 && _b !== void 0 ? _b : [];
8843
+ })) !== null && _a !== void 0 ? _a : [];
8844
+ return newState;
8839
8845
  });
8840
- }, [props.ports]);
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
- (_a = props.onPortsChanged) === null || _a === void 0 ? void 0 : _a.call(props, newPorts, id);
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
- }, [selectedPort, props.onPortsChanged]);
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
- (_a = props.onPortsChanged) === null || _a === void 0 ? void 0 : _a.call(props, newPorts, id);
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 = props.manuallyTriggerRenderElementHandler(function (elementId) {
9495
+ var off = manuallyTriggerRenderElementHandler(function (elementId) {
9492
9496
  var newElements = __spreadArray([], elements, true);
9493
9497
  setElements(newElements);
9494
- if (props.onElementsChanged) {
9495
- props.onElementsChanged(newElements);
9498
+ if (onElementsChanged) {
9499
+ onElementsChanged(newElements);
9496
9500
  }
9497
9501
  });
9498
9502
  return function () {
9499
9503
  off();
9500
9504
  };
9501
- }, [props.manuallyTriggerRenderElementHandler, props.onElementsChanged, elements, selectedElement]);
9505
+ }, [manuallyTriggerRenderElementHandler, onElementsChanged, elements, selectedElement]);
9502
9506
  React.useEffect(function () {
9503
- var _a, _b;
9504
9507
  var offs = [];
9505
- offs.push((_a = props.manuallySelectElementHandler) === null || _a === void 0 ? void 0 : _a.call(props, function (element) {
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
- (_a = props.onElementSelected) === null || _a === void 0 ? void 0 : _a.call(props, element);
9511
+ onElementSelected === null || onElementSelected === void 0 ? void 0 : onElementSelected(element);
9510
9512
  }
9511
9513
  }));
9512
- offs.push((_b = props.manuallyTriggerDraggingElementHandler) === null || _b === void 0 ? void 0 : _b.call(props, function (element) {
9513
- var _a;
9514
+ offs.push(manuallyTriggerDraggingElementHandler === null || manuallyTriggerDraggingElementHandler === void 0 ? void 0 : manuallyTriggerDraggingElementHandler(function (element) {
9514
9515
  setSelectedElement(element);
9515
- (_a = props.onElementSelected) === null || _a === void 0 ? void 0 : _a.call(props, element);
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
- }, [props.manuallySelectElementHandler, props.manuallyTriggerDraggingElementHandler, props.onElementSelected]);
9522
+ }, [manuallySelectElementHandler, manuallyTriggerDraggingElementHandler, onElementSelected]);
9522
9523
  React.useEffect(function () {
9523
- if (props.manuallyTriggerStartedLinkingHandler) {
9524
- var off_1 = props.manuallyTriggerStartedLinkingHandler(function (sourceElement, sourcePort) {
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
- }, [props.manuallyTriggerStartedLinkingHandler]);
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
- (_a = props.onPortSelected) === null || _a === void 0 ? void 0 : _a.call(props, port, element);
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 (props.onElementsChanged) {
9617
- props.onElementsChanged(newElements);
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 (props.onElementsChanged) {
9653
- props.onElementsChanged(newElements);
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 (props.onLinksChanged) {
9660
- props.onLinksChanged(newLinks);
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
- (_a = props.onElementSelected) === null || _a === void 0 ? void 0 : _a.call(props, selectedElement);
9667
+ onElementSelected === null || onElementSelected === void 0 ? void 0 : onElementSelected(selectedElement);
9669
9668
  }
9670
9669
  return function () {
9671
9670
  listener.off();
9672
9671
  };
9673
- }, [selectedElement, props.onElementsChanged]);
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 (props.onLinksChanged) {
9684
- props.onLinksChanged(newLinks);
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
- (_a = props.onLinkSelected) === null || _a === void 0 ? void 0 : _a.call(props, selectedLink);
9688
+ onLinkSelected === null || onLinkSelected === void 0 ? void 0 : onLinkSelected(selectedLink);
9691
9689
  }
9692
9690
  return function () {
9693
9691
  listener.off();
9694
9692
  };
9695
- }, [selectedLink, props.onLinksChanged]);
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 (props.onTextsChanged) {
9705
- props.onTextsChanged(newTexts);
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
- (_a = props.onTextSelected) === null || _a === void 0 ? void 0 : _a.call(props, selectedText);
9709
+ onTextSelected === null || onTextSelected === void 0 ? void 0 : onTextSelected(selectedText);
9713
9710
  }
9714
9711
  return function () {
9715
9712
  listener.off();
9716
9713
  };
9717
- }, [selectedText, props.onTextsChanged]);
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 (props.onLinksChanged) {
9797
- props.onLinksChanged(newLinks);
9793
+ if (onLinksChanged) {
9794
+ onLinksChanged(newLinks);
9798
9795
  }
9799
- }, [props.onLinksChanged, links]);
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 (props.onLinksChanged) {
9806
- props.onLinksChanged(newLinks);
9802
+ if (onLinksChanged) {
9803
+ onLinksChanged(newLinks);
9807
9804
  }
9808
- }, [props.onLinksChanged]);
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 (props.onLinksChanged) {
9827
- props.onLinksChanged(newLinks);
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 (props.onElementsChanged) {
9841
- props.onElementsChanged(newElements);
9837
+ if (onElementsChanged) {
9838
+ onElementsChanged(newElements);
9842
9839
  }
9843
- if (props.onPortMoved) {
9844
- props.onPortMoved(newPosition, port, element);
9840
+ if (onPortMoved) {
9841
+ onPortMoved(newPosition, port, element);
9845
9842
  }
9846
9843
  }
9847
- }, [props.onPortMoved, props.onElementsChanged, props.onLinksChanged]);
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
- (_a = props.onPortMouseDown) === null || _a === void 0 ? void 0 : _a.call(props, port, element, paperPosition);
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, props.onPortMouseDown]);
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 (!props.onCreatingLink) {
9872
+ if (!onCreatingLink) {
9877
9873
  return null;
9878
9874
  }
9879
- var newElementLink = props.onCreatingLink(sourcePort, sourceElement, targetPort, targetElement);
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
- }, [props.onCreatingLink]);
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
- (_a = props.onPortMouseUp) === null || _a === void 0 ? void 0 : _a.call(props, port, element, paperPosition);
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 _b = tempLinkRef.current, sourcePort = _b.sourcePort, sourceElement = _b.sourceElement;
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 (props.onLinksChanged) {
9916
- props.onLinksChanged(newLinks);
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, props.onPortMouseUp, props.onLinksChanged]);
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
- props.onPortsChanged(ports, element);
9925
+ onPortsChanged(ports, element);
9931
9926
  }
9932
- }, [props.onPortsChanged]);
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 (props.onLinksChanged) {
9957
- props.onLinksChanged(newLinks);
9951
+ if (onLinksChanged) {
9952
+ onLinksChanged(newLinks);
9958
9953
  }
9959
- }, [props.onLinksChanged]);
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 (props.onLinksChanged) {
9992
- props.onLinksChanged(newLinks);
9986
+ if (onLinksChanged) {
9987
+ onLinksChanged(newLinks);
9993
9988
  }
9994
- }, [props.onLinksChanged]);
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 (props.onLinksChanged) {
10015
- props.onLinksChanged(newLinks);
10009
+ if (onLinksChanged) {
10010
+ onLinksChanged(newLinks);
10016
10011
  }
10017
- }, [props.onLinksChanged]);
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 (props.onLinksChanged) {
10071
- props.onLinksChanged(newLinks);
10065
+ if (onLinksChanged) {
10066
+ onLinksChanged(newLinks);
10072
10067
  }
10073
10068
  };
10074
- }, [props.onLinksChanged]);
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 (props.onCreatingPortByLinking) {
10075
+ if (onCreatingPortByLinking) {
10081
10076
  var sourcePort = link.sourcePort, sourceElement = link.sourceElement;
10082
10077
  //Handle create port via onCreatingPortByLinking prop
10083
- var targetPort = props.onCreatingPortByLinking(sourceElement, sourcePort, targetElement, position);
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 (props.onLinksChanged) {
10095
- props.onLinksChanged(newLinks);
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
- }, [props.onCreatingPortByLinking, createElementLink, paperEventEmitter, props.onLinksChanged]);
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 (props.onElementsChanged) {
10121
- props.onElementsChanged(newElements);
10115
+ if (onElementsChanged) {
10116
+ onElementsChanged(newElements);
10122
10117
  }
10123
- }, [props.onElementsChanged]);
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
- (_a = props.onPortContextMenu) === null || _a === void 0 ? void 0 : _a.call(props, port, element, e);
10142
+ onPortContextMenu === null || onPortContextMenu === void 0 ? void 0 : onPortContextMenu(port, element, e);
10149
10143
  }
10150
- }, [props.onPortContextMenu]);
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
- (_a = props.onElementContextMenu) === null || _a === void 0 ? void 0 : _a.call(props, element, e);
10150
+ onElementContextMenu === null || onElementContextMenu === void 0 ? void 0 : onElementContextMenu(element, e);
10158
10151
  }
10159
- }, [props.onElementContextMenu, handleElementClicked]);
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
- (_a = props.onElementMouseUp) === null || _a === void 0 ? void 0 : _a.call(props, ev, element, paperPosition);
10160
+ onElementMouseUp === null || onElementMouseUp === void 0 ? void 0 : onElementMouseUp(ev, element, paperPosition);
10169
10161
  }
10170
- }, [props.onElementMouseUp]);
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
- (_a = props.onElementMouseDown) === null || _a === void 0 ? void 0 : _a.call(props, ev, element, paperPosition);
10170
+ onElementMouseDown === null || onElementMouseDown === void 0 ? void 0 : onElementMouseDown(ev, element, paperPosition);
10180
10171
  }
10181
- }, [props.onElementMouseDown]);
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
- (_a = props.onElementMouseMove) === null || _a === void 0 ? void 0 : _a.call(props, ev, element, paperPosition);
10180
+ onElementMouseMove === null || onElementMouseMove === void 0 ? void 0 : onElementMouseMove(ev, element, paperPosition);
10191
10181
  }
10192
- }, [props.onElementMouseMove]);
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
- (_a = props.onElementMouseLeave) === null || _a === void 0 ? void 0 : _a.call(props, ev, element, paperPosition);
10190
+ onElementMouseLeave === null || onElementMouseLeave === void 0 ? void 0 : onElementMouseLeave(ev, element, paperPosition);
10202
10191
  }
10203
- }, [props.onElementMouseLeave]);
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: props.manuallyTriggerRenderPortHandler, textsPlaceHolderClassName: element.textsPlaceHolderClassName, textsPlaceHolderFlexStyle: element.textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition: element.textsPlaceHolderFlexboxPosition, parentAbsolutePosition: element.parentElement ? getAbsolutePosition(element.parentElement) : undefined },
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);