orcasvn-react-diagrams 0.1.59 → 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
@@ -821,6 +821,7 @@ var EVENT_MANUALLY_SELECT_ELEMENT = 'manuallySelectElement';
821
821
  var EVENT_MANUALLY_TRIGGER_DRAGGING_ELEMENT = 'manuallyTriggerDraggingElement';
822
822
  var EVENT_LINK_SELECTED = 'linkSelected';
823
823
  var EVENT_TEXT_SELECTED = 'textSelected';
824
+ var EVENT_MANUALLY_TRIGGER_STARTED_LINKING = 'manuallyTriggerStartedLinking';
824
825
  var EditorContext = /** @class */ (function () {
825
826
  function EditorContext(elements, links, texts, configuration) {
826
827
  var _this = this;
@@ -1064,27 +1065,38 @@ var EditorContext = /** @class */ (function () {
1064
1065
  EditorContext.prototype.triggerRenderElement = function (elementId) {
1065
1066
  this._eventEmitter.emit(EVENT_MANUALLY_RENDER_ELEMENT, elementId);
1066
1067
  };
1067
- EditorContext.prototype.onManuallyTriggerRenderElement = function (callback) {
1068
+ /** @internal */
1069
+ EditorContext.prototype.manuallyTriggerRenderElementHandler = function (callback) {
1068
1070
  return this.addEventListener(EVENT_MANUALLY_RENDER_ELEMENT, callback);
1069
1071
  };
1070
1072
  EditorContext.prototype.triggerRenderPort = function (portId, elementId) {
1071
1073
  this._eventEmitter.emit(EVENT_MANUALLY_RENDER_PORT, portId, elementId);
1072
1074
  };
1073
- EditorContext.prototype.onManuallyTriggerRenderPort = function (callback) {
1075
+ /** @internal */
1076
+ EditorContext.prototype.manuallyTriggerRenderPortHandler = function (callback) {
1074
1077
  return this.addEventListener(EVENT_MANUALLY_RENDER_PORT, callback);
1075
1078
  };
1076
1079
  EditorContext.prototype.setSelectedElement = function (element) {
1077
1080
  this._eventEmitter.emit(EVENT_MANUALLY_SELECT_ELEMENT, element);
1078
1081
  };
1079
- EditorContext.prototype.onManuallySelectElement = function (callback) {
1082
+ /** @internal */
1083
+ EditorContext.prototype.manuallySelectElementHandler = function (callback) {
1080
1084
  return this.addEventListener(EVENT_MANUALLY_SELECT_ELEMENT, callback);
1081
1085
  };
1082
1086
  EditorContext.prototype.triggerDraggingElement = function (element) {
1083
1087
  this._eventEmitter.emit(EVENT_MANUALLY_TRIGGER_DRAGGING_ELEMENT, element);
1084
1088
  };
1085
- EditorContext.prototype.onManuallyTriggerDraggingElement = function (callback) {
1089
+ /** @internal */
1090
+ EditorContext.prototype.manuallyTriggerDraggingElementHandler = function (callback) {
1086
1091
  return this.addEventListener(EVENT_MANUALLY_TRIGGER_DRAGGING_ELEMENT, callback);
1087
1092
  };
1093
+ EditorContext.prototype.triggerStartedLinking = function (sourceElement, sourcePort) {
1094
+ this._eventEmitter.emit(EVENT_MANUALLY_TRIGGER_STARTED_LINKING, sourceElement, sourcePort);
1095
+ };
1096
+ /** @internal */
1097
+ EditorContext.prototype.manuallyTriggerStartedLinkingHandler = function (callback) {
1098
+ return this.addEventListener(EVENT_MANUALLY_TRIGGER_STARTED_LINKING, callback);
1099
+ };
1088
1100
  return EditorContext;
1089
1101
  }());
1090
1102
 
@@ -8409,7 +8421,7 @@ var Port1 = React.forwardRef(function (props, ref) {
8409
8421
  else {
8410
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);
8411
8423
  }
8412
- }, [props]);
8424
+ }, [children, height, id, onContextMenu, onMouseDown, onMouseEnter, onMouseLeave, onMouseMove, onMouseUp, onSelected, props, ref, renderShape, rotationAngle, width, x, y]);
8413
8425
  return (React.createElement(React.Fragment, null,
8414
8426
  renderedShape,
8415
8427
  label && renderLabel(label)));
@@ -8437,12 +8449,11 @@ var IElementLink = function (_a) {
8437
8449
  var _g = React.useState(path), pathStr = _g[0], setPathStr = _g[1];
8438
8450
  var _h = React.useState(pointsProp !== null && pointsProp !== void 0 ? pointsProp : []), points = _h[0], setPoints = _h[1];
8439
8451
  var _j = React.useState(false), isDragging = _j[0], setIsDragging = _j[1];
8440
- var _k = React.useState(), draggingPointIndex = _k[0], setDraggingPointIndex = _k[1];
8441
- var _l = React.useState({
8452
+ var _k = React.useState({
8442
8453
  current: null,
8443
- }), selectedLabelRef = _l[0], setSelectedLabelRef = _l[1];
8444
- var _m = React.useState(false), isSelectedLink = _m[0], setIsSelectedLink = _m[1];
8445
- var _o = React.useContext(paperEventEmitterContext), onPaperClicked = _o.onPaperClicked, onElementSelected = _o.onElementSelected;
8454
+ }), selectedLabelRef = _k[0], setSelectedLabelRef = _k[1];
8455
+ var _l = React.useState(false), isSelectedLink = _l[0], setIsSelectedLink = _l[1];
8456
+ var _m = React.useContext(paperEventEmitterContext), onPaperClicked = _m.onPaperClicked, onElementSelected = _m.onElementSelected;
8446
8457
  var zoom = useZoomContext().zoom;
8447
8458
  var pathRef = React.useRef(null);
8448
8459
  var labelRef = React.useRef(null);
@@ -8450,27 +8461,18 @@ var IElementLink = function (_a) {
8450
8461
  var targetLabelRef = React.useRef(null);
8451
8462
  var isFirstRender = React.useRef(true);
8452
8463
  var onPointsChangedRef = React.useRef();
8453
- var lastUpdatedPoints = React.useRef(Date.now());
8464
+ var draggingPointIndexRef = React.useRef(); // Ref to store the index of the point being dragged. No need to store it in state, as it is only used during the drag operation.
8454
8465
  var angleMarkerStart = '0';
8455
8466
  var angleMarkerEnd = '0';
8456
8467
  var markerStartPosition;
8457
8468
  var markerEndPosition;
8458
8469
  var centerPathPosition = undefined;
8459
- // Throttle pointsProp updates to avoid excessive renders
8470
+ // Initialize points from props
8460
8471
  React.useEffect(function () {
8461
- var delay = 100; // 100ms delay
8462
- var timeoutId = setTimeout(function () {
8463
- var now = Date.now();
8464
- if (now - lastUpdatedPoints.current >= delay) {
8465
- setPoints(pointsProp || []);
8466
- lastUpdatedPoints.current = now;
8467
- }
8468
- }, delay - (Date.now() - lastUpdatedPoints.current));
8469
- return function () {
8470
- clearTimeout(timeoutId);
8471
- };
8472
+ setPoints(pointsProp || []);
8472
8473
  // Use JSON.stringify for deep comparison
8473
8474
  }, [JSON.stringify(pointsProp)]);
8475
+ // Reset selected label when paper is clicked
8474
8476
  React.useEffect(function () {
8475
8477
  var paperClickListener = onPaperClicked(function () {
8476
8478
  setSelectedLabelRef({
@@ -8483,6 +8485,7 @@ var IElementLink = function (_a) {
8483
8485
  paperClickListener.off();
8484
8486
  };
8485
8487
  }, []);
8488
+ // Reset selected label when an element is selected
8486
8489
  React.useEffect(function () {
8487
8490
  var elementSelectedListener = onElementSelected(function () {
8488
8491
  setSelectedLabelRef({
@@ -8499,6 +8502,7 @@ var IElementLink = function (_a) {
8499
8502
  React.useEffect(function () {
8500
8503
  onPointsChangedRef.current = onPointsChanged;
8501
8504
  }, [onPointsChanged]);
8505
+ // Notify parent component when points change
8502
8506
  React.useEffect(function () {
8503
8507
  var _a;
8504
8508
  if (isFirstRender.current) {
@@ -8506,7 +8510,7 @@ var IElementLink = function (_a) {
8506
8510
  return;
8507
8511
  }
8508
8512
  (_a = onPointsChangedRef.current) === null || _a === void 0 ? void 0 : _a.call(onPointsChangedRef, points, id);
8509
- }, [points]);
8513
+ }, [JSON.stringify(points)]);
8510
8514
  React.useLayoutEffect(function () {
8511
8515
  var pointsList = __spreadArray(__spreadArray([sourcePosition], points, true), [targetPosition], false);
8512
8516
  var _pathStr = createSmoothPathString(pointsList, undefined, false);
@@ -8517,42 +8521,9 @@ var IElementLink = function (_a) {
8517
8521
  return;
8518
8522
  onPathChanged === null || onPathChanged === void 0 ? void 0 : onPathChanged(pathStr, id);
8519
8523
  }, [pathStr, id]);
8520
- React.useLayoutEffect(function () {
8521
- //handle when creating and moving point
8522
- var handleMouseMove = function (ev) {
8523
- var mouseEvent = ev;
8524
- if (isDragging && draggingPointIndex !== undefined && container) {
8525
- var paperPosition_1 = windowsPositionToPaperPosition({
8526
- x: mouseEvent.clientX,
8527
- y: mouseEvent.clientY
8528
- }, container, zoom);
8529
- setPoints(function (prev) {
8530
- var temp = __spreadArray([], prev, true);
8531
- temp[draggingPointIndex] = paperPosition_1;
8532
- return temp;
8533
- });
8534
- }
8535
- };
8536
- var mouseUp = function () {
8537
- setDraggingPointIndex(undefined);
8538
- setIsDragging(false);
8539
- };
8540
- container === null || container === void 0 ? void 0 : container.addEventListener('mousemove', handleMouseMove);
8541
- container === null || container === void 0 ? void 0 : container.addEventListener('mouseup', mouseUp);
8542
- return function () {
8543
- container === null || container === void 0 ? void 0 : container.removeEventListener('mousemove', handleMouseMove);
8544
- container === null || container === void 0 ? void 0 : container.removeEventListener('mouseup', mouseUp);
8545
- };
8546
- }, [container, isDragging, draggingPointIndex, zoom]);
8547
- var handleMouseDownOnPath = function (ev) {
8548
- ev.preventDefault();
8549
- //add point if click on path
8550
- setIsDragging(true);
8524
+ var addMovingPoint = function (mouseDownedOnPaperPos, points) {
8551
8525
  //Position of the new point on the path
8552
- var paperPosition = windowsPositionToPaperPosition({
8553
- x: ev.clientX,
8554
- y: ev.clientY
8555
- }, container, zoom);
8526
+ var paperPosition = mouseDownedOnPaperPos;
8556
8527
  var newPoints = addPointToList(paperPosition, __spreadArray(__spreadArray([sourcePosition], points, true), [targetPosition], false), pathRef.current);
8557
8528
  var pointsWithoutStartEndPoint = newPoints.slice(1, newPoints.length - 1);
8558
8529
  var addedIndex = pointsWithoutStartEndPoint.findIndex(function (p) { return p.x === paperPosition.x && p.y === paperPosition.y; });
@@ -8595,8 +8566,49 @@ var IElementLink = function (_a) {
8595
8566
  }
8596
8567
  //Find new index of added point
8597
8568
  _draggingPointIndex = pointsWithoutStartEndPoint.findIndex(function (p) { return p.x === paperPosition.x && p.y === paperPosition.y; });
8598
- setDraggingPointIndex(_draggingPointIndex);
8599
- setPoints(pointsWithoutStartEndPoint);
8569
+ return {
8570
+ draggingPointIndex: _draggingPointIndex,
8571
+ points: pointsWithoutStartEndPoint,
8572
+ };
8573
+ };
8574
+ React.useEffect(function () {
8575
+ //handle when creating and moving point
8576
+ var handleMouseMove = function (ev) {
8577
+ var mouseEvent = ev;
8578
+ if (isDragging && container) {
8579
+ var paperPosition_1 = windowsPositionToPaperPosition({
8580
+ x: mouseEvent.clientX,
8581
+ y: mouseEvent.clientY
8582
+ }, container, zoom);
8583
+ if (draggingPointIndexRef.current !== undefined) { // If dragging a point
8584
+ setPoints(function (prev) {
8585
+ var temp = __spreadArray([], prev, true);
8586
+ temp[draggingPointIndexRef.current] = paperPosition_1;
8587
+ return temp;
8588
+ });
8589
+ }
8590
+ else { // If adding a new point
8591
+ var _a = addMovingPoint(paperPosition_1, points), newDraggingPointIndex = _a.draggingPointIndex, newPoints = _a.points;
8592
+ draggingPointIndexRef.current = newDraggingPointIndex;
8593
+ setPoints(newPoints);
8594
+ }
8595
+ }
8596
+ };
8597
+ var mouseUp = function () {
8598
+ draggingPointIndexRef.current = undefined;
8599
+ setIsDragging(false);
8600
+ };
8601
+ container === null || container === void 0 ? void 0 : container.addEventListener('mousemove', handleMouseMove);
8602
+ container === null || container === void 0 ? void 0 : container.addEventListener('mouseup', mouseUp);
8603
+ return function () {
8604
+ container === null || container === void 0 ? void 0 : container.removeEventListener('mousemove', handleMouseMove);
8605
+ container === null || container === void 0 ? void 0 : container.removeEventListener('mouseup', mouseUp);
8606
+ };
8607
+ }, [container, isDragging, zoom, points]);
8608
+ var handleMouseDownOnPath = function (ev) {
8609
+ ev.preventDefault();
8610
+ //add point if click on path
8611
+ setIsDragging(true);
8600
8612
  };
8601
8613
  var handleLabelMoved = function (newX, newY) {
8602
8614
  if (!onLabelMoved)
@@ -8758,10 +8770,14 @@ var ElementWrapper = React.forwardRef(function (_a, ref) {
8758
8770
  });
8759
8771
 
8760
8772
  var Element = React.forwardRef(function (props, forwardedRef) {
8761
- 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;
8762
8775
  var _a = React.useState(), selectedPort = _a[0], setSelectedPort = _a[1];
8763
8776
  var _b = React.useState(), hoveredPort = _b[0], setHoveredPort = _b[1];
8764
- 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];
8765
8781
  var _d = React.useState(false), someElementLinkStarted = _d[0], setSomeElementLinkStarted = _d[1];
8766
8782
  var _e = React.useState(), potentialPortPosition = _e[0], setPotentialPortPosition = _e[1];
8767
8783
  var _paperEventEmitterContext = React.useContext(paperEventEmitterContext);
@@ -8780,12 +8796,11 @@ var Element = React.forwardRef(function (props, forwardedRef) {
8780
8796
  position.y += parentAbsolutePosition.y;
8781
8797
  }
8782
8798
  return position;
8783
- }, [x, y, parentAbsolutePosition === null || parentAbsolutePosition === void 0 ? void 0 : parentAbsolutePosition.x, parentAbsolutePosition === null || parentAbsolutePosition === void 0 ? void 0 : parentAbsolutePosition.y]);
8799
+ }, [x, y, parentAbsolutePosition]);
8784
8800
  var elementAbsPosition = React.useMemo(function () { return getElementAbsPosition(); }, [getElementAbsPosition]);
8785
8801
  //Listen to manually trigger render event
8786
8802
  React.useEffect(function () {
8787
- var _a;
8788
- 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) {
8789
8804
  if (elementId !== id)
8790
8805
  return;
8791
8806
  logger.info('onManuallyTriggerRenderPort', id);
@@ -8794,17 +8809,19 @@ var Element = React.forwardRef(function (props, forwardedRef) {
8794
8809
  return function () {
8795
8810
  off === null || off === void 0 ? void 0 : off();
8796
8811
  };
8797
- }, [props.onManuallyTriggerRenderPort]);
8798
- //Update portsRef when ports changed
8799
- React.useEffect(function () {
8800
- portsRef.current = ports;
8801
- }, [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]);
8802
8818
  //Listen a new port is created, after add new port to ports state
8803
8819
  React.useEffect(function () {
8804
- logger.info('Ports changed', props.ports);
8805
8820
  setPorts(function (prev) {
8806
- var _a, _b;
8807
- 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) {
8808
8825
  var prevPortState = prev.find(function (_p) { return _p.id === p.id; });
8809
8826
  var newPortState;
8810
8827
  //If port is existed, keep the ref of the port
@@ -8823,24 +8840,39 @@ var Element = React.forwardRef(function (props, forwardedRef) {
8823
8840
  newPortState.ref = React.createRef();
8824
8841
  }
8825
8842
  return newPortState;
8826
- })) !== null && _b !== void 0 ? _b : [];
8843
+ })) !== null && _a !== void 0 ? _a : [];
8844
+ return newState;
8845
+ });
8846
+ }, [_paperEventEmitterContext, normalizePortPosition, id, onPortMoved, propPorts]);
8847
+ //Update portsRef when ports changed
8848
+ React.useEffect(function () {
8849
+ portsRef.current = ports;
8850
+ }, [ports]);
8851
+ //Normalize port position when element is resized
8852
+ React.useEffect(function () {
8853
+ var newPorts = portsRef.current.map(function (port) {
8854
+ var newPosition = normalizePortPosition(port.position);
8855
+ onPortMoved === null || onPortMoved === void 0 ? void 0 : onPortMoved(port, id, port.position, newPosition);
8856
+ _paperEventEmitterContext.emitPortMoved(port, id, port.position, newPosition);
8857
+ port.position = newPosition;
8858
+ return port;
8827
8859
  });
8828
- }, [props.ports]);
8860
+ setPorts(newPorts);
8861
+ }, [width, height, _paperEventEmitterContext, id, onPortsChanged, normalizePortPosition, onPortMoved]);
8829
8862
  //Listen trigger of Delete key, handle delete port is selected
8830
8863
  React.useEffect(function () {
8831
8864
  var listener = _paperEventEmitterContext.onCommandDeleteSelectedPort(function () {
8832
- var _a;
8833
8865
  if (selectedPort) {
8834
8866
  var newPorts = portsRef.current.filter(function (p) { return p.id !== selectedPort.id; });
8835
8867
  setPorts(newPorts);
8836
8868
  setSelectedPort(undefined);
8837
- (_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);
8838
8870
  }
8839
8871
  });
8840
8872
  return function () {
8841
8873
  listener.off();
8842
8874
  };
8843
- }, [selectedPort, props.onPortsChanged]);
8875
+ }, [_paperEventEmitterContext, id, onPortsChanged, selectedPort]);
8844
8876
  React.useEffect(function () {
8845
8877
  //Listener onMouseDown event on #paper-container
8846
8878
  var eventListener = _paperEventEmitterContext.onPaperClicked(function (ev) {
@@ -8849,16 +8881,10 @@ var Element = React.forwardRef(function (props, forwardedRef) {
8849
8881
  return function () {
8850
8882
  eventListener.off();
8851
8883
  };
8852
- }, []);
8853
- //Normalize port position
8854
- var normalizePortPosition = React.useCallback(function (tempNewPosition) {
8855
- var newPosition = correctPortPositionInElement(tempNewPosition, width, height, portMoveableAreas, portSlideRailSVGClassName, elementRef.current || undefined);
8856
- return newPosition || tempNewPosition;
8857
- }, [width, height, portMoveableAreas, portSlideRailSVGClassName, elementRef.current]);
8884
+ }, [_paperEventEmitterContext]);
8858
8885
  React.useEffect(function () {
8859
8886
  //listen element resize to update position of the ports by element size.
8860
8887
  var eleResizeListener = _paperEventEmitterContext.onElementResized(id, function () {
8861
- var _a;
8862
8888
  var isChanged = false;
8863
8889
  var newPorts = portsRef.current.map(function (port) {
8864
8890
  var newPosition = normalizePortPosition({ x: port.position.x, y: port.position.y });
@@ -8872,13 +8898,13 @@ var Element = React.forwardRef(function (props, forwardedRef) {
8872
8898
  });
8873
8899
  setPorts(newPorts);
8874
8900
  if (isChanged) {
8875
- (_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);
8876
8902
  }
8877
8903
  });
8878
8904
  return function () {
8879
8905
  eleResizeListener.off();
8880
8906
  };
8881
- }, [onPortMoved, normalizePortPosition, width, height, portMoveableAreas, portSlideRailSVGClassName]);
8907
+ }, [_paperEventEmitterContext, id, onPortsChanged, onPortMoved, normalizePortPosition, width, height, portMoveableAreas, portSlideRailSVGClassName]);
8882
8908
  //Listen creating element link started, ended.
8883
8909
  React.useEffect(function () {
8884
8910
  var elementStartedListener = _paperEventEmitterContext.onElementLinkStarted(function (tempLink) {
@@ -8895,7 +8921,7 @@ var Element = React.forwardRef(function (props, forwardedRef) {
8895
8921
  elementStartedListener.off();
8896
8922
  elementEndedListener.off();
8897
8923
  };
8898
- }, []);
8924
+ }, [id, _paperEventEmitterContext]);
8899
8925
  //Listen another port is selected
8900
8926
  React.useEffect(function () {
8901
8927
  var portSelectedListener = _paperEventEmitterContext.onPortSelected(function (port, elementId) {
@@ -8906,7 +8932,7 @@ var Element = React.forwardRef(function (props, forwardedRef) {
8906
8932
  return function () {
8907
8933
  portSelectedListener.off();
8908
8934
  };
8909
- }, []);
8935
+ }, [_paperEventEmitterContext, id]);
8910
8936
  //Listen text is selected
8911
8937
  React.useEffect(function () {
8912
8938
  var textSelectedListener = _paperEventEmitterContext.onTextSelected(function (text) {
@@ -8915,7 +8941,7 @@ var Element = React.forwardRef(function (props, forwardedRef) {
8915
8941
  return function () {
8916
8942
  textSelectedListener.off();
8917
8943
  };
8918
- }, []);
8944
+ }, [_paperEventEmitterContext]);
8919
8945
  //Listen another element is selected
8920
8946
  React.useEffect(function () {
8921
8947
  var portSelectedListener = _paperEventEmitterContext.onElementSelected(function (element) {
@@ -8924,7 +8950,7 @@ var Element = React.forwardRef(function (props, forwardedRef) {
8924
8950
  return function () {
8925
8951
  portSelectedListener.off();
8926
8952
  };
8927
- }, []);
8953
+ }, [_paperEventEmitterContext]);
8928
8954
  var handleSelectedPort = React.useCallback(function (portId, e) {
8929
8955
  e.stopPropagation();
8930
8956
  logger.debug('Port selected', portId, e);
@@ -8933,9 +8959,9 @@ var Element = React.forwardRef(function (props, forwardedRef) {
8933
8959
  return;
8934
8960
  setSelectedPort(port);
8935
8961
  _paperEventEmitterContext.emitPortSelected(port, id);
8936
- }, [_paperEventEmitterContext]);
8962
+ }, [id, _paperEventEmitterContext]);
8937
8963
  //Calculate the position of the 4 vertices of a rectangle relative to element
8938
- var calculateSlideRailRectSVGPositions = function (slideRailSVG) {
8964
+ var calculateSlideRailRectSVGPositions = React.useCallback(function (slideRailSVG) {
8939
8965
  var coordinates = getRectangleCorners(slideRailSVG);
8940
8966
  var ownerSVG = slideRailSVG.ownerSVGElement;
8941
8967
  var rotationAngle = getElementRotationInfo(ownerSVG);
@@ -8945,7 +8971,7 @@ var Element = React.forwardRef(function (props, forwardedRef) {
8945
8971
  coordinates = getRotatedRectangleCoordinates(coordinates, rotationCenterX, rotationCenterY, rotationAngle);
8946
8972
  }
8947
8973
  return coordinates;
8948
- };
8974
+ }, [width, height]);
8949
8975
  var getSlideRailSVG = React.useCallback(function (portSlideRailSVGClassName) {
8950
8976
  var _a;
8951
8977
  var slideRailSVG = (_a = elementRef.current) === null || _a === void 0 ? void 0 : _a.querySelector(".".concat(portSlideRailSVGClassName));
@@ -8978,7 +9004,7 @@ var Element = React.forwardRef(function (props, forwardedRef) {
8978
9004
  return;
8979
9005
  _paperEventEmitterContext.emitPortMouseDown(e, port, id);
8980
9006
  onPortMouseDown === null || onPortMouseDown === void 0 ? void 0 : onPortMouseDown(e, port, id);
8981
- }, [_paperEventEmitterContext]);
9007
+ }, [id, onPortMouseDown, _paperEventEmitterContext]);
8982
9008
  //Handle when mouse up on port
8983
9009
  var handlePortMouseUp = React.useCallback(function (portId, e) {
8984
9010
  e.stopPropagation();
@@ -8991,7 +9017,7 @@ var Element = React.forwardRef(function (props, forwardedRef) {
8991
9017
  if (potentialPortPosition) {
8992
9018
  setPotentialPortPosition(undefined);
8993
9019
  }
8994
- }, [_paperEventEmitterContext, potentialPortPosition]);
9020
+ }, [id, onPortMouseUp, _paperEventEmitterContext, potentialPortPosition]);
8995
9021
  //Update state when label of port is moved
8996
9022
  var handlePortLabelMoved = React.useCallback(function (newX, newY, portId) {
8997
9023
  setPorts(function (prevPorts) {
@@ -9145,7 +9171,7 @@ var Element = React.forwardRef(function (props, forwardedRef) {
9145
9171
  break;
9146
9172
  }
9147
9173
  return rotationAngle;
9148
- }, [width, height, portSlideRailSVGClassName, portDirection, getSlideRailSVG, normalizePortPosition]);
9174
+ }, [width, height, portSlideRailSVGClassName, portDirection, getSlideRailSVG, normalizePortPosition, calculateSlideRailRectSVGPositions]);
9149
9175
  var renderedShape = React.useMemo(function () {
9150
9176
  if (renderShape)
9151
9177
  return renderShape(props);
@@ -9160,7 +9186,7 @@ var Element = React.forwardRef(function (props, forwardedRef) {
9160
9186
  }
9161
9187
  }, []);
9162
9188
  //log element render
9163
- 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);
9164
9190
  return (React.createElement(React.Fragment, null,
9165
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; } },
9166
9192
  renderedShape,
@@ -9452,6 +9478,7 @@ var Paper = function (props) {
9452
9478
  var textsRef = React.useRef(texts); //Cache texts to avoid re-render when texts changed
9453
9479
  var size = props.size;
9454
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;
9455
9482
  React.useEffect(function () {
9456
9483
  zoomRef.current = zoom;
9457
9484
  }, [zoom]);
@@ -9465,36 +9492,51 @@ var Paper = function (props) {
9465
9492
  setTexts(props.texts);
9466
9493
  }, [props.texts]);
9467
9494
  React.useEffect(function () {
9468
- var off = props.onManuallyTriggerRenderElement(function (elementId) {
9469
- setElements(__spreadArray([], elements, true));
9470
- if (props.onElementsChanged) {
9471
- props.onElementsChanged(__spreadArray([], elements, true));
9495
+ var off = manuallyTriggerRenderElementHandler(function (elementId) {
9496
+ var newElements = __spreadArray([], elements, true);
9497
+ setElements(newElements);
9498
+ if (onElementsChanged) {
9499
+ onElementsChanged(newElements);
9472
9500
  }
9473
9501
  });
9474
9502
  return function () {
9475
9503
  off();
9476
9504
  };
9477
- }, [props.onManuallyTriggerRenderElement, props.onElementsChanged, elements, selectedElement]);
9505
+ }, [manuallyTriggerRenderElementHandler, onElementsChanged, elements, selectedElement]);
9478
9506
  React.useEffect(function () {
9479
- var _a, _b;
9480
9507
  var offs = [];
9481
- offs.push((_a = props.onManuallySelectElement) === null || _a === void 0 ? void 0 : _a.call(props, function (element) {
9482
- var _a;
9508
+ offs.push(manuallySelectElementHandler === null || manuallySelectElementHandler === void 0 ? void 0 : manuallySelectElementHandler(function (element) {
9483
9509
  setSelectedElement(element || undefined);
9484
9510
  if (element) {
9485
- (_a = props.onElementSelected) === null || _a === void 0 ? void 0 : _a.call(props, element);
9511
+ onElementSelected === null || onElementSelected === void 0 ? void 0 : onElementSelected(element);
9486
9512
  }
9487
9513
  }));
9488
- offs.push((_b = props.onManuallyTriggerDraggingElement) === null || _b === void 0 ? void 0 : _b.call(props, function (element) {
9489
- var _a;
9514
+ offs.push(manuallyTriggerDraggingElementHandler === null || manuallyTriggerDraggingElementHandler === void 0 ? void 0 : manuallyTriggerDraggingElementHandler(function (element) {
9490
9515
  setSelectedElement(element);
9491
- (_a = props.onElementSelected) === null || _a === void 0 ? void 0 : _a.call(props, element);
9516
+ onElementSelected === null || onElementSelected === void 0 ? void 0 : onElementSelected(element);
9492
9517
  setAutoEnabledDraggingSelectedElement(true);
9493
9518
  }));
9494
9519
  return function () {
9495
9520
  offs.forEach(function (off) { return off(); });
9496
9521
  };
9497
- }, [props.onManuallySelectElement, props.onManuallyTriggerDraggingElement, props.onElementSelected]);
9522
+ }, [manuallySelectElementHandler, manuallyTriggerDraggingElementHandler, onElementSelected]);
9523
+ React.useEffect(function () {
9524
+ if (manuallyTriggerStartedLinkingHandler) {
9525
+ var off_1 = manuallyTriggerStartedLinkingHandler(function (sourceElement, sourcePort) {
9526
+ var newLink = {
9527
+ id: generateUniqueId(),
9528
+ points: [],
9529
+ sourceElement: sourceElement,
9530
+ sourcePort: sourcePort,
9531
+ };
9532
+ setTempLink(newLink);
9533
+ paperEventEmitter.emitElementLinkStarted(newLink);
9534
+ });
9535
+ return function () {
9536
+ off_1();
9537
+ };
9538
+ }
9539
+ }, [manuallyTriggerStartedLinkingHandler, paperEventEmitter]);
9498
9540
  //Cache elements to avoid re-render when elements changed
9499
9541
  React.useEffect(function () {
9500
9542
  elementsRef.current = elements;
@@ -9510,10 +9552,10 @@ var Paper = function (props) {
9510
9552
  useKeyboardCommands({
9511
9553
  element: paperContainerRef.current
9512
9554
  });
9513
- var updateElementsTree = function () {
9555
+ var updateElementsTree = React.useCallback(function () {
9514
9556
  var parsedElementsInTree = convertElementsToTree(elements);
9515
9557
  setElementsInTree(parsedElementsInTree);
9516
- };
9558
+ }, [elements]);
9517
9559
  //Cache tempLink to avoid re-render when tempLink changed
9518
9560
  React.useEffect(function () {
9519
9561
  tempLinkRef.current = tempLink;
@@ -9535,20 +9577,19 @@ var Paper = function (props) {
9535
9577
  //Listen port is selected
9536
9578
  React.useEffect(function () {
9537
9579
  var portSelectedListener = paperEventEmitter.onPortSelected(function (port, elementId) {
9538
- var _a;
9539
9580
  setSelectedElement(undefined);
9540
9581
  setSelectedElementSVG(null);
9541
9582
  setSelectedLink(undefined);
9542
9583
  //broadcast selected port to parent component
9543
9584
  var element = elementsRef.current.find(function (e) { return e.id === elementId; });
9544
9585
  if (element) {
9545
- (_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);
9546
9587
  }
9547
9588
  });
9548
9589
  return function () {
9549
9590
  portSelectedListener.off();
9550
9591
  };
9551
- }, []);
9592
+ }, [paperEventEmitter, onPortSelected]);
9552
9593
  React.useEffect(function () {
9553
9594
  //Listen parent of elements changed, then update elements tree
9554
9595
  var parentChangedCancelers = elementsRef.current.map(function (element) {
@@ -9572,8 +9613,8 @@ var Paper = function (props) {
9572
9613
  });
9573
9614
  //Set state to re-render component
9574
9615
  setElements(newElements);
9575
- if (props.onElementsChanged) {
9576
- props.onElementsChanged(newElements);
9616
+ if (onElementsChanged) {
9617
+ onElementsChanged(newElements);
9577
9618
  }
9578
9619
  });
9579
9620
  });
@@ -9581,13 +9622,13 @@ var Paper = function (props) {
9581
9622
  parentChangedCancelers.forEach(function (canceller) { return canceller === null || canceller === void 0 ? void 0 : canceller(); });
9582
9623
  addedPortCancelers.forEach(function (canceller) { return canceller(); });
9583
9624
  };
9584
- }, [elements]);
9625
+ }, [elements, updateElementsTree, onElementsChanged]);
9585
9626
  //Update elements tree when length of elements change
9586
9627
  React.useEffect(function () {
9587
9628
  updateElementsTree();
9588
- }, [elements]);
9629
+ }, [elements, updateElementsTree]);
9589
9630
  //Get all child elements of the deleted element
9590
- var getChildOfElement = function (element) {
9631
+ var getChildOfElement = React.useCallback(function (element) {
9591
9632
  if (!element.childrenElementsInTree)
9592
9633
  return [];
9593
9634
  var childElms = element.childrenElementsInTree;
@@ -9595,10 +9636,9 @@ var Paper = function (props) {
9595
9636
  return __spreadArray(__spreadArray([], acc, true), getChildOfElement(ele), true);
9596
9637
  }, []);
9597
9638
  return __spreadArray(__spreadArray([], childElms, true), childOfChildElements, true);
9598
- };
9639
+ }, []);
9599
9640
  //Listen command delete selected for element
9600
9641
  React.useEffect(function () {
9601
- var _a;
9602
9642
  var listener = paperEventEmitter.onCommandDeleteSelectedElement(function () {
9603
9643
  if (selectedElement) {
9604
9644
  selectedElement.parentElement = undefined; //Remove parent element to avoid memory leak. This will remove the element from the parent element's childrenElements array.
@@ -9608,15 +9648,15 @@ var Paper = function (props) {
9608
9648
  var newElements = prevElements.filter(function (e) { return !deletedElementIds_1.includes(e.id); });
9609
9649
  //Set state to re-render component
9610
9650
  setElements(newElements);
9611
- if (props.onElementsChanged) {
9612
- props.onElementsChanged(newElements);
9651
+ if (onElementsChanged) {
9652
+ onElementsChanged(newElements);
9613
9653
  }
9614
9654
  //Update links
9615
9655
  var prevLinks = linksRef.current;
9616
9656
  var newLinks = prevLinks.filter(function (l) { return !deletedElementIds_1.includes(l.sourceElement.id) && !deletedElementIds_1.includes(l.targetElement.id); });
9617
9657
  setLinks(newLinks);
9618
- if (props.onLinksChanged) {
9619
- props.onLinksChanged(newLinks);
9658
+ if (onLinksChanged) {
9659
+ onLinksChanged(newLinks);
9620
9660
  }
9621
9661
  setSelectedElement(undefined);
9622
9662
  setSelectedElementSVG(null);
@@ -9624,56 +9664,54 @@ var Paper = function (props) {
9624
9664
  });
9625
9665
  //broadcast selected element to parent component
9626
9666
  if (selectedElement) {
9627
- (_a = props.onElementSelected) === null || _a === void 0 ? void 0 : _a.call(props, selectedElement);
9667
+ onElementSelected === null || onElementSelected === void 0 ? void 0 : onElementSelected(selectedElement);
9628
9668
  }
9629
9669
  return function () {
9630
9670
  listener.off();
9631
9671
  };
9632
- }, [selectedElement, props.onElementsChanged]);
9672
+ }, [selectedElement, onElementSelected, onElementsChanged, onLinksChanged, getChildOfElement, paperEventEmitter]);
9633
9673
  //Listen command delete selected for link
9634
9674
  React.useEffect(function () {
9635
- var _a;
9636
9675
  var listener = paperEventEmitter.onCommandDeleteSelectedLink(function () {
9637
9676
  if (selectedLink) {
9638
9677
  var prevLinks = linksRef.current;
9639
9678
  var newLinks = prevLinks.filter(function (l) { return l.id !== selectedLink.id; });
9640
9679
  setLinks(links);
9641
9680
  setSelectedLink(undefined);
9642
- if (props.onLinksChanged) {
9643
- props.onLinksChanged(newLinks);
9681
+ if (onLinksChanged) {
9682
+ onLinksChanged(newLinks);
9644
9683
  }
9645
9684
  }
9646
9685
  });
9647
9686
  //broadcast selected link to parent component
9648
9687
  if (selectedLink) {
9649
- (_a = props.onLinkSelected) === null || _a === void 0 ? void 0 : _a.call(props, selectedLink);
9688
+ onLinkSelected === null || onLinkSelected === void 0 ? void 0 : onLinkSelected(selectedLink);
9650
9689
  }
9651
9690
  return function () {
9652
9691
  listener.off();
9653
9692
  };
9654
- }, [selectedLink, props.onLinksChanged]);
9693
+ }, [selectedLink, onLinksChanged, onLinkSelected, links, paperEventEmitter]);
9655
9694
  //Listen command delete selected for Text
9656
9695
  React.useEffect(function () {
9657
- var _a;
9658
9696
  var listener = paperEventEmitter.onCommandDeleteSelectedText(function () {
9659
9697
  if (selectedText) {
9660
9698
  var prevTexts = textsRef.current;
9661
9699
  var newTexts = prevTexts.filter(function (t) { return t.id !== selectedText.id; });
9662
9700
  setTexts(newTexts);
9663
- if (props.onTextsChanged) {
9664
- props.onTextsChanged(newTexts);
9701
+ if (onTextsChanged) {
9702
+ onTextsChanged(newTexts);
9665
9703
  }
9666
9704
  setSelectedText(undefined);
9667
9705
  }
9668
9706
  });
9669
9707
  //broadcast selected text to parent component
9670
9708
  if (selectedText) {
9671
- (_a = props.onTextSelected) === null || _a === void 0 ? void 0 : _a.call(props, selectedText);
9709
+ onTextSelected === null || onTextSelected === void 0 ? void 0 : onTextSelected(selectedText);
9672
9710
  }
9673
9711
  return function () {
9674
9712
  listener.off();
9675
9713
  };
9676
- }, [selectedText, props.onTextsChanged]);
9714
+ }, [selectedText, onTextsChanged, onTextSelected, texts, paperEventEmitter]);
9677
9715
  var handlePaperMouseMove = function (ev) {
9678
9716
  var _a;
9679
9717
  var _b = windowsPositionToPaperPosition({
@@ -9752,19 +9790,19 @@ var Paper = function (props) {
9752
9790
  links[updatedLinkIndex].path = path;
9753
9791
  var newLinks = __spreadArray([], links, true);
9754
9792
  setLinks(newLinks);
9755
- if (props.onLinksChanged) {
9756
- props.onLinksChanged(newLinks);
9793
+ if (onLinksChanged) {
9794
+ onLinksChanged(newLinks);
9757
9795
  }
9758
- }, [props.onLinksChanged, links]);
9796
+ }, [onLinksChanged, links]);
9759
9797
  var handlePointsOfLinkChange = React.useCallback(function (points, linkId) {
9760
9798
  var newLinks = __spreadArray([], linksRef.current, true);
9761
9799
  var updatedLinkIndex = newLinks.findIndex(function (l) { return l.id === linkId; });
9762
9800
  newLinks[updatedLinkIndex].points = points;
9763
9801
  setLinks(newLinks);
9764
- if (props.onLinksChanged) {
9765
- props.onLinksChanged(newLinks);
9802
+ if (onLinksChanged) {
9803
+ onLinksChanged(newLinks);
9766
9804
  }
9767
- }, [props.onLinksChanged]);
9805
+ }, [onLinksChanged]);
9768
9806
  var handlePortMoved = React.useCallback(function (port, elementId, oldPosition, newPosition) {
9769
9807
  var _a;
9770
9808
  var element = elementsRef.current.find(function (e) { return e.id === elementId; });
@@ -9782,8 +9820,8 @@ var Paper = function (props) {
9782
9820
  return link;
9783
9821
  });
9784
9822
  setLinks(newLinks);
9785
- if (props.onLinksChanged) {
9786
- props.onLinksChanged(newLinks);
9823
+ if (onLinksChanged) {
9824
+ onLinksChanged(newLinks);
9787
9825
  }
9788
9826
  var newElements = elementsRef.current;
9789
9827
  var updatedElementIndex = newElements.findIndex(function (e) { return e.id === elementId; });
@@ -9796,17 +9834,16 @@ var Paper = function (props) {
9796
9834
  //Update port position in element, not re-render
9797
9835
  //To avoid re-render
9798
9836
  setElements(newElements);
9799
- if (props.onElementsChanged) {
9800
- props.onElementsChanged(newElements);
9837
+ if (onElementsChanged) {
9838
+ onElementsChanged(newElements);
9801
9839
  }
9802
- if (props.onPortMoved) {
9803
- props.onPortMoved(newPosition, port, element);
9840
+ if (onPortMoved) {
9841
+ onPortMoved(newPosition, port, element);
9804
9842
  }
9805
9843
  }
9806
- }, [props.onPortMoved, props.onElementsChanged, props.onLinksChanged]);
9844
+ }, [onPortMoved, onElementsChanged, onLinksChanged]);
9807
9845
  //Handle creating a new element link
9808
9846
  var handlePortMouseDown = React.useCallback(function (ev, port, elementId) {
9809
- var _a;
9810
9847
  ev.stopPropagation();
9811
9848
  var element = elementsRef.current.find(function (e) { return e.id === elementId; });
9812
9849
  var paperPosition = windowsPositionToPaperPosition({
@@ -9816,7 +9853,7 @@ var Paper = function (props) {
9816
9853
  console.log(paperPosition);
9817
9854
  //broadcast port mouse down to parent component
9818
9855
  if (element) {
9819
- (_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);
9820
9857
  }
9821
9858
  if (!tempLinkRef.current && element) {
9822
9859
  //handle create temp element link;
@@ -9829,13 +9866,13 @@ var Paper = function (props) {
9829
9866
  setTempLink(newLink);
9830
9867
  paperEventEmitter.emitElementLinkStarted(newLink);
9831
9868
  }
9832
- }, [paperEventEmitter, props.onPortMouseDown]);
9869
+ }, [paperEventEmitter, onPortMouseDown]);
9833
9870
  var createElementLink = React.useCallback(function (sourcePort, sourceElement, targetPort, targetElement) {
9834
9871
  //if no onCreatingLink prop, no link will be created
9835
- if (!props.onCreatingLink) {
9872
+ if (!onCreatingLink) {
9836
9873
  return null;
9837
9874
  }
9838
- var newElementLink = props.onCreatingLink(sourcePort, sourceElement, targetPort, targetElement);
9875
+ var newElementLink = onCreatingLink(sourcePort, sourceElement, targetPort, targetElement);
9839
9876
  if (!newElementLink)
9840
9877
  return null;
9841
9878
  //Automatic bending, if is not defined points
@@ -9844,9 +9881,8 @@ var Paper = function (props) {
9844
9881
  newElementLink = automationAddPointsToLink(newElementLink, elements_1, MAX_LINK_KNOT_COUNT);
9845
9882
  }
9846
9883
  return newElementLink;
9847
- }, [props.onCreatingLink]);
9884
+ }, [onCreatingLink]);
9848
9885
  var handlePortMouseUp = React.useCallback(function (ev, port, elementId) {
9849
- var _a;
9850
9886
  ev.stopPropagation();
9851
9887
  var element = elementsRef.current.find(function (e) { return e.id === elementId; });
9852
9888
  var paperPosition = windowsPositionToPaperPosition({
@@ -9855,7 +9891,7 @@ var Paper = function (props) {
9855
9891
  }, paperContainerRef.current, zoomRef.current);
9856
9892
  //broadcast port mouse down to parent component
9857
9893
  if (element) {
9858
- (_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);
9859
9895
  }
9860
9896
  //Create new element link, if has tempLink
9861
9897
  if (tempLinkRef.current) {
@@ -9863,7 +9899,7 @@ var Paper = function (props) {
9863
9899
  var isMouseUpOnNotSelf = tempLinkRef.current.sourcePort.id !== port.id || tempLinkRef.current.sourceElement.id !== elementId;
9864
9900
  var newElementLink = null;
9865
9901
  if (isMouseUpOnNotSelf) {
9866
- var _b = tempLinkRef.current, sourcePort = _b.sourcePort, sourceElement = _b.sourceElement;
9902
+ var _a = tempLinkRef.current, sourcePort = _a.sourcePort, sourceElement = _a.sourceElement;
9867
9903
  var targetElement = elementsRef.current.find(function (e) { return e.id === elementId; });
9868
9904
  newElementLink = createElementLink(sourcePort, sourceElement, port, targetElement);
9869
9905
  }
@@ -9871,8 +9907,8 @@ var Paper = function (props) {
9871
9907
  var prevLinks = linksRef.current;
9872
9908
  var newLinks = __spreadArray(__spreadArray([], prevLinks, true), [newElementLink], false);
9873
9909
  setLinks(newLinks);
9874
- if (props.onLinksChanged) {
9875
- props.onLinksChanged(newLinks);
9910
+ if (onLinksChanged) {
9911
+ onLinksChanged(newLinks);
9876
9912
  }
9877
9913
  paperEventEmitter.emitElementLinkEnded(newElementLink);
9878
9914
  }
@@ -9881,14 +9917,14 @@ var Paper = function (props) {
9881
9917
  }
9882
9918
  setTempLink(null);
9883
9919
  }
9884
- }, [paperEventEmitter, createElementLink, props.onPortMouseUp, props.onLinksChanged]);
9920
+ }, [paperEventEmitter, createElementLink, onPortMouseUp, onLinksChanged]);
9885
9921
  var handlePortsChanged = React.useCallback(function (ports, elementId) {
9886
9922
  var element = elementsRef.current.find(function (e) { return e.id === elementId; });
9887
9923
  if (element) {
9888
9924
  //broadcast ports changed to parent component
9889
- props.onPortsChanged(ports, element);
9925
+ onPortsChanged(ports, element);
9890
9926
  }
9891
- }, [props.onPortsChanged]);
9927
+ }, [onPortsChanged]);
9892
9928
  var handleLinkLabelMoved = React.useCallback(function (newX, newY, index, labelType) {
9893
9929
  var prevLinks = linksRef.current;
9894
9930
  var newLinks = __spreadArray([], prevLinks, true);
@@ -9912,10 +9948,10 @@ var Paper = function (props) {
9912
9948
  }
9913
9949
  }
9914
9950
  setLinks(newLinks);
9915
- if (props.onLinksChanged) {
9916
- props.onLinksChanged(newLinks);
9951
+ if (onLinksChanged) {
9952
+ onLinksChanged(newLinks);
9917
9953
  }
9918
- }, [props.onLinksChanged]);
9954
+ }, [onLinksChanged]);
9919
9955
  var handleLinkLabelResized = React.useCallback(function (width, height, index, labelType) {
9920
9956
  var prevLinks = linksRef.current;
9921
9957
  var newLinks = __spreadArray([], prevLinks, true);
@@ -9947,10 +9983,10 @@ var Paper = function (props) {
9947
9983
  }
9948
9984
  }
9949
9985
  setLinks(newLinks);
9950
- if (props.onLinksChanged) {
9951
- props.onLinksChanged(newLinks);
9986
+ if (onLinksChanged) {
9987
+ onLinksChanged(newLinks);
9952
9988
  }
9953
- }, [props.onLinksChanged]);
9989
+ }, [onLinksChanged]);
9954
9990
  var handleLinkLabelContentChanged = React.useCallback(function (newValue, index, labelType) {
9955
9991
  var prevLinks = linksRef.current;
9956
9992
  var newLinks = __spreadArray([], prevLinks, true);
@@ -9970,10 +10006,10 @@ var Paper = function (props) {
9970
10006
  }
9971
10007
  }
9972
10008
  setLinks(newLinks);
9973
- if (props.onLinksChanged) {
9974
- props.onLinksChanged(newLinks);
10009
+ if (onLinksChanged) {
10010
+ onLinksChanged(newLinks);
9975
10011
  }
9976
- }, [props.onLinksChanged]);
10012
+ }, [onLinksChanged]);
9977
10013
  var handleSelectLink = function (link, index) {
9978
10014
  setSelectedLink(link);
9979
10015
  };
@@ -10026,20 +10062,20 @@ var Paper = function (props) {
10026
10062
  var newLinks = __spreadArray([], prevLinks, true);
10027
10063
  newLinks.splice(index, 1);
10028
10064
  setLinks(newLinks);
10029
- if (props.onLinksChanged) {
10030
- props.onLinksChanged(newLinks);
10065
+ if (onLinksChanged) {
10066
+ onLinksChanged(newLinks);
10031
10067
  }
10032
10068
  };
10033
- }, [props.onLinksChanged]);
10069
+ }, [onLinksChanged]);
10034
10070
  var handleMouseUpAtLinkedPortPlaceholder = React.useCallback(function (link, position, targetElementId) {
10035
10071
  var targetElement = elementsRef.current.find(function (e) { return e.id === targetElementId; });
10036
10072
  if (!targetElement)
10037
10073
  return;
10038
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));
10039
- if (props.onCreatingPortByLinking) {
10075
+ if (onCreatingPortByLinking) {
10040
10076
  var sourcePort = link.sourcePort, sourceElement = link.sourceElement;
10041
10077
  //Handle create port via onCreatingPortByLinking prop
10042
- var targetPort = props.onCreatingPortByLinking(sourceElement, sourcePort, targetElement, position);
10078
+ var targetPort = onCreatingPortByLinking(sourceElement, sourcePort, targetElement, position);
10043
10079
  if (targetPort) {
10044
10080
  //Add new port to target element
10045
10081
  targetElement.addPort(targetPort);
@@ -10050,8 +10086,8 @@ var Paper = function (props) {
10050
10086
  var prevLinks = linksRef.current;
10051
10087
  var newLinks = __spreadArray(__spreadArray([], prevLinks, true), [newElementLink], false);
10052
10088
  setLinks(newLinks);
10053
- if (props.onLinksChanged) {
10054
- props.onLinksChanged(newLinks);
10089
+ if (onLinksChanged) {
10090
+ onLinksChanged(newLinks);
10055
10091
  }
10056
10092
  paperEventEmitter.emitElementLinkEnded(newElementLink);
10057
10093
  setTempLink(null);
@@ -10062,7 +10098,7 @@ var Paper = function (props) {
10062
10098
  //Clear tempLink
10063
10099
  setTempLink(null);
10064
10100
  paperEventEmitter.emitElementLinkEnded();
10065
- }, [props.onCreatingPortByLinking, createElementLink, paperEventEmitter, props.onLinksChanged]);
10101
+ }, [onCreatingPortByLinking, createElementLink, paperEventEmitter, onLinksChanged]);
10066
10102
  var handleElementTextChange = React.useCallback(function (elementId, textId, newContent) {
10067
10103
  var prevElms = elementsRef.current;
10068
10104
  var newElements = prevElms.map(function (curEle) {
@@ -10076,10 +10112,10 @@ var Paper = function (props) {
10076
10112
  return curEle;
10077
10113
  });
10078
10114
  setElements(newElements);
10079
- if (props.onElementsChanged) {
10080
- props.onElementsChanged(newElements);
10115
+ if (onElementsChanged) {
10116
+ onElementsChanged(newElements);
10081
10117
  }
10082
- }, [props.onElementsChanged]);
10118
+ }, [onElementsChanged]);
10083
10119
  var handleElementClicked = React.useCallback(function (elementId, e, ref) {
10084
10120
  e.stopPropagation();
10085
10121
  var tempLink = tempLinkRef.current;
@@ -10100,73 +10136,67 @@ var Paper = function (props) {
10100
10136
  setMouseDownedOnPaper(false);
10101
10137
  }, [paperEventEmitter]);
10102
10138
  var handlePortContextMenu = React.useCallback(function (port, elementId, e) {
10103
- var _a;
10104
10139
  e.preventDefault();
10105
10140
  var element = elementsRef.current.find(function (e) { return e.id === elementId; });
10106
10141
  if (element) {
10107
- (_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);
10108
10143
  }
10109
- }, [props.onPortContextMenu]);
10144
+ }, [onPortContextMenu]);
10110
10145
  var handleContextMenu = React.useCallback(function (elementId, e, ref) {
10111
- var _a;
10112
10146
  e.preventDefault();
10113
10147
  var element = elementsRef.current.find(function (e) { return e.id === elementId; });
10114
10148
  if (element) {
10115
10149
  handleElementClicked(elementId, e, ref);
10116
- (_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);
10117
10151
  }
10118
- }, [props.onElementContextMenu, handleElementClicked]);
10152
+ }, [onElementContextMenu, handleElementClicked]);
10119
10153
  var handleMouseUp = React.useCallback(function (ev, elementId) {
10120
- var _a;
10121
10154
  var element = elementsRef.current.find(function (ele) { return ele.id === elementId; });
10122
10155
  var paperPosition = windowsPositionToPaperPosition({
10123
10156
  x: ev.clientX,
10124
10157
  y: ev.clientY
10125
10158
  }, paperContainerRef.current, zoomRef.current);
10126
10159
  if (element) {
10127
- (_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);
10128
10161
  }
10129
- }, [props.onElementMouseUp]);
10162
+ }, [onElementMouseUp]);
10130
10163
  var handleMouseDown = React.useCallback(function (ev, elementId) {
10131
- var _a;
10132
10164
  var element = elementsRef.current.find(function (ele) { return ele.id === elementId; });
10133
10165
  var paperPosition = windowsPositionToPaperPosition({
10134
10166
  x: ev.clientX,
10135
10167
  y: ev.clientY
10136
10168
  }, paperContainerRef.current, zoomRef.current);
10137
10169
  if (element) {
10138
- (_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);
10139
10171
  }
10140
- }, [props.onElementMouseDown]);
10172
+ }, [onElementMouseDown]);
10141
10173
  var handleMouseMove = React.useCallback(function (ev, elementId) {
10142
- var _a;
10143
10174
  var element = elementsRef.current.find(function (ele) { return ele.id === elementId; });
10144
10175
  var paperPosition = windowsPositionToPaperPosition({
10145
10176
  x: ev.clientX,
10146
10177
  y: ev.clientY
10147
10178
  }, paperContainerRef.current, zoomRef.current);
10148
10179
  if (element) {
10149
- (_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);
10150
10181
  }
10151
- }, [props.onElementMouseMove]);
10182
+ }, [onElementMouseMove]);
10152
10183
  var handleMouseLeave = React.useCallback(function (ev, elementId) {
10153
- var _a;
10154
10184
  var element = elementsRef.current.find(function (ele) { return ele.id === elementId; });
10155
10185
  var paperPosition = windowsPositionToPaperPosition({
10156
10186
  x: ev.clientX,
10157
10187
  y: ev.clientY
10158
10188
  }, paperContainerRef.current, zoomRef.current);
10159
10189
  if (element) {
10160
- (_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);
10161
10191
  }
10162
- }, [props.onElementMouseLeave]);
10192
+ }, [onElementMouseLeave]);
10163
10193
  var renderElementInTree = React.useCallback(function (element) {
10164
10194
  //use the defined react element or the default Element component
10165
10195
  var ReactElement = element.reactElement || Element$1;
10166
10196
  return (React.createElement("g", { id: "group-of-element-".concat(element.id), key: element.id },
10167
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,
10168
10198
  // portPlaceholderShape={(<Circle x={0} y={0} width={10} height={10} fill='red' positioningAnchor={PositioningAnchor.Center} />)}
10169
- onMouseUpAtLinkedPortPlaceholder: handleMouseUpAtLinkedPortPlaceholder, onTextUpdated: handleElementTextChange, onManuallyTriggerRenderPort: props.onManuallyTriggerRenderPort, 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 },
10170
10200
  element.childrenElementsInTree && element.childrenElementsInTree.map(renderElementInTree),
10171
10201
  !!paperContainerRef.current && !!selectedElement && selectedElement.id === element.id &&
10172
10202
  React.createElement(SelectionFrame, { key: selectedElement.id, container: paperContainerRef.current, targetSVGElement: selectedElementSVG || undefined, resizability: (selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.resizability) || {
@@ -10198,18 +10228,18 @@ var Paper = function (props) {
10198
10228
  return;
10199
10229
  var oldPosition = __assign({}, selectedElement.position);
10200
10230
  // Relative position to the paper container
10201
- var newPosition = {
10231
+ var paperPosition = {
10202
10232
  x: newX,
10203
10233
  y: newY
10204
10234
  };
10205
- logger.info("Element ".concat(selectedElement.id, " is dragging to position ").concat(JSON.stringify(newPosition)));
10235
+ logger.info("Element ".concat(selectedElement.id, " is dragging to position ").concat(JSON.stringify(paperPosition)));
10206
10236
  //Adjust position of element if it should move as a port on parent port area
10207
10237
  if (selectedElement.moveAsPortOnParent && selectedElement.parentElement) {
10208
- newPosition = adjustElementPositionOnParentPortArea(selectedElement, newPosition, true);
10209
- updateElementPosition(selectedElement, newPosition.x, newPosition.y, true);
10238
+ paperPosition = adjustElementPositionOnParentPortArea(selectedElement, paperPosition, true);
10239
+ updateElementPosition(selectedElement, paperPosition.x, paperPosition.y, true);
10210
10240
  }
10211
10241
  else {
10212
- updateElementPosition(selectedElement, newPosition.x, newPosition.y, false);
10242
+ updateElementPosition(selectedElement, paperPosition.x, paperPosition.y, false);
10213
10243
  }
10214
10244
  //let newElementPosition = updateElementPosition(selectedElement, newPosition.x, newPosition.y, true)
10215
10245
  var indexSelectedElement = elements.findIndex(function (e) { return e.id === selectedElement.id; });
@@ -10217,8 +10247,8 @@ var Paper = function (props) {
10217
10247
  // Start updating the position of links connected to the selected element
10218
10248
  var childElements = getChildOfElement(selectedElement);
10219
10249
  var elementIds = __spreadArray(__spreadArray([], childElements.map(function (e) { return e.id; }), true), [selectedElement.id], false);
10220
- var offsetX = newPosition.x - oldPosition.x;
10221
- var offsetY = newPosition.y - oldPosition.y;
10250
+ var offsetX = selectedElement.position.x - oldPosition.x;
10251
+ var offsetY = selectedElement.position.y - oldPosition.y;
10222
10252
  // Update position of all points of links that are connected to the selected element
10223
10253
  var newLinks = linksRef.current.map(function (link) {
10224
10254
  var isUpdate = elementIds.includes(link.sourceElement.id) && elementIds.includes(link.targetElement.id);
@@ -10235,8 +10265,8 @@ var Paper = function (props) {
10235
10265
  //Set state to re-render UI with new position
10236
10266
  setElementsInTree(function (prev) { return __spreadArray([], prev, true); });
10237
10267
  if (props.onElementMoved) {
10238
- console.log('onElementMoved', selectedElement.position, newPosition);
10239
- props.onElementMoved(selectedElement.position, selectedElement, indexSelectedElement, newPosition);
10268
+ console.log('onElementMoved', selectedElement.position, paperPosition);
10269
+ props.onElementMoved(selectedElement.position, selectedElement, indexSelectedElement, paperPosition);
10240
10270
  }
10241
10271
  paperEventEmitter.emitElementMoved(selectedElement, oldPosition, selectedElement.position);
10242
10272
  setMouseDownedOnPaper(false);
@@ -10258,7 +10288,7 @@ var Paper = function (props) {
10258
10288
  paperEventEmitter.emitElementResized(selectedElement, oldSize, newSize);
10259
10289
  setMouseDownedOnPaper(false);
10260
10290
  } }))));
10261
- }, [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]);
10262
10292
  var ElementsInTree = React.useMemo(function () {
10263
10293
  return elementsInTree.map(function (element, index) {
10264
10294
  return renderElementInTree(element);
@@ -10407,7 +10437,7 @@ var Editor = function (_a) {
10407
10437
  }, [editorContext]);
10408
10438
  return (React.createElement(EditorConfigurationContextProvider, { value: editorContext.configuration },
10409
10439
  React.createElement(ZoomContextProvider, null,
10410
- React.createElement(Paper$1, { key: "paper", size: { width: width, height: height }, elements: elements, links: links, texts: texts, onPaperClicked: handlePaperClicked, onPortMouseDown: handlePortMouseDown, onPortMouseUp: handlePortMouseUp, onPortMoved: handlePortMoved, onPortSelected: handlePortSelected, onPortsChanged: handlePortsChanged, onPortContextMenu: handlePortContextMenu, onElementContextMenu: handleElementContextMenu, onElementMoved: handleElementMoved, onElementResized: handleElementResized, onElementSelected: handleElementSelected, onElementMouseLeave: handleElementMouseLeave, onElementMouseMove: handleElementMouseMove, onElementMouseDown: handleElementMouseDown, onElementMouseUp: handleElementMouseUp, onElementsChanged: handleElementsChanged, onCreatingLink: handleOnCreatingLink, onCreatingPortByLinking: handleOnCreatingPortByLinking, onLinkSelected: handleLinkSelected, onLinksChanged: handleLinksChanged, onTextSelected: handleTextSelected, onTextsChanged: handleTextsChanged, onPaperMouseMoved: handlePaperMouseMoved, onPaperMouseUp: handlePaperMouseUp, onPaperMouseDown: handlePaperMouseDown, onManuallyTriggerRenderElement: editorContext.onManuallyTriggerRenderElement.bind(editorContext), onManuallyTriggerRenderPort: editorContext.onManuallyTriggerRenderPort.bind(editorContext), onManuallySelectElement: editorContext.onManuallySelectElement.bind(editorContext), onManuallyTriggerDraggingElement: editorContext.onManuallyTriggerDraggingElement.bind(editorContext) }))));
10440
+ React.createElement(Paper$1, { key: "paper", size: { width: width, height: height }, elements: elements, links: links, texts: texts, onPaperClicked: handlePaperClicked, onPortMouseDown: handlePortMouseDown, onPortMouseUp: handlePortMouseUp, onPortMoved: handlePortMoved, onPortSelected: handlePortSelected, onPortsChanged: handlePortsChanged, onPortContextMenu: handlePortContextMenu, onElementContextMenu: handleElementContextMenu, onElementMoved: handleElementMoved, onElementResized: handleElementResized, onElementSelected: handleElementSelected, onElementMouseLeave: handleElementMouseLeave, onElementMouseMove: handleElementMouseMove, onElementMouseDown: handleElementMouseDown, onElementMouseUp: handleElementMouseUp, onElementsChanged: handleElementsChanged, onCreatingLink: handleOnCreatingLink, onCreatingPortByLinking: handleOnCreatingPortByLinking, onLinkSelected: handleLinkSelected, onLinksChanged: handleLinksChanged, onTextSelected: handleTextSelected, onTextsChanged: handleTextsChanged, onPaperMouseMoved: handlePaperMouseMoved, onPaperMouseUp: handlePaperMouseUp, onPaperMouseDown: handlePaperMouseDown, manuallyTriggerRenderElementHandler: editorContext.manuallyTriggerRenderElementHandler.bind(editorContext), manuallyTriggerRenderPortHandler: editorContext.manuallyTriggerRenderPortHandler.bind(editorContext), manuallySelectElementHandler: editorContext.manuallySelectElementHandler.bind(editorContext), manuallyTriggerDraggingElementHandler: editorContext.manuallyTriggerDraggingElementHandler.bind(editorContext), manuallyTriggerStartedLinkingHandler: editorContext.manuallyTriggerStartedLinkingHandler.bind(editorContext) }))));
10411
10441
  };
10412
10442
 
10413
10443
  exports.CircleRC = Circle;