orcasvn-react-diagrams 0.1.65 → 0.1.67
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 +145 -129
- package/dist/cjs/types/components/paper.d.ts +1 -1
- 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 +145 -129
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/components/paper.d.ts +1 -1
- 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;
|
|
@@ -9009,7 +9010,9 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
9009
9010
|
selectedPort.position = newPosition;
|
|
9010
9011
|
onPortMoved === null || onPortMoved === void 0 ? void 0 : onPortMoved(selectedPort, id, oldPosition, newPosition);
|
|
9011
9012
|
setPorts(__spreadArray([], portsRef.current, true));
|
|
9012
|
-
_paperEventEmitterContext.
|
|
9013
|
+
if (_paperEventEmitterContext.emitter.listenerCount(EVENT_NAME.PORT_MOVED) > 0) {
|
|
9014
|
+
_paperEventEmitterContext.emitPortMoved(selectedPort, id, oldPosition, newPosition);
|
|
9015
|
+
}
|
|
9013
9016
|
}
|
|
9014
9017
|
};
|
|
9015
9018
|
//Handle when mouse down on port
|
|
@@ -9198,11 +9201,11 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
9198
9201
|
//Re-render port again after rendered to automation rotate port
|
|
9199
9202
|
//Because elementRef.current equals null in first render so automation rotate port is incorrect.
|
|
9200
9203
|
//TODO: check if this is still needed -> Still needed
|
|
9201
|
-
|
|
9202
|
-
|
|
9203
|
-
|
|
9204
|
-
|
|
9205
|
-
}, [])
|
|
9204
|
+
// useLayoutEffect(() => {
|
|
9205
|
+
// if (elementRef.current) {
|
|
9206
|
+
// setPorts(prev => [...prev])
|
|
9207
|
+
// }
|
|
9208
|
+
// }, [])
|
|
9206
9209
|
//log element render
|
|
9207
9210
|
logger.debug('Rendering Element', id, x, y, width, height, cssClass, portPlaceholderShape, children, container, parentAbsolutePosition, textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition, textsPlaceHolderClassName, texts, ports, portSlideRailSVGClassName, portMoveableAreas, portDirection, defaultPortSize);
|
|
9208
9211
|
return (React.createElement(React.Fragment, null,
|
|
@@ -9475,34 +9478,46 @@ function convertElementsToTree(elements) {
|
|
|
9475
9478
|
return parsedElementsInTree;
|
|
9476
9479
|
}
|
|
9477
9480
|
var Paper = function (props) {
|
|
9478
|
-
var _a
|
|
9479
|
-
var
|
|
9480
|
-
|
|
9481
|
-
|
|
9482
|
-
var
|
|
9483
|
-
var
|
|
9484
|
-
var
|
|
9485
|
-
var
|
|
9486
|
-
var
|
|
9487
|
-
var
|
|
9488
|
-
var
|
|
9481
|
+
var _a, _b;
|
|
9482
|
+
var _c = React.useState({ elements: [], elementsInTree: [] }), elementsState = _c[0], setElementsState = _c[1];
|
|
9483
|
+
// const [elements, setElements] = React.useState<IElementState[]>([]);
|
|
9484
|
+
// const [elementsInTree, setElementsInTree] = React.useState<IElementInTreeState[]>([]);
|
|
9485
|
+
var _d = React.useState(), selectedElement = _d[0], setSelectedElement = _d[1];
|
|
9486
|
+
var _e = React.useState(false), autoEnabledDraggingSelectedElement = _e[0], setAutoEnabledDraggingSelectedElement = _e[1];
|
|
9487
|
+
var _f = React.useState([]), links = _f[0], setLinks = _f[1];
|
|
9488
|
+
var _g = React.useState(), selectedLink = _g[0], setSelectedLink = _g[1];
|
|
9489
|
+
var _h = React.useState(null), tempLink = _h[0], setTempLink = _h[1];
|
|
9490
|
+
var _j = React.useState([]), texts = _j[0], setTexts = _j[1];
|
|
9491
|
+
var _k = React.useState(), selectedText = _k[0], setSelectedText = _k[1];
|
|
9492
|
+
var _l = React.useState(null), selectedElementSVG = _l[0], setSelectedElementSVG = _l[1];
|
|
9493
|
+
var _m = React.useState(false), mouseDownedOnPaper = _m[0], setMouseDownedOnPaper = _m[1];
|
|
9489
9494
|
var paperEventEmitter = React.useContext(paperEventEmitterContext);
|
|
9490
9495
|
var zoom = useZoomContext().zoom;
|
|
9491
9496
|
var zoomRef = React.useRef(zoom);
|
|
9492
9497
|
var paperContainerRef = React.useRef(null);
|
|
9493
9498
|
var tempLinkRef = React.useRef(tempLink); //Cache tempLink to avoid re-render when tempLink changed
|
|
9494
|
-
var elementsRef = React.useRef(
|
|
9499
|
+
var elementsRef = React.useRef([]); //Cache elements to avoid re-render when elements changed
|
|
9495
9500
|
var linksRef = React.useRef(links); //Cache links to avoid re-render when links changed
|
|
9496
9501
|
var textsRef = React.useRef(texts); //Cache texts to avoid re-render when texts changed
|
|
9497
9502
|
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,
|
|
9503
|
+
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]);
|
|
9504
|
+
var onPortMoved = props.onPortMoved, onPortSelected = props.onPortSelected, onPortMouseDown = props.onPortMouseDown, onPortMouseUp = props.onPortMouseUp,
|
|
9505
|
+
//onPortsChanged,
|
|
9506
|
+
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;
|
|
9507
|
+
var handleElementsState = React.useCallback(function (elements) {
|
|
9508
|
+
var elementsInTree = convertElementsToTree(elements);
|
|
9509
|
+
setElementsState({ elements: __spreadArray([], elements, true), elementsInTree: elementsInTree });
|
|
9510
|
+
elementsRef.current = __spreadArray([], elements, true);
|
|
9511
|
+
}, []);
|
|
9512
|
+
var rerenderWhenAnyElementChanged = React.useCallback(function () {
|
|
9513
|
+
setElementsState(function (prev) { return ({ elements: __spreadArray([], prev.elements, true), elementsInTree: __spreadArray([], prev.elementsInTree, true) }); });
|
|
9514
|
+
}, []);
|
|
9500
9515
|
React.useEffect(function () {
|
|
9501
9516
|
zoomRef.current = zoom;
|
|
9502
9517
|
}, [zoom]);
|
|
9503
9518
|
React.useEffect(function () {
|
|
9504
|
-
|
|
9505
|
-
}, [props.elements]);
|
|
9519
|
+
handleElementsState(props.elements);
|
|
9520
|
+
}, [handleElementsState, props.elements]);
|
|
9506
9521
|
React.useEffect(function () {
|
|
9507
9522
|
setLinks(__spreadArray([], props.links || [], true));
|
|
9508
9523
|
}, [props.links]);
|
|
@@ -9511,16 +9526,16 @@ var Paper = function (props) {
|
|
|
9511
9526
|
}, [props.texts]);
|
|
9512
9527
|
React.useEffect(function () {
|
|
9513
9528
|
var off = manuallyTriggerRenderElementHandler(function (elementId) {
|
|
9514
|
-
|
|
9515
|
-
|
|
9516
|
-
if (onElementsChanged) {
|
|
9517
|
-
|
|
9518
|
-
}
|
|
9529
|
+
rerenderWhenAnyElementChanged();
|
|
9530
|
+
//setElementsState(prevElementsState => ({ ...prevElementsState }));
|
|
9531
|
+
// if (onElementsChanged) {
|
|
9532
|
+
// onElementsChanged(newElements)
|
|
9533
|
+
// }
|
|
9519
9534
|
});
|
|
9520
9535
|
return function () {
|
|
9521
9536
|
off();
|
|
9522
9537
|
};
|
|
9523
|
-
}, [manuallyTriggerRenderElementHandler,
|
|
9538
|
+
}, [manuallyTriggerRenderElementHandler, rerenderWhenAnyElementChanged]);
|
|
9524
9539
|
React.useEffect(function () {
|
|
9525
9540
|
var offs = [];
|
|
9526
9541
|
offs.push(manuallySelectElementHandler === null || manuallySelectElementHandler === void 0 ? void 0 : manuallySelectElementHandler(function (element) {
|
|
@@ -9555,15 +9570,15 @@ var Paper = function (props) {
|
|
|
9555
9570
|
};
|
|
9556
9571
|
}
|
|
9557
9572
|
}, [manuallyTriggerStartedLinkingHandler, paperEventEmitter]);
|
|
9558
|
-
|
|
9559
|
-
|
|
9560
|
-
|
|
9561
|
-
}, [elements])
|
|
9562
|
-
//Cache elements to avoid re-render when elements changed
|
|
9563
|
-
|
|
9564
|
-
|
|
9565
|
-
|
|
9566
|
-
}, [elements, updateElementsTree])
|
|
9573
|
+
// const updateElementsTree = useCallback(() => {
|
|
9574
|
+
// const parsedElementsInTree = convertElementsToTree(element)
|
|
9575
|
+
// setElementsInTree(parsedElementsInTree)
|
|
9576
|
+
// }, [elements])
|
|
9577
|
+
// //Cache elements to avoid re-render when elements changed
|
|
9578
|
+
// useEffect(() => {
|
|
9579
|
+
// elementsRef.current = elements;
|
|
9580
|
+
// updateElementsTree();
|
|
9581
|
+
// }, [elements, updateElementsTree])
|
|
9567
9582
|
//Cache links to avoid re-render when links changed
|
|
9568
9583
|
React.useEffect(function () {
|
|
9569
9584
|
linksRef.current = links;
|
|
@@ -9614,7 +9629,7 @@ var Paper = function (props) {
|
|
|
9614
9629
|
var _a;
|
|
9615
9630
|
return (_a = element.onParentChanged) === null || _a === void 0 ? void 0 : _a.call(element, function (newPa, oldPa) {
|
|
9616
9631
|
logger.info('onParentChanged');
|
|
9617
|
-
|
|
9632
|
+
handleElementsState(elementsRef.current);
|
|
9618
9633
|
});
|
|
9619
9634
|
});
|
|
9620
9635
|
//Listen a new port added, then re-render the element component
|
|
@@ -9622,25 +9637,21 @@ var Paper = function (props) {
|
|
|
9622
9637
|
var _a;
|
|
9623
9638
|
return (_a = element.onAddedPort) === null || _a === void 0 ? void 0 : _a.call(element, function (newPort) {
|
|
9624
9639
|
logger.info("A new port has been added to element ".concat(element.id));
|
|
9625
|
-
|
|
9626
|
-
var newElements = prevElements.map(function (ele) {
|
|
9640
|
+
elementsRef.current.forEach(function (ele) {
|
|
9627
9641
|
if (ele.id === element.id) {
|
|
9628
9642
|
ele.ports = __spreadArray([], (ele.ports || []), true);
|
|
9629
9643
|
}
|
|
9630
|
-
return ele;
|
|
9631
9644
|
});
|
|
9632
9645
|
//Set state to re-render component
|
|
9633
|
-
setElements(newElements)
|
|
9634
|
-
|
|
9635
|
-
onElementsChanged(newElements);
|
|
9636
|
-
}
|
|
9646
|
+
// setElements(newElements)
|
|
9647
|
+
rerenderWhenAnyElementChanged();
|
|
9637
9648
|
});
|
|
9638
9649
|
});
|
|
9639
9650
|
return function () {
|
|
9640
9651
|
parentChangedCancelers.forEach(function (canceller) { return canceller === null || canceller === void 0 ? void 0 : canceller(); });
|
|
9641
9652
|
addedPortCancelers.forEach(function (canceller) { return canceller(); });
|
|
9642
9653
|
};
|
|
9643
|
-
}, [
|
|
9654
|
+
}, [handleElementsState, rerenderWhenAnyElementChanged]);
|
|
9644
9655
|
// //Update elements tree when length of elements change
|
|
9645
9656
|
// useEffect(() => {
|
|
9646
9657
|
// updateElementsTree();
|
|
@@ -9666,7 +9677,7 @@ var Paper = function (props) {
|
|
|
9666
9677
|
var newElements = prevElements.filter(function (e) { return !deletedElementIds_1.includes(e.id); });
|
|
9667
9678
|
onElementDeleted === null || onElementDeleted === void 0 ? void 0 : onElementDeleted(selectedElement);
|
|
9668
9679
|
//Set state to re-render component
|
|
9669
|
-
|
|
9680
|
+
handleElementsState(newElements);
|
|
9670
9681
|
if (onElementsChanged) {
|
|
9671
9682
|
onElementsChanged(newElements);
|
|
9672
9683
|
}
|
|
@@ -9688,7 +9699,7 @@ var Paper = function (props) {
|
|
|
9688
9699
|
return function () {
|
|
9689
9700
|
listener.off();
|
|
9690
9701
|
};
|
|
9691
|
-
}, [selectedElement, onElementSelected, onElementsChanged, onLinksChanged, getChildOfElement, paperEventEmitter, onElementDeleted]);
|
|
9702
|
+
}, [selectedElement, onElementSelected, onElementsChanged, onLinksChanged, getChildOfElement, paperEventEmitter, onElementDeleted, handleElementsState]);
|
|
9692
9703
|
//Listen command delete selected for link
|
|
9693
9704
|
React.useEffect(function () {
|
|
9694
9705
|
var listener = paperEventEmitter.onCommandDeleteSelectedLink(function () {
|
|
@@ -9823,6 +9834,7 @@ var Paper = function (props) {
|
|
|
9823
9834
|
}
|
|
9824
9835
|
}, [onLinksChanged]);
|
|
9825
9836
|
var handlePortMoved = React.useCallback(function (port, elementId, oldPosition, newPosition) {
|
|
9837
|
+
var _a;
|
|
9826
9838
|
var element = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
9827
9839
|
if (element) {
|
|
9828
9840
|
//set links equals a clone links to re-render links with new position
|
|
@@ -9852,7 +9864,7 @@ var Paper = function (props) {
|
|
|
9852
9864
|
if (onLinksChanged) {
|
|
9853
9865
|
onLinksChanged(newLinks);
|
|
9854
9866
|
}
|
|
9855
|
-
|
|
9867
|
+
//const newElements = elementsRef.current;
|
|
9856
9868
|
// newElements[updatedElementIndex].ports = newElements[updatedElementIndex].ports?.map(p => {
|
|
9857
9869
|
// if (p.id === port.id) {
|
|
9858
9870
|
// p.position = newPosition
|
|
@@ -9861,28 +9873,25 @@ var Paper = function (props) {
|
|
|
9861
9873
|
// })
|
|
9862
9874
|
//Update port position in element, not re-render
|
|
9863
9875
|
//To avoid re-render
|
|
9864
|
-
setElements(
|
|
9865
|
-
|
|
9866
|
-
|
|
9867
|
-
|
|
9868
|
-
|
|
9869
|
-
|
|
9870
|
-
|
|
9871
|
-
|
|
9872
|
-
|
|
9873
|
-
|
|
9874
|
-
});
|
|
9875
|
-
}
|
|
9876
|
-
return newElements;
|
|
9877
|
-
});
|
|
9878
|
-
if (onElementsChanged) {
|
|
9879
|
-
onElementsChanged(newElements);
|
|
9876
|
+
// setElements(prev => {
|
|
9877
|
+
// const newElements = [...prev]
|
|
9878
|
+
var updatedElement = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
9879
|
+
if (updatedElement) {
|
|
9880
|
+
updatedElement.ports = (_a = updatedElement.ports) === null || _a === void 0 ? void 0 : _a.map(function (p) {
|
|
9881
|
+
if (p.id === port.id) {
|
|
9882
|
+
p.position = newPosition;
|
|
9883
|
+
}
|
|
9884
|
+
return p;
|
|
9885
|
+
});
|
|
9880
9886
|
}
|
|
9887
|
+
rerenderWhenAnyElementChanged();
|
|
9888
|
+
// return newElements
|
|
9889
|
+
// });
|
|
9881
9890
|
if (onPortMoved) {
|
|
9882
9891
|
onPortMoved(newPosition, port, element);
|
|
9883
9892
|
}
|
|
9884
9893
|
}
|
|
9885
|
-
}, [onPortMoved,
|
|
9894
|
+
}, [onPortMoved, onLinksChanged, rerenderWhenAnyElementChanged]);
|
|
9886
9895
|
//Handle creating a new element link
|
|
9887
9896
|
var handlePortMouseDown = React.useCallback(function (ev, port, elementId) {
|
|
9888
9897
|
ev.stopPropagation();
|
|
@@ -9918,8 +9927,8 @@ var Paper = function (props) {
|
|
|
9918
9927
|
return null;
|
|
9919
9928
|
//Automatic bending, if is not defined points
|
|
9920
9929
|
if (!newElementLink.points || newElementLink.points.length === 0) {
|
|
9921
|
-
var
|
|
9922
|
-
newElementLink = automationAddPointsToLink(newElementLink,
|
|
9930
|
+
var elements = elementsRef.current;
|
|
9931
|
+
newElementLink = automationAddPointsToLink(newElementLink, elements, MAX_LINK_KNOT_COUNT);
|
|
9923
9932
|
}
|
|
9924
9933
|
return newElementLink;
|
|
9925
9934
|
}, [onCreatingLink]);
|
|
@@ -9959,13 +9968,13 @@ var Paper = function (props) {
|
|
|
9959
9968
|
setTempLink(null);
|
|
9960
9969
|
}
|
|
9961
9970
|
}, [paperEventEmitter, createElementLink, onPortMouseUp, onLinksChanged]);
|
|
9962
|
-
|
|
9963
|
-
|
|
9964
|
-
|
|
9965
|
-
|
|
9966
|
-
|
|
9967
|
-
|
|
9968
|
-
}, [onPortsChanged])
|
|
9971
|
+
// const handlePortsChanged = useCallback((ports: IPort[], elementId: string) => {
|
|
9972
|
+
// const element = elementsRef.current.find(e => e.id === elementId);
|
|
9973
|
+
// if (element) {
|
|
9974
|
+
// //broadcast ports changed to parent component
|
|
9975
|
+
// onPortsChanged(ports, element);
|
|
9976
|
+
// }
|
|
9977
|
+
// }, [onPortsChanged])
|
|
9969
9978
|
var handleLinkLabelMoved = React.useCallback(function (newX, newY, index, labelType) {
|
|
9970
9979
|
var prevLinks = linksRef.current;
|
|
9971
9980
|
var newLinks = __spreadArray([], prevLinks, true);
|
|
@@ -10141,8 +10150,8 @@ var Paper = function (props) {
|
|
|
10141
10150
|
paperEventEmitter.emitElementLinkEnded();
|
|
10142
10151
|
}, [onCreatingPortByLinking, createElementLink, paperEventEmitter, onLinksChanged]);
|
|
10143
10152
|
var handleElementTextChange = React.useCallback(function (elementId, textId, newContent) {
|
|
10144
|
-
|
|
10145
|
-
|
|
10153
|
+
// const prevElms = elementsRef.current;
|
|
10154
|
+
elementsRef.current.forEach(function (curEle) {
|
|
10146
10155
|
//Find changed text of element to update the content for it.
|
|
10147
10156
|
if (curEle.id === elementId && curEle.texts) {
|
|
10148
10157
|
var updatedTextId = curEle.texts.findIndex(function (t) { return t.id === textId; });
|
|
@@ -10150,13 +10159,9 @@ var Paper = function (props) {
|
|
|
10150
10159
|
curEle.texts[updatedTextId].content = newContent;
|
|
10151
10160
|
}
|
|
10152
10161
|
}
|
|
10153
|
-
return curEle;
|
|
10154
10162
|
});
|
|
10155
|
-
|
|
10156
|
-
|
|
10157
|
-
onElementsChanged(newElements);
|
|
10158
|
-
}
|
|
10159
|
-
}, [onElementsChanged]);
|
|
10163
|
+
rerenderWhenAnyElementChanged();
|
|
10164
|
+
}, [rerenderWhenAnyElementChanged]);
|
|
10160
10165
|
var handleElementClicked = React.useCallback(function (elementId, e, ref) {
|
|
10161
10166
|
e.stopPropagation();
|
|
10162
10167
|
var tempLink = tempLinkRef.current;
|
|
@@ -10167,8 +10172,9 @@ var Paper = function (props) {
|
|
|
10167
10172
|
}
|
|
10168
10173
|
else {
|
|
10169
10174
|
var element = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
10170
|
-
|
|
10171
|
-
if (element) {
|
|
10175
|
+
// Select the element only if it is selectable
|
|
10176
|
+
if (element && element.selectable) {
|
|
10177
|
+
setSelectedElementSVG(ref);
|
|
10172
10178
|
setSelectedElement(element);
|
|
10173
10179
|
setAutoEnabledDraggingSelectedElement(false);
|
|
10174
10180
|
paperEventEmitter.emitElementSelected(element);
|
|
@@ -10236,7 +10242,9 @@ var Paper = function (props) {
|
|
|
10236
10242
|
//use the defined react element or the default Element component
|
|
10237
10243
|
var ReactElement = element.reactElement || Element$1;
|
|
10238
10244
|
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,
|
|
10245
|
+
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,
|
|
10246
|
+
// onPortsChanged={handlePortsChanged}
|
|
10247
|
+
onPortContextMenu: handlePortContextMenu,
|
|
10240
10248
|
// portPlaceholderShape={(<Circle x={0} y={0} width={10} height={10} fill='red' positioningAnchor={PositioningAnchor.Center} />)}
|
|
10241
10249
|
onMouseUpAtLinkedPortPlaceholder: handleMouseUpAtLinkedPortPlaceholder, onTextUpdated: handleElementTextChange, onManuallyTriggerRenderPort: manuallyTriggerRenderPortHandler, textsPlaceHolderClassName: element.textsPlaceHolderClassName, textsPlaceHolderFlexStyle: element.textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition: element.textsPlaceHolderFlexboxPosition, parentAbsolutePosition: element.parentElement ? getAbsolutePosition(element.parentElement) : undefined },
|
|
10242
10250
|
element.childrenElementsInTree && element.childrenElementsInTree.map(renderElementInTree),
|
|
@@ -10271,6 +10279,13 @@ var Paper = function (props) {
|
|
|
10271
10279
|
x: newX,
|
|
10272
10280
|
y: newY
|
|
10273
10281
|
};
|
|
10282
|
+
//Call onElementMoving to check if the element should be moved or not
|
|
10283
|
+
if (onElementMoving) {
|
|
10284
|
+
var isSkip = onElementMoving(selectedElement, paperPosition);
|
|
10285
|
+
if (!isSkip) {
|
|
10286
|
+
return;
|
|
10287
|
+
}
|
|
10288
|
+
}
|
|
10274
10289
|
logger.info("Element ".concat(selectedElement.id, " is dragging to position ").concat(JSON.stringify(paperPosition)));
|
|
10275
10290
|
//Adjust position of element if it should move as a port on parent port area
|
|
10276
10291
|
if (selectedElement.moveAsPortOnParent && selectedElement.parentElement) {
|
|
@@ -10281,7 +10296,7 @@ var Paper = function (props) {
|
|
|
10281
10296
|
updateElementPosition(selectedElement, paperPosition.x, paperPosition.y, false);
|
|
10282
10297
|
}
|
|
10283
10298
|
//let newElementPosition = updateElementPosition(selectedElement, newPosition.x, newPosition.y, true)
|
|
10284
|
-
var indexSelectedElement =
|
|
10299
|
+
var indexSelectedElement = elementsRef.current.findIndex(function (e) { return e.id === selectedElement.id; });
|
|
10285
10300
|
logger.info("Element ".concat(selectedElement.id, " is moving to relative position ").concat(JSON.stringify(selectedElement.position)));
|
|
10286
10301
|
// Start updating the position of links connected to the selected element
|
|
10287
10302
|
var childElements = getChildOfElement(selectedElement);
|
|
@@ -10302,7 +10317,7 @@ var Paper = function (props) {
|
|
|
10302
10317
|
onLinksChanged === null || onLinksChanged === void 0 ? void 0 : onLinksChanged(newLinks);
|
|
10303
10318
|
// End updating the position of links connected to the selected element
|
|
10304
10319
|
//Set state to re-render UI with new position
|
|
10305
|
-
|
|
10320
|
+
rerenderWhenAnyElementChanged();
|
|
10306
10321
|
if (onElementMoved) {
|
|
10307
10322
|
console.log('onElementMoved', selectedElement.position, paperPosition);
|
|
10308
10323
|
onElementMoved(selectedElement.position, selectedElement, indexSelectedElement, paperPosition);
|
|
@@ -10312,27 +10327,23 @@ var Paper = function (props) {
|
|
|
10312
10327
|
}, onResize: function (width, height) {
|
|
10313
10328
|
if (!selectedElement)
|
|
10314
10329
|
return;
|
|
10315
|
-
var indexSelectedElement =
|
|
10330
|
+
var indexSelectedElement = elementsRef.current.findIndex(function (e) { return e.id === selectedElement.id; });
|
|
10316
10331
|
var oldSize = selectedElement.size;
|
|
10317
10332
|
var newSize = { width: width, height: height };
|
|
10318
|
-
|
|
10319
|
-
|
|
10320
|
-
setElements(newElements);
|
|
10321
|
-
if (onElementsChanged) {
|
|
10322
|
-
onElementsChanged(newElements);
|
|
10323
|
-
}
|
|
10333
|
+
elementsRef.current[indexSelectedElement].size = newSize;
|
|
10334
|
+
rerenderWhenAnyElementChanged();
|
|
10324
10335
|
if (onElementResized) {
|
|
10325
10336
|
onElementResized(newSize, selectedElement, indexSelectedElement);
|
|
10326
10337
|
}
|
|
10327
10338
|
paperEventEmitter.emitElementResized(selectedElement, oldSize, newSize);
|
|
10328
10339
|
setMouseDownedOnPaper(false);
|
|
10329
10340
|
} }))));
|
|
10330
|
-
}, [manuallyTriggerRenderPortHandler, handleElementClicked, handleContextMenu, handleMouseUp, handleMouseDown, handleMouseMove, handleMouseLeave, handlePortMoved, handlePortMouseDown, handlePortMouseUp,
|
|
10341
|
+
}, [manuallyTriggerRenderPortHandler, handleElementClicked, handleContextMenu, handleMouseUp, handleMouseDown, handleMouseMove, handleMouseLeave, handlePortMoved, handlePortMouseDown, handlePortMouseUp, 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, getChildOfElement, paperEventEmitter, onElementResized, onElementMoved, onElementMouseDown, onElementMouseUp, onLinksChanged, onElementMoving, rerenderWhenAnyElementChanged]);
|
|
10331
10342
|
var ElementsInTree = React.useMemo(function () {
|
|
10332
|
-
return elementsInTree.map(function (element, index) {
|
|
10343
|
+
return elementsState.elementsInTree.map(function (element, index) {
|
|
10333
10344
|
return renderElementInTree(element);
|
|
10334
10345
|
});
|
|
10335
|
-
}, [elementsInTree, renderElementInTree]);
|
|
10346
|
+
}, [elementsState.elementsInTree, renderElementInTree]);
|
|
10336
10347
|
return (React.createElement("div", { style: { position: "relative" } },
|
|
10337
10348
|
React.createElement(Ruler, { squareSize: 100, border: '1px dashed grey' }),
|
|
10338
10349
|
React.createElement("svg", { tabIndex: 0, width: size.width, height: size.height, ref: paperContainerRef, id: "paper-container", onMouseMove: handlePaperMouseMove, onMouseDown: handleMouseDownOnPaper, onMouseUp: handleMouseUpOnPaper },
|
|
@@ -10408,9 +10419,6 @@ var Editor = function (_a) {
|
|
|
10408
10419
|
var handlePortSelected = React.useCallback(function (port, element) {
|
|
10409
10420
|
editorContext.onPortSelectedHandler(port, element);
|
|
10410
10421
|
}, [editorContext]);
|
|
10411
|
-
var handlePortsChanged = React.useCallback(function (ports, element) {
|
|
10412
|
-
element.ports = ports;
|
|
10413
|
-
}, []);
|
|
10414
10422
|
var handlePortContextMenu = React.useCallback(function (port, element, event) {
|
|
10415
10423
|
editorContext.onPortContextMenuHandler(port, element, event);
|
|
10416
10424
|
}, [editorContext]);
|
|
@@ -10459,6 +10467,12 @@ var Editor = function (_a) {
|
|
|
10459
10467
|
}
|
|
10460
10468
|
return null;
|
|
10461
10469
|
}, [editorContext]);
|
|
10470
|
+
var handleOnElementMoving = React.useCallback(function (element, newPaperPosition) {
|
|
10471
|
+
if (editorContext.onElementMovingHandler) {
|
|
10472
|
+
return editorContext.onElementMovingHandler(element, newPaperPosition);
|
|
10473
|
+
}
|
|
10474
|
+
return true;
|
|
10475
|
+
}, [editorContext]);
|
|
10462
10476
|
var handleOnCreatingPortByLinking = React.useCallback(function (sourceElement, sourcePort, targetElement, position) {
|
|
10463
10477
|
if (editorContext.onCreatingPortByLinkingHandler) {
|
|
10464
10478
|
return editorContext.onCreatingPortByLinkingHandler(sourceElement, sourcePort, targetElement, position);
|
|
@@ -10479,7 +10493,9 @@ var Editor = function (_a) {
|
|
|
10479
10493
|
}, [editorContext]);
|
|
10480
10494
|
return (React.createElement(EditorConfigurationContextProvider, { value: editorContext.configuration },
|
|
10481
10495
|
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,
|
|
10496
|
+
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,
|
|
10497
|
+
//onPortsChanged={handlePortsChanged}
|
|
10498
|
+
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;
|
|
@@ -21,7 +21,6 @@ interface PaperProps {
|
|
|
21
21
|
onPortMouseUp?: (port: IPort, element: IElement, paperPosition: IPosition) => void;
|
|
22
22
|
onPortMoved?: (relativePosition: IPosition, port: IPort, element: IElement) => void;
|
|
23
23
|
onPortSelected?: (port: IPort, element: IElement) => void;
|
|
24
|
-
onPortsChanged: (ports: IPort[], element: IElement) => void;
|
|
25
24
|
onPortContextMenu?: (port: IPort, element: IElement, mouseEvent: React.MouseEvent<SVGElement>) => void;
|
|
26
25
|
onElementContextMenu?: (element: IElement, mouseEvent: React.MouseEvent<SVGElement>) => void;
|
|
27
26
|
onElementMoved?: (relativePosition: IPosition, element: IElement, index: number, paperPosition: IPosition) => void;
|
|
@@ -41,6 +40,7 @@ interface PaperProps {
|
|
|
41
40
|
manuallyTriggerRenderPortHandler: (callback: (portId: string, elementId: string) => void) => () => void;
|
|
42
41
|
onCreatingPortByLinking?: (sourceElement: IElement, sourcePort: IPort, targetElement: IElement, position: IPosition) => IPort | null;
|
|
43
42
|
onCreatingLink?: (sourcePort: IPort, sourceElement: IElement, targetPort: IPort, targetElement: IElement) => IElementLink | null;
|
|
43
|
+
onElementMoving?: (element: IElement, newPaperPosition: IPosition) => boolean;
|
|
44
44
|
manuallySelectElementHandler?: (callback: (element: IElement | null) => void) => (() => void);
|
|
45
45
|
manuallyTriggerDraggingElementHandler?: (callback: (element: IElement) => void) => (() => void);
|
|
46
46
|
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[];
|