orcasvn-react-diagrams 0.1.65 → 0.1.66
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 +61 -45
- package/dist/cjs/types/components/paper.d.ts +1 -0
- package/dist/cjs/types/mocks/diamondElement.d.ts +1 -1
- package/dist/cjs/types/mocks/rectangularFrameElement.d.ts +1 -1
- package/dist/cjs/types/models/IEditorContext.d.ts +1 -0
- package/dist/cjs/types/models/IElement.d.ts +1 -0
- package/dist/cjs/types/models/IElementProps.d.ts +1 -0
- package/dist/cjs/types/models/implementations/EditorContext.d.ts +1 -0
- package/dist/cjs/types/models/implementations/Element.d.ts +2 -1
- package/dist/esm/index.js +61 -45
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/components/paper.d.ts +1 -0
- package/dist/esm/types/mocks/diamondElement.d.ts +1 -1
- package/dist/esm/types/mocks/rectangularFrameElement.d.ts +1 -1
- package/dist/esm/types/models/IEditorContext.d.ts +1 -0
- package/dist/esm/types/models/IElement.d.ts +1 -0
- package/dist/esm/types/models/IElementProps.d.ts +1 -0
- package/dist/esm/types/models/implementations/EditorContext.d.ts +1 -0
- package/dist/esm/types/models/implementations/Element.d.ts +2 -1
- package/dist/index.d.ts +6 -1
- package/package.json +1 -1
package/dist/cjs/index.js
CHANGED
|
@@ -484,7 +484,7 @@ function generateUniqueId() {
|
|
|
484
484
|
}
|
|
485
485
|
|
|
486
486
|
var Element$2 = /** @class */ (function () {
|
|
487
|
-
function Element(id, x, y, width, height, cssClass, renderShape, texts, ports, portMovealeAreas, portSlideRailSVGClassName, portDirection, parentElement, textsPlaceHolderClassName, textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition) {
|
|
487
|
+
function Element(id, x, y, width, height, selectable, cssClass, renderShape, texts, ports, portMovealeAreas, portSlideRailSVGClassName, portDirection, parentElement, textsPlaceHolderClassName, textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition) {
|
|
488
488
|
if (portMovealeAreas === void 0) { portMovealeAreas = []; }
|
|
489
489
|
this.positionAnchor = exports.PositioningAnchor.TopLeft;
|
|
490
490
|
this._childrenElements = [];
|
|
@@ -497,6 +497,7 @@ var Element$2 = /** @class */ (function () {
|
|
|
497
497
|
this._id = id || generateUniqueId();
|
|
498
498
|
this._position = { x: x, y: y };
|
|
499
499
|
this._size = { width: width, height: height };
|
|
500
|
+
this.selectable = selectable === undefined ? true : selectable;
|
|
500
501
|
this.cssClass = cssClass;
|
|
501
502
|
this.renderShape = renderShape;
|
|
502
503
|
this.texts = texts;
|
|
@@ -7722,27 +7723,27 @@ var SelectionFrame = function (props) {
|
|
|
7722
7723
|
setHeight(propHeight);
|
|
7723
7724
|
}
|
|
7724
7725
|
}, [objectY, propHeight]);
|
|
7725
|
-
|
|
7726
|
-
|
|
7727
|
-
|
|
7728
|
-
|
|
7729
|
-
|
|
7730
|
-
|
|
7731
|
-
}, [objectX]);
|
|
7732
|
-
|
|
7733
|
-
|
|
7734
|
-
|
|
7735
|
-
|
|
7736
|
-
}, [objectY]);
|
|
7726
|
+
// const [curX, setCurX] = React.useState<number>(objectX ?? 0)
|
|
7727
|
+
// const [curY, setCurY] = React.useState<number>(objectY ?? 0)
|
|
7728
|
+
// useEffect(() => {
|
|
7729
|
+
// if (objectX) {
|
|
7730
|
+
// setCurX(objectX);
|
|
7731
|
+
// }
|
|
7732
|
+
// }, [objectX]);
|
|
7733
|
+
// useEffect(() => {
|
|
7734
|
+
// if (objectY) {
|
|
7735
|
+
// setCurY(objectY);
|
|
7736
|
+
// }
|
|
7737
|
+
// }, [objectY]);
|
|
7737
7738
|
var framePadding = propFramePadding || 0;
|
|
7738
7739
|
var r = 5;
|
|
7739
|
-
var
|
|
7740
|
-
var
|
|
7741
|
-
var
|
|
7742
|
-
var
|
|
7743
|
-
var
|
|
7744
|
-
var
|
|
7745
|
-
var
|
|
7740
|
+
var _c = React.useState(draggingByDefault || false), draggingRect = _c[0], setDraggingRect = _c[1];
|
|
7741
|
+
var _d = React.useState(false), draggingCircle = _d[0], setDraggingCircle = _d[1];
|
|
7742
|
+
var _e = React.useState(0), startX = _e[0], setStartX = _e[1];
|
|
7743
|
+
var _f = React.useState(0), startY = _f[0], setStartY = _f[1];
|
|
7744
|
+
var _g = React.useState(0), xFromMouse = _g[0], setXFromMouse = _g[1];
|
|
7745
|
+
var _h = React.useState(0), yFromMouse = _h[0], setYFromMouse = _h[1];
|
|
7746
|
+
var _j = React.useState(0), lastMoveTime = _j[0], setLastMoveTime = _j[1];
|
|
7746
7747
|
// const { onStartDraggingElement } = useContext(paperEventEmitterContext);
|
|
7747
7748
|
// useEffect(() => {
|
|
7748
7749
|
// const { off } = onStartDraggingElement((element) => {
|
|
@@ -7766,8 +7767,8 @@ var SelectionFrame = function (props) {
|
|
|
7766
7767
|
setStartX(event.clientX);
|
|
7767
7768
|
setStartY(event.clientY);
|
|
7768
7769
|
var mousePosition = getMousePosition(event);
|
|
7769
|
-
var xFromMouse_1 = (
|
|
7770
|
-
var yFromMouse_1 = (
|
|
7770
|
+
var xFromMouse_1 = (objectX || 0) - mousePosition.x;
|
|
7771
|
+
var yFromMouse_1 = (objectY || 0) - mousePosition.y;
|
|
7771
7772
|
setXFromMouse(xFromMouse_1);
|
|
7772
7773
|
setYFromMouse(yFromMouse_1);
|
|
7773
7774
|
}
|
|
@@ -7786,8 +7787,8 @@ var SelectionFrame = function (props) {
|
|
|
7786
7787
|
var newX = mousePosition.x + xFromMouse;
|
|
7787
7788
|
var newY = mousePosition.y + yFromMouse;
|
|
7788
7789
|
if (propOnMove) {
|
|
7789
|
-
setCurX(newX)
|
|
7790
|
-
setCurY(newY)
|
|
7790
|
+
// setCurX(newX)
|
|
7791
|
+
// setCurY(newY)
|
|
7791
7792
|
propOnMove(newX, newY);
|
|
7792
7793
|
setLastMoveTime(Date.now());
|
|
7793
7794
|
setStartX(mouseEvent.clientX);
|
|
@@ -7838,8 +7839,8 @@ var SelectionFrame = function (props) {
|
|
|
7838
7839
|
// setStartX(mouseEvent.clientX);
|
|
7839
7840
|
// setStartY(mouseEvent.clientY);
|
|
7840
7841
|
setLastMoveTime(Date.now());
|
|
7841
|
-
var newWidth = mousePosition.x -
|
|
7842
|
-
var newHeight = mousePosition.y -
|
|
7842
|
+
var newWidth = mousePosition.x - objectX;
|
|
7843
|
+
var newHeight = mousePosition.y - objectY;
|
|
7843
7844
|
if (propResizability.keepRatio) {
|
|
7844
7845
|
var ratio = Math.max(Math.abs(newWidth / width), Math.abs(newHeight / height));
|
|
7845
7846
|
newWidth = newWidth > 0 ? ratio * width : -ratio * width;
|
|
@@ -7880,7 +7881,7 @@ var SelectionFrame = function (props) {
|
|
|
7880
7881
|
//logging the end of the circle handle mouse move
|
|
7881
7882
|
logger.debug('SelectionFrame: circleHandleMouseMove ended', container);
|
|
7882
7883
|
};
|
|
7883
|
-
}, [draggingCircle, width, height,
|
|
7884
|
+
}, [draggingCircle, width, height, objectX, objectY, lastMoveTime, propContainer, getMousePosition, propMovingRate, propOnResize, propResizability, startX, startY]);
|
|
7884
7885
|
var rectangleSize = Math.max(width, height);
|
|
7885
7886
|
var leftX = framePadding;
|
|
7886
7887
|
var topY = framePadding;
|
|
@@ -9475,17 +9476,18 @@ function convertElementsToTree(elements) {
|
|
|
9475
9476
|
return parsedElementsInTree;
|
|
9476
9477
|
}
|
|
9477
9478
|
var Paper = function (props) {
|
|
9478
|
-
var _a
|
|
9479
|
-
var
|
|
9480
|
-
var
|
|
9481
|
-
var
|
|
9482
|
-
var
|
|
9483
|
-
var
|
|
9484
|
-
var
|
|
9485
|
-
var
|
|
9486
|
-
var
|
|
9487
|
-
var
|
|
9488
|
-
var
|
|
9479
|
+
var _a, _b;
|
|
9480
|
+
var _c = React.useState([]), elements = _c[0], setElements = _c[1];
|
|
9481
|
+
var _d = React.useState([]), elementsInTree = _d[0], setElementsInTree = _d[1];
|
|
9482
|
+
var _e = React.useState(), selectedElement = _e[0], setSelectedElement = _e[1];
|
|
9483
|
+
var _f = React.useState(false), autoEnabledDraggingSelectedElement = _f[0], setAutoEnabledDraggingSelectedElement = _f[1];
|
|
9484
|
+
var _g = React.useState([]), links = _g[0], setLinks = _g[1];
|
|
9485
|
+
var _h = React.useState(), selectedLink = _h[0], setSelectedLink = _h[1];
|
|
9486
|
+
var _j = React.useState(null), tempLink = _j[0], setTempLink = _j[1];
|
|
9487
|
+
var _k = React.useState([]), texts = _k[0], setTexts = _k[1];
|
|
9488
|
+
var _l = React.useState(), selectedText = _l[0], setSelectedText = _l[1];
|
|
9489
|
+
var _m = React.useState(null), selectedElementSVG = _m[0], setSelectedElementSVG = _m[1];
|
|
9490
|
+
var _o = React.useState(false), mouseDownedOnPaper = _o[0], setMouseDownedOnPaper = _o[1];
|
|
9489
9491
|
var paperEventEmitter = React.useContext(paperEventEmitterContext);
|
|
9490
9492
|
var zoom = useZoomContext().zoom;
|
|
9491
9493
|
var zoomRef = React.useRef(zoom);
|
|
@@ -9495,8 +9497,8 @@ var Paper = function (props) {
|
|
|
9495
9497
|
var linksRef = React.useRef(links); //Cache links to avoid re-render when links changed
|
|
9496
9498
|
var textsRef = React.useRef(texts); //Cache texts to avoid re-render when texts changed
|
|
9497
9499
|
var size = props.size;
|
|
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, onElementResized = props.onElementResized, onElementContextMenu = props.onElementContextMenu, onElementMouseUp = props.onElementMouseUp, onElementMouseDown = props.onElementMouseDown, onElementMouseMove = props.onElementMouseMove, onElementMoved = props.onElementMoved, 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;
|
|
9500
|
+
var selectedElementAbsPosition = React.useMemo(function () { return selectedElement ? getAbsolutePosition(selectedElement) : null; }, [selectedElement, (_a = selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.position) === null || _a === void 0 ? void 0 : _a.x, (_b = selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.position) === null || _b === void 0 ? void 0 : _b.y, selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.size]);
|
|
9501
|
+
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, onElementResized = props.onElementResized, onElementContextMenu = props.onElementContextMenu, onElementMouseUp = props.onElementMouseUp, onElementMouseDown = props.onElementMouseDown, onElementMouseMove = props.onElementMouseMove, onElementMoved = props.onElementMoved, 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, onElementMoving = props.onElementMoving, manuallySelectElementHandler = props.manuallySelectElementHandler, manuallyTriggerDraggingElementHandler = props.manuallyTriggerDraggingElementHandler, manuallyTriggerStartedLinkingHandler = props.manuallyTriggerStartedLinkingHandler;
|
|
9500
9502
|
React.useEffect(function () {
|
|
9501
9503
|
zoomRef.current = zoom;
|
|
9502
9504
|
}, [zoom]);
|
|
@@ -10167,8 +10169,9 @@ var Paper = function (props) {
|
|
|
10167
10169
|
}
|
|
10168
10170
|
else {
|
|
10169
10171
|
var element = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
10170
|
-
|
|
10171
|
-
if (element) {
|
|
10172
|
+
// Select the element only if it is selectable
|
|
10173
|
+
if (element && element.selectable) {
|
|
10174
|
+
setSelectedElementSVG(ref);
|
|
10172
10175
|
setSelectedElement(element);
|
|
10173
10176
|
setAutoEnabledDraggingSelectedElement(false);
|
|
10174
10177
|
paperEventEmitter.emitElementSelected(element);
|
|
@@ -10236,7 +10239,7 @@ var Paper = function (props) {
|
|
|
10236
10239
|
//use the defined react element or the default Element component
|
|
10237
10240
|
var ReactElement = element.reactElement || Element$1;
|
|
10238
10241
|
return (React.createElement("g", { id: "group-of-element-".concat(element.id), key: element.id },
|
|
10239
|
-
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,
|
|
10242
|
+
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, selectable: element.selectable, 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,
|
|
10240
10243
|
// portPlaceholderShape={(<Circle x={0} y={0} width={10} height={10} fill='red' positioningAnchor={PositioningAnchor.Center} />)}
|
|
10241
10244
|
onMouseUpAtLinkedPortPlaceholder: handleMouseUpAtLinkedPortPlaceholder, onTextUpdated: handleElementTextChange, onManuallyTriggerRenderPort: manuallyTriggerRenderPortHandler, textsPlaceHolderClassName: element.textsPlaceHolderClassName, textsPlaceHolderFlexStyle: element.textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition: element.textsPlaceHolderFlexboxPosition, parentAbsolutePosition: element.parentElement ? getAbsolutePosition(element.parentElement) : undefined },
|
|
10242
10245
|
element.childrenElementsInTree && element.childrenElementsInTree.map(renderElementInTree),
|
|
@@ -10271,6 +10274,13 @@ var Paper = function (props) {
|
|
|
10271
10274
|
x: newX,
|
|
10272
10275
|
y: newY
|
|
10273
10276
|
};
|
|
10277
|
+
//Call onElementMoving to check if the element should be moved or not
|
|
10278
|
+
if (onElementMoving) {
|
|
10279
|
+
var isSkip = onElementMoving(selectedElement, paperPosition);
|
|
10280
|
+
if (!isSkip) {
|
|
10281
|
+
return;
|
|
10282
|
+
}
|
|
10283
|
+
}
|
|
10274
10284
|
logger.info("Element ".concat(selectedElement.id, " is dragging to position ").concat(JSON.stringify(paperPosition)));
|
|
10275
10285
|
//Adjust position of element if it should move as a port on parent port area
|
|
10276
10286
|
if (selectedElement.moveAsPortOnParent && selectedElement.parentElement) {
|
|
@@ -10327,7 +10337,7 @@ var Paper = function (props) {
|
|
|
10327
10337
|
paperEventEmitter.emitElementResized(selectedElement, oldSize, newSize);
|
|
10328
10338
|
setMouseDownedOnPaper(false);
|
|
10329
10339
|
} }))));
|
|
10330
|
-
}, [manuallyTriggerRenderPortHandler, handleElementClicked, handleContextMenu, handleMouseUp, handleMouseDown, handleMouseMove, handleMouseLeave, handlePortMoved, handlePortMouseDown, handlePortMouseUp, handlePortsChanged, handlePortContextMenu, handleMouseUpAtLinkedPortPlaceholder, handleElementTextChange, 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, onElementResized, onElementsChanged, onElementMoved, onElementMouseDown, onElementMouseUp, onLinksChanged]);
|
|
10340
|
+
}, [manuallyTriggerRenderPortHandler, handleElementClicked, handleContextMenu, handleMouseUp, handleMouseDown, handleMouseMove, handleMouseLeave, handlePortMoved, handlePortMouseDown, handlePortMouseUp, handlePortsChanged, handlePortContextMenu, handleMouseUpAtLinkedPortPlaceholder, handleElementTextChange, 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, onElementResized, onElementsChanged, onElementMoved, onElementMouseDown, onElementMouseUp, onLinksChanged, onElementMoving]);
|
|
10331
10341
|
var ElementsInTree = React.useMemo(function () {
|
|
10332
10342
|
return elementsInTree.map(function (element, index) {
|
|
10333
10343
|
return renderElementInTree(element);
|
|
@@ -10459,6 +10469,12 @@ var Editor = function (_a) {
|
|
|
10459
10469
|
}
|
|
10460
10470
|
return null;
|
|
10461
10471
|
}, [editorContext]);
|
|
10472
|
+
var handleOnElementMoving = React.useCallback(function (element, newPaperPosition) {
|
|
10473
|
+
if (editorContext.onElementMovingHandler) {
|
|
10474
|
+
return editorContext.onElementMovingHandler(element, newPaperPosition);
|
|
10475
|
+
}
|
|
10476
|
+
return true;
|
|
10477
|
+
}, [editorContext]);
|
|
10462
10478
|
var handleOnCreatingPortByLinking = React.useCallback(function (sourceElement, sourcePort, targetElement, position) {
|
|
10463
10479
|
if (editorContext.onCreatingPortByLinkingHandler) {
|
|
10464
10480
|
return editorContext.onCreatingPortByLinkingHandler(sourceElement, sourcePort, targetElement, position);
|
|
@@ -10479,7 +10495,7 @@ var Editor = function (_a) {
|
|
|
10479
10495
|
}, [editorContext]);
|
|
10480
10496
|
return (React.createElement(EditorConfigurationContextProvider, { value: editorContext.configuration },
|
|
10481
10497
|
React.createElement(ZoomContextProvider, null,
|
|
10482
|
-
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) }))));
|
|
10498
|
+
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, onElementMoving: handleOnElementMoving, 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) }))));
|
|
10483
10499
|
};
|
|
10484
10500
|
|
|
10485
10501
|
exports.CircleRC = Circle;
|
|
@@ -41,6 +41,7 @@ interface PaperProps {
|
|
|
41
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
|
+
onElementMoving?: (element: IElement, newPaperPosition: IPosition) => boolean;
|
|
44
45
|
manuallySelectElementHandler?: (callback: (element: IElement | null) => void) => (() => void);
|
|
45
46
|
manuallyTriggerDraggingElementHandler?: (callback: (element: IElement) => void) => (() => void);
|
|
46
47
|
manuallyTriggerStartedLinkingHandler?: (callback: (sourceElement: IElement, sourcePort: IPort) => void) => (() => void);
|
|
@@ -7,5 +7,5 @@ export default class DiamondElement extends Element {
|
|
|
7
7
|
resizability: IResizability;
|
|
8
8
|
get size(): ISize;
|
|
9
9
|
set size(value: ISize);
|
|
10
|
-
constructor(x: number, y: number, width: number, height: number, cssClass?: string, texts?: IText[], ports?: IPort[]);
|
|
10
|
+
constructor(x: number, y: number, width: number, height: number, selectable?: boolean, cssClass?: string, texts?: IText[], ports?: IPort[]);
|
|
11
11
|
}
|
|
@@ -7,5 +7,5 @@ import IPosition from '../models/position';
|
|
|
7
7
|
export default class RectangularFrameElement extends Element {
|
|
8
8
|
resizability: IResizability;
|
|
9
9
|
defaultPortSize?: number | undefined;
|
|
10
|
-
constructor(x: number, y: number, width: number, height: number, cssClass?: string, texts?: IText[], ports?: IPort[], textsPlaceHolderClassName?: string, textsPlaceHolderFlexStyle?: IFlexboxType, textsPlaceHolderFlexboxPosition?: IPosition);
|
|
10
|
+
constructor(x: number, y: number, width: number, height: number, selectable?: boolean, cssClass?: string, texts?: IText[], ports?: IPort[], textsPlaceHolderClassName?: string, textsPlaceHolderFlexStyle?: IFlexboxType, textsPlaceHolderFlexboxPosition?: IPosition);
|
|
11
11
|
}
|
|
@@ -13,6 +13,7 @@ export default interface IEditorContext {
|
|
|
13
13
|
configuration: IEditorConfiguration;
|
|
14
14
|
onCreatingPortByLinkingHandler?: (sourceElement: IElement, sourcePort: IPort, targetElement: IElement, position: IPosition) => IPort | null;
|
|
15
15
|
onCreatingLinkHandler?: (sourcePort: IPort, sourceElement: IElement, targetPort: IPort, targetElement: IElement) => IElementLink | null;
|
|
16
|
+
onElementMovingHandler?: (element: IElement, newPaperPosition: IPosition) => boolean;
|
|
16
17
|
onPaperClicked: (callback: (paperPosition: IPosition) => void) => (() => void);
|
|
17
18
|
onPaperMouseMoved: (callback: (paperPosition: IPosition) => void) => (() => void);
|
|
18
19
|
onPaperMouseUp: (callback: (paperPosition: IPosition) => void) => (() => void);
|
|
@@ -13,6 +13,7 @@ export default interface IElement {
|
|
|
13
13
|
position: IPosition;
|
|
14
14
|
positionAnchor?: PositioningAnchor;
|
|
15
15
|
size: ISize;
|
|
16
|
+
selectable?: boolean;
|
|
16
17
|
moveAsPortOnParent?: boolean;
|
|
17
18
|
/**
|
|
18
19
|
* @deprecated This property is deprecated and will be removed in future versions.
|
|
@@ -15,6 +15,7 @@ export declare class EditorContext implements IEditorContext {
|
|
|
15
15
|
private _configuration;
|
|
16
16
|
onCreatingPortByLinkingHandler?: ((sourceElement: IElement, sourcePort: IPort, targetElement: IElement, position: IPosition) => IPort | null) | undefined;
|
|
17
17
|
onCreatingLinkHandler?: ((sourcePort: IPort, sourceElement: IElement, targetPort: IPort, targetElement: IElement) => IElementLink | null) | undefined;
|
|
18
|
+
onElementMovingHandler?: (element: IElement, newPaperPosition: IPosition) => boolean;
|
|
18
19
|
constructor(elements: IElement[], links: IElementLink[], texts: IPaperText[], configuration?: IEditorConfiguration);
|
|
19
20
|
private addEventListener;
|
|
20
21
|
get elements(): IElement[];
|
|
@@ -17,6 +17,7 @@ export default class Element implements IElement {
|
|
|
17
17
|
protected _size: ISize;
|
|
18
18
|
private _parentElement?;
|
|
19
19
|
private _childrenElements;
|
|
20
|
+
selectable?: boolean | undefined;
|
|
20
21
|
cssClass?: string;
|
|
21
22
|
moveAsPortOnParent?: boolean | undefined;
|
|
22
23
|
/**
|
|
@@ -37,7 +38,7 @@ export default class Element implements IElement {
|
|
|
37
38
|
textsPlaceHolderFlexStyle?: IFlexboxType;
|
|
38
39
|
textsPlaceHolderFlexboxPosition?: IPosition;
|
|
39
40
|
_eventEmitter: EventEmitter;
|
|
40
|
-
constructor(id: string | null, x: number, y: number, width: number, height: number, cssClass?: string, renderShape?: (props: IElementProps) => JSX.Element, texts?: IText[], ports?: IPort[], portMovealeAreas?: IPosition[][], portSlideRailSVGClassName?: string, portDirection?: SubObjectDirection, parentElement?: IElement, textsPlaceHolderClassName?: string, textsPlaceHolderFlexStyle?: IFlexboxType, textsPlaceHolderFlexboxPosition?: IPosition);
|
|
41
|
+
constructor(id: string | null, x: number, y: number, width: number, height: number, selectable?: boolean, cssClass?: string, renderShape?: (props: IElementProps) => JSX.Element, texts?: IText[], ports?: IPort[], portMovealeAreas?: IPosition[][], portSlideRailSVGClassName?: string, portDirection?: SubObjectDirection, parentElement?: IElement, textsPlaceHolderClassName?: string, textsPlaceHolderFlexStyle?: IFlexboxType, textsPlaceHolderFlexboxPosition?: IPosition);
|
|
41
42
|
get id(): string;
|
|
42
43
|
get size(): ISize;
|
|
43
44
|
set size(value: ISize);
|
package/dist/esm/index.js
CHANGED
|
@@ -480,7 +480,7 @@ function generateUniqueId() {
|
|
|
480
480
|
}
|
|
481
481
|
|
|
482
482
|
var Element$2 = /** @class */ (function () {
|
|
483
|
-
function Element(id, x, y, width, height, cssClass, renderShape, texts, ports, portMovealeAreas, portSlideRailSVGClassName, portDirection, parentElement, textsPlaceHolderClassName, textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition) {
|
|
483
|
+
function Element(id, x, y, width, height, selectable, cssClass, renderShape, texts, ports, portMovealeAreas, portSlideRailSVGClassName, portDirection, parentElement, textsPlaceHolderClassName, textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition) {
|
|
484
484
|
if (portMovealeAreas === void 0) { portMovealeAreas = []; }
|
|
485
485
|
this.positionAnchor = PositioningAnchor.TopLeft;
|
|
486
486
|
this._childrenElements = [];
|
|
@@ -493,6 +493,7 @@ var Element$2 = /** @class */ (function () {
|
|
|
493
493
|
this._id = id || generateUniqueId();
|
|
494
494
|
this._position = { x: x, y: y };
|
|
495
495
|
this._size = { width: width, height: height };
|
|
496
|
+
this.selectable = selectable === undefined ? true : selectable;
|
|
496
497
|
this.cssClass = cssClass;
|
|
497
498
|
this.renderShape = renderShape;
|
|
498
499
|
this.texts = texts;
|
|
@@ -7718,27 +7719,27 @@ var SelectionFrame = function (props) {
|
|
|
7718
7719
|
setHeight(propHeight);
|
|
7719
7720
|
}
|
|
7720
7721
|
}, [objectY, propHeight]);
|
|
7721
|
-
|
|
7722
|
-
|
|
7723
|
-
useEffect(
|
|
7724
|
-
|
|
7725
|
-
|
|
7726
|
-
|
|
7727
|
-
}, [objectX]);
|
|
7728
|
-
useEffect(
|
|
7729
|
-
|
|
7730
|
-
|
|
7731
|
-
|
|
7732
|
-
}, [objectY]);
|
|
7722
|
+
// const [curX, setCurX] = React.useState<number>(objectX ?? 0)
|
|
7723
|
+
// const [curY, setCurY] = React.useState<number>(objectY ?? 0)
|
|
7724
|
+
// useEffect(() => {
|
|
7725
|
+
// if (objectX) {
|
|
7726
|
+
// setCurX(objectX);
|
|
7727
|
+
// }
|
|
7728
|
+
// }, [objectX]);
|
|
7729
|
+
// useEffect(() => {
|
|
7730
|
+
// if (objectY) {
|
|
7731
|
+
// setCurY(objectY);
|
|
7732
|
+
// }
|
|
7733
|
+
// }, [objectY]);
|
|
7733
7734
|
var framePadding = propFramePadding || 0;
|
|
7734
7735
|
var r = 5;
|
|
7735
|
-
var
|
|
7736
|
-
var
|
|
7737
|
-
var
|
|
7738
|
-
var
|
|
7739
|
-
var
|
|
7740
|
-
var
|
|
7741
|
-
var
|
|
7736
|
+
var _c = React.useState(draggingByDefault || false), draggingRect = _c[0], setDraggingRect = _c[1];
|
|
7737
|
+
var _d = React.useState(false), draggingCircle = _d[0], setDraggingCircle = _d[1];
|
|
7738
|
+
var _e = React.useState(0), startX = _e[0], setStartX = _e[1];
|
|
7739
|
+
var _f = React.useState(0), startY = _f[0], setStartY = _f[1];
|
|
7740
|
+
var _g = useState(0), xFromMouse = _g[0], setXFromMouse = _g[1];
|
|
7741
|
+
var _h = useState(0), yFromMouse = _h[0], setYFromMouse = _h[1];
|
|
7742
|
+
var _j = React.useState(0), lastMoveTime = _j[0], setLastMoveTime = _j[1];
|
|
7742
7743
|
// const { onStartDraggingElement } = useContext(paperEventEmitterContext);
|
|
7743
7744
|
// useEffect(() => {
|
|
7744
7745
|
// const { off } = onStartDraggingElement((element) => {
|
|
@@ -7762,8 +7763,8 @@ var SelectionFrame = function (props) {
|
|
|
7762
7763
|
setStartX(event.clientX);
|
|
7763
7764
|
setStartY(event.clientY);
|
|
7764
7765
|
var mousePosition = getMousePosition(event);
|
|
7765
|
-
var xFromMouse_1 = (
|
|
7766
|
-
var yFromMouse_1 = (
|
|
7766
|
+
var xFromMouse_1 = (objectX || 0) - mousePosition.x;
|
|
7767
|
+
var yFromMouse_1 = (objectY || 0) - mousePosition.y;
|
|
7767
7768
|
setXFromMouse(xFromMouse_1);
|
|
7768
7769
|
setYFromMouse(yFromMouse_1);
|
|
7769
7770
|
}
|
|
@@ -7782,8 +7783,8 @@ var SelectionFrame = function (props) {
|
|
|
7782
7783
|
var newX = mousePosition.x + xFromMouse;
|
|
7783
7784
|
var newY = mousePosition.y + yFromMouse;
|
|
7784
7785
|
if (propOnMove) {
|
|
7785
|
-
setCurX(newX)
|
|
7786
|
-
setCurY(newY)
|
|
7786
|
+
// setCurX(newX)
|
|
7787
|
+
// setCurY(newY)
|
|
7787
7788
|
propOnMove(newX, newY);
|
|
7788
7789
|
setLastMoveTime(Date.now());
|
|
7789
7790
|
setStartX(mouseEvent.clientX);
|
|
@@ -7834,8 +7835,8 @@ var SelectionFrame = function (props) {
|
|
|
7834
7835
|
// setStartX(mouseEvent.clientX);
|
|
7835
7836
|
// setStartY(mouseEvent.clientY);
|
|
7836
7837
|
setLastMoveTime(Date.now());
|
|
7837
|
-
var newWidth = mousePosition.x -
|
|
7838
|
-
var newHeight = mousePosition.y -
|
|
7838
|
+
var newWidth = mousePosition.x - objectX;
|
|
7839
|
+
var newHeight = mousePosition.y - objectY;
|
|
7839
7840
|
if (propResizability.keepRatio) {
|
|
7840
7841
|
var ratio = Math.max(Math.abs(newWidth / width), Math.abs(newHeight / height));
|
|
7841
7842
|
newWidth = newWidth > 0 ? ratio * width : -ratio * width;
|
|
@@ -7876,7 +7877,7 @@ var SelectionFrame = function (props) {
|
|
|
7876
7877
|
//logging the end of the circle handle mouse move
|
|
7877
7878
|
logger.debug('SelectionFrame: circleHandleMouseMove ended', container);
|
|
7878
7879
|
};
|
|
7879
|
-
}, [draggingCircle, width, height,
|
|
7880
|
+
}, [draggingCircle, width, height, objectX, objectY, lastMoveTime, propContainer, getMousePosition, propMovingRate, propOnResize, propResizability, startX, startY]);
|
|
7880
7881
|
var rectangleSize = Math.max(width, height);
|
|
7881
7882
|
var leftX = framePadding;
|
|
7882
7883
|
var topY = framePadding;
|
|
@@ -9471,17 +9472,18 @@ function convertElementsToTree(elements) {
|
|
|
9471
9472
|
return parsedElementsInTree;
|
|
9472
9473
|
}
|
|
9473
9474
|
var Paper = function (props) {
|
|
9474
|
-
var _a
|
|
9475
|
-
var
|
|
9476
|
-
var
|
|
9477
|
-
var
|
|
9478
|
-
var
|
|
9479
|
-
var
|
|
9480
|
-
var
|
|
9481
|
-
var
|
|
9482
|
-
var
|
|
9483
|
-
var
|
|
9484
|
-
var
|
|
9475
|
+
var _a, _b;
|
|
9476
|
+
var _c = React.useState([]), elements = _c[0], setElements = _c[1];
|
|
9477
|
+
var _d = React.useState([]), elementsInTree = _d[0], setElementsInTree = _d[1];
|
|
9478
|
+
var _e = React.useState(), selectedElement = _e[0], setSelectedElement = _e[1];
|
|
9479
|
+
var _f = React.useState(false), autoEnabledDraggingSelectedElement = _f[0], setAutoEnabledDraggingSelectedElement = _f[1];
|
|
9480
|
+
var _g = useState([]), links = _g[0], setLinks = _g[1];
|
|
9481
|
+
var _h = useState(), selectedLink = _h[0], setSelectedLink = _h[1];
|
|
9482
|
+
var _j = useState(null), tempLink = _j[0], setTempLink = _j[1];
|
|
9483
|
+
var _k = useState([]), texts = _k[0], setTexts = _k[1];
|
|
9484
|
+
var _l = useState(), selectedText = _l[0], setSelectedText = _l[1];
|
|
9485
|
+
var _m = useState(null), selectedElementSVG = _m[0], setSelectedElementSVG = _m[1];
|
|
9486
|
+
var _o = React.useState(false), mouseDownedOnPaper = _o[0], setMouseDownedOnPaper = _o[1];
|
|
9485
9487
|
var paperEventEmitter = useContext(paperEventEmitterContext);
|
|
9486
9488
|
var zoom = useZoomContext().zoom;
|
|
9487
9489
|
var zoomRef = useRef(zoom);
|
|
@@ -9491,8 +9493,8 @@ var Paper = function (props) {
|
|
|
9491
9493
|
var linksRef = useRef(links); //Cache links to avoid re-render when links changed
|
|
9492
9494
|
var textsRef = useRef(texts); //Cache texts to avoid re-render when texts changed
|
|
9493
9495
|
var size = props.size;
|
|
9494
|
-
var selectedElementAbsPosition = 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]);
|
|
9495
|
-
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, onElementResized = props.onElementResized, onElementContextMenu = props.onElementContextMenu, onElementMouseUp = props.onElementMouseUp, onElementMouseDown = props.onElementMouseDown, onElementMouseMove = props.onElementMouseMove, onElementMoved = props.onElementMoved, 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;
|
|
9496
|
+
var selectedElementAbsPosition = useMemo(function () { return selectedElement ? getAbsolutePosition(selectedElement) : null; }, [selectedElement, (_a = selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.position) === null || _a === void 0 ? void 0 : _a.x, (_b = selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.position) === null || _b === void 0 ? void 0 : _b.y, selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.size]);
|
|
9497
|
+
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, onElementResized = props.onElementResized, onElementContextMenu = props.onElementContextMenu, onElementMouseUp = props.onElementMouseUp, onElementMouseDown = props.onElementMouseDown, onElementMouseMove = props.onElementMouseMove, onElementMoved = props.onElementMoved, 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, onElementMoving = props.onElementMoving, manuallySelectElementHandler = props.manuallySelectElementHandler, manuallyTriggerDraggingElementHandler = props.manuallyTriggerDraggingElementHandler, manuallyTriggerStartedLinkingHandler = props.manuallyTriggerStartedLinkingHandler;
|
|
9496
9498
|
useEffect(function () {
|
|
9497
9499
|
zoomRef.current = zoom;
|
|
9498
9500
|
}, [zoom]);
|
|
@@ -10163,8 +10165,9 @@ var Paper = function (props) {
|
|
|
10163
10165
|
}
|
|
10164
10166
|
else {
|
|
10165
10167
|
var element = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
10166
|
-
|
|
10167
|
-
if (element) {
|
|
10168
|
+
// Select the element only if it is selectable
|
|
10169
|
+
if (element && element.selectable) {
|
|
10170
|
+
setSelectedElementSVG(ref);
|
|
10168
10171
|
setSelectedElement(element);
|
|
10169
10172
|
setAutoEnabledDraggingSelectedElement(false);
|
|
10170
10173
|
paperEventEmitter.emitElementSelected(element);
|
|
@@ -10232,7 +10235,7 @@ var Paper = function (props) {
|
|
|
10232
10235
|
//use the defined react element or the default Element component
|
|
10233
10236
|
var ReactElement = element.reactElement || Element$1;
|
|
10234
10237
|
return (React.createElement("g", { id: "group-of-element-".concat(element.id), key: element.id },
|
|
10235
|
-
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 === PositioningAnchor.Center ? element.position.x - element.size.width / 2 : element.position.x, y: element.positionAnchor === 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,
|
|
10238
|
+
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 === PositioningAnchor.Center ? element.position.x - element.size.width / 2 : element.position.x, y: element.positionAnchor === PositioningAnchor.Center ? element.position.y - element.size.height / 2 : element.position.y, selectable: element.selectable, 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,
|
|
10236
10239
|
// portPlaceholderShape={(<Circle x={0} y={0} width={10} height={10} fill='red' positioningAnchor={PositioningAnchor.Center} />)}
|
|
10237
10240
|
onMouseUpAtLinkedPortPlaceholder: handleMouseUpAtLinkedPortPlaceholder, onTextUpdated: handleElementTextChange, onManuallyTriggerRenderPort: manuallyTriggerRenderPortHandler, textsPlaceHolderClassName: element.textsPlaceHolderClassName, textsPlaceHolderFlexStyle: element.textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition: element.textsPlaceHolderFlexboxPosition, parentAbsolutePosition: element.parentElement ? getAbsolutePosition(element.parentElement) : undefined },
|
|
10238
10241
|
element.childrenElementsInTree && element.childrenElementsInTree.map(renderElementInTree),
|
|
@@ -10267,6 +10270,13 @@ var Paper = function (props) {
|
|
|
10267
10270
|
x: newX,
|
|
10268
10271
|
y: newY
|
|
10269
10272
|
};
|
|
10273
|
+
//Call onElementMoving to check if the element should be moved or not
|
|
10274
|
+
if (onElementMoving) {
|
|
10275
|
+
var isSkip = onElementMoving(selectedElement, paperPosition);
|
|
10276
|
+
if (!isSkip) {
|
|
10277
|
+
return;
|
|
10278
|
+
}
|
|
10279
|
+
}
|
|
10270
10280
|
logger.info("Element ".concat(selectedElement.id, " is dragging to position ").concat(JSON.stringify(paperPosition)));
|
|
10271
10281
|
//Adjust position of element if it should move as a port on parent port area
|
|
10272
10282
|
if (selectedElement.moveAsPortOnParent && selectedElement.parentElement) {
|
|
@@ -10323,7 +10333,7 @@ var Paper = function (props) {
|
|
|
10323
10333
|
paperEventEmitter.emitElementResized(selectedElement, oldSize, newSize);
|
|
10324
10334
|
setMouseDownedOnPaper(false);
|
|
10325
10335
|
} }))));
|
|
10326
|
-
}, [manuallyTriggerRenderPortHandler, handleElementClicked, handleContextMenu, handleMouseUp, handleMouseDown, handleMouseMove, handleMouseLeave, handlePortMoved, handlePortMouseDown, handlePortMouseUp, handlePortsChanged, handlePortContextMenu, handleMouseUpAtLinkedPortPlaceholder, handleElementTextChange, 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, onElementResized, onElementsChanged, onElementMoved, onElementMouseDown, onElementMouseUp, onLinksChanged]);
|
|
10336
|
+
}, [manuallyTriggerRenderPortHandler, handleElementClicked, handleContextMenu, handleMouseUp, handleMouseDown, handleMouseMove, handleMouseLeave, handlePortMoved, handlePortMouseDown, handlePortMouseUp, handlePortsChanged, handlePortContextMenu, handleMouseUpAtLinkedPortPlaceholder, handleElementTextChange, 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, onElementResized, onElementsChanged, onElementMoved, onElementMouseDown, onElementMouseUp, onLinksChanged, onElementMoving]);
|
|
10327
10337
|
var ElementsInTree = useMemo(function () {
|
|
10328
10338
|
return elementsInTree.map(function (element, index) {
|
|
10329
10339
|
return renderElementInTree(element);
|
|
@@ -10455,6 +10465,12 @@ var Editor = function (_a) {
|
|
|
10455
10465
|
}
|
|
10456
10466
|
return null;
|
|
10457
10467
|
}, [editorContext]);
|
|
10468
|
+
var handleOnElementMoving = useCallback(function (element, newPaperPosition) {
|
|
10469
|
+
if (editorContext.onElementMovingHandler) {
|
|
10470
|
+
return editorContext.onElementMovingHandler(element, newPaperPosition);
|
|
10471
|
+
}
|
|
10472
|
+
return true;
|
|
10473
|
+
}, [editorContext]);
|
|
10458
10474
|
var handleOnCreatingPortByLinking = useCallback(function (sourceElement, sourcePort, targetElement, position) {
|
|
10459
10475
|
if (editorContext.onCreatingPortByLinkingHandler) {
|
|
10460
10476
|
return editorContext.onCreatingPortByLinkingHandler(sourceElement, sourcePort, targetElement, position);
|
|
@@ -10475,7 +10491,7 @@ var Editor = function (_a) {
|
|
|
10475
10491
|
}, [editorContext]);
|
|
10476
10492
|
return (React.createElement(EditorConfigurationContextProvider, { value: editorContext.configuration },
|
|
10477
10493
|
React.createElement(ZoomContextProvider, null,
|
|
10478
|
-
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) }))));
|
|
10494
|
+
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, onElementMoving: handleOnElementMoving, 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) }))));
|
|
10479
10495
|
};
|
|
10480
10496
|
|
|
10481
10497
|
export { Circle as CircleRC, Crescent as CrescentRC, CustomShape as CustomShapeRC, EditorContext, Element$2 as Element, ElementLink$1 as ElementLink, ElementLink as ElementLinkRC, Port$1 as Port, Port as PortRC, PositioningAnchor, Rectangle as RectangleRC, RectangularFrame as RectangularFrameRC, ResizingDirection, ShapeWrapper as ShapeWrapperRC, SubObjectDirection, Text$2 as Text, TextAlign, Text$1 as TextRC, addPointToList, automationAddPointsToLink, calculateAngleWithOx, checkPointContainsPolygon, checkPositionOnLine, checkSamePosition, configureLogger, correctPortPositionInElement, createSmoothPathString, Editor as default, degreeToRadian, diamondEdgeInsideSquare, dist, findNearestPointOnSegment, findNearestPosition, findNearestProjectedPoint, generateSubstitutePosition, generateUniqueId, getAbsolutePosition, getCurvePathData, getElementRotationInfo, getFirstIntersection, getFourVertexesOfBBoxFromElement, getIntersectionPositions, getPointsFromPathData, getPointsFromPathElement, getPortAbsolutePosition, getRectangleCorners, getRotatedRectangleCoordinates, getRotatedSVGBBox, getSVGBBoxOutsideTransformedParent, makePolygonOfElement, pathDataToD, removeDuplicatePosition, transformAbsPositionToElementRelativePosition, transformAbsPositionToRelativePositionInsideElement, windowsPositionToPaperPosition };
|