orcasvn-react-diagrams 0.1.60 → 0.1.63
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 +163 -152
- package/dist/cjs/types/models/IEditorContext.d.ts +2 -0
- package/dist/cjs/types/models/implementations/EditorContext.d.ts +2 -0
- package/dist/esm/index.js +163 -152
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/models/IEditorContext.d.ts +2 -0
- package/dist/esm/types/models/implementations/EditorContext.d.ts +2 -0
- package/dist/index.d.ts +4 -0
- package/package.json +1 -1
package/dist/cjs/index.js
CHANGED
|
@@ -817,6 +817,8 @@ var EVENT_ELEMENT_MOUSE_MOVE = 'elementMouseMove';
|
|
|
817
817
|
var EVENT_ELEMENT_MOUSE_LEAVE = 'elementMouseLeave';
|
|
818
818
|
var EVENT_ELEMENT_MOUSE_UP = 'elementMouseUp';
|
|
819
819
|
var EVENT_ELEMENT_MOUSE_DOWN = 'elementMouseDown';
|
|
820
|
+
var EVENT_ELEMENT_ADDED = 'elementAdded';
|
|
821
|
+
var EVENT_ELEMENT_REMOVED = 'elementRemoved';
|
|
820
822
|
var EVENT_MANUALLY_SELECT_ELEMENT = 'manuallySelectElement';
|
|
821
823
|
var EVENT_MANUALLY_TRIGGER_DRAGGING_ELEMENT = 'manuallyTriggerDraggingElement';
|
|
822
824
|
var EVENT_LINK_SELECTED = 'linkSelected';
|
|
@@ -894,10 +896,12 @@ var EditorContext = /** @class */ (function () {
|
|
|
894
896
|
}
|
|
895
897
|
this._elements = __spreadArray(__spreadArray([], this._elements, true), [element], false);
|
|
896
898
|
this._eventEmitter.emit(EVENT_EDITOR_CONTEXT_UPDATED);
|
|
899
|
+
this.onElementAddedHandler(element);
|
|
897
900
|
};
|
|
898
901
|
EditorContext.prototype.removeElement = function (elementId) {
|
|
899
902
|
this._elements = this._elements.filter(function (e) { return e.id !== elementId; });
|
|
900
903
|
this._eventEmitter.emit(EVENT_EDITOR_CONTEXT_UPDATED);
|
|
904
|
+
this.onElementRemovedHandler(elementId);
|
|
901
905
|
};
|
|
902
906
|
EditorContext.prototype.getLink = function (linkId) {
|
|
903
907
|
return this._links.find(function (l) { return l.id === linkId; });
|
|
@@ -1048,6 +1052,20 @@ var EditorContext = /** @class */ (function () {
|
|
|
1048
1052
|
EditorContext.prototype.onElementMouseDownHandler = function (ev, element, paperPosition) {
|
|
1049
1053
|
this._eventEmitter.emit(EVENT_ELEMENT_MOUSE_DOWN, ev, element, paperPosition);
|
|
1050
1054
|
};
|
|
1055
|
+
EditorContext.prototype.onElementAdded = function (callback) {
|
|
1056
|
+
return this.addEventListener(EVENT_ELEMENT_ADDED, callback);
|
|
1057
|
+
};
|
|
1058
|
+
/** @internal */
|
|
1059
|
+
EditorContext.prototype.onElementAddedHandler = function (element) {
|
|
1060
|
+
this._eventEmitter.emit(EVENT_ELEMENT_ADDED, element);
|
|
1061
|
+
};
|
|
1062
|
+
EditorContext.prototype.onElementRemoved = function (callback) {
|
|
1063
|
+
return this.addEventListener(EVENT_ELEMENT_REMOVED, callback);
|
|
1064
|
+
};
|
|
1065
|
+
/** @internal */
|
|
1066
|
+
EditorContext.prototype.onElementRemovedHandler = function (elementId) {
|
|
1067
|
+
this._eventEmitter.emit(EVENT_ELEMENT_REMOVED, elementId);
|
|
1068
|
+
};
|
|
1051
1069
|
EditorContext.prototype.onLinkSelected = function (callback) {
|
|
1052
1070
|
return this.addEventListener(EVENT_LINK_SELECTED, callback);
|
|
1053
1071
|
};
|
|
@@ -8421,7 +8439,7 @@ var Port1 = React.forwardRef(function (props, ref) {
|
|
|
8421
8439
|
else {
|
|
8422
8440
|
return React.createElement(Circle, { onMouseDown: function (e) { return onMouseDown === null || onMouseDown === void 0 ? void 0 : onMouseDown(id, e); }, onMouseUp: function (e) { return onMouseUp === null || onMouseUp === void 0 ? void 0 : onMouseUp(id, e); }, onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, onMouseMove: function (e) { return onMouseMove === null || onMouseMove === void 0 ? void 0 : onMouseMove(id, e); }, onClick: function (e) { return onSelected === null || onSelected === void 0 ? void 0 : onSelected(id, e); }, onContextMenu: function (e) { return onContextMenu === null || onContextMenu === void 0 ? void 0 : onContextMenu(id, e); }, ref: ref, x: x, y: y, positioningAnchor: exports.PositioningAnchor.Center, height: height, width: width, stroke: "black", fill: "black" }, children);
|
|
8423
8441
|
}
|
|
8424
|
-
}, [props]);
|
|
8442
|
+
}, [children, height, id, onContextMenu, onMouseDown, onMouseEnter, onMouseLeave, onMouseMove, onMouseUp, onSelected, props, ref, renderShape, rotationAngle, width, x, y]);
|
|
8425
8443
|
return (React.createElement(React.Fragment, null,
|
|
8426
8444
|
renderedShape,
|
|
8427
8445
|
label && renderLabel(label)));
|
|
@@ -8770,10 +8788,14 @@ var ElementWrapper = React.forwardRef(function (_a, ref) {
|
|
|
8770
8788
|
});
|
|
8771
8789
|
|
|
8772
8790
|
var Element = React.forwardRef(function (props, forwardedRef) {
|
|
8773
|
-
var id = props.id, x = props.x, y = props.y, width = props.width, height = props.height, cssClass = props.cssClass, portPlaceholderShape = props.portPlaceholderShape, children = props.children, container = props.container, parentAbsolutePosition = props.parentAbsolutePosition, textsPlaceHolderFlexStyle = props.textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition = props.textsPlaceHolderFlexboxPosition, textsPlaceHolderClassName = props.textsPlaceHolderClassName, texts = props.texts, portSlideRailSVGClassName = props.portSlideRailSVGClassName, portMoveableAreas = props.portMoveableAreas, portDirection = props.portDirection, defaultPortSize = props.defaultPortSize, onClick = props.onClick, onContextMenu = props.onContextMenu, renderShape = props.renderShape; props.onMoved; var onPortMoved = props.onPortMoved; props.onResized; var onPortMouseDown = props.onPortMouseDown, onPortMouseUp = props.onPortMouseUp, onMouseMove = props.onMouseMove, onMouseLeave = props.onMouseLeave, onMouseUp = props.onMouseUp, onMouseDown = props.onMouseDown, onMouseUpAtLinkedPortPlaceholder = props.onMouseUpAtLinkedPortPlaceholder, onTextUpdated = props.onTextUpdated, onPortContextMenu = props.onPortContextMenu
|
|
8791
|
+
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;
|
|
8792
|
+
var propPorts = props.ports;
|
|
8774
8793
|
var _a = React.useState(), selectedPort = _a[0], setSelectedPort = _a[1];
|
|
8775
8794
|
var _b = React.useState(), hoveredPort = _b[0], setHoveredPort = _b[1];
|
|
8776
|
-
var _c = React.useState(
|
|
8795
|
+
var _c = React.useState((propPorts === null || propPorts === void 0 ? void 0 : propPorts.map(function (p) {
|
|
8796
|
+
var portState = __assign(__assign({}, p), { ref: React.createRef() });
|
|
8797
|
+
return portState;
|
|
8798
|
+
})) || []), ports = _c[0], setPorts = _c[1];
|
|
8777
8799
|
var _d = React.useState(false), someElementLinkStarted = _d[0], setSomeElementLinkStarted = _d[1];
|
|
8778
8800
|
var _e = React.useState(), potentialPortPosition = _e[0], setPotentialPortPosition = _e[1];
|
|
8779
8801
|
var _paperEventEmitterContext = React.useContext(paperEventEmitterContext);
|
|
@@ -8792,12 +8814,11 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
8792
8814
|
position.y += parentAbsolutePosition.y;
|
|
8793
8815
|
}
|
|
8794
8816
|
return position;
|
|
8795
|
-
}, [x, y, parentAbsolutePosition
|
|
8817
|
+
}, [x, y, parentAbsolutePosition]);
|
|
8796
8818
|
var elementAbsPosition = React.useMemo(function () { return getElementAbsPosition(); }, [getElementAbsPosition]);
|
|
8797
8819
|
//Listen to manually trigger render event
|
|
8798
8820
|
React.useEffect(function () {
|
|
8799
|
-
var
|
|
8800
|
-
var off = (_a = props.onManuallyTriggerRenderPort) === null || _a === void 0 ? void 0 : _a.call(props, function (portId, elementId) {
|
|
8821
|
+
var off = onManuallyTriggerRenderPort === null || onManuallyTriggerRenderPort === void 0 ? void 0 : onManuallyTriggerRenderPort(function (portId, elementId) {
|
|
8801
8822
|
if (elementId !== id)
|
|
8802
8823
|
return;
|
|
8803
8824
|
logger.info('onManuallyTriggerRenderPort', id);
|
|
@@ -8806,17 +8827,19 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
8806
8827
|
return function () {
|
|
8807
8828
|
off === null || off === void 0 ? void 0 : off();
|
|
8808
8829
|
};
|
|
8809
|
-
}, [
|
|
8810
|
-
//
|
|
8811
|
-
React.
|
|
8812
|
-
|
|
8813
|
-
|
|
8830
|
+
}, [id, onManuallyTriggerRenderPort]);
|
|
8831
|
+
//Normalize port position
|
|
8832
|
+
var normalizePortPosition = React.useCallback(function (tempNewPosition) {
|
|
8833
|
+
var newPosition = correctPortPositionInElement(tempNewPosition, width, height, portMoveableAreas, portSlideRailSVGClassName, elementRef.current || undefined);
|
|
8834
|
+
return newPosition || tempNewPosition;
|
|
8835
|
+
}, [width, height, portMoveableAreas, portSlideRailSVGClassName]);
|
|
8814
8836
|
//Listen a new port is created, after add new port to ports state
|
|
8815
8837
|
React.useEffect(function () {
|
|
8816
|
-
logger.info('Ports changed', props.ports);
|
|
8817
8838
|
setPorts(function (prev) {
|
|
8818
|
-
var _a
|
|
8819
|
-
|
|
8839
|
+
var _a;
|
|
8840
|
+
if (propPorts === undefined)
|
|
8841
|
+
return [];
|
|
8842
|
+
var newState = (_a = propPorts.map(function (p, index) {
|
|
8820
8843
|
var prevPortState = prev.find(function (_p) { return _p.id === p.id; });
|
|
8821
8844
|
var newPortState;
|
|
8822
8845
|
//If port is existed, keep the ref of the port
|
|
@@ -8835,9 +8858,14 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
8835
8858
|
newPortState.ref = React.createRef();
|
|
8836
8859
|
}
|
|
8837
8860
|
return newPortState;
|
|
8838
|
-
})) !== null &&
|
|
8861
|
+
})) !== null && _a !== void 0 ? _a : [];
|
|
8862
|
+
return newState;
|
|
8839
8863
|
});
|
|
8840
|
-
}, [
|
|
8864
|
+
}, [_paperEventEmitterContext, normalizePortPosition, id, onPortMoved, propPorts]);
|
|
8865
|
+
//Update portsRef when ports changed
|
|
8866
|
+
React.useEffect(function () {
|
|
8867
|
+
portsRef.current = ports;
|
|
8868
|
+
}, [ports]);
|
|
8841
8869
|
//Normalize port position when element is resized
|
|
8842
8870
|
React.useEffect(function () {
|
|
8843
8871
|
var newPorts = portsRef.current.map(function (port) {
|
|
@@ -8848,22 +8876,21 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
8848
8876
|
return port;
|
|
8849
8877
|
});
|
|
8850
8878
|
setPorts(newPorts);
|
|
8851
|
-
}, [width, height]);
|
|
8879
|
+
}, [width, height, _paperEventEmitterContext, id, onPortsChanged, normalizePortPosition, onPortMoved]);
|
|
8852
8880
|
//Listen trigger of Delete key, handle delete port is selected
|
|
8853
8881
|
React.useEffect(function () {
|
|
8854
8882
|
var listener = _paperEventEmitterContext.onCommandDeleteSelectedPort(function () {
|
|
8855
|
-
var _a;
|
|
8856
8883
|
if (selectedPort) {
|
|
8857
8884
|
var newPorts = portsRef.current.filter(function (p) { return p.id !== selectedPort.id; });
|
|
8858
8885
|
setPorts(newPorts);
|
|
8859
8886
|
setSelectedPort(undefined);
|
|
8860
|
-
|
|
8887
|
+
onPortsChanged === null || onPortsChanged === void 0 ? void 0 : onPortsChanged(newPorts, id);
|
|
8861
8888
|
}
|
|
8862
8889
|
});
|
|
8863
8890
|
return function () {
|
|
8864
8891
|
listener.off();
|
|
8865
8892
|
};
|
|
8866
|
-
}, [
|
|
8893
|
+
}, [_paperEventEmitterContext, id, onPortsChanged, selectedPort]);
|
|
8867
8894
|
React.useEffect(function () {
|
|
8868
8895
|
//Listener onMouseDown event on #paper-container
|
|
8869
8896
|
var eventListener = _paperEventEmitterContext.onPaperClicked(function (ev) {
|
|
@@ -8872,16 +8899,10 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
8872
8899
|
return function () {
|
|
8873
8900
|
eventListener.off();
|
|
8874
8901
|
};
|
|
8875
|
-
}, []);
|
|
8876
|
-
//Normalize port position
|
|
8877
|
-
var normalizePortPosition = React.useCallback(function (tempNewPosition) {
|
|
8878
|
-
var newPosition = correctPortPositionInElement(tempNewPosition, width, height, portMoveableAreas, portSlideRailSVGClassName, elementRef.current || undefined);
|
|
8879
|
-
return newPosition || tempNewPosition;
|
|
8880
|
-
}, [width, height, portMoveableAreas, portSlideRailSVGClassName, elementRef.current]);
|
|
8902
|
+
}, [_paperEventEmitterContext]);
|
|
8881
8903
|
React.useEffect(function () {
|
|
8882
8904
|
//listen element resize to update position of the ports by element size.
|
|
8883
8905
|
var eleResizeListener = _paperEventEmitterContext.onElementResized(id, function () {
|
|
8884
|
-
var _a;
|
|
8885
8906
|
var isChanged = false;
|
|
8886
8907
|
var newPorts = portsRef.current.map(function (port) {
|
|
8887
8908
|
var newPosition = normalizePortPosition({ x: port.position.x, y: port.position.y });
|
|
@@ -8895,13 +8916,13 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
8895
8916
|
});
|
|
8896
8917
|
setPorts(newPorts);
|
|
8897
8918
|
if (isChanged) {
|
|
8898
|
-
|
|
8919
|
+
onPortsChanged === null || onPortsChanged === void 0 ? void 0 : onPortsChanged(newPorts, id);
|
|
8899
8920
|
}
|
|
8900
8921
|
});
|
|
8901
8922
|
return function () {
|
|
8902
8923
|
eleResizeListener.off();
|
|
8903
8924
|
};
|
|
8904
|
-
}, [onPortMoved, normalizePortPosition, width, height, portMoveableAreas, portSlideRailSVGClassName]);
|
|
8925
|
+
}, [_paperEventEmitterContext, id, onPortsChanged, onPortMoved, normalizePortPosition, width, height, portMoveableAreas, portSlideRailSVGClassName]);
|
|
8905
8926
|
//Listen creating element link started, ended.
|
|
8906
8927
|
React.useEffect(function () {
|
|
8907
8928
|
var elementStartedListener = _paperEventEmitterContext.onElementLinkStarted(function (tempLink) {
|
|
@@ -8918,7 +8939,7 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
8918
8939
|
elementStartedListener.off();
|
|
8919
8940
|
elementEndedListener.off();
|
|
8920
8941
|
};
|
|
8921
|
-
}, []);
|
|
8942
|
+
}, [id, _paperEventEmitterContext]);
|
|
8922
8943
|
//Listen another port is selected
|
|
8923
8944
|
React.useEffect(function () {
|
|
8924
8945
|
var portSelectedListener = _paperEventEmitterContext.onPortSelected(function (port, elementId) {
|
|
@@ -8929,7 +8950,7 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
8929
8950
|
return function () {
|
|
8930
8951
|
portSelectedListener.off();
|
|
8931
8952
|
};
|
|
8932
|
-
}, []);
|
|
8953
|
+
}, [_paperEventEmitterContext, id]);
|
|
8933
8954
|
//Listen text is selected
|
|
8934
8955
|
React.useEffect(function () {
|
|
8935
8956
|
var textSelectedListener = _paperEventEmitterContext.onTextSelected(function (text) {
|
|
@@ -8938,7 +8959,7 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
8938
8959
|
return function () {
|
|
8939
8960
|
textSelectedListener.off();
|
|
8940
8961
|
};
|
|
8941
|
-
}, []);
|
|
8962
|
+
}, [_paperEventEmitterContext]);
|
|
8942
8963
|
//Listen another element is selected
|
|
8943
8964
|
React.useEffect(function () {
|
|
8944
8965
|
var portSelectedListener = _paperEventEmitterContext.onElementSelected(function (element) {
|
|
@@ -8947,7 +8968,7 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
8947
8968
|
return function () {
|
|
8948
8969
|
portSelectedListener.off();
|
|
8949
8970
|
};
|
|
8950
|
-
}, []);
|
|
8971
|
+
}, [_paperEventEmitterContext]);
|
|
8951
8972
|
var handleSelectedPort = React.useCallback(function (portId, e) {
|
|
8952
8973
|
e.stopPropagation();
|
|
8953
8974
|
logger.debug('Port selected', portId, e);
|
|
@@ -8956,9 +8977,9 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
8956
8977
|
return;
|
|
8957
8978
|
setSelectedPort(port);
|
|
8958
8979
|
_paperEventEmitterContext.emitPortSelected(port, id);
|
|
8959
|
-
}, [_paperEventEmitterContext]);
|
|
8980
|
+
}, [id, _paperEventEmitterContext]);
|
|
8960
8981
|
//Calculate the position of the 4 vertices of a rectangle relative to element
|
|
8961
|
-
var calculateSlideRailRectSVGPositions = function (slideRailSVG) {
|
|
8982
|
+
var calculateSlideRailRectSVGPositions = React.useCallback(function (slideRailSVG) {
|
|
8962
8983
|
var coordinates = getRectangleCorners(slideRailSVG);
|
|
8963
8984
|
var ownerSVG = slideRailSVG.ownerSVGElement;
|
|
8964
8985
|
var rotationAngle = getElementRotationInfo(ownerSVG);
|
|
@@ -8968,7 +8989,7 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
8968
8989
|
coordinates = getRotatedRectangleCoordinates(coordinates, rotationCenterX, rotationCenterY, rotationAngle);
|
|
8969
8990
|
}
|
|
8970
8991
|
return coordinates;
|
|
8971
|
-
};
|
|
8992
|
+
}, [width, height]);
|
|
8972
8993
|
var getSlideRailSVG = React.useCallback(function (portSlideRailSVGClassName) {
|
|
8973
8994
|
var _a;
|
|
8974
8995
|
var slideRailSVG = (_a = elementRef.current) === null || _a === void 0 ? void 0 : _a.querySelector(".".concat(portSlideRailSVGClassName));
|
|
@@ -9001,7 +9022,7 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
9001
9022
|
return;
|
|
9002
9023
|
_paperEventEmitterContext.emitPortMouseDown(e, port, id);
|
|
9003
9024
|
onPortMouseDown === null || onPortMouseDown === void 0 ? void 0 : onPortMouseDown(e, port, id);
|
|
9004
|
-
}, [_paperEventEmitterContext]);
|
|
9025
|
+
}, [id, onPortMouseDown, _paperEventEmitterContext]);
|
|
9005
9026
|
//Handle when mouse up on port
|
|
9006
9027
|
var handlePortMouseUp = React.useCallback(function (portId, e) {
|
|
9007
9028
|
e.stopPropagation();
|
|
@@ -9014,7 +9035,7 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
9014
9035
|
if (potentialPortPosition) {
|
|
9015
9036
|
setPotentialPortPosition(undefined);
|
|
9016
9037
|
}
|
|
9017
|
-
}, [_paperEventEmitterContext, potentialPortPosition]);
|
|
9038
|
+
}, [id, onPortMouseUp, _paperEventEmitterContext, potentialPortPosition]);
|
|
9018
9039
|
//Update state when label of port is moved
|
|
9019
9040
|
var handlePortLabelMoved = React.useCallback(function (newX, newY, portId) {
|
|
9020
9041
|
setPorts(function (prevPorts) {
|
|
@@ -9168,7 +9189,7 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
9168
9189
|
break;
|
|
9169
9190
|
}
|
|
9170
9191
|
return rotationAngle;
|
|
9171
|
-
}, [width, height, portSlideRailSVGClassName, portDirection, getSlideRailSVG, normalizePortPosition]);
|
|
9192
|
+
}, [width, height, portSlideRailSVGClassName, portDirection, getSlideRailSVG, normalizePortPosition, calculateSlideRailRectSVGPositions]);
|
|
9172
9193
|
var renderedShape = React.useMemo(function () {
|
|
9173
9194
|
if (renderShape)
|
|
9174
9195
|
return renderShape(props);
|
|
@@ -9183,7 +9204,7 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
9183
9204
|
}
|
|
9184
9205
|
}, []);
|
|
9185
9206
|
//log element render
|
|
9186
|
-
logger.debug('Rendering Element', id, x, y, width, height, cssClass, portPlaceholderShape, children, container, parentAbsolutePosition, textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition, textsPlaceHolderClassName, texts, portSlideRailSVGClassName, portMoveableAreas, portDirection, defaultPortSize);
|
|
9207
|
+
logger.debug('Rendering Element', id, x, y, width, height, cssClass, portPlaceholderShape, children, container, parentAbsolutePosition, textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition, textsPlaceHolderClassName, texts, ports, portSlideRailSVGClassName, portMoveableAreas, portDirection, defaultPortSize);
|
|
9187
9208
|
return (React.createElement(React.Fragment, null,
|
|
9188
9209
|
React.createElement(ElementWrapper, { ref: elementRef, x: x, y: y, cssClass: cssClass, onClick: function (e) { return onClick ? onClick(id, e, elementRef.current) : true; }, onMouseMove: handleElementMouseMove, onMouseLeave: handleElementMouseLeave, onMouseDown: handleElementMouseDown, onMouseUp: handleElementMouseUp, onContextMenu: function (e) { return onContextMenu ? onContextMenu(id, e, elementRef.current) : true; } },
|
|
9189
9210
|
renderedShape,
|
|
@@ -9475,6 +9496,7 @@ var Paper = function (props) {
|
|
|
9475
9496
|
var textsRef = React.useRef(texts); //Cache texts to avoid re-render when texts changed
|
|
9476
9497
|
var size = props.size;
|
|
9477
9498
|
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]);
|
|
9499
|
+
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, onElementDeleted = props.onElementDeleted, onLinksChanged = props.onLinksChanged, onLinkSelected = props.onLinkSelected, onTextSelected = props.onTextSelected, onTextsChanged = props.onTextsChanged, manuallyTriggerRenderElementHandler = props.manuallyTriggerRenderElementHandler, manuallyTriggerRenderPortHandler = props.manuallyTriggerRenderPortHandler, onCreatingPortByLinking = props.onCreatingPortByLinking, onCreatingLink = props.onCreatingLink, manuallySelectElementHandler = props.manuallySelectElementHandler, manuallyTriggerDraggingElementHandler = props.manuallyTriggerDraggingElementHandler, manuallyTriggerStartedLinkingHandler = props.manuallyTriggerStartedLinkingHandler;
|
|
9478
9500
|
React.useEffect(function () {
|
|
9479
9501
|
zoomRef.current = zoom;
|
|
9480
9502
|
}, [zoom]);
|
|
@@ -9488,40 +9510,37 @@ var Paper = function (props) {
|
|
|
9488
9510
|
setTexts(props.texts);
|
|
9489
9511
|
}, [props.texts]);
|
|
9490
9512
|
React.useEffect(function () {
|
|
9491
|
-
var off =
|
|
9513
|
+
var off = manuallyTriggerRenderElementHandler(function (elementId) {
|
|
9492
9514
|
var newElements = __spreadArray([], elements, true);
|
|
9493
9515
|
setElements(newElements);
|
|
9494
|
-
if (
|
|
9495
|
-
|
|
9516
|
+
if (onElementsChanged) {
|
|
9517
|
+
onElementsChanged(newElements);
|
|
9496
9518
|
}
|
|
9497
9519
|
});
|
|
9498
9520
|
return function () {
|
|
9499
9521
|
off();
|
|
9500
9522
|
};
|
|
9501
|
-
}, [
|
|
9523
|
+
}, [manuallyTriggerRenderElementHandler, onElementsChanged, elements, selectedElement]);
|
|
9502
9524
|
React.useEffect(function () {
|
|
9503
|
-
var _a, _b;
|
|
9504
9525
|
var offs = [];
|
|
9505
|
-
offs.push(
|
|
9506
|
-
var _a;
|
|
9526
|
+
offs.push(manuallySelectElementHandler === null || manuallySelectElementHandler === void 0 ? void 0 : manuallySelectElementHandler(function (element) {
|
|
9507
9527
|
setSelectedElement(element || undefined);
|
|
9508
9528
|
if (element) {
|
|
9509
|
-
|
|
9529
|
+
onElementSelected === null || onElementSelected === void 0 ? void 0 : onElementSelected(element);
|
|
9510
9530
|
}
|
|
9511
9531
|
}));
|
|
9512
|
-
offs.push(
|
|
9513
|
-
var _a;
|
|
9532
|
+
offs.push(manuallyTriggerDraggingElementHandler === null || manuallyTriggerDraggingElementHandler === void 0 ? void 0 : manuallyTriggerDraggingElementHandler(function (element) {
|
|
9514
9533
|
setSelectedElement(element);
|
|
9515
|
-
|
|
9534
|
+
onElementSelected === null || onElementSelected === void 0 ? void 0 : onElementSelected(element);
|
|
9516
9535
|
setAutoEnabledDraggingSelectedElement(true);
|
|
9517
9536
|
}));
|
|
9518
9537
|
return function () {
|
|
9519
9538
|
offs.forEach(function (off) { return off(); });
|
|
9520
9539
|
};
|
|
9521
|
-
}, [
|
|
9540
|
+
}, [manuallySelectElementHandler, manuallyTriggerDraggingElementHandler, onElementSelected]);
|
|
9522
9541
|
React.useEffect(function () {
|
|
9523
|
-
if (
|
|
9524
|
-
var off_1 =
|
|
9542
|
+
if (manuallyTriggerStartedLinkingHandler) {
|
|
9543
|
+
var off_1 = manuallyTriggerStartedLinkingHandler(function (sourceElement, sourcePort) {
|
|
9525
9544
|
var newLink = {
|
|
9526
9545
|
id: generateUniqueId(),
|
|
9527
9546
|
points: [],
|
|
@@ -9535,7 +9554,7 @@ var Paper = function (props) {
|
|
|
9535
9554
|
off_1();
|
|
9536
9555
|
};
|
|
9537
9556
|
}
|
|
9538
|
-
}, [
|
|
9557
|
+
}, [manuallyTriggerStartedLinkingHandler, paperEventEmitter]);
|
|
9539
9558
|
//Cache elements to avoid re-render when elements changed
|
|
9540
9559
|
React.useEffect(function () {
|
|
9541
9560
|
elementsRef.current = elements;
|
|
@@ -9551,10 +9570,10 @@ var Paper = function (props) {
|
|
|
9551
9570
|
useKeyboardCommands({
|
|
9552
9571
|
element: paperContainerRef.current
|
|
9553
9572
|
});
|
|
9554
|
-
var updateElementsTree = function () {
|
|
9573
|
+
var updateElementsTree = React.useCallback(function () {
|
|
9555
9574
|
var parsedElementsInTree = convertElementsToTree(elements);
|
|
9556
9575
|
setElementsInTree(parsedElementsInTree);
|
|
9557
|
-
};
|
|
9576
|
+
}, [elements]);
|
|
9558
9577
|
//Cache tempLink to avoid re-render when tempLink changed
|
|
9559
9578
|
React.useEffect(function () {
|
|
9560
9579
|
tempLinkRef.current = tempLink;
|
|
@@ -9576,20 +9595,19 @@ var Paper = function (props) {
|
|
|
9576
9595
|
//Listen port is selected
|
|
9577
9596
|
React.useEffect(function () {
|
|
9578
9597
|
var portSelectedListener = paperEventEmitter.onPortSelected(function (port, elementId) {
|
|
9579
|
-
var _a;
|
|
9580
9598
|
setSelectedElement(undefined);
|
|
9581
9599
|
setSelectedElementSVG(null);
|
|
9582
9600
|
setSelectedLink(undefined);
|
|
9583
9601
|
//broadcast selected port to parent component
|
|
9584
9602
|
var element = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
9585
9603
|
if (element) {
|
|
9586
|
-
|
|
9604
|
+
onPortSelected === null || onPortSelected === void 0 ? void 0 : onPortSelected(port, element);
|
|
9587
9605
|
}
|
|
9588
9606
|
});
|
|
9589
9607
|
return function () {
|
|
9590
9608
|
portSelectedListener.off();
|
|
9591
9609
|
};
|
|
9592
|
-
}, []);
|
|
9610
|
+
}, [paperEventEmitter, onPortSelected]);
|
|
9593
9611
|
React.useEffect(function () {
|
|
9594
9612
|
//Listen parent of elements changed, then update elements tree
|
|
9595
9613
|
var parentChangedCancelers = elementsRef.current.map(function (element) {
|
|
@@ -9613,8 +9631,8 @@ var Paper = function (props) {
|
|
|
9613
9631
|
});
|
|
9614
9632
|
//Set state to re-render component
|
|
9615
9633
|
setElements(newElements);
|
|
9616
|
-
if (
|
|
9617
|
-
|
|
9634
|
+
if (onElementsChanged) {
|
|
9635
|
+
onElementsChanged(newElements);
|
|
9618
9636
|
}
|
|
9619
9637
|
});
|
|
9620
9638
|
});
|
|
@@ -9622,13 +9640,13 @@ var Paper = function (props) {
|
|
|
9622
9640
|
parentChangedCancelers.forEach(function (canceller) { return canceller === null || canceller === void 0 ? void 0 : canceller(); });
|
|
9623
9641
|
addedPortCancelers.forEach(function (canceller) { return canceller(); });
|
|
9624
9642
|
};
|
|
9625
|
-
}, [elements]);
|
|
9643
|
+
}, [elements, updateElementsTree, onElementsChanged]);
|
|
9626
9644
|
//Update elements tree when length of elements change
|
|
9627
9645
|
React.useEffect(function () {
|
|
9628
9646
|
updateElementsTree();
|
|
9629
|
-
}, [elements]);
|
|
9647
|
+
}, [elements, updateElementsTree]);
|
|
9630
9648
|
//Get all child elements of the deleted element
|
|
9631
|
-
var getChildOfElement = function (element) {
|
|
9649
|
+
var getChildOfElement = React.useCallback(function (element) {
|
|
9632
9650
|
if (!element.childrenElementsInTree)
|
|
9633
9651
|
return [];
|
|
9634
9652
|
var childElms = element.childrenElementsInTree;
|
|
@@ -9636,10 +9654,9 @@ var Paper = function (props) {
|
|
|
9636
9654
|
return __spreadArray(__spreadArray([], acc, true), getChildOfElement(ele), true);
|
|
9637
9655
|
}, []);
|
|
9638
9656
|
return __spreadArray(__spreadArray([], childElms, true), childOfChildElements, true);
|
|
9639
|
-
};
|
|
9657
|
+
}, []);
|
|
9640
9658
|
//Listen command delete selected for element
|
|
9641
9659
|
React.useEffect(function () {
|
|
9642
|
-
var _a;
|
|
9643
9660
|
var listener = paperEventEmitter.onCommandDeleteSelectedElement(function () {
|
|
9644
9661
|
if (selectedElement) {
|
|
9645
9662
|
selectedElement.parentElement = undefined; //Remove parent element to avoid memory leak. This will remove the element from the parent element's childrenElements array.
|
|
@@ -9647,17 +9664,18 @@ var Paper = function (props) {
|
|
|
9647
9664
|
var deletedElementIds_1 = __spreadArray(__spreadArray([], deletedChildElements, true), [selectedElement], false).map(function (e) { return e.id; });
|
|
9648
9665
|
var prevElements = elementsRef.current;
|
|
9649
9666
|
var newElements = prevElements.filter(function (e) { return !deletedElementIds_1.includes(e.id); });
|
|
9667
|
+
onElementDeleted === null || onElementDeleted === void 0 ? void 0 : onElementDeleted(selectedElement);
|
|
9650
9668
|
//Set state to re-render component
|
|
9651
9669
|
setElements(newElements);
|
|
9652
|
-
if (
|
|
9653
|
-
|
|
9670
|
+
if (onElementsChanged) {
|
|
9671
|
+
onElementsChanged(newElements);
|
|
9654
9672
|
}
|
|
9655
9673
|
//Update links
|
|
9656
9674
|
var prevLinks = linksRef.current;
|
|
9657
9675
|
var newLinks = prevLinks.filter(function (l) { return !deletedElementIds_1.includes(l.sourceElement.id) && !deletedElementIds_1.includes(l.targetElement.id); });
|
|
9658
9676
|
setLinks(newLinks);
|
|
9659
|
-
if (
|
|
9660
|
-
|
|
9677
|
+
if (onLinksChanged) {
|
|
9678
|
+
onLinksChanged(newLinks);
|
|
9661
9679
|
}
|
|
9662
9680
|
setSelectedElement(undefined);
|
|
9663
9681
|
setSelectedElementSVG(null);
|
|
@@ -9665,56 +9683,54 @@ var Paper = function (props) {
|
|
|
9665
9683
|
});
|
|
9666
9684
|
//broadcast selected element to parent component
|
|
9667
9685
|
if (selectedElement) {
|
|
9668
|
-
|
|
9686
|
+
onElementSelected === null || onElementSelected === void 0 ? void 0 : onElementSelected(selectedElement);
|
|
9669
9687
|
}
|
|
9670
9688
|
return function () {
|
|
9671
9689
|
listener.off();
|
|
9672
9690
|
};
|
|
9673
|
-
}, [selectedElement,
|
|
9691
|
+
}, [selectedElement, onElementSelected, onElementsChanged, onLinksChanged, getChildOfElement, paperEventEmitter, onElementDeleted]);
|
|
9674
9692
|
//Listen command delete selected for link
|
|
9675
9693
|
React.useEffect(function () {
|
|
9676
|
-
var _a;
|
|
9677
9694
|
var listener = paperEventEmitter.onCommandDeleteSelectedLink(function () {
|
|
9678
9695
|
if (selectedLink) {
|
|
9679
9696
|
var prevLinks = linksRef.current;
|
|
9680
9697
|
var newLinks = prevLinks.filter(function (l) { return l.id !== selectedLink.id; });
|
|
9681
9698
|
setLinks(links);
|
|
9682
9699
|
setSelectedLink(undefined);
|
|
9683
|
-
if (
|
|
9684
|
-
|
|
9700
|
+
if (onLinksChanged) {
|
|
9701
|
+
onLinksChanged(newLinks);
|
|
9685
9702
|
}
|
|
9686
9703
|
}
|
|
9687
9704
|
});
|
|
9688
9705
|
//broadcast selected link to parent component
|
|
9689
9706
|
if (selectedLink) {
|
|
9690
|
-
|
|
9707
|
+
onLinkSelected === null || onLinkSelected === void 0 ? void 0 : onLinkSelected(selectedLink);
|
|
9691
9708
|
}
|
|
9692
9709
|
return function () {
|
|
9693
9710
|
listener.off();
|
|
9694
9711
|
};
|
|
9695
|
-
}, [selectedLink,
|
|
9712
|
+
}, [selectedLink, onLinksChanged, onLinkSelected, links, paperEventEmitter]);
|
|
9696
9713
|
//Listen command delete selected for Text
|
|
9697
9714
|
React.useEffect(function () {
|
|
9698
|
-
var _a;
|
|
9699
9715
|
var listener = paperEventEmitter.onCommandDeleteSelectedText(function () {
|
|
9700
9716
|
if (selectedText) {
|
|
9701
9717
|
var prevTexts = textsRef.current;
|
|
9702
9718
|
var newTexts = prevTexts.filter(function (t) { return t.id !== selectedText.id; });
|
|
9703
9719
|
setTexts(newTexts);
|
|
9704
|
-
if (
|
|
9705
|
-
|
|
9720
|
+
if (onTextsChanged) {
|
|
9721
|
+
onTextsChanged(newTexts);
|
|
9706
9722
|
}
|
|
9707
9723
|
setSelectedText(undefined);
|
|
9708
9724
|
}
|
|
9709
9725
|
});
|
|
9710
9726
|
//broadcast selected text to parent component
|
|
9711
9727
|
if (selectedText) {
|
|
9712
|
-
|
|
9728
|
+
onTextSelected === null || onTextSelected === void 0 ? void 0 : onTextSelected(selectedText);
|
|
9713
9729
|
}
|
|
9714
9730
|
return function () {
|
|
9715
9731
|
listener.off();
|
|
9716
9732
|
};
|
|
9717
|
-
}, [selectedText,
|
|
9733
|
+
}, [selectedText, onTextsChanged, onTextSelected, texts, paperEventEmitter]);
|
|
9718
9734
|
var handlePaperMouseMove = function (ev) {
|
|
9719
9735
|
var _a;
|
|
9720
9736
|
var _b = windowsPositionToPaperPosition({
|
|
@@ -9793,19 +9809,19 @@ var Paper = function (props) {
|
|
|
9793
9809
|
links[updatedLinkIndex].path = path;
|
|
9794
9810
|
var newLinks = __spreadArray([], links, true);
|
|
9795
9811
|
setLinks(newLinks);
|
|
9796
|
-
if (
|
|
9797
|
-
|
|
9812
|
+
if (onLinksChanged) {
|
|
9813
|
+
onLinksChanged(newLinks);
|
|
9798
9814
|
}
|
|
9799
|
-
}, [
|
|
9815
|
+
}, [onLinksChanged, links]);
|
|
9800
9816
|
var handlePointsOfLinkChange = React.useCallback(function (points, linkId) {
|
|
9801
9817
|
var newLinks = __spreadArray([], linksRef.current, true);
|
|
9802
9818
|
var updatedLinkIndex = newLinks.findIndex(function (l) { return l.id === linkId; });
|
|
9803
9819
|
newLinks[updatedLinkIndex].points = points;
|
|
9804
9820
|
setLinks(newLinks);
|
|
9805
|
-
if (
|
|
9806
|
-
|
|
9821
|
+
if (onLinksChanged) {
|
|
9822
|
+
onLinksChanged(newLinks);
|
|
9807
9823
|
}
|
|
9808
|
-
}, [
|
|
9824
|
+
}, [onLinksChanged]);
|
|
9809
9825
|
var handlePortMoved = React.useCallback(function (port, elementId, oldPosition, newPosition) {
|
|
9810
9826
|
var _a;
|
|
9811
9827
|
var element = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
@@ -9823,8 +9839,8 @@ var Paper = function (props) {
|
|
|
9823
9839
|
return link;
|
|
9824
9840
|
});
|
|
9825
9841
|
setLinks(newLinks);
|
|
9826
|
-
if (
|
|
9827
|
-
|
|
9842
|
+
if (onLinksChanged) {
|
|
9843
|
+
onLinksChanged(newLinks);
|
|
9828
9844
|
}
|
|
9829
9845
|
var newElements = elementsRef.current;
|
|
9830
9846
|
var updatedElementIndex = newElements.findIndex(function (e) { return e.id === elementId; });
|
|
@@ -9837,17 +9853,16 @@ var Paper = function (props) {
|
|
|
9837
9853
|
//Update port position in element, not re-render
|
|
9838
9854
|
//To avoid re-render
|
|
9839
9855
|
setElements(newElements);
|
|
9840
|
-
if (
|
|
9841
|
-
|
|
9856
|
+
if (onElementsChanged) {
|
|
9857
|
+
onElementsChanged(newElements);
|
|
9842
9858
|
}
|
|
9843
|
-
if (
|
|
9844
|
-
|
|
9859
|
+
if (onPortMoved) {
|
|
9860
|
+
onPortMoved(newPosition, port, element);
|
|
9845
9861
|
}
|
|
9846
9862
|
}
|
|
9847
|
-
}, [
|
|
9863
|
+
}, [onPortMoved, onElementsChanged, onLinksChanged]);
|
|
9848
9864
|
//Handle creating a new element link
|
|
9849
9865
|
var handlePortMouseDown = React.useCallback(function (ev, port, elementId) {
|
|
9850
|
-
var _a;
|
|
9851
9866
|
ev.stopPropagation();
|
|
9852
9867
|
var element = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
9853
9868
|
var paperPosition = windowsPositionToPaperPosition({
|
|
@@ -9857,7 +9872,7 @@ var Paper = function (props) {
|
|
|
9857
9872
|
console.log(paperPosition);
|
|
9858
9873
|
//broadcast port mouse down to parent component
|
|
9859
9874
|
if (element) {
|
|
9860
|
-
|
|
9875
|
+
onPortMouseDown === null || onPortMouseDown === void 0 ? void 0 : onPortMouseDown(port, element, paperPosition);
|
|
9861
9876
|
}
|
|
9862
9877
|
if (!tempLinkRef.current && element) {
|
|
9863
9878
|
//handle create temp element link;
|
|
@@ -9870,13 +9885,13 @@ var Paper = function (props) {
|
|
|
9870
9885
|
setTempLink(newLink);
|
|
9871
9886
|
paperEventEmitter.emitElementLinkStarted(newLink);
|
|
9872
9887
|
}
|
|
9873
|
-
}, [paperEventEmitter,
|
|
9888
|
+
}, [paperEventEmitter, onPortMouseDown]);
|
|
9874
9889
|
var createElementLink = React.useCallback(function (sourcePort, sourceElement, targetPort, targetElement) {
|
|
9875
9890
|
//if no onCreatingLink prop, no link will be created
|
|
9876
|
-
if (!
|
|
9891
|
+
if (!onCreatingLink) {
|
|
9877
9892
|
return null;
|
|
9878
9893
|
}
|
|
9879
|
-
var newElementLink =
|
|
9894
|
+
var newElementLink = onCreatingLink(sourcePort, sourceElement, targetPort, targetElement);
|
|
9880
9895
|
if (!newElementLink)
|
|
9881
9896
|
return null;
|
|
9882
9897
|
//Automatic bending, if is not defined points
|
|
@@ -9885,9 +9900,8 @@ var Paper = function (props) {
|
|
|
9885
9900
|
newElementLink = automationAddPointsToLink(newElementLink, elements_1, MAX_LINK_KNOT_COUNT);
|
|
9886
9901
|
}
|
|
9887
9902
|
return newElementLink;
|
|
9888
|
-
}, [
|
|
9903
|
+
}, [onCreatingLink]);
|
|
9889
9904
|
var handlePortMouseUp = React.useCallback(function (ev, port, elementId) {
|
|
9890
|
-
var _a;
|
|
9891
9905
|
ev.stopPropagation();
|
|
9892
9906
|
var element = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
9893
9907
|
var paperPosition = windowsPositionToPaperPosition({
|
|
@@ -9896,7 +9910,7 @@ var Paper = function (props) {
|
|
|
9896
9910
|
}, paperContainerRef.current, zoomRef.current);
|
|
9897
9911
|
//broadcast port mouse down to parent component
|
|
9898
9912
|
if (element) {
|
|
9899
|
-
|
|
9913
|
+
onPortMouseUp === null || onPortMouseUp === void 0 ? void 0 : onPortMouseUp(port, element, paperPosition);
|
|
9900
9914
|
}
|
|
9901
9915
|
//Create new element link, if has tempLink
|
|
9902
9916
|
if (tempLinkRef.current) {
|
|
@@ -9904,7 +9918,7 @@ var Paper = function (props) {
|
|
|
9904
9918
|
var isMouseUpOnNotSelf = tempLinkRef.current.sourcePort.id !== port.id || tempLinkRef.current.sourceElement.id !== elementId;
|
|
9905
9919
|
var newElementLink = null;
|
|
9906
9920
|
if (isMouseUpOnNotSelf) {
|
|
9907
|
-
var
|
|
9921
|
+
var _a = tempLinkRef.current, sourcePort = _a.sourcePort, sourceElement = _a.sourceElement;
|
|
9908
9922
|
var targetElement = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
9909
9923
|
newElementLink = createElementLink(sourcePort, sourceElement, port, targetElement);
|
|
9910
9924
|
}
|
|
@@ -9912,8 +9926,8 @@ var Paper = function (props) {
|
|
|
9912
9926
|
var prevLinks = linksRef.current;
|
|
9913
9927
|
var newLinks = __spreadArray(__spreadArray([], prevLinks, true), [newElementLink], false);
|
|
9914
9928
|
setLinks(newLinks);
|
|
9915
|
-
if (
|
|
9916
|
-
|
|
9929
|
+
if (onLinksChanged) {
|
|
9930
|
+
onLinksChanged(newLinks);
|
|
9917
9931
|
}
|
|
9918
9932
|
paperEventEmitter.emitElementLinkEnded(newElementLink);
|
|
9919
9933
|
}
|
|
@@ -9922,14 +9936,14 @@ var Paper = function (props) {
|
|
|
9922
9936
|
}
|
|
9923
9937
|
setTempLink(null);
|
|
9924
9938
|
}
|
|
9925
|
-
}, [paperEventEmitter, createElementLink,
|
|
9939
|
+
}, [paperEventEmitter, createElementLink, onPortMouseUp, onLinksChanged]);
|
|
9926
9940
|
var handlePortsChanged = React.useCallback(function (ports, elementId) {
|
|
9927
9941
|
var element = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
9928
9942
|
if (element) {
|
|
9929
9943
|
//broadcast ports changed to parent component
|
|
9930
|
-
|
|
9944
|
+
onPortsChanged(ports, element);
|
|
9931
9945
|
}
|
|
9932
|
-
}, [
|
|
9946
|
+
}, [onPortsChanged]);
|
|
9933
9947
|
var handleLinkLabelMoved = React.useCallback(function (newX, newY, index, labelType) {
|
|
9934
9948
|
var prevLinks = linksRef.current;
|
|
9935
9949
|
var newLinks = __spreadArray([], prevLinks, true);
|
|
@@ -9953,10 +9967,10 @@ var Paper = function (props) {
|
|
|
9953
9967
|
}
|
|
9954
9968
|
}
|
|
9955
9969
|
setLinks(newLinks);
|
|
9956
|
-
if (
|
|
9957
|
-
|
|
9970
|
+
if (onLinksChanged) {
|
|
9971
|
+
onLinksChanged(newLinks);
|
|
9958
9972
|
}
|
|
9959
|
-
}, [
|
|
9973
|
+
}, [onLinksChanged]);
|
|
9960
9974
|
var handleLinkLabelResized = React.useCallback(function (width, height, index, labelType) {
|
|
9961
9975
|
var prevLinks = linksRef.current;
|
|
9962
9976
|
var newLinks = __spreadArray([], prevLinks, true);
|
|
@@ -9988,10 +10002,10 @@ var Paper = function (props) {
|
|
|
9988
10002
|
}
|
|
9989
10003
|
}
|
|
9990
10004
|
setLinks(newLinks);
|
|
9991
|
-
if (
|
|
9992
|
-
|
|
10005
|
+
if (onLinksChanged) {
|
|
10006
|
+
onLinksChanged(newLinks);
|
|
9993
10007
|
}
|
|
9994
|
-
}, [
|
|
10008
|
+
}, [onLinksChanged]);
|
|
9995
10009
|
var handleLinkLabelContentChanged = React.useCallback(function (newValue, index, labelType) {
|
|
9996
10010
|
var prevLinks = linksRef.current;
|
|
9997
10011
|
var newLinks = __spreadArray([], prevLinks, true);
|
|
@@ -10011,10 +10025,10 @@ var Paper = function (props) {
|
|
|
10011
10025
|
}
|
|
10012
10026
|
}
|
|
10013
10027
|
setLinks(newLinks);
|
|
10014
|
-
if (
|
|
10015
|
-
|
|
10028
|
+
if (onLinksChanged) {
|
|
10029
|
+
onLinksChanged(newLinks);
|
|
10016
10030
|
}
|
|
10017
|
-
}, [
|
|
10031
|
+
}, [onLinksChanged]);
|
|
10018
10032
|
var handleSelectLink = function (link, index) {
|
|
10019
10033
|
setSelectedLink(link);
|
|
10020
10034
|
};
|
|
@@ -10067,20 +10081,20 @@ var Paper = function (props) {
|
|
|
10067
10081
|
var newLinks = __spreadArray([], prevLinks, true);
|
|
10068
10082
|
newLinks.splice(index, 1);
|
|
10069
10083
|
setLinks(newLinks);
|
|
10070
|
-
if (
|
|
10071
|
-
|
|
10084
|
+
if (onLinksChanged) {
|
|
10085
|
+
onLinksChanged(newLinks);
|
|
10072
10086
|
}
|
|
10073
10087
|
};
|
|
10074
|
-
}, [
|
|
10088
|
+
}, [onLinksChanged]);
|
|
10075
10089
|
var handleMouseUpAtLinkedPortPlaceholder = React.useCallback(function (link, position, targetElementId) {
|
|
10076
10090
|
var targetElement = elementsRef.current.find(function (e) { return e.id === targetElementId; });
|
|
10077
10091
|
if (!targetElement)
|
|
10078
10092
|
return;
|
|
10079
10093
|
logger.info("A port could have been created at position ".concat(JSON.stringify(position), " on element ").concat(targetElementId, " by linking from element ").concat(link.sourceElement.id));
|
|
10080
|
-
if (
|
|
10094
|
+
if (onCreatingPortByLinking) {
|
|
10081
10095
|
var sourcePort = link.sourcePort, sourceElement = link.sourceElement;
|
|
10082
10096
|
//Handle create port via onCreatingPortByLinking prop
|
|
10083
|
-
var targetPort =
|
|
10097
|
+
var targetPort = onCreatingPortByLinking(sourceElement, sourcePort, targetElement, position);
|
|
10084
10098
|
if (targetPort) {
|
|
10085
10099
|
//Add new port to target element
|
|
10086
10100
|
targetElement.addPort(targetPort);
|
|
@@ -10091,8 +10105,8 @@ var Paper = function (props) {
|
|
|
10091
10105
|
var prevLinks = linksRef.current;
|
|
10092
10106
|
var newLinks = __spreadArray(__spreadArray([], prevLinks, true), [newElementLink], false);
|
|
10093
10107
|
setLinks(newLinks);
|
|
10094
|
-
if (
|
|
10095
|
-
|
|
10108
|
+
if (onLinksChanged) {
|
|
10109
|
+
onLinksChanged(newLinks);
|
|
10096
10110
|
}
|
|
10097
10111
|
paperEventEmitter.emitElementLinkEnded(newElementLink);
|
|
10098
10112
|
setTempLink(null);
|
|
@@ -10103,7 +10117,7 @@ var Paper = function (props) {
|
|
|
10103
10117
|
//Clear tempLink
|
|
10104
10118
|
setTempLink(null);
|
|
10105
10119
|
paperEventEmitter.emitElementLinkEnded();
|
|
10106
|
-
}, [
|
|
10120
|
+
}, [onCreatingPortByLinking, createElementLink, paperEventEmitter, onLinksChanged]);
|
|
10107
10121
|
var handleElementTextChange = React.useCallback(function (elementId, textId, newContent) {
|
|
10108
10122
|
var prevElms = elementsRef.current;
|
|
10109
10123
|
var newElements = prevElms.map(function (curEle) {
|
|
@@ -10117,10 +10131,10 @@ var Paper = function (props) {
|
|
|
10117
10131
|
return curEle;
|
|
10118
10132
|
});
|
|
10119
10133
|
setElements(newElements);
|
|
10120
|
-
if (
|
|
10121
|
-
|
|
10134
|
+
if (onElementsChanged) {
|
|
10135
|
+
onElementsChanged(newElements);
|
|
10122
10136
|
}
|
|
10123
|
-
}, [
|
|
10137
|
+
}, [onElementsChanged]);
|
|
10124
10138
|
var handleElementClicked = React.useCallback(function (elementId, e, ref) {
|
|
10125
10139
|
e.stopPropagation();
|
|
10126
10140
|
var tempLink = tempLinkRef.current;
|
|
@@ -10141,73 +10155,67 @@ var Paper = function (props) {
|
|
|
10141
10155
|
setMouseDownedOnPaper(false);
|
|
10142
10156
|
}, [paperEventEmitter]);
|
|
10143
10157
|
var handlePortContextMenu = React.useCallback(function (port, elementId, e) {
|
|
10144
|
-
var _a;
|
|
10145
10158
|
e.preventDefault();
|
|
10146
10159
|
var element = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
10147
10160
|
if (element) {
|
|
10148
|
-
|
|
10161
|
+
onPortContextMenu === null || onPortContextMenu === void 0 ? void 0 : onPortContextMenu(port, element, e);
|
|
10149
10162
|
}
|
|
10150
|
-
}, [
|
|
10163
|
+
}, [onPortContextMenu]);
|
|
10151
10164
|
var handleContextMenu = React.useCallback(function (elementId, e, ref) {
|
|
10152
|
-
var _a;
|
|
10153
10165
|
e.preventDefault();
|
|
10154
10166
|
var element = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
10155
10167
|
if (element) {
|
|
10156
10168
|
handleElementClicked(elementId, e, ref);
|
|
10157
|
-
|
|
10169
|
+
onElementContextMenu === null || onElementContextMenu === void 0 ? void 0 : onElementContextMenu(element, e);
|
|
10158
10170
|
}
|
|
10159
|
-
}, [
|
|
10171
|
+
}, [onElementContextMenu, handleElementClicked]);
|
|
10160
10172
|
var handleMouseUp = React.useCallback(function (ev, elementId) {
|
|
10161
|
-
var _a;
|
|
10162
10173
|
var element = elementsRef.current.find(function (ele) { return ele.id === elementId; });
|
|
10163
10174
|
var paperPosition = windowsPositionToPaperPosition({
|
|
10164
10175
|
x: ev.clientX,
|
|
10165
10176
|
y: ev.clientY
|
|
10166
10177
|
}, paperContainerRef.current, zoomRef.current);
|
|
10167
10178
|
if (element) {
|
|
10168
|
-
|
|
10179
|
+
onElementMouseUp === null || onElementMouseUp === void 0 ? void 0 : onElementMouseUp(ev, element, paperPosition);
|
|
10169
10180
|
}
|
|
10170
|
-
}, [
|
|
10181
|
+
}, [onElementMouseUp]);
|
|
10171
10182
|
var handleMouseDown = React.useCallback(function (ev, elementId) {
|
|
10172
|
-
var _a;
|
|
10173
10183
|
var element = elementsRef.current.find(function (ele) { return ele.id === elementId; });
|
|
10174
10184
|
var paperPosition = windowsPositionToPaperPosition({
|
|
10175
10185
|
x: ev.clientX,
|
|
10176
10186
|
y: ev.clientY
|
|
10177
10187
|
}, paperContainerRef.current, zoomRef.current);
|
|
10178
10188
|
if (element) {
|
|
10179
|
-
|
|
10189
|
+
onElementMouseDown === null || onElementMouseDown === void 0 ? void 0 : onElementMouseDown(ev, element, paperPosition);
|
|
10180
10190
|
}
|
|
10181
|
-
}, [
|
|
10191
|
+
}, [onElementMouseDown]);
|
|
10182
10192
|
var handleMouseMove = React.useCallback(function (ev, elementId) {
|
|
10183
|
-
var _a;
|
|
10184
10193
|
var element = elementsRef.current.find(function (ele) { return ele.id === elementId; });
|
|
10185
10194
|
var paperPosition = windowsPositionToPaperPosition({
|
|
10186
10195
|
x: ev.clientX,
|
|
10187
10196
|
y: ev.clientY
|
|
10188
10197
|
}, paperContainerRef.current, zoomRef.current);
|
|
10189
10198
|
if (element) {
|
|
10190
|
-
|
|
10199
|
+
onElementMouseMove === null || onElementMouseMove === void 0 ? void 0 : onElementMouseMove(ev, element, paperPosition);
|
|
10191
10200
|
}
|
|
10192
|
-
}, [
|
|
10201
|
+
}, [onElementMouseMove]);
|
|
10193
10202
|
var handleMouseLeave = React.useCallback(function (ev, elementId) {
|
|
10194
|
-
var _a;
|
|
10195
10203
|
var element = elementsRef.current.find(function (ele) { return ele.id === elementId; });
|
|
10196
10204
|
var paperPosition = windowsPositionToPaperPosition({
|
|
10197
10205
|
x: ev.clientX,
|
|
10198
10206
|
y: ev.clientY
|
|
10199
10207
|
}, paperContainerRef.current, zoomRef.current);
|
|
10200
10208
|
if (element) {
|
|
10201
|
-
|
|
10209
|
+
onElementMouseLeave === null || onElementMouseLeave === void 0 ? void 0 : onElementMouseLeave(ev, element, paperPosition);
|
|
10202
10210
|
}
|
|
10203
|
-
}, [
|
|
10211
|
+
}, [onElementMouseLeave]);
|
|
10204
10212
|
var renderElementInTree = React.useCallback(function (element) {
|
|
10205
10213
|
//use the defined react element or the default Element component
|
|
10206
10214
|
var ReactElement = element.reactElement || Element$1;
|
|
10207
10215
|
return (React.createElement("g", { id: "group-of-element-".concat(element.id), key: element.id },
|
|
10208
10216
|
React.createElement(ReactElement, { key: "element-".concat(element.id), id: element.id, ref: function (refDOM) { return element.DOM = refDOM; }, height: element.size.height, width: element.size.width, x: element.positionAnchor === exports.PositioningAnchor.Center ? element.position.x - element.size.width / 2 : element.position.x, y: element.positionAnchor === exports.PositioningAnchor.Center ? element.position.y - element.size.height / 2 : element.position.y, onClick: handleElementClicked, onContextMenu: handleContextMenu, onMouseUp: handleMouseUp, onMouseDown: handleMouseDown, onMouseMove: handleMouseMove, onMouseLeave: handleMouseLeave, container: paperContainerRef.current, renderShape: element.renderShape, cssClass: element.cssClass, texts: element.texts, ports: element.ports, portMoveableAreas: element.portMoveableAreas, portSlideRailSVGClassName: element.portSlideRailSVGClassName, portDirection: element.portDirection, defaultPortSize: element.defaultPortSize, onPortMoved: handlePortMoved, onPortMouseDown: handlePortMouseDown, onPortMouseUp: handlePortMouseUp, onPortsChanged: handlePortsChanged, onPortContextMenu: handlePortContextMenu,
|
|
10209
10217
|
// portPlaceholderShape={(<Circle x={0} y={0} width={10} height={10} fill='red' positioningAnchor={PositioningAnchor.Center} />)}
|
|
10210
|
-
onMouseUpAtLinkedPortPlaceholder: handleMouseUpAtLinkedPortPlaceholder, onTextUpdated: handleElementTextChange, onManuallyTriggerRenderPort:
|
|
10218
|
+
onMouseUpAtLinkedPortPlaceholder: handleMouseUpAtLinkedPortPlaceholder, onTextUpdated: handleElementTextChange, onManuallyTriggerRenderPort: manuallyTriggerRenderPortHandler, textsPlaceHolderClassName: element.textsPlaceHolderClassName, textsPlaceHolderFlexStyle: element.textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition: element.textsPlaceHolderFlexboxPosition, parentAbsolutePosition: element.parentElement ? getAbsolutePosition(element.parentElement) : undefined },
|
|
10211
10219
|
element.childrenElementsInTree && element.childrenElementsInTree.map(renderElementInTree),
|
|
10212
10220
|
!!paperContainerRef.current && !!selectedElement && selectedElement.id === element.id &&
|
|
10213
10221
|
React.createElement(SelectionFrame, { key: selectedElement.id, container: paperContainerRef.current, targetSVGElement: selectedElementSVG || undefined, resizability: (selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.resizability) || {
|
|
@@ -10299,7 +10307,7 @@ var Paper = function (props) {
|
|
|
10299
10307
|
paperEventEmitter.emitElementResized(selectedElement, oldSize, newSize);
|
|
10300
10308
|
setMouseDownedOnPaper(false);
|
|
10301
10309
|
} }))));
|
|
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]);
|
|
10310
|
+
}, [manuallyTriggerRenderPortHandler, handleElementClicked, handleContextMenu, handleMouseUp, handleMouseDown, handleMouseMove, handleMouseLeave, handlePortMoved, handlePortMouseDown, handlePortMouseUp, handlePortsChanged, handlePortContextMenu, handleMouseUpAtLinkedPortPlaceholder, handleElementTextChange, props, selectedElement, selectedElementSVG, selectedElementAbsPosition === null || selectedElementAbsPosition === void 0 ? void 0 : selectedElementAbsPosition.x, selectedElementAbsPosition === null || selectedElementAbsPosition === void 0 ? void 0 : selectedElementAbsPosition.y, zoom, autoEnabledDraggingSelectedElement, elements, getChildOfElement, paperEventEmitter]);
|
|
10303
10311
|
var ElementsInTree = React.useMemo(function () {
|
|
10304
10312
|
return elementsInTree.map(function (element, index) {
|
|
10305
10313
|
return renderElementInTree(element);
|
|
@@ -10382,7 +10390,7 @@ var Editor = function (_a) {
|
|
|
10382
10390
|
}, [editorContext]);
|
|
10383
10391
|
var handlePortsChanged = React.useCallback(function (ports, element) {
|
|
10384
10392
|
element.ports = ports;
|
|
10385
|
-
}, [
|
|
10393
|
+
}, []);
|
|
10386
10394
|
var handlePortContextMenu = React.useCallback(function (port, element, event) {
|
|
10387
10395
|
editorContext.onPortContextMenuHandler(port, element, event);
|
|
10388
10396
|
}, [editorContext]);
|
|
@@ -10446,9 +10454,12 @@ var Editor = function (_a) {
|
|
|
10446
10454
|
var handlePaperMouseUp = React.useCallback(function (position) {
|
|
10447
10455
|
editorContext.onPaperMouseUpHandler(position);
|
|
10448
10456
|
}, [editorContext]);
|
|
10457
|
+
var handleElementRemoved = React.useCallback(function (element) {
|
|
10458
|
+
editorContext.onElementRemovedHandler(element.id);
|
|
10459
|
+
}, [editorContext]);
|
|
10449
10460
|
return (React.createElement(EditorConfigurationContextProvider, { value: editorContext.configuration },
|
|
10450
10461
|
React.createElement(ZoomContextProvider, null,
|
|
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) }))));
|
|
10462
|
+
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, onElementDeleted: handleElementRemoved, 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) }))));
|
|
10452
10463
|
};
|
|
10453
10464
|
|
|
10454
10465
|
exports.CircleRC = Circle;
|