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 +247 -217
- package/dist/cjs/types/components/paper.d.ts +5 -4
- package/dist/cjs/types/mocks/editorContextMultipleElements.d.ts +2 -0
- package/dist/cjs/types/models/IEditorContext.d.ts +1 -4
- package/dist/cjs/types/models/implementations/EditorContext.d.ts +1 -4
- package/dist/esm/index.js +247 -217
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/components/paper.d.ts +5 -4
- package/dist/esm/types/mocks/editorContextMultipleElements.d.ts +2 -0
- package/dist/esm/types/models/IEditorContext.d.ts +1 -4
- package/dist/esm/types/models/implementations/EditorContext.d.ts +1 -4
- package/dist/index.d.ts +2 -8
- package/package.json +1 -1
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
8441
|
-
var _l = React.useState({
|
|
8452
|
+
var _k = React.useState({
|
|
8442
8453
|
current: null,
|
|
8443
|
-
}), selectedLabelRef =
|
|
8444
|
-
var
|
|
8445
|
-
var
|
|
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
|
|
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
|
-
//
|
|
8470
|
+
// Initialize points from props
|
|
8460
8471
|
React.useEffect(function () {
|
|
8461
|
-
|
|
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
|
-
|
|
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 =
|
|
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
|
-
|
|
8599
|
-
|
|
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
|
|
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(
|
|
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
|
|
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
|
|
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
|
-
}, [
|
|
8798
|
-
//
|
|
8799
|
-
React.
|
|
8800
|
-
|
|
8801
|
-
|
|
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
|
|
8807
|
-
|
|
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 &&
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
}, [
|
|
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
|
-
|
|
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 =
|
|
9469
|
-
|
|
9470
|
-
|
|
9471
|
-
|
|
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
|
-
}, [
|
|
9505
|
+
}, [manuallyTriggerRenderElementHandler, onElementsChanged, elements, selectedElement]);
|
|
9478
9506
|
React.useEffect(function () {
|
|
9479
|
-
var _a, _b;
|
|
9480
9507
|
var offs = [];
|
|
9481
|
-
offs.push(
|
|
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
|
-
|
|
9511
|
+
onElementSelected === null || onElementSelected === void 0 ? void 0 : onElementSelected(element);
|
|
9486
9512
|
}
|
|
9487
9513
|
}));
|
|
9488
|
-
offs.push(
|
|
9489
|
-
var _a;
|
|
9514
|
+
offs.push(manuallyTriggerDraggingElementHandler === null || manuallyTriggerDraggingElementHandler === void 0 ? void 0 : manuallyTriggerDraggingElementHandler(function (element) {
|
|
9490
9515
|
setSelectedElement(element);
|
|
9491
|
-
|
|
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
|
-
}, [
|
|
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
|
-
|
|
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 (
|
|
9576
|
-
|
|
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 (
|
|
9612
|
-
|
|
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 (
|
|
9619
|
-
|
|
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
|
-
|
|
9667
|
+
onElementSelected === null || onElementSelected === void 0 ? void 0 : onElementSelected(selectedElement);
|
|
9628
9668
|
}
|
|
9629
9669
|
return function () {
|
|
9630
9670
|
listener.off();
|
|
9631
9671
|
};
|
|
9632
|
-
}, [selectedElement,
|
|
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 (
|
|
9643
|
-
|
|
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
|
-
|
|
9688
|
+
onLinkSelected === null || onLinkSelected === void 0 ? void 0 : onLinkSelected(selectedLink);
|
|
9650
9689
|
}
|
|
9651
9690
|
return function () {
|
|
9652
9691
|
listener.off();
|
|
9653
9692
|
};
|
|
9654
|
-
}, [selectedLink,
|
|
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 (
|
|
9664
|
-
|
|
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
|
-
|
|
9709
|
+
onTextSelected === null || onTextSelected === void 0 ? void 0 : onTextSelected(selectedText);
|
|
9672
9710
|
}
|
|
9673
9711
|
return function () {
|
|
9674
9712
|
listener.off();
|
|
9675
9713
|
};
|
|
9676
|
-
}, [selectedText,
|
|
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 (
|
|
9756
|
-
|
|
9793
|
+
if (onLinksChanged) {
|
|
9794
|
+
onLinksChanged(newLinks);
|
|
9757
9795
|
}
|
|
9758
|
-
}, [
|
|
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 (
|
|
9765
|
-
|
|
9802
|
+
if (onLinksChanged) {
|
|
9803
|
+
onLinksChanged(newLinks);
|
|
9766
9804
|
}
|
|
9767
|
-
}, [
|
|
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 (
|
|
9786
|
-
|
|
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 (
|
|
9800
|
-
|
|
9837
|
+
if (onElementsChanged) {
|
|
9838
|
+
onElementsChanged(newElements);
|
|
9801
9839
|
}
|
|
9802
|
-
if (
|
|
9803
|
-
|
|
9840
|
+
if (onPortMoved) {
|
|
9841
|
+
onPortMoved(newPosition, port, element);
|
|
9804
9842
|
}
|
|
9805
9843
|
}
|
|
9806
|
-
}, [
|
|
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
|
-
|
|
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,
|
|
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 (!
|
|
9872
|
+
if (!onCreatingLink) {
|
|
9836
9873
|
return null;
|
|
9837
9874
|
}
|
|
9838
|
-
var newElementLink =
|
|
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
|
-
}, [
|
|
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
|
-
|
|
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
|
|
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 (
|
|
9875
|
-
|
|
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,
|
|
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
|
-
|
|
9925
|
+
onPortsChanged(ports, element);
|
|
9890
9926
|
}
|
|
9891
|
-
}, [
|
|
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 (
|
|
9916
|
-
|
|
9951
|
+
if (onLinksChanged) {
|
|
9952
|
+
onLinksChanged(newLinks);
|
|
9917
9953
|
}
|
|
9918
|
-
}, [
|
|
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 (
|
|
9951
|
-
|
|
9986
|
+
if (onLinksChanged) {
|
|
9987
|
+
onLinksChanged(newLinks);
|
|
9952
9988
|
}
|
|
9953
|
-
}, [
|
|
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 (
|
|
9974
|
-
|
|
10009
|
+
if (onLinksChanged) {
|
|
10010
|
+
onLinksChanged(newLinks);
|
|
9975
10011
|
}
|
|
9976
|
-
}, [
|
|
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 (
|
|
10030
|
-
|
|
10065
|
+
if (onLinksChanged) {
|
|
10066
|
+
onLinksChanged(newLinks);
|
|
10031
10067
|
}
|
|
10032
10068
|
};
|
|
10033
|
-
}, [
|
|
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 (
|
|
10075
|
+
if (onCreatingPortByLinking) {
|
|
10040
10076
|
var sourcePort = link.sourcePort, sourceElement = link.sourceElement;
|
|
10041
10077
|
//Handle create port via onCreatingPortByLinking prop
|
|
10042
|
-
var targetPort =
|
|
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 (
|
|
10054
|
-
|
|
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
|
-
}, [
|
|
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 (
|
|
10080
|
-
|
|
10115
|
+
if (onElementsChanged) {
|
|
10116
|
+
onElementsChanged(newElements);
|
|
10081
10117
|
}
|
|
10082
|
-
}, [
|
|
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
|
-
|
|
10142
|
+
onPortContextMenu === null || onPortContextMenu === void 0 ? void 0 : onPortContextMenu(port, element, e);
|
|
10108
10143
|
}
|
|
10109
|
-
}, [
|
|
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
|
-
|
|
10150
|
+
onElementContextMenu === null || onElementContextMenu === void 0 ? void 0 : onElementContextMenu(element, e);
|
|
10117
10151
|
}
|
|
10118
|
-
}, [
|
|
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
|
-
|
|
10160
|
+
onElementMouseUp === null || onElementMouseUp === void 0 ? void 0 : onElementMouseUp(ev, element, paperPosition);
|
|
10128
10161
|
}
|
|
10129
|
-
}, [
|
|
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
|
-
|
|
10170
|
+
onElementMouseDown === null || onElementMouseDown === void 0 ? void 0 : onElementMouseDown(ev, element, paperPosition);
|
|
10139
10171
|
}
|
|
10140
|
-
}, [
|
|
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
|
-
|
|
10180
|
+
onElementMouseMove === null || onElementMouseMove === void 0 ? void 0 : onElementMouseMove(ev, element, paperPosition);
|
|
10150
10181
|
}
|
|
10151
|
-
}, [
|
|
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
|
-
|
|
10190
|
+
onElementMouseLeave === null || onElementMouseLeave === void 0 ? void 0 : onElementMouseLeave(ev, element, paperPosition);
|
|
10161
10191
|
}
|
|
10162
|
-
}, [
|
|
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:
|
|
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
|
|
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(
|
|
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
|
-
|
|
10209
|
-
updateElementPosition(selectedElement,
|
|
10238
|
+
paperPosition = adjustElementPositionOnParentPortArea(selectedElement, paperPosition, true);
|
|
10239
|
+
updateElementPosition(selectedElement, paperPosition.x, paperPosition.y, true);
|
|
10210
10240
|
}
|
|
10211
10241
|
else {
|
|
10212
|
-
updateElementPosition(selectedElement,
|
|
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 =
|
|
10221
|
-
var offsetY =
|
|
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,
|
|
10239
|
-
props.onElementMoved(selectedElement.position, selectedElement, indexSelectedElement,
|
|
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,
|
|
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;
|