orcasvn-react-diagrams 0.1.46 → 0.1.48
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 +105 -85
- package/dist/cjs/types/mocks/editorContextSingleElementTestEvents.d.ts +2 -0
- package/dist/cjs/types/models/IElementSelectorProps.d.ts +2 -0
- package/dist/esm/index.js +106 -86
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/mocks/editorContextSingleElementTestEvents.d.ts +2 -0
- package/dist/esm/types/models/IElementSelectorProps.d.ts +2 -0
- package/dist/index.d.ts +2 -0
- package/package.json +1 -1
package/dist/cjs/index.js
CHANGED
|
@@ -1208,24 +1208,39 @@ var PORT_PLACEHOLDER_DEFAULT_STROKE_WIDTH = 20;
|
|
|
1208
1208
|
var PORT_DEFAULT_SIZE = 20;
|
|
1209
1209
|
|
|
1210
1210
|
var SelectionFrame = function (props) {
|
|
1211
|
-
var
|
|
1212
|
-
var propTargetSVGElement = props.targetSVGElement, propWidth = props.width, propHeight = props.height, propFramePadding = props.framePadding,
|
|
1211
|
+
var propTargetSVGElement = props.targetSVGElement, propWidth = props.width, propHeight = props.height, propFramePadding = props.framePadding, x = props.x, y = props.y,
|
|
1213
1212
|
// movingOffsetThreshold: propMovingOffsetThreshold,
|
|
1214
|
-
propMovingRate = props.movingRate, propOnMove = props.onMove, propContainer = props.container, propResizability = props.resizability, propOnResize = props.onResize, PropDragDropHandlerElement = props.dragDropHandlerElement, propStrokeWidth = props.strokeWidth, propAnchor = props.anchor;
|
|
1213
|
+
propMovingRate = props.movingRate, propOnMouseDown = props.onMouseDown, propOnMouseUp = props.onMouseUp, propOnMove = props.onMove, propContainer = props.container, propResizability = props.resizability, propOnResize = props.onResize, PropDragDropHandlerElement = props.dragDropHandlerElement, propStrokeWidth = props.strokeWidth, propAnchor = props.anchor;
|
|
1215
1214
|
var bbox = propTargetSVGElement === null || propTargetSVGElement === void 0 ? void 0 : propTargetSVGElement.getBBox();
|
|
1216
|
-
var
|
|
1217
|
-
var
|
|
1218
|
-
|
|
1219
|
-
|
|
1215
|
+
var _a = React.useState(propWidth || (bbox === null || bbox === void 0 ? void 0 : bbox.width) || MIN_ELEMENT_SIZE), width = _a[0], setWidth = _a[1];
|
|
1216
|
+
var _b = React.useState(propHeight || (bbox === null || bbox === void 0 ? void 0 : bbox.height) || MIN_ELEMENT_SIZE), height = _b[0], setHeight = _b[1];
|
|
1217
|
+
React.useEffect(function () {
|
|
1218
|
+
if (propWidth) {
|
|
1219
|
+
setWidth(propWidth);
|
|
1220
|
+
}
|
|
1221
|
+
}, [x]);
|
|
1222
|
+
var _c = React.useState(x !== null && x !== void 0 ? x : 0), curX = _c[0], setX = _c[1];
|
|
1223
|
+
var _d = React.useState(y !== null && y !== void 0 ? y : 0), curY = _d[0], setY = _d[1];
|
|
1224
|
+
React.useEffect(function () {
|
|
1225
|
+
if (x) {
|
|
1226
|
+
setX(x);
|
|
1227
|
+
}
|
|
1228
|
+
}, [x]);
|
|
1229
|
+
React.useEffect(function () {
|
|
1230
|
+
if (y) {
|
|
1231
|
+
setY(y);
|
|
1232
|
+
}
|
|
1233
|
+
}, [y]);
|
|
1220
1234
|
var framePadding = propFramePadding || 0;
|
|
1221
1235
|
var r = 5;
|
|
1222
|
-
var
|
|
1223
|
-
var
|
|
1224
|
-
var
|
|
1225
|
-
var
|
|
1226
|
-
var
|
|
1227
|
-
var
|
|
1228
|
-
var
|
|
1236
|
+
var _e = React.useState(false), draggingRect = _e[0], setDraggingRect = _e[1];
|
|
1237
|
+
var _f = React.useState(false), draggingCircle = _f[0], setDraggingCircle = _f[1];
|
|
1238
|
+
var _g = React.useState(0), startX = _g[0], setStartX = _g[1];
|
|
1239
|
+
var _h = React.useState(0), startY = _h[0], setStartY = _h[1];
|
|
1240
|
+
var _j = React.useState(0), xFromMouse = _j[0], setXFromMouse = _j[1];
|
|
1241
|
+
var _k = React.useState(0), yFromMouse = _k[0], setYFromMouse = _k[1];
|
|
1242
|
+
var _l = React.useState(0), lastMoveTime = _l[0], setLastMoveTime = _l[1];
|
|
1243
|
+
//set x by props.x
|
|
1229
1244
|
var getMousePosition = function (event) {
|
|
1230
1245
|
var elementBounding = propContainer.getBoundingClientRect();
|
|
1231
1246
|
//Coordinates of mouse on paper.
|
|
@@ -1242,11 +1257,14 @@ var SelectionFrame = function (props) {
|
|
|
1242
1257
|
setStartX(event.clientX);
|
|
1243
1258
|
setStartY(event.clientY);
|
|
1244
1259
|
var mousePosition = getMousePosition(event);
|
|
1245
|
-
var xFromMouse_1 =
|
|
1246
|
-
var yFromMouse_1 =
|
|
1260
|
+
var xFromMouse_1 = (curX || 0) - mousePosition.x;
|
|
1261
|
+
var yFromMouse_1 = (curY || 0) - mousePosition.y;
|
|
1247
1262
|
setXFromMouse(xFromMouse_1);
|
|
1248
1263
|
setYFromMouse(yFromMouse_1);
|
|
1249
1264
|
}
|
|
1265
|
+
if (propOnMouseDown) {
|
|
1266
|
+
propOnMouseDown(event);
|
|
1267
|
+
}
|
|
1250
1268
|
};
|
|
1251
1269
|
var rectHandleMouseMove = React.useCallback(function (event) {
|
|
1252
1270
|
var mouseEvent = event;
|
|
@@ -1331,7 +1349,7 @@ var SelectionFrame = function (props) {
|
|
|
1331
1349
|
container.removeEventListener('mousemove', circleHandleMouseMove);
|
|
1332
1350
|
container.removeEventListener('mouseup', circleHandleMouseUp);
|
|
1333
1351
|
};
|
|
1334
|
-
}, [draggingCircle, width, height, lastMoveTime, propContainer, propMovingRate, propOnResize, propResizability, startX, startY]);
|
|
1352
|
+
}, [draggingCircle, width, height, curX, curY, lastMoveTime, propContainer, propMovingRate, propOnResize, propResizability, startX, startY]);
|
|
1335
1353
|
var rectangleSize = Math.max(width, height);
|
|
1336
1354
|
var leftX = framePadding;
|
|
1337
1355
|
var topY = framePadding;
|
|
@@ -1341,7 +1359,7 @@ var SelectionFrame = function (props) {
|
|
|
1341
1359
|
}
|
|
1342
1360
|
return (React.createElement(React.Fragment, null,
|
|
1343
1361
|
PropDragDropHandlerElement && React.createElement(PropDragDropHandlerElement, { dragging: draggingRect, onMouseDown: addRectHandleMouseDown }),
|
|
1344
|
-
React.createElement("rect", { vectorEffect: "non-scaling-stroke", x: leftX, y: topY, width: width, height: height, fill: 'none', stroke: 'blue', strokeWidth: propStrokeWidth || 5, cursor: draggingRect ? 'grabbing' : 'grab', onMouseDown: addRectHandleMouseDown }),
|
|
1362
|
+
React.createElement("rect", { vectorEffect: "non-scaling-stroke", x: leftX, y: topY, width: width, height: height, fill: 'none', stroke: 'blue', strokeWidth: propStrokeWidth || 5, cursor: draggingRect ? 'grabbing' : 'grab', onMouseDown: addRectHandleMouseDown, onMouseUp: propOnMouseUp }),
|
|
1345
1363
|
propResizability.enabled ?
|
|
1346
1364
|
(React.createElement("circle", { cursor: 'se-resize', cx: leftX + width, cy: topY + height, r: r, fill: 'blue', stroke: 'blue', onMouseDown: circleHandleMouseDown })) : null));
|
|
1347
1365
|
};
|
|
@@ -1365,7 +1383,7 @@ var useSelectionFrame = function (props) {
|
|
|
1365
1383
|
};
|
|
1366
1384
|
}
|
|
1367
1385
|
}
|
|
1368
|
-
}, [props
|
|
1386
|
+
}, [props]);
|
|
1369
1387
|
};
|
|
1370
1388
|
|
|
1371
1389
|
var eventEmitter = new EventEmitter();
|
|
@@ -8024,7 +8042,7 @@ function CloseIcon(_a) {
|
|
|
8024
8042
|
return (React.createElement("svg", { width: 20, height: 20, viewBox: "0 0 24.00 24.00", xmlns: "http://www.w3.org/2000/svg", fill: "#ff0000", transform: "rotate(0)", onMouseDown: function (ev) { ev.stopPropagation(); }, onClick: onClick, cursor: 'pointer' },
|
|
8025
8043
|
React.createElement("g", { id: "SVGRepo_bgCarrier", strokeWidth: "0", transform: "translate(3.84,3.84), scale(0.68)" },
|
|
8026
8044
|
React.createElement("rect", { x: "0", y: "0", width: "24.00", height: "24.00", rx: "12", fill: "#ffffff", strokeWidth: "0" })),
|
|
8027
|
-
React.createElement("g", { id: "SVGRepo_tracerCarrier", strokeLinecap: "round", strokeLinejoin: "round", stroke: "#CCCCCC",
|
|
8045
|
+
React.createElement("g", { id: "SVGRepo_tracerCarrier", strokeLinecap: "round", strokeLinejoin: "round", stroke: "#CCCCCC", strokeWidth: "0.048" }),
|
|
8028
8046
|
React.createElement("g", { id: "SVGRepo_iconCarrier" },
|
|
8029
8047
|
React.createElement("g", null,
|
|
8030
8048
|
React.createElement("path", { fill: "none", d: "M0 0h24v24H0z" }),
|
|
@@ -9137,7 +9155,7 @@ var Paper = function (props) {
|
|
|
9137
9155
|
var linksRef = React.useRef(links); //Cache links to avoid re-render when links changed
|
|
9138
9156
|
var textsRef = React.useRef(texts); //Cache texts to avoid re-render when texts changed
|
|
9139
9157
|
var size = props.size;
|
|
9140
|
-
var selectedElementAbsPosition = React.useMemo(function () { return selectedElement ? getAbsolutePosition(selectedElement) : null; }, [selectedElement]);
|
|
9158
|
+
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]);
|
|
9141
9159
|
React.useEffect(function () {
|
|
9142
9160
|
setElements(props.elements);
|
|
9143
9161
|
}, [props.elements]);
|
|
@@ -9157,7 +9175,7 @@ var Paper = function (props) {
|
|
|
9157
9175
|
return function () {
|
|
9158
9176
|
off();
|
|
9159
9177
|
};
|
|
9160
|
-
}, [props.onManuallyTriggerRenderElement, props.onElementsChanged, elements]);
|
|
9178
|
+
}, [props.onManuallyTriggerRenderElement, props.onElementsChanged, elements, selectedElement]);
|
|
9161
9179
|
//Cache elements to avoid re-render when elements changed
|
|
9162
9180
|
React.useEffect(function () {
|
|
9163
9181
|
elementsRef.current = elements;
|
|
@@ -9622,66 +9640,6 @@ var Paper = function (props) {
|
|
|
9622
9640
|
}
|
|
9623
9641
|
return element;
|
|
9624
9642
|
};
|
|
9625
|
-
//use selection frame
|
|
9626
|
-
useSelectionFrame({
|
|
9627
|
-
container: paperContainerRef.current,
|
|
9628
|
-
targetSVGElement: selectedElementSVG || undefined,
|
|
9629
|
-
resizability: (selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.resizability) || {
|
|
9630
|
-
enabled: true,
|
|
9631
|
-
keepRatio: true
|
|
9632
|
-
},
|
|
9633
|
-
x: selectedElementAbsPosition === null || selectedElementAbsPosition === void 0 ? void 0 : selectedElementAbsPosition.x,
|
|
9634
|
-
y: selectedElementAbsPosition === null || selectedElementAbsPosition === void 0 ? void 0 : selectedElementAbsPosition.y,
|
|
9635
|
-
width: selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.size.width,
|
|
9636
|
-
height: selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.size.height,
|
|
9637
|
-
//movingOffsetThreshold: ELEMENT_MOVING_OFFSET_THRESHOLD,
|
|
9638
|
-
onMove: function (newX, newY) {
|
|
9639
|
-
if (!selectedElement)
|
|
9640
|
-
return;
|
|
9641
|
-
var oldPosition = __assign({}, selectedElement.position);
|
|
9642
|
-
var newPosition = {
|
|
9643
|
-
x: newX,
|
|
9644
|
-
y: newY
|
|
9645
|
-
};
|
|
9646
|
-
logger.info("Element ".concat(selectedElement.id, " is dragging to position ").concat(JSON.stringify(newPosition)));
|
|
9647
|
-
//Adjust position of element if it should move as a port on parent port area
|
|
9648
|
-
if (selectedElement.moveAsPortOnParent && selectedElement.parentElement) {
|
|
9649
|
-
newPosition = adjustElementPositionOnParentPortArea(selectedElement, newPosition, true);
|
|
9650
|
-
updateElementPosition(selectedElement, newPosition.x, newPosition.y, true);
|
|
9651
|
-
}
|
|
9652
|
-
else {
|
|
9653
|
-
updateElementPosition(selectedElement, newPosition.x, newPosition.y, false);
|
|
9654
|
-
}
|
|
9655
|
-
//let newElementPosition = updateElementPosition(selectedElement, newPosition.x, newPosition.y, true)
|
|
9656
|
-
var indexSelectedElement = elements.findIndex(function (e) { return e.id === selectedElement.id; });
|
|
9657
|
-
logger.info("Element ".concat(selectedElement.id, " is moving to relative position ").concat(JSON.stringify(selectedElement.position)));
|
|
9658
|
-
//Set state to re-render UI with new position
|
|
9659
|
-
setElementsInTree(function (prev) { return __spreadArray([], prev, true); });
|
|
9660
|
-
if (props.onElementMoved) {
|
|
9661
|
-
props.onElementMoved(selectedElement.position, selectedElement, indexSelectedElement);
|
|
9662
|
-
}
|
|
9663
|
-
paperEventEmitter.emitElementMoved(selectedElement, oldPosition, selectedElement.position);
|
|
9664
|
-
setMouseDownedOnPaper(false);
|
|
9665
|
-
},
|
|
9666
|
-
onResize: function (width, height) {
|
|
9667
|
-
if (!selectedElement)
|
|
9668
|
-
return;
|
|
9669
|
-
var indexSelectedElement = elements.findIndex(function (e) { return e.id === selectedElement.id; });
|
|
9670
|
-
var oldSize = selectedElement.size;
|
|
9671
|
-
var newSize = { width: width, height: height };
|
|
9672
|
-
elements[indexSelectedElement].size = newSize;
|
|
9673
|
-
var newElements = __spreadArray([], elements, true);
|
|
9674
|
-
setElements(newElements);
|
|
9675
|
-
if (props.onElementsChanged) {
|
|
9676
|
-
props.onElementsChanged(newElements);
|
|
9677
|
-
}
|
|
9678
|
-
if (props.onElementResized) {
|
|
9679
|
-
props.onElementResized(newSize, selectedElement, indexSelectedElement);
|
|
9680
|
-
}
|
|
9681
|
-
paperEventEmitter.emitElementResized(selectedElement, oldSize, newSize);
|
|
9682
|
-
setMouseDownedOnPaper(false);
|
|
9683
|
-
}
|
|
9684
|
-
});
|
|
9685
9643
|
/*
|
|
9686
9644
|
Cache to avoid re-initializing the function when the component re-renders to
|
|
9687
9645
|
avoid causing the components using it to re-render unnecessarily
|
|
@@ -9830,13 +9788,75 @@ var Paper = function (props) {
|
|
|
9830
9788
|
return (React.createElement("g", { id: "group-of-element-".concat(element.id), key: element.id },
|
|
9831
9789
|
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,
|
|
9832
9790
|
// portPlaceholderShape={(<Circle x={0} y={0} width={10} height={10} fill='red' positioningAnchor={PositioningAnchor.Center} />)}
|
|
9833
|
-
onMouseUpAtLinkedPortPlaceholder: handleMouseUpAtLinkedPortPlaceholder, onTextUpdated: handleElementTextChange, onManuallyTriggerRenderPort: props.onManuallyTriggerRenderPort, textsPlaceHolderClassName: element.textsPlaceHolderClassName, textsPlaceHolderFlexStyle: element.textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition: element.textsPlaceHolderFlexboxPosition, parentAbsolutePosition: element.parentElement ? getAbsolutePosition(element.parentElement) : undefined },
|
|
9834
|
-
|
|
9791
|
+
onMouseUpAtLinkedPortPlaceholder: handleMouseUpAtLinkedPortPlaceholder, onTextUpdated: handleElementTextChange, onManuallyTriggerRenderPort: props.onManuallyTriggerRenderPort, textsPlaceHolderClassName: element.textsPlaceHolderClassName, textsPlaceHolderFlexStyle: element.textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition: element.textsPlaceHolderFlexboxPosition, parentAbsolutePosition: element.parentElement ? getAbsolutePosition(element.parentElement) : undefined },
|
|
9792
|
+
element.childrenElementsInTree && element.childrenElementsInTree.map(renderElementInTree),
|
|
9793
|
+
!!paperContainerRef.current && !!selectedElement && selectedElement.id === element.id &&
|
|
9794
|
+
React.createElement(SelectionFrame, { container: paperContainerRef.current, targetSVGElement: selectedElementSVG || undefined, resizability: (selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.resizability) || {
|
|
9795
|
+
enabled: true,
|
|
9796
|
+
keepRatio: true
|
|
9797
|
+
}, x: selectedElementAbsPosition === null || selectedElementAbsPosition === void 0 ? void 0 : selectedElementAbsPosition.x, y: selectedElementAbsPosition === null || selectedElementAbsPosition === void 0 ? void 0 : selectedElementAbsPosition.y, width: selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.size.width, height: selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.size.height,
|
|
9798
|
+
//movingOffsetThreshold: ELEMENT_MOVING_OFFSET_THRESHOLD,
|
|
9799
|
+
onMouseDown: function (ev) {
|
|
9800
|
+
var _a;
|
|
9801
|
+
if (selectedElement) {
|
|
9802
|
+
(_a = props.onElementMouseDown) === null || _a === void 0 ? void 0 : _a.call(props, ev, selectedElement);
|
|
9803
|
+
}
|
|
9804
|
+
}, onMouseUp: function (ev) {
|
|
9805
|
+
var _a;
|
|
9806
|
+
if (selectedElement) {
|
|
9807
|
+
(_a = props.onElementMouseUp) === null || _a === void 0 ? void 0 : _a.call(props, ev, selectedElement);
|
|
9808
|
+
}
|
|
9809
|
+
}, onMove: function (newX, newY) {
|
|
9810
|
+
if (!selectedElement)
|
|
9811
|
+
return;
|
|
9812
|
+
var oldPosition = __assign({}, selectedElement.position);
|
|
9813
|
+
var newPosition = {
|
|
9814
|
+
x: newX,
|
|
9815
|
+
y: newY
|
|
9816
|
+
};
|
|
9817
|
+
logger.info("Element ".concat(selectedElement.id, " is dragging to position ").concat(JSON.stringify(newPosition)));
|
|
9818
|
+
//Adjust position of element if it should move as a port on parent port area
|
|
9819
|
+
if (selectedElement.moveAsPortOnParent && selectedElement.parentElement) {
|
|
9820
|
+
newPosition = adjustElementPositionOnParentPortArea(selectedElement, newPosition, true);
|
|
9821
|
+
updateElementPosition(selectedElement, newPosition.x, newPosition.y, true);
|
|
9822
|
+
}
|
|
9823
|
+
else {
|
|
9824
|
+
updateElementPosition(selectedElement, newPosition.x, newPosition.y, false);
|
|
9825
|
+
}
|
|
9826
|
+
//let newElementPosition = updateElementPosition(selectedElement, newPosition.x, newPosition.y, true)
|
|
9827
|
+
var indexSelectedElement = elements.findIndex(function (e) { return e.id === selectedElement.id; });
|
|
9828
|
+
logger.info("Element ".concat(selectedElement.id, " is moving to relative position ").concat(JSON.stringify(selectedElement.position)));
|
|
9829
|
+
//Set state to re-render UI with new position
|
|
9830
|
+
setElementsInTree(function (prev) { return __spreadArray([], prev, true); });
|
|
9831
|
+
if (props.onElementMoved) {
|
|
9832
|
+
props.onElementMoved(selectedElement.position, selectedElement, indexSelectedElement);
|
|
9833
|
+
}
|
|
9834
|
+
paperEventEmitter.emitElementMoved(selectedElement, oldPosition, selectedElement.position);
|
|
9835
|
+
setMouseDownedOnPaper(false);
|
|
9836
|
+
}, onResize: function (width, height) {
|
|
9837
|
+
if (!selectedElement)
|
|
9838
|
+
return;
|
|
9839
|
+
var indexSelectedElement = elements.findIndex(function (e) { return e.id === selectedElement.id; });
|
|
9840
|
+
var oldSize = selectedElement.size;
|
|
9841
|
+
var newSize = { width: width, height: height };
|
|
9842
|
+
elements[indexSelectedElement].size = newSize;
|
|
9843
|
+
var newElements = __spreadArray([], elements, true);
|
|
9844
|
+
setElements(newElements);
|
|
9845
|
+
if (props.onElementsChanged) {
|
|
9846
|
+
props.onElementsChanged(newElements);
|
|
9847
|
+
}
|
|
9848
|
+
if (props.onElementResized) {
|
|
9849
|
+
props.onElementResized(newSize, selectedElement, indexSelectedElement);
|
|
9850
|
+
}
|
|
9851
|
+
paperEventEmitter.emitElementResized(selectedElement, oldSize, newSize);
|
|
9852
|
+
setMouseDownedOnPaper(false);
|
|
9853
|
+
} }))));
|
|
9854
|
+
}, [handleElementClicked, handleContextMenu, handlePortMoved, handlePortMouseDown, handlePortMouseUp, handleMouseUpAtLinkedPortPlaceholder, handleElementTextChange, handleMouseUp, handleMouseMove, handleMouseLeave, selectedElement, selectedElementAbsPosition]);
|
|
9835
9855
|
var ElementsInTree = React.useMemo(function () {
|
|
9836
9856
|
return elementsInTree.map(function (element, index) {
|
|
9837
9857
|
return renderElementInTree(element);
|
|
9838
9858
|
});
|
|
9839
|
-
}, [elementsInTree, renderElementInTree]);
|
|
9859
|
+
}, [elementsInTree, renderElementInTree, selectedElement]);
|
|
9840
9860
|
return (React.createElement("div", { style: { position: "relative" } },
|
|
9841
9861
|
React.createElement(Ruler, { squareSize: 100, border: '1px dashed grey' }),
|
|
9842
9862
|
React.createElement("svg", { tabIndex: 0, width: size.width, height: size.height, ref: paperContainerRef, id: "paper-container", onMouseMove: handlePaperMouseMove, onMouseDown: handleMouseDownOnPaper, onMouseUp: handleMouseUpOnPaper },
|
|
@@ -8,6 +8,8 @@ interface ISelectionFrameProps {
|
|
|
8
8
|
width?: number;
|
|
9
9
|
height?: number;
|
|
10
10
|
targetSVGElement?: SVGSVGElement;
|
|
11
|
+
onMouseDown?: (event: React.MouseEvent<SVGRectElement>) => void;
|
|
12
|
+
onMouseUp?: (event: React.MouseEvent<SVGRectElement>) => void;
|
|
11
13
|
onMove?: (x: number, y: number) => void;
|
|
12
14
|
onResize?: (width: number, height: number) => void;
|
|
13
15
|
resizability: IResizability;
|
package/dist/esm/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { forwardRef, useMemo, useState, useCallback,
|
|
1
|
+
import React, { forwardRef, useMemo, useEffect, useState, useCallback, createContext, useRef, useContext, memo, useLayoutEffect, useImperativeHandle } from 'react';
|
|
2
2
|
import require$$0 from 'react-dom';
|
|
3
3
|
|
|
4
4
|
var PositioningAnchor;
|
|
@@ -1204,24 +1204,39 @@ var PORT_PLACEHOLDER_DEFAULT_STROKE_WIDTH = 20;
|
|
|
1204
1204
|
var PORT_DEFAULT_SIZE = 20;
|
|
1205
1205
|
|
|
1206
1206
|
var SelectionFrame = function (props) {
|
|
1207
|
-
var
|
|
1208
|
-
var propTargetSVGElement = props.targetSVGElement, propWidth = props.width, propHeight = props.height, propFramePadding = props.framePadding,
|
|
1207
|
+
var propTargetSVGElement = props.targetSVGElement, propWidth = props.width, propHeight = props.height, propFramePadding = props.framePadding, x = props.x, y = props.y,
|
|
1209
1208
|
// movingOffsetThreshold: propMovingOffsetThreshold,
|
|
1210
|
-
propMovingRate = props.movingRate, propOnMove = props.onMove, propContainer = props.container, propResizability = props.resizability, propOnResize = props.onResize, PropDragDropHandlerElement = props.dragDropHandlerElement, propStrokeWidth = props.strokeWidth, propAnchor = props.anchor;
|
|
1209
|
+
propMovingRate = props.movingRate, propOnMouseDown = props.onMouseDown, propOnMouseUp = props.onMouseUp, propOnMove = props.onMove, propContainer = props.container, propResizability = props.resizability, propOnResize = props.onResize, PropDragDropHandlerElement = props.dragDropHandlerElement, propStrokeWidth = props.strokeWidth, propAnchor = props.anchor;
|
|
1211
1210
|
var bbox = propTargetSVGElement === null || propTargetSVGElement === void 0 ? void 0 : propTargetSVGElement.getBBox();
|
|
1212
|
-
var
|
|
1213
|
-
var
|
|
1214
|
-
|
|
1215
|
-
|
|
1211
|
+
var _a = React.useState(propWidth || (bbox === null || bbox === void 0 ? void 0 : bbox.width) || MIN_ELEMENT_SIZE), width = _a[0], setWidth = _a[1];
|
|
1212
|
+
var _b = React.useState(propHeight || (bbox === null || bbox === void 0 ? void 0 : bbox.height) || MIN_ELEMENT_SIZE), height = _b[0], setHeight = _b[1];
|
|
1213
|
+
useEffect(function () {
|
|
1214
|
+
if (propWidth) {
|
|
1215
|
+
setWidth(propWidth);
|
|
1216
|
+
}
|
|
1217
|
+
}, [x]);
|
|
1218
|
+
var _c = React.useState(x !== null && x !== void 0 ? x : 0), curX = _c[0], setX = _c[1];
|
|
1219
|
+
var _d = React.useState(y !== null && y !== void 0 ? y : 0), curY = _d[0], setY = _d[1];
|
|
1220
|
+
useEffect(function () {
|
|
1221
|
+
if (x) {
|
|
1222
|
+
setX(x);
|
|
1223
|
+
}
|
|
1224
|
+
}, [x]);
|
|
1225
|
+
useEffect(function () {
|
|
1226
|
+
if (y) {
|
|
1227
|
+
setY(y);
|
|
1228
|
+
}
|
|
1229
|
+
}, [y]);
|
|
1216
1230
|
var framePadding = propFramePadding || 0;
|
|
1217
1231
|
var r = 5;
|
|
1218
|
-
var
|
|
1219
|
-
var
|
|
1220
|
-
var
|
|
1221
|
-
var
|
|
1222
|
-
var
|
|
1223
|
-
var
|
|
1224
|
-
var
|
|
1232
|
+
var _e = React.useState(false), draggingRect = _e[0], setDraggingRect = _e[1];
|
|
1233
|
+
var _f = React.useState(false), draggingCircle = _f[0], setDraggingCircle = _f[1];
|
|
1234
|
+
var _g = React.useState(0), startX = _g[0], setStartX = _g[1];
|
|
1235
|
+
var _h = React.useState(0), startY = _h[0], setStartY = _h[1];
|
|
1236
|
+
var _j = useState(0), xFromMouse = _j[0], setXFromMouse = _j[1];
|
|
1237
|
+
var _k = useState(0), yFromMouse = _k[0], setYFromMouse = _k[1];
|
|
1238
|
+
var _l = React.useState(0), lastMoveTime = _l[0], setLastMoveTime = _l[1];
|
|
1239
|
+
//set x by props.x
|
|
1225
1240
|
var getMousePosition = function (event) {
|
|
1226
1241
|
var elementBounding = propContainer.getBoundingClientRect();
|
|
1227
1242
|
//Coordinates of mouse on paper.
|
|
@@ -1238,11 +1253,14 @@ var SelectionFrame = function (props) {
|
|
|
1238
1253
|
setStartX(event.clientX);
|
|
1239
1254
|
setStartY(event.clientY);
|
|
1240
1255
|
var mousePosition = getMousePosition(event);
|
|
1241
|
-
var xFromMouse_1 =
|
|
1242
|
-
var yFromMouse_1 =
|
|
1256
|
+
var xFromMouse_1 = (curX || 0) - mousePosition.x;
|
|
1257
|
+
var yFromMouse_1 = (curY || 0) - mousePosition.y;
|
|
1243
1258
|
setXFromMouse(xFromMouse_1);
|
|
1244
1259
|
setYFromMouse(yFromMouse_1);
|
|
1245
1260
|
}
|
|
1261
|
+
if (propOnMouseDown) {
|
|
1262
|
+
propOnMouseDown(event);
|
|
1263
|
+
}
|
|
1246
1264
|
};
|
|
1247
1265
|
var rectHandleMouseMove = useCallback(function (event) {
|
|
1248
1266
|
var mouseEvent = event;
|
|
@@ -1327,7 +1345,7 @@ var SelectionFrame = function (props) {
|
|
|
1327
1345
|
container.removeEventListener('mousemove', circleHandleMouseMove);
|
|
1328
1346
|
container.removeEventListener('mouseup', circleHandleMouseUp);
|
|
1329
1347
|
};
|
|
1330
|
-
}, [draggingCircle, width, height, lastMoveTime, propContainer, propMovingRate, propOnResize, propResizability, startX, startY]);
|
|
1348
|
+
}, [draggingCircle, width, height, curX, curY, lastMoveTime, propContainer, propMovingRate, propOnResize, propResizability, startX, startY]);
|
|
1331
1349
|
var rectangleSize = Math.max(width, height);
|
|
1332
1350
|
var leftX = framePadding;
|
|
1333
1351
|
var topY = framePadding;
|
|
@@ -1337,7 +1355,7 @@ var SelectionFrame = function (props) {
|
|
|
1337
1355
|
}
|
|
1338
1356
|
return (React.createElement(React.Fragment, null,
|
|
1339
1357
|
PropDragDropHandlerElement && React.createElement(PropDragDropHandlerElement, { dragging: draggingRect, onMouseDown: addRectHandleMouseDown }),
|
|
1340
|
-
React.createElement("rect", { vectorEffect: "non-scaling-stroke", x: leftX, y: topY, width: width, height: height, fill: 'none', stroke: 'blue', strokeWidth: propStrokeWidth || 5, cursor: draggingRect ? 'grabbing' : 'grab', onMouseDown: addRectHandleMouseDown }),
|
|
1358
|
+
React.createElement("rect", { vectorEffect: "non-scaling-stroke", x: leftX, y: topY, width: width, height: height, fill: 'none', stroke: 'blue', strokeWidth: propStrokeWidth || 5, cursor: draggingRect ? 'grabbing' : 'grab', onMouseDown: addRectHandleMouseDown, onMouseUp: propOnMouseUp }),
|
|
1341
1359
|
propResizability.enabled ?
|
|
1342
1360
|
(React.createElement("circle", { cursor: 'se-resize', cx: leftX + width, cy: topY + height, r: r, fill: 'blue', stroke: 'blue', onMouseDown: circleHandleMouseDown })) : null));
|
|
1343
1361
|
};
|
|
@@ -1361,7 +1379,7 @@ var useSelectionFrame = function (props) {
|
|
|
1361
1379
|
};
|
|
1362
1380
|
}
|
|
1363
1381
|
}
|
|
1364
|
-
}, [props
|
|
1382
|
+
}, [props]);
|
|
1365
1383
|
};
|
|
1366
1384
|
|
|
1367
1385
|
var eventEmitter = new EventEmitter();
|
|
@@ -8020,7 +8038,7 @@ function CloseIcon(_a) {
|
|
|
8020
8038
|
return (React.createElement("svg", { width: 20, height: 20, viewBox: "0 0 24.00 24.00", xmlns: "http://www.w3.org/2000/svg", fill: "#ff0000", transform: "rotate(0)", onMouseDown: function (ev) { ev.stopPropagation(); }, onClick: onClick, cursor: 'pointer' },
|
|
8021
8039
|
React.createElement("g", { id: "SVGRepo_bgCarrier", strokeWidth: "0", transform: "translate(3.84,3.84), scale(0.68)" },
|
|
8022
8040
|
React.createElement("rect", { x: "0", y: "0", width: "24.00", height: "24.00", rx: "12", fill: "#ffffff", strokeWidth: "0" })),
|
|
8023
|
-
React.createElement("g", { id: "SVGRepo_tracerCarrier", strokeLinecap: "round", strokeLinejoin: "round", stroke: "#CCCCCC",
|
|
8041
|
+
React.createElement("g", { id: "SVGRepo_tracerCarrier", strokeLinecap: "round", strokeLinejoin: "round", stroke: "#CCCCCC", strokeWidth: "0.048" }),
|
|
8024
8042
|
React.createElement("g", { id: "SVGRepo_iconCarrier" },
|
|
8025
8043
|
React.createElement("g", null,
|
|
8026
8044
|
React.createElement("path", { fill: "none", d: "M0 0h24v24H0z" }),
|
|
@@ -9133,7 +9151,7 @@ var Paper = function (props) {
|
|
|
9133
9151
|
var linksRef = useRef(links); //Cache links to avoid re-render when links changed
|
|
9134
9152
|
var textsRef = useRef(texts); //Cache texts to avoid re-render when texts changed
|
|
9135
9153
|
var size = props.size;
|
|
9136
|
-
var selectedElementAbsPosition = useMemo(function () { return selectedElement ? getAbsolutePosition(selectedElement) : null; }, [selectedElement]);
|
|
9154
|
+
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]);
|
|
9137
9155
|
useEffect(function () {
|
|
9138
9156
|
setElements(props.elements);
|
|
9139
9157
|
}, [props.elements]);
|
|
@@ -9153,7 +9171,7 @@ var Paper = function (props) {
|
|
|
9153
9171
|
return function () {
|
|
9154
9172
|
off();
|
|
9155
9173
|
};
|
|
9156
|
-
}, [props.onManuallyTriggerRenderElement, props.onElementsChanged, elements]);
|
|
9174
|
+
}, [props.onManuallyTriggerRenderElement, props.onElementsChanged, elements, selectedElement]);
|
|
9157
9175
|
//Cache elements to avoid re-render when elements changed
|
|
9158
9176
|
useEffect(function () {
|
|
9159
9177
|
elementsRef.current = elements;
|
|
@@ -9618,66 +9636,6 @@ var Paper = function (props) {
|
|
|
9618
9636
|
}
|
|
9619
9637
|
return element;
|
|
9620
9638
|
};
|
|
9621
|
-
//use selection frame
|
|
9622
|
-
useSelectionFrame({
|
|
9623
|
-
container: paperContainerRef.current,
|
|
9624
|
-
targetSVGElement: selectedElementSVG || undefined,
|
|
9625
|
-
resizability: (selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.resizability) || {
|
|
9626
|
-
enabled: true,
|
|
9627
|
-
keepRatio: true
|
|
9628
|
-
},
|
|
9629
|
-
x: selectedElementAbsPosition === null || selectedElementAbsPosition === void 0 ? void 0 : selectedElementAbsPosition.x,
|
|
9630
|
-
y: selectedElementAbsPosition === null || selectedElementAbsPosition === void 0 ? void 0 : selectedElementAbsPosition.y,
|
|
9631
|
-
width: selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.size.width,
|
|
9632
|
-
height: selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.size.height,
|
|
9633
|
-
//movingOffsetThreshold: ELEMENT_MOVING_OFFSET_THRESHOLD,
|
|
9634
|
-
onMove: function (newX, newY) {
|
|
9635
|
-
if (!selectedElement)
|
|
9636
|
-
return;
|
|
9637
|
-
var oldPosition = __assign({}, selectedElement.position);
|
|
9638
|
-
var newPosition = {
|
|
9639
|
-
x: newX,
|
|
9640
|
-
y: newY
|
|
9641
|
-
};
|
|
9642
|
-
logger.info("Element ".concat(selectedElement.id, " is dragging to position ").concat(JSON.stringify(newPosition)));
|
|
9643
|
-
//Adjust position of element if it should move as a port on parent port area
|
|
9644
|
-
if (selectedElement.moveAsPortOnParent && selectedElement.parentElement) {
|
|
9645
|
-
newPosition = adjustElementPositionOnParentPortArea(selectedElement, newPosition, true);
|
|
9646
|
-
updateElementPosition(selectedElement, newPosition.x, newPosition.y, true);
|
|
9647
|
-
}
|
|
9648
|
-
else {
|
|
9649
|
-
updateElementPosition(selectedElement, newPosition.x, newPosition.y, false);
|
|
9650
|
-
}
|
|
9651
|
-
//let newElementPosition = updateElementPosition(selectedElement, newPosition.x, newPosition.y, true)
|
|
9652
|
-
var indexSelectedElement = elements.findIndex(function (e) { return e.id === selectedElement.id; });
|
|
9653
|
-
logger.info("Element ".concat(selectedElement.id, " is moving to relative position ").concat(JSON.stringify(selectedElement.position)));
|
|
9654
|
-
//Set state to re-render UI with new position
|
|
9655
|
-
setElementsInTree(function (prev) { return __spreadArray([], prev, true); });
|
|
9656
|
-
if (props.onElementMoved) {
|
|
9657
|
-
props.onElementMoved(selectedElement.position, selectedElement, indexSelectedElement);
|
|
9658
|
-
}
|
|
9659
|
-
paperEventEmitter.emitElementMoved(selectedElement, oldPosition, selectedElement.position);
|
|
9660
|
-
setMouseDownedOnPaper(false);
|
|
9661
|
-
},
|
|
9662
|
-
onResize: function (width, height) {
|
|
9663
|
-
if (!selectedElement)
|
|
9664
|
-
return;
|
|
9665
|
-
var indexSelectedElement = elements.findIndex(function (e) { return e.id === selectedElement.id; });
|
|
9666
|
-
var oldSize = selectedElement.size;
|
|
9667
|
-
var newSize = { width: width, height: height };
|
|
9668
|
-
elements[indexSelectedElement].size = newSize;
|
|
9669
|
-
var newElements = __spreadArray([], elements, true);
|
|
9670
|
-
setElements(newElements);
|
|
9671
|
-
if (props.onElementsChanged) {
|
|
9672
|
-
props.onElementsChanged(newElements);
|
|
9673
|
-
}
|
|
9674
|
-
if (props.onElementResized) {
|
|
9675
|
-
props.onElementResized(newSize, selectedElement, indexSelectedElement);
|
|
9676
|
-
}
|
|
9677
|
-
paperEventEmitter.emitElementResized(selectedElement, oldSize, newSize);
|
|
9678
|
-
setMouseDownedOnPaper(false);
|
|
9679
|
-
}
|
|
9680
|
-
});
|
|
9681
9639
|
/*
|
|
9682
9640
|
Cache to avoid re-initializing the function when the component re-renders to
|
|
9683
9641
|
avoid causing the components using it to re-render unnecessarily
|
|
@@ -9826,13 +9784,75 @@ var Paper = function (props) {
|
|
|
9826
9784
|
return (React.createElement("g", { id: "group-of-element-".concat(element.id), key: element.id },
|
|
9827
9785
|
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,
|
|
9828
9786
|
// portPlaceholderShape={(<Circle x={0} y={0} width={10} height={10} fill='red' positioningAnchor={PositioningAnchor.Center} />)}
|
|
9829
|
-
onMouseUpAtLinkedPortPlaceholder: handleMouseUpAtLinkedPortPlaceholder, onTextUpdated: handleElementTextChange, onManuallyTriggerRenderPort: props.onManuallyTriggerRenderPort, textsPlaceHolderClassName: element.textsPlaceHolderClassName, textsPlaceHolderFlexStyle: element.textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition: element.textsPlaceHolderFlexboxPosition, parentAbsolutePosition: element.parentElement ? getAbsolutePosition(element.parentElement) : undefined },
|
|
9830
|
-
|
|
9787
|
+
onMouseUpAtLinkedPortPlaceholder: handleMouseUpAtLinkedPortPlaceholder, onTextUpdated: handleElementTextChange, onManuallyTriggerRenderPort: props.onManuallyTriggerRenderPort, textsPlaceHolderClassName: element.textsPlaceHolderClassName, textsPlaceHolderFlexStyle: element.textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition: element.textsPlaceHolderFlexboxPosition, parentAbsolutePosition: element.parentElement ? getAbsolutePosition(element.parentElement) : undefined },
|
|
9788
|
+
element.childrenElementsInTree && element.childrenElementsInTree.map(renderElementInTree),
|
|
9789
|
+
!!paperContainerRef.current && !!selectedElement && selectedElement.id === element.id &&
|
|
9790
|
+
React.createElement(SelectionFrame, { container: paperContainerRef.current, targetSVGElement: selectedElementSVG || undefined, resizability: (selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.resizability) || {
|
|
9791
|
+
enabled: true,
|
|
9792
|
+
keepRatio: true
|
|
9793
|
+
}, x: selectedElementAbsPosition === null || selectedElementAbsPosition === void 0 ? void 0 : selectedElementAbsPosition.x, y: selectedElementAbsPosition === null || selectedElementAbsPosition === void 0 ? void 0 : selectedElementAbsPosition.y, width: selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.size.width, height: selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.size.height,
|
|
9794
|
+
//movingOffsetThreshold: ELEMENT_MOVING_OFFSET_THRESHOLD,
|
|
9795
|
+
onMouseDown: function (ev) {
|
|
9796
|
+
var _a;
|
|
9797
|
+
if (selectedElement) {
|
|
9798
|
+
(_a = props.onElementMouseDown) === null || _a === void 0 ? void 0 : _a.call(props, ev, selectedElement);
|
|
9799
|
+
}
|
|
9800
|
+
}, onMouseUp: function (ev) {
|
|
9801
|
+
var _a;
|
|
9802
|
+
if (selectedElement) {
|
|
9803
|
+
(_a = props.onElementMouseUp) === null || _a === void 0 ? void 0 : _a.call(props, ev, selectedElement);
|
|
9804
|
+
}
|
|
9805
|
+
}, onMove: function (newX, newY) {
|
|
9806
|
+
if (!selectedElement)
|
|
9807
|
+
return;
|
|
9808
|
+
var oldPosition = __assign({}, selectedElement.position);
|
|
9809
|
+
var newPosition = {
|
|
9810
|
+
x: newX,
|
|
9811
|
+
y: newY
|
|
9812
|
+
};
|
|
9813
|
+
logger.info("Element ".concat(selectedElement.id, " is dragging to position ").concat(JSON.stringify(newPosition)));
|
|
9814
|
+
//Adjust position of element if it should move as a port on parent port area
|
|
9815
|
+
if (selectedElement.moveAsPortOnParent && selectedElement.parentElement) {
|
|
9816
|
+
newPosition = adjustElementPositionOnParentPortArea(selectedElement, newPosition, true);
|
|
9817
|
+
updateElementPosition(selectedElement, newPosition.x, newPosition.y, true);
|
|
9818
|
+
}
|
|
9819
|
+
else {
|
|
9820
|
+
updateElementPosition(selectedElement, newPosition.x, newPosition.y, false);
|
|
9821
|
+
}
|
|
9822
|
+
//let newElementPosition = updateElementPosition(selectedElement, newPosition.x, newPosition.y, true)
|
|
9823
|
+
var indexSelectedElement = elements.findIndex(function (e) { return e.id === selectedElement.id; });
|
|
9824
|
+
logger.info("Element ".concat(selectedElement.id, " is moving to relative position ").concat(JSON.stringify(selectedElement.position)));
|
|
9825
|
+
//Set state to re-render UI with new position
|
|
9826
|
+
setElementsInTree(function (prev) { return __spreadArray([], prev, true); });
|
|
9827
|
+
if (props.onElementMoved) {
|
|
9828
|
+
props.onElementMoved(selectedElement.position, selectedElement, indexSelectedElement);
|
|
9829
|
+
}
|
|
9830
|
+
paperEventEmitter.emitElementMoved(selectedElement, oldPosition, selectedElement.position);
|
|
9831
|
+
setMouseDownedOnPaper(false);
|
|
9832
|
+
}, onResize: function (width, height) {
|
|
9833
|
+
if (!selectedElement)
|
|
9834
|
+
return;
|
|
9835
|
+
var indexSelectedElement = elements.findIndex(function (e) { return e.id === selectedElement.id; });
|
|
9836
|
+
var oldSize = selectedElement.size;
|
|
9837
|
+
var newSize = { width: width, height: height };
|
|
9838
|
+
elements[indexSelectedElement].size = newSize;
|
|
9839
|
+
var newElements = __spreadArray([], elements, true);
|
|
9840
|
+
setElements(newElements);
|
|
9841
|
+
if (props.onElementsChanged) {
|
|
9842
|
+
props.onElementsChanged(newElements);
|
|
9843
|
+
}
|
|
9844
|
+
if (props.onElementResized) {
|
|
9845
|
+
props.onElementResized(newSize, selectedElement, indexSelectedElement);
|
|
9846
|
+
}
|
|
9847
|
+
paperEventEmitter.emitElementResized(selectedElement, oldSize, newSize);
|
|
9848
|
+
setMouseDownedOnPaper(false);
|
|
9849
|
+
} }))));
|
|
9850
|
+
}, [handleElementClicked, handleContextMenu, handlePortMoved, handlePortMouseDown, handlePortMouseUp, handleMouseUpAtLinkedPortPlaceholder, handleElementTextChange, handleMouseUp, handleMouseMove, handleMouseLeave, selectedElement, selectedElementAbsPosition]);
|
|
9831
9851
|
var ElementsInTree = useMemo(function () {
|
|
9832
9852
|
return elementsInTree.map(function (element, index) {
|
|
9833
9853
|
return renderElementInTree(element);
|
|
9834
9854
|
});
|
|
9835
|
-
}, [elementsInTree, renderElementInTree]);
|
|
9855
|
+
}, [elementsInTree, renderElementInTree, selectedElement]);
|
|
9836
9856
|
return (React.createElement("div", { style: { position: "relative" } },
|
|
9837
9857
|
React.createElement(Ruler, { squareSize: 100, border: '1px dashed grey' }),
|
|
9838
9858
|
React.createElement("svg", { tabIndex: 0, width: size.width, height: size.height, ref: paperContainerRef, id: "paper-container", onMouseMove: handlePaperMouseMove, onMouseDown: handleMouseDownOnPaper, onMouseUp: handleMouseUpOnPaper },
|