orcasvn-react-diagrams 0.1.58 → 0.1.60
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 +121 -80
- 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 +121 -80
- 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
|
|
|
@@ -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)
|
|
@@ -8826,6 +8838,17 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
8826
8838
|
})) !== null && _b !== void 0 ? _b : [];
|
|
8827
8839
|
});
|
|
8828
8840
|
}, [props.ports]);
|
|
8841
|
+
//Normalize port position when element is resized
|
|
8842
|
+
React.useEffect(function () {
|
|
8843
|
+
var newPorts = portsRef.current.map(function (port) {
|
|
8844
|
+
var newPosition = normalizePortPosition(port.position);
|
|
8845
|
+
onPortMoved === null || onPortMoved === void 0 ? void 0 : onPortMoved(port, id, port.position, newPosition);
|
|
8846
|
+
_paperEventEmitterContext.emitPortMoved(port, id, port.position, newPosition);
|
|
8847
|
+
port.position = newPosition;
|
|
8848
|
+
return port;
|
|
8849
|
+
});
|
|
8850
|
+
setPorts(newPorts);
|
|
8851
|
+
}, [width, height]);
|
|
8829
8852
|
//Listen trigger of Delete key, handle delete port is selected
|
|
8830
8853
|
React.useEffect(function () {
|
|
8831
8854
|
var listener = _paperEventEmitterContext.onCommandDeleteSelectedPort(function () {
|
|
@@ -9465,27 +9488,28 @@ var Paper = function (props) {
|
|
|
9465
9488
|
setTexts(props.texts);
|
|
9466
9489
|
}, [props.texts]);
|
|
9467
9490
|
React.useEffect(function () {
|
|
9468
|
-
var off = props.
|
|
9469
|
-
|
|
9491
|
+
var off = props.manuallyTriggerRenderElementHandler(function (elementId) {
|
|
9492
|
+
var newElements = __spreadArray([], elements, true);
|
|
9493
|
+
setElements(newElements);
|
|
9470
9494
|
if (props.onElementsChanged) {
|
|
9471
|
-
props.onElementsChanged(
|
|
9495
|
+
props.onElementsChanged(newElements);
|
|
9472
9496
|
}
|
|
9473
9497
|
});
|
|
9474
9498
|
return function () {
|
|
9475
9499
|
off();
|
|
9476
9500
|
};
|
|
9477
|
-
}, [props.
|
|
9501
|
+
}, [props.manuallyTriggerRenderElementHandler, props.onElementsChanged, elements, selectedElement]);
|
|
9478
9502
|
React.useEffect(function () {
|
|
9479
9503
|
var _a, _b;
|
|
9480
9504
|
var offs = [];
|
|
9481
|
-
offs.push((_a = props.
|
|
9505
|
+
offs.push((_a = props.manuallySelectElementHandler) === null || _a === void 0 ? void 0 : _a.call(props, function (element) {
|
|
9482
9506
|
var _a;
|
|
9483
9507
|
setSelectedElement(element || undefined);
|
|
9484
9508
|
if (element) {
|
|
9485
9509
|
(_a = props.onElementSelected) === null || _a === void 0 ? void 0 : _a.call(props, element);
|
|
9486
9510
|
}
|
|
9487
9511
|
}));
|
|
9488
|
-
offs.push((_b = props.
|
|
9512
|
+
offs.push((_b = props.manuallyTriggerDraggingElementHandler) === null || _b === void 0 ? void 0 : _b.call(props, function (element) {
|
|
9489
9513
|
var _a;
|
|
9490
9514
|
setSelectedElement(element);
|
|
9491
9515
|
(_a = props.onElementSelected) === null || _a === void 0 ? void 0 : _a.call(props, element);
|
|
@@ -9494,7 +9518,24 @@ var Paper = function (props) {
|
|
|
9494
9518
|
return function () {
|
|
9495
9519
|
offs.forEach(function (off) { return off(); });
|
|
9496
9520
|
};
|
|
9497
|
-
}, [props.
|
|
9521
|
+
}, [props.manuallySelectElementHandler, props.manuallyTriggerDraggingElementHandler, props.onElementSelected]);
|
|
9522
|
+
React.useEffect(function () {
|
|
9523
|
+
if (props.manuallyTriggerStartedLinkingHandler) {
|
|
9524
|
+
var off_1 = props.manuallyTriggerStartedLinkingHandler(function (sourceElement, sourcePort) {
|
|
9525
|
+
var newLink = {
|
|
9526
|
+
id: generateUniqueId(),
|
|
9527
|
+
points: [],
|
|
9528
|
+
sourceElement: sourceElement,
|
|
9529
|
+
sourcePort: sourcePort,
|
|
9530
|
+
};
|
|
9531
|
+
setTempLink(newLink);
|
|
9532
|
+
paperEventEmitter.emitElementLinkStarted(newLink);
|
|
9533
|
+
});
|
|
9534
|
+
return function () {
|
|
9535
|
+
off_1();
|
|
9536
|
+
};
|
|
9537
|
+
}
|
|
9538
|
+
}, [props.manuallyTriggerStartedLinkingHandler]);
|
|
9498
9539
|
//Cache elements to avoid re-render when elements changed
|
|
9499
9540
|
React.useEffect(function () {
|
|
9500
9541
|
elementsRef.current = elements;
|
|
@@ -10166,7 +10207,7 @@ var Paper = function (props) {
|
|
|
10166
10207
|
return (React.createElement("g", { id: "group-of-element-".concat(element.id), key: element.id },
|
|
10167
10208
|
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
10209
|
// portPlaceholderShape={(<Circle x={0} y={0} width={10} height={10} fill='red' positioningAnchor={PositioningAnchor.Center} />)}
|
|
10169
|
-
onMouseUpAtLinkedPortPlaceholder: handleMouseUpAtLinkedPortPlaceholder, onTextUpdated: handleElementTextChange, onManuallyTriggerRenderPort: props.
|
|
10210
|
+
onMouseUpAtLinkedPortPlaceholder: handleMouseUpAtLinkedPortPlaceholder, onTextUpdated: handleElementTextChange, onManuallyTriggerRenderPort: props.manuallyTriggerRenderPortHandler, textsPlaceHolderClassName: element.textsPlaceHolderClassName, textsPlaceHolderFlexStyle: element.textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition: element.textsPlaceHolderFlexboxPosition, parentAbsolutePosition: element.parentElement ? getAbsolutePosition(element.parentElement) : undefined },
|
|
10170
10211
|
element.childrenElementsInTree && element.childrenElementsInTree.map(renderElementInTree),
|
|
10171
10212
|
!!paperContainerRef.current && !!selectedElement && selectedElement.id === element.id &&
|
|
10172
10213
|
React.createElement(SelectionFrame, { key: selectedElement.id, container: paperContainerRef.current, targetSVGElement: selectedElementSVG || undefined, resizability: (selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.resizability) || {
|
|
@@ -10198,18 +10239,18 @@ var Paper = function (props) {
|
|
|
10198
10239
|
return;
|
|
10199
10240
|
var oldPosition = __assign({}, selectedElement.position);
|
|
10200
10241
|
// Relative position to the paper container
|
|
10201
|
-
var
|
|
10242
|
+
var paperPosition = {
|
|
10202
10243
|
x: newX,
|
|
10203
10244
|
y: newY
|
|
10204
10245
|
};
|
|
10205
|
-
logger.info("Element ".concat(selectedElement.id, " is dragging to position ").concat(JSON.stringify(
|
|
10246
|
+
logger.info("Element ".concat(selectedElement.id, " is dragging to position ").concat(JSON.stringify(paperPosition)));
|
|
10206
10247
|
//Adjust position of element if it should move as a port on parent port area
|
|
10207
10248
|
if (selectedElement.moveAsPortOnParent && selectedElement.parentElement) {
|
|
10208
|
-
|
|
10209
|
-
updateElementPosition(selectedElement,
|
|
10249
|
+
paperPosition = adjustElementPositionOnParentPortArea(selectedElement, paperPosition, true);
|
|
10250
|
+
updateElementPosition(selectedElement, paperPosition.x, paperPosition.y, true);
|
|
10210
10251
|
}
|
|
10211
10252
|
else {
|
|
10212
|
-
updateElementPosition(selectedElement,
|
|
10253
|
+
updateElementPosition(selectedElement, paperPosition.x, paperPosition.y, false);
|
|
10213
10254
|
}
|
|
10214
10255
|
//let newElementPosition = updateElementPosition(selectedElement, newPosition.x, newPosition.y, true)
|
|
10215
10256
|
var indexSelectedElement = elements.findIndex(function (e) { return e.id === selectedElement.id; });
|
|
@@ -10217,8 +10258,8 @@ var Paper = function (props) {
|
|
|
10217
10258
|
// Start updating the position of links connected to the selected element
|
|
10218
10259
|
var childElements = getChildOfElement(selectedElement);
|
|
10219
10260
|
var elementIds = __spreadArray(__spreadArray([], childElements.map(function (e) { return e.id; }), true), [selectedElement.id], false);
|
|
10220
|
-
var offsetX =
|
|
10221
|
-
var offsetY =
|
|
10261
|
+
var offsetX = selectedElement.position.x - oldPosition.x;
|
|
10262
|
+
var offsetY = selectedElement.position.y - oldPosition.y;
|
|
10222
10263
|
// Update position of all points of links that are connected to the selected element
|
|
10223
10264
|
var newLinks = linksRef.current.map(function (link) {
|
|
10224
10265
|
var isUpdate = elementIds.includes(link.sourceElement.id) && elementIds.includes(link.targetElement.id);
|
|
@@ -10235,8 +10276,8 @@ var Paper = function (props) {
|
|
|
10235
10276
|
//Set state to re-render UI with new position
|
|
10236
10277
|
setElementsInTree(function (prev) { return __spreadArray([], prev, true); });
|
|
10237
10278
|
if (props.onElementMoved) {
|
|
10238
|
-
console.log('onElementMoved', selectedElement.position,
|
|
10239
|
-
props.onElementMoved(selectedElement.position, selectedElement, indexSelectedElement,
|
|
10279
|
+
console.log('onElementMoved', selectedElement.position, paperPosition);
|
|
10280
|
+
props.onElementMoved(selectedElement.position, selectedElement, indexSelectedElement, paperPosition);
|
|
10240
10281
|
}
|
|
10241
10282
|
paperEventEmitter.emitElementMoved(selectedElement, oldPosition, selectedElement.position);
|
|
10242
10283
|
setMouseDownedOnPaper(false);
|
|
@@ -10258,12 +10299,12 @@ var Paper = function (props) {
|
|
|
10258
10299
|
paperEventEmitter.emitElementResized(selectedElement, oldSize, newSize);
|
|
10259
10300
|
setMouseDownedOnPaper(false);
|
|
10260
10301
|
} }))));
|
|
10261
|
-
}, [
|
|
10302
|
+
}, [handleElementClicked, handleContextMenu, handleMouseUp, handleMouseDown, handleMouseMove, handleMouseLeave, handlePortMoved, handlePortMouseDown, handlePortMouseUp, handlePortsChanged, handlePortContextMenu, handleMouseUpAtLinkedPortPlaceholder, handleElementTextChange, props, selectedElement, selectedElementSVG, selectedElementAbsPosition === null || selectedElementAbsPosition === void 0 ? void 0 : selectedElementAbsPosition.x, selectedElementAbsPosition === null || selectedElementAbsPosition === void 0 ? void 0 : selectedElementAbsPosition.y, zoom, autoEnabledDraggingSelectedElement, elements, getChildOfElement, paperEventEmitter]);
|
|
10262
10303
|
var ElementsInTree = React.useMemo(function () {
|
|
10263
10304
|
return elementsInTree.map(function (element, index) {
|
|
10264
10305
|
return renderElementInTree(element);
|
|
10265
10306
|
});
|
|
10266
|
-
}, [elementsInTree, renderElementInTree
|
|
10307
|
+
}, [elementsInTree, renderElementInTree]);
|
|
10267
10308
|
return (React.createElement("div", { style: { position: "relative" } },
|
|
10268
10309
|
React.createElement(Ruler, { squareSize: 100, border: '1px dashed grey' }),
|
|
10269
10310
|
React.createElement("svg", { tabIndex: 0, width: size.width, height: size.height, ref: paperContainerRef, id: "paper-container", onMouseMove: handlePaperMouseMove, onMouseDown: handleMouseDownOnPaper, onMouseUp: handleMouseUpOnPaper },
|
|
@@ -10407,7 +10448,7 @@ var Editor = function (_a) {
|
|
|
10407
10448
|
}, [editorContext]);
|
|
10408
10449
|
return (React.createElement(EditorConfigurationContextProvider, { value: editorContext.configuration },
|
|
10409
10450
|
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,
|
|
10451
|
+
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
10452
|
};
|
|
10412
10453
|
|
|
10413
10454
|
exports.CircleRC = Circle;
|
|
@@ -37,12 +37,13 @@ interface PaperProps {
|
|
|
37
37
|
onLinksChanged?: (links: IElementLink[]) => void;
|
|
38
38
|
onTextSelected?: (text: IText) => void;
|
|
39
39
|
onTextsChanged?: (texts: IPaperText[]) => void;
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
manuallyTriggerRenderElementHandler: (callback: (elementId: string) => void) => () => void;
|
|
41
|
+
manuallyTriggerRenderPortHandler: (callback: (portId: string, elementId: string) => void) => () => void;
|
|
42
42
|
onCreatingPortByLinking?: (sourceElement: IElement, sourcePort: IPort, targetElement: IElement, position: IPosition) => IPort | null;
|
|
43
43
|
onCreatingLink?: (sourcePort: IPort, sourceElement: IElement, targetPort: IPort, targetElement: IElement) => IElementLink | null;
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
manuallySelectElementHandler?: (callback: (element: IElement | null) => void) => (() => void);
|
|
45
|
+
manuallyTriggerDraggingElementHandler?: (callback: (element: IElement) => void) => (() => void);
|
|
46
|
+
manuallyTriggerStartedLinkingHandler?: (callback: (sourceElement: IElement, sourcePort: IPort) => void) => (() => void);
|
|
46
47
|
}
|
|
47
48
|
declare const _default: React.NamedExoticComponent<PaperProps>;
|
|
48
49
|
export default _default;
|
|
@@ -42,11 +42,8 @@ export default interface IEditorContext {
|
|
|
42
42
|
addText(text: IPaperText): void;
|
|
43
43
|
removeText(textId: string): void;
|
|
44
44
|
setSelectedElement: (element: IElement | null) => void;
|
|
45
|
-
onManuallySelectElement: (callback: (element: IElement | null) => void) => (() => void);
|
|
46
45
|
triggerDraggingElement: (element: IElement) => void;
|
|
47
|
-
onManuallyTriggerDraggingElement: (callback: (element: IElement) => void) => (() => void);
|
|
48
46
|
triggerRenderElement(elementId: string): void;
|
|
49
47
|
triggerRenderPort(portId: string, elementId: string): void;
|
|
50
|
-
|
|
51
|
-
onManuallyTriggerRenderPort: (callback: (portId: string, elementId: string) => void) => (() => void);
|
|
48
|
+
triggerStartedLinking(sourceElement: IElement, sourcePort: IPort): void;
|
|
52
49
|
}
|
|
@@ -53,11 +53,8 @@ export declare class EditorContext implements IEditorContext {
|
|
|
53
53
|
onLinkSelected(callback: (link: IElementLink) => void): () => void;
|
|
54
54
|
onTextSelected(callback: (text: IText) => void): () => void;
|
|
55
55
|
triggerRenderElement(elementId: string): void;
|
|
56
|
-
onManuallyTriggerRenderElement(callback: (elementId: string) => void): () => void;
|
|
57
56
|
triggerRenderPort(portId: string, elementId: string): void;
|
|
58
|
-
onManuallyTriggerRenderPort(callback: (portId: string, elementId: string) => void): () => void;
|
|
59
57
|
setSelectedElement(element: IElement | null): void;
|
|
60
|
-
onManuallySelectElement(callback: (element: IElement | null) => void): () => void;
|
|
61
58
|
triggerDraggingElement(element: IElement): void;
|
|
62
|
-
|
|
59
|
+
triggerStartedLinking(sourceElement: IElement, sourcePort: IPort): void;
|
|
63
60
|
}
|