orcasvn-react-diagrams 0.1.47 → 0.1.49
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 +233 -217
- package/dist/cjs/types/mocks/editorContextSingleElementTestEvents.d.ts +2 -0
- package/dist/cjs/types/models/IElementSelectorProps.d.ts +2 -2
- package/dist/cjs/types/models/IPortProps.d.ts +1 -0
- package/dist/esm/index.js +234 -218
- 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 -2
- package/dist/esm/types/models/IPortProps.d.ts +1 -0
- package/dist/index.d.ts +3 -2
- package/package.json +1 -1
package/dist/cjs/index.js
CHANGED
|
@@ -1065,7 +1065,8 @@ var Circle = React.forwardRef(function (props, ref) {
|
|
|
1065
1065
|
s.width = props.width;
|
|
1066
1066
|
}
|
|
1067
1067
|
return (React.createElement(ShapeWrapper, __assign({ viewBox: '0 0 100 100' }, props, { width: s.width, height: s.height, ref: ref }),
|
|
1068
|
-
React.createElement("circle", { className: "".concat(props.portMoveableAreaCssClass), vectorEffect: "non-scaling-stroke", cx: 50, cy: 50, r: 50, fill: props.fill || 'transparent', stroke: props.stroke || "none", strokeWidth: props.strokeWidth })
|
|
1068
|
+
React.createElement("circle", { className: "".concat(props.portMoveableAreaCssClass), vectorEffect: "non-scaling-stroke", cx: 50, cy: 50, r: 50, fill: props.fill || 'transparent', stroke: props.stroke || "none", strokeWidth: props.strokeWidth }),
|
|
1069
|
+
props.children));
|
|
1069
1070
|
});
|
|
1070
1071
|
|
|
1071
1072
|
var Crescent = React.forwardRef(function (props, ref) {
|
|
@@ -1084,7 +1085,8 @@ var Crescent = React.forwardRef(function (props, ref) {
|
|
|
1084
1085
|
var sw = props.stroke ? (props.strokeWidth || 1) : 0;
|
|
1085
1086
|
return (React.createElement(ShapeWrapper, __assign({ ref: ref, viewBox: '0 0 100 100' }, props, { width: s.width, height: s.height }),
|
|
1086
1087
|
React.createElement("rect", { width: 100, height: 100, stroke: "transparent", fill: 'transparent' }),
|
|
1087
|
-
React.createElement("path", { className: "".concat(props.portMoveableAreaCssClass), vectorEffect: "non-scaling-stroke", d: "M 0 75 A 50 50 0 1 1 100 75 Z", fill: props.fill || 'none', stroke: props.stroke || 'none', strokeWidth: sw })
|
|
1088
|
+
React.createElement("path", { className: "".concat(props.portMoveableAreaCssClass), vectorEffect: "non-scaling-stroke", d: "M 0 75 A 50 50 0 1 1 100 75 Z", fill: props.fill || 'none', stroke: props.stroke || 'none', strokeWidth: sw }),
|
|
1089
|
+
props.children));
|
|
1088
1090
|
});
|
|
1089
1091
|
|
|
1090
1092
|
var Rectangle = React.forwardRef(function (props, ref) {
|
|
@@ -1104,7 +1106,8 @@ var Rectangle = React.forwardRef(function (props, ref) {
|
|
|
1104
1106
|
}
|
|
1105
1107
|
var sw = props.stroke ? (props.strokeWidth || 1) : 0;
|
|
1106
1108
|
return (React.createElement(ShapeWrapper, __assign({}, props, { ref: ref, height: props.height, width: props.width }),
|
|
1107
|
-
React.createElement("rect", { className: "rect-border ".concat(props.portMoveableAreaCssClass), vectorEffect: "non-scaling-stroke", width: scaledWidth, height: scaledHeight, fill: props.fill || "transparent", stroke: props.stroke || "none", strokeWidth: sw })
|
|
1109
|
+
React.createElement("rect", { className: "rect-border ".concat(props.portMoveableAreaCssClass), vectorEffect: "non-scaling-stroke", width: scaledWidth, height: scaledHeight, fill: props.fill || "transparent", stroke: props.stroke || "none", strokeWidth: sw }),
|
|
1110
|
+
props.children));
|
|
1108
1111
|
});
|
|
1109
1112
|
|
|
1110
1113
|
var RectangularFrame = React.forwardRef(function (props, ref) {
|
|
@@ -1130,7 +1133,8 @@ var RectangularFrame = React.forwardRef(function (props, ref) {
|
|
|
1130
1133
|
return (React.createElement(ShapeWrapper, __assign({}, props, { ref: ref, height: props.height, width: props.width }),
|
|
1131
1134
|
React.createElement("rect", { vectorEffect: "non-scaling-stroke", className: "rectangular-frame-outer-border ".concat(props.portMoveableAreaCssClass), x: vbX, y: vbY, width: scaledWidth, height: scaledHeight, fill: "none", stroke: props.stroke || "none", strokeWidth: sw }),
|
|
1132
1135
|
React.createElement("rect", { vectorEffect: "non-scaling-stroke", className: 'rectangular-frame-hallway', x: vbX + scaledFw / 2, y: vbY + scaledFw / 2, width: scaledWidth - scaledFw, height: scaledHeight - scaledFw, stroke: props.frameColor || "none", strokeWidth: fw, fill: props.fill || "transparent" }),
|
|
1133
|
-
React.createElement("rect", { vectorEffect: "non-scaling-stroke", className: 'rectangular-frame-inner-border', x: vbX + scaledFw, y: vbY + scaledFw, width: scaledWidth - scaledFw * 2, height: scaledHeight - scaledFw * 2, stroke: props.stroke || "none", strokeWidth: sw, fill: props.fill || "transparent" })
|
|
1136
|
+
React.createElement("rect", { vectorEffect: "non-scaling-stroke", className: 'rectangular-frame-inner-border', x: vbX + scaledFw, y: vbY + scaledFw, width: scaledWidth - scaledFw * 2, height: scaledHeight - scaledFw * 2, stroke: props.stroke || "none", strokeWidth: sw, fill: props.fill || "transparent" }),
|
|
1137
|
+
props.children));
|
|
1134
1138
|
});
|
|
1135
1139
|
|
|
1136
1140
|
var createRoot;
|
|
@@ -1207,25 +1211,99 @@ var PORT_PLACEHOLDER_DEFAULT_STROKE = 'green';
|
|
|
1207
1211
|
var PORT_PLACEHOLDER_DEFAULT_STROKE_WIDTH = 20;
|
|
1208
1212
|
var PORT_DEFAULT_SIZE = 20;
|
|
1209
1213
|
|
|
1214
|
+
var Logger = /** @class */ (function () {
|
|
1215
|
+
function Logger() {
|
|
1216
|
+
this.level = 'info';
|
|
1217
|
+
this.customLogger = null;
|
|
1218
|
+
}
|
|
1219
|
+
Logger.prototype.setLevel = function (level) {
|
|
1220
|
+
this.level = level;
|
|
1221
|
+
};
|
|
1222
|
+
Logger.prototype.setCustomLogger = function (logger) {
|
|
1223
|
+
this.customLogger = logger;
|
|
1224
|
+
};
|
|
1225
|
+
Logger.prototype.log = function (level, message) {
|
|
1226
|
+
var _a;
|
|
1227
|
+
var optionalParams = [];
|
|
1228
|
+
for (var _i = 2; _i < arguments.length; _i++) {
|
|
1229
|
+
optionalParams[_i - 2] = arguments[_i];
|
|
1230
|
+
}
|
|
1231
|
+
var levels = ['error', 'warn', 'info', 'debug'];
|
|
1232
|
+
if (this.level && levels.indexOf(level) <= levels.indexOf(this.level)) {
|
|
1233
|
+
if (this.customLogger) {
|
|
1234
|
+
this.customLogger.apply(this, __spreadArray([level, message], optionalParams, false));
|
|
1235
|
+
}
|
|
1236
|
+
else {
|
|
1237
|
+
console[level] ? (_a = console)[level].apply(_a, __spreadArray([message], optionalParams, false)) : console.log.apply(console, __spreadArray([message], optionalParams, false));
|
|
1238
|
+
}
|
|
1239
|
+
}
|
|
1240
|
+
};
|
|
1241
|
+
Logger.prototype.error = function (msg) {
|
|
1242
|
+
var optionalParams = [];
|
|
1243
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
1244
|
+
optionalParams[_i - 1] = arguments[_i];
|
|
1245
|
+
}
|
|
1246
|
+
this.log.apply(this, __spreadArray(['error', msg], optionalParams, false));
|
|
1247
|
+
};
|
|
1248
|
+
Logger.prototype.warn = function (msg) {
|
|
1249
|
+
var optionalParams = [];
|
|
1250
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
1251
|
+
optionalParams[_i - 1] = arguments[_i];
|
|
1252
|
+
}
|
|
1253
|
+
this.log.apply(this, __spreadArray(['warn', msg], optionalParams, false));
|
|
1254
|
+
};
|
|
1255
|
+
Logger.prototype.info = function (msg) {
|
|
1256
|
+
var optionalParams = [];
|
|
1257
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
1258
|
+
optionalParams[_i - 1] = arguments[_i];
|
|
1259
|
+
}
|
|
1260
|
+
this.log.apply(this, __spreadArray(['info', msg], optionalParams, false));
|
|
1261
|
+
};
|
|
1262
|
+
Logger.prototype.debug = function (msg) {
|
|
1263
|
+
var optionalParams = [];
|
|
1264
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
1265
|
+
optionalParams[_i - 1] = arguments[_i];
|
|
1266
|
+
}
|
|
1267
|
+
this.log.apply(this, __spreadArray(['debug', msg], optionalParams, false));
|
|
1268
|
+
};
|
|
1269
|
+
return Logger;
|
|
1270
|
+
}());
|
|
1271
|
+
var logger = new Logger();
|
|
1272
|
+
|
|
1210
1273
|
var SelectionFrame = function (props) {
|
|
1211
|
-
var
|
|
1212
|
-
var propTargetSVGElement = props.targetSVGElement, propWidth = props.width, propHeight = props.height, propFramePadding = props.framePadding,
|
|
1274
|
+
var propTargetSVGElement = props.targetSVGElement, propWidth = props.width, propHeight = props.height, propFramePadding = props.framePadding, objectX = props.objectX, objectY = props.objectY,
|
|
1213
1275
|
// movingOffsetThreshold: propMovingOffsetThreshold,
|
|
1214
1276
|
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
1277
|
var bbox = propTargetSVGElement === null || propTargetSVGElement === void 0 ? void 0 : propTargetSVGElement.getBBox();
|
|
1216
|
-
var
|
|
1217
|
-
var
|
|
1218
|
-
|
|
1219
|
-
|
|
1278
|
+
var _a = React.useState(propWidth || (bbox === null || bbox === void 0 ? void 0 : bbox.width) || MIN_ELEMENT_SIZE), width = _a[0], setWidth = _a[1];
|
|
1279
|
+
var _b = React.useState(propHeight || (bbox === null || bbox === void 0 ? void 0 : bbox.height) || MIN_ELEMENT_SIZE), height = _b[0], setHeight = _b[1];
|
|
1280
|
+
React.useEffect(function () {
|
|
1281
|
+
if (propWidth) {
|
|
1282
|
+
setWidth(propWidth);
|
|
1283
|
+
}
|
|
1284
|
+
}, [objectX, propWidth]);
|
|
1285
|
+
var _c = React.useState(objectX !== null && objectX !== void 0 ? objectX : 0), curX = _c[0], setCurX = _c[1];
|
|
1286
|
+
var _d = React.useState(objectY !== null && objectY !== void 0 ? objectY : 0), curY = _d[0], setCurY = _d[1];
|
|
1287
|
+
React.useEffect(function () {
|
|
1288
|
+
if (objectX) {
|
|
1289
|
+
setCurX(objectX);
|
|
1290
|
+
}
|
|
1291
|
+
}, [objectX]);
|
|
1292
|
+
React.useEffect(function () {
|
|
1293
|
+
if (objectY) {
|
|
1294
|
+
setCurY(objectY);
|
|
1295
|
+
}
|
|
1296
|
+
}, [objectY]);
|
|
1220
1297
|
var framePadding = propFramePadding || 0;
|
|
1221
1298
|
var r = 5;
|
|
1222
|
-
var
|
|
1223
|
-
var
|
|
1224
|
-
var
|
|
1225
|
-
var
|
|
1226
|
-
var
|
|
1227
|
-
var
|
|
1228
|
-
var
|
|
1299
|
+
var _e = React.useState(false), draggingRect = _e[0], setDraggingRect = _e[1];
|
|
1300
|
+
var _f = React.useState(false), draggingCircle = _f[0], setDraggingCircle = _f[1];
|
|
1301
|
+
var _g = React.useState(0), startX = _g[0], setStartX = _g[1];
|
|
1302
|
+
var _h = React.useState(0), startY = _h[0], setStartY = _h[1];
|
|
1303
|
+
var _j = React.useState(0), xFromMouse = _j[0], setXFromMouse = _j[1];
|
|
1304
|
+
var _k = React.useState(0), yFromMouse = _k[0], setYFromMouse = _k[1];
|
|
1305
|
+
var _l = React.useState(0), lastMoveTime = _l[0], setLastMoveTime = _l[1];
|
|
1306
|
+
//set x by props.x
|
|
1229
1307
|
var getMousePosition = function (event) {
|
|
1230
1308
|
var elementBounding = propContainer.getBoundingClientRect();
|
|
1231
1309
|
//Coordinates of mouse on paper.
|
|
@@ -1242,8 +1320,8 @@ var SelectionFrame = function (props) {
|
|
|
1242
1320
|
setStartX(event.clientX);
|
|
1243
1321
|
setStartY(event.clientY);
|
|
1244
1322
|
var mousePosition = getMousePosition(event);
|
|
1245
|
-
var xFromMouse_1 =
|
|
1246
|
-
var yFromMouse_1 =
|
|
1323
|
+
var xFromMouse_1 = (curX || 0) - mousePosition.x;
|
|
1324
|
+
var yFromMouse_1 = (curY || 0) - mousePosition.y;
|
|
1247
1325
|
setXFromMouse(xFromMouse_1);
|
|
1248
1326
|
setYFromMouse(yFromMouse_1);
|
|
1249
1327
|
}
|
|
@@ -1259,8 +1337,8 @@ var SelectionFrame = function (props) {
|
|
|
1259
1337
|
var newX = mousePosition.x + xFromMouse;
|
|
1260
1338
|
var newY = mousePosition.y + yFromMouse;
|
|
1261
1339
|
if (propOnMove) {
|
|
1262
|
-
|
|
1263
|
-
|
|
1340
|
+
setCurX(newX);
|
|
1341
|
+
setCurY(newY);
|
|
1264
1342
|
propOnMove(newX, newY);
|
|
1265
1343
|
setLastMoveTime(Date.now());
|
|
1266
1344
|
setStartX(mouseEvent.clientX);
|
|
@@ -1290,6 +1368,14 @@ var SelectionFrame = function (props) {
|
|
|
1290
1368
|
}
|
|
1291
1369
|
};
|
|
1292
1370
|
React.useEffect(function () {
|
|
1371
|
+
logger.debug('SelectionFrame: circleHandleMouseDown triggered', {
|
|
1372
|
+
draggingCircle: draggingCircle,
|
|
1373
|
+
startX: startX,
|
|
1374
|
+
startY: startY,
|
|
1375
|
+
width: width,
|
|
1376
|
+
height: height,
|
|
1377
|
+
propMovingRate: propMovingRate
|
|
1378
|
+
});
|
|
1293
1379
|
var circleHandleMouseMove = function (event) {
|
|
1294
1380
|
var mouseEvent = event;
|
|
1295
1381
|
if (draggingCircle) {
|
|
@@ -1330,11 +1416,15 @@ var SelectionFrame = function (props) {
|
|
|
1330
1416
|
var container = propContainer;
|
|
1331
1417
|
container.addEventListener('mousemove', circleHandleMouseMove);
|
|
1332
1418
|
container.addEventListener('mouseup', circleHandleMouseUp);
|
|
1419
|
+
//logging the start of the circle handle mouse move
|
|
1420
|
+
logger.debug('SelectionFrame: circleHandleMouseMove started', container);
|
|
1333
1421
|
return function () {
|
|
1334
1422
|
container.removeEventListener('mousemove', circleHandleMouseMove);
|
|
1335
1423
|
container.removeEventListener('mouseup', circleHandleMouseUp);
|
|
1424
|
+
//logging the end of the circle handle mouse move
|
|
1425
|
+
logger.debug('SelectionFrame: circleHandleMouseMove ended', container);
|
|
1336
1426
|
};
|
|
1337
|
-
}, [draggingCircle, width, height, lastMoveTime, propContainer, propMovingRate, propOnResize, propResizability, startX, startY]);
|
|
1427
|
+
}, [draggingCircle, width, height, curX, curY, lastMoveTime, propContainer, propMovingRate, propOnResize, propResizability, startX, startY]);
|
|
1338
1428
|
var rectangleSize = Math.max(width, height);
|
|
1339
1429
|
var leftX = framePadding;
|
|
1340
1430
|
var topY = framePadding;
|
|
@@ -1351,6 +1441,13 @@ var SelectionFrame = function (props) {
|
|
|
1351
1441
|
|
|
1352
1442
|
var useSelectionFrame = function (props) {
|
|
1353
1443
|
React.useEffect(function () {
|
|
1444
|
+
//log selection frame rendering
|
|
1445
|
+
if (props.targetSVGElement) {
|
|
1446
|
+
console.debug('Rendering SelectionFrame for targetSVGElement:', props.targetSVGElement);
|
|
1447
|
+
}
|
|
1448
|
+
else {
|
|
1449
|
+
console.warn('No targetSVGElement provided for SelectionFrame.');
|
|
1450
|
+
}
|
|
1354
1451
|
if (props.targetSVGElement && props.container) {
|
|
1355
1452
|
//render SelectionFrame component to the parent element of the targetSVGElement
|
|
1356
1453
|
if (props.container) {
|
|
@@ -1368,7 +1465,7 @@ var useSelectionFrame = function (props) {
|
|
|
1368
1465
|
};
|
|
1369
1466
|
}
|
|
1370
1467
|
}
|
|
1371
|
-
}, [props
|
|
1468
|
+
}, [props]);
|
|
1372
1469
|
};
|
|
1373
1470
|
|
|
1374
1471
|
var eventEmitter = new EventEmitter();
|
|
@@ -1684,8 +1781,8 @@ var Text = React.forwardRef(function (_a, ref) {
|
|
|
1684
1781
|
onContentChanged === null || onContentChanged === void 0 ? void 0 : onContentChanged(ev, ev.target.value);
|
|
1685
1782
|
};
|
|
1686
1783
|
useSelectionFrame({
|
|
1687
|
-
|
|
1688
|
-
|
|
1784
|
+
objectX: absolutePosition === null || absolutePosition === void 0 ? void 0 : absolutePosition.x,
|
|
1785
|
+
objectY: absolutePosition === null || absolutePosition === void 0 ? void 0 : absolutePosition.y,
|
|
1689
1786
|
container: container,
|
|
1690
1787
|
targetSVGElement: (isSelected && svgRef.current) ? svgRef.current : undefined,
|
|
1691
1788
|
resizability: {
|
|
@@ -7387,65 +7484,6 @@ function calculateAngleWithOx(pStart, pEnd) {
|
|
|
7387
7484
|
return angleInDegrees;
|
|
7388
7485
|
}
|
|
7389
7486
|
|
|
7390
|
-
var Logger = /** @class */ (function () {
|
|
7391
|
-
function Logger() {
|
|
7392
|
-
this.level = 'info';
|
|
7393
|
-
this.customLogger = null;
|
|
7394
|
-
}
|
|
7395
|
-
Logger.prototype.setLevel = function (level) {
|
|
7396
|
-
this.level = level;
|
|
7397
|
-
};
|
|
7398
|
-
Logger.prototype.setCustomLogger = function (logger) {
|
|
7399
|
-
this.customLogger = logger;
|
|
7400
|
-
};
|
|
7401
|
-
Logger.prototype.log = function (level, message) {
|
|
7402
|
-
var _a;
|
|
7403
|
-
var optionalParams = [];
|
|
7404
|
-
for (var _i = 2; _i < arguments.length; _i++) {
|
|
7405
|
-
optionalParams[_i - 2] = arguments[_i];
|
|
7406
|
-
}
|
|
7407
|
-
var levels = ['error', 'warn', 'info', 'debug'];
|
|
7408
|
-
if (this.level && levels.indexOf(level) <= levels.indexOf(this.level)) {
|
|
7409
|
-
if (this.customLogger) {
|
|
7410
|
-
this.customLogger.apply(this, __spreadArray([level, message], optionalParams, false));
|
|
7411
|
-
}
|
|
7412
|
-
else {
|
|
7413
|
-
console[level] ? (_a = console)[level].apply(_a, __spreadArray([message], optionalParams, false)) : console.log.apply(console, __spreadArray([message], optionalParams, false));
|
|
7414
|
-
}
|
|
7415
|
-
}
|
|
7416
|
-
};
|
|
7417
|
-
Logger.prototype.error = function (msg) {
|
|
7418
|
-
var optionalParams = [];
|
|
7419
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
7420
|
-
optionalParams[_i - 1] = arguments[_i];
|
|
7421
|
-
}
|
|
7422
|
-
this.log.apply(this, __spreadArray(['error', msg], optionalParams, false));
|
|
7423
|
-
};
|
|
7424
|
-
Logger.prototype.warn = function (msg) {
|
|
7425
|
-
var optionalParams = [];
|
|
7426
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
7427
|
-
optionalParams[_i - 1] = arguments[_i];
|
|
7428
|
-
}
|
|
7429
|
-
this.log.apply(this, __spreadArray(['warn', msg], optionalParams, false));
|
|
7430
|
-
};
|
|
7431
|
-
Logger.prototype.info = function (msg) {
|
|
7432
|
-
var optionalParams = [];
|
|
7433
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
7434
|
-
optionalParams[_i - 1] = arguments[_i];
|
|
7435
|
-
}
|
|
7436
|
-
this.log.apply(this, __spreadArray(['info', msg], optionalParams, false));
|
|
7437
|
-
};
|
|
7438
|
-
Logger.prototype.debug = function (msg) {
|
|
7439
|
-
var optionalParams = [];
|
|
7440
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
7441
|
-
optionalParams[_i - 1] = arguments[_i];
|
|
7442
|
-
}
|
|
7443
|
-
this.log.apply(this, __spreadArray(['debug', msg], optionalParams, false));
|
|
7444
|
-
};
|
|
7445
|
-
return Logger;
|
|
7446
|
-
}());
|
|
7447
|
-
var logger = new Logger();
|
|
7448
|
-
|
|
7449
7487
|
/**
|
|
7450
7488
|
* Check if position 1 is within the radius r of position 2
|
|
7451
7489
|
* @returns boolean
|
|
@@ -7868,7 +7906,7 @@ var correctPortPositionInElement = function (elementRelativePosition, elementWid
|
|
|
7868
7906
|
var Port1 = React.forwardRef(function (props, ref) {
|
|
7869
7907
|
var id = props.id, x = props.x, y = props.y, width = props.width, height = props.height, container = props.container, label = props.label, parentAbsolutePosition = props.parentAbsolutePosition, onPortLabelMoved = props.onPortLabelMoved, onPortLabelResized = props.onPortLabelResized, onPortLabelContentChanged = props.onPortLabelContentChanged, onSelected = props.onSelected, onMouseDown = props.onMouseDown, onMouseUp = props.onMouseUp, onMouseEnter = props.onMouseEnter, onMouseLeave = props.onMouseLeave, onMouseMove = props.onMouseMove, calculateRotationAngle = props.calculateRotationAngle,
|
|
7870
7908
|
// onManuallyTriggerRenderHandler,
|
|
7871
|
-
renderShape = props.renderShape;
|
|
7909
|
+
renderShape = props.renderShape, children = props.children;
|
|
7872
7910
|
var textRef = React.useRef(null);
|
|
7873
7911
|
var rotationAngle = React.useMemo(function () {
|
|
7874
7912
|
if (!calculateRotationAngle)
|
|
@@ -7890,10 +7928,10 @@ var Port1 = React.forwardRef(function (props, ref) {
|
|
|
7890
7928
|
var renderedShape = React.useMemo(function () {
|
|
7891
7929
|
if (renderShape) {
|
|
7892
7930
|
var RenderShape = renderShape;
|
|
7893
|
-
return (React.createElement(RenderShape, __assign({ ref: ref }, props, { rotation: rotationAngle })));
|
|
7931
|
+
return (React.createElement(RenderShape, __assign({ ref: ref }, props, { rotation: rotationAngle }), children));
|
|
7894
7932
|
}
|
|
7895
7933
|
else {
|
|
7896
|
-
return React.createElement(Circle, { onMouseDown: function (e) { return onMouseDown === null || onMouseDown === void 0 ? void 0 : onMouseDown(id, e); }, onMouseUp: function (e) { return onMouseUp === null || onMouseUp === void 0 ? void 0 : onMouseUp(id, e); }, onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, onMouseMove: function (e) { return onMouseMove === null || onMouseMove === void 0 ? void 0 : onMouseMove(id, e); }, onClick: function (e) { return onSelected === null || onSelected === void 0 ? void 0 : onSelected(id, e); }, ref: ref, x: x, y: y, positioningAnchor: exports.PositioningAnchor.Center, height: height, width: width, stroke: "black", fill: "black" });
|
|
7934
|
+
return React.createElement(Circle, { onMouseDown: function (e) { return onMouseDown === null || onMouseDown === void 0 ? void 0 : onMouseDown(id, e); }, onMouseUp: function (e) { return onMouseUp === null || onMouseUp === void 0 ? void 0 : onMouseUp(id, e); }, onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, onMouseMove: function (e) { return onMouseMove === null || onMouseMove === void 0 ? void 0 : onMouseMove(id, e); }, onClick: function (e) { return onSelected === null || onSelected === void 0 ? void 0 : onSelected(id, e); }, ref: ref, x: x, y: y, positioningAnchor: exports.PositioningAnchor.Center, height: height, width: width, stroke: "black", fill: "black" }, children);
|
|
7897
7935
|
}
|
|
7898
7936
|
}, [props]);
|
|
7899
7937
|
return (React.createElement(React.Fragment, null,
|
|
@@ -8027,7 +8065,7 @@ function CloseIcon(_a) {
|
|
|
8027
8065
|
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' },
|
|
8028
8066
|
React.createElement("g", { id: "SVGRepo_bgCarrier", strokeWidth: "0", transform: "translate(3.84,3.84), scale(0.68)" },
|
|
8029
8067
|
React.createElement("rect", { x: "0", y: "0", width: "24.00", height: "24.00", rx: "12", fill: "#ffffff", strokeWidth: "0" })),
|
|
8030
|
-
React.createElement("g", { id: "SVGRepo_tracerCarrier", strokeLinecap: "round", strokeLinejoin: "round", stroke: "#CCCCCC",
|
|
8068
|
+
React.createElement("g", { id: "SVGRepo_tracerCarrier", strokeLinecap: "round", strokeLinejoin: "round", stroke: "#CCCCCC", strokeWidth: "0.048" }),
|
|
8031
8069
|
React.createElement("g", { id: "SVGRepo_iconCarrier" },
|
|
8032
8070
|
React.createElement("g", null,
|
|
8033
8071
|
React.createElement("path", { fill: "none", d: "M0 0h24v24H0z" }),
|
|
@@ -8389,13 +8427,12 @@ var ElementWrapper = React.forwardRef(function (_a, ref) {
|
|
|
8389
8427
|
});
|
|
8390
8428
|
|
|
8391
8429
|
var Element = React.forwardRef(function (props, forwardedRef) {
|
|
8392
|
-
var
|
|
8393
|
-
var
|
|
8394
|
-
var
|
|
8395
|
-
var
|
|
8396
|
-
var
|
|
8397
|
-
var
|
|
8398
|
-
var _g = React.useState(), potentialPortPosition = _g[0], setPotentialPortPosition = _g[1];
|
|
8430
|
+
var id = props.id, x = props.x, y = props.y, width = props.width, height = props.height, cssClass = props.cssClass, portPlaceholderShape = props.portPlaceholderShape, children = props.children, container = props.container, parentAbsolutePosition = props.parentAbsolutePosition, textsPlaceHolderFlexStyle = props.textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition = props.textsPlaceHolderFlexboxPosition, textsPlaceHolderClassName = props.textsPlaceHolderClassName, texts = props.texts, portSlideRailSVGClassName = props.portSlideRailSVGClassName, portMoveableAreas = props.portMoveableAreas, portDirection = props.portDirection, defaultPortSize = props.defaultPortSize, onClick = props.onClick, onContextMenu = props.onContextMenu, renderShape = props.renderShape; props.onMoved; var onPortMoved = props.onPortMoved; props.onResized; var onPortMouseDown = props.onPortMouseDown, onPortMouseUp = props.onPortMouseUp, onMouseMove = props.onMouseMove, onMouseLeave = props.onMouseLeave, onMouseUp = props.onMouseUp, onMouseDown = props.onMouseDown, onMouseUpAtLinkedPortPlaceholder = props.onMouseUpAtLinkedPortPlaceholder, onTextUpdated = props.onTextUpdated;
|
|
8431
|
+
var _a = React.useState(), selectedPort = _a[0], setSelectedPort = _a[1];
|
|
8432
|
+
var _b = React.useState(), hoveredPort = _b[0], setHoveredPort = _b[1];
|
|
8433
|
+
var _c = React.useState([]), ports = _c[0], setPorts = _c[1];
|
|
8434
|
+
var _d = React.useState(false), someElementLinkStarted = _d[0], setSomeElementLinkStarted = _d[1];
|
|
8435
|
+
var _e = React.useState(), potentialPortPosition = _e[0], setPotentialPortPosition = _e[1];
|
|
8399
8436
|
var _paperEventEmitterContext = React.useContext(paperEventEmitterContext);
|
|
8400
8437
|
var elementRef = React.useRef(null);
|
|
8401
8438
|
React.useImperativeHandle(forwardedRef, function () { return elementRef.current; });
|
|
@@ -8773,51 +8810,40 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
8773
8810
|
setPorts(function (prev) { return __spreadArray([], prev, true); });
|
|
8774
8811
|
}
|
|
8775
8812
|
}, []);
|
|
8776
|
-
//
|
|
8777
|
-
|
|
8778
|
-
|
|
8779
|
-
|
|
8780
|
-
|
|
8781
|
-
|
|
8782
|
-
|
|
8783
|
-
|
|
8784
|
-
|
|
8785
|
-
|
|
8786
|
-
|
|
8787
|
-
|
|
8788
|
-
|
|
8789
|
-
|
|
8790
|
-
|
|
8791
|
-
|
|
8792
|
-
|
|
8793
|
-
|
|
8794
|
-
|
|
8795
|
-
|
|
8796
|
-
|
|
8797
|
-
|
|
8798
|
-
|
|
8799
|
-
|
|
8800
|
-
|
|
8801
|
-
|
|
8802
|
-
|
|
8803
|
-
|
|
8804
|
-
|
|
8805
|
-
|
|
8806
|
-
|
|
8807
|
-
|
|
8808
|
-
|
|
8809
|
-
|
|
8810
|
-
// if (someElementLinkStarted) setHoveredPort(p)
|
|
8811
|
-
// }}
|
|
8812
|
-
onMouseLeave: handlePortMouseLeave,
|
|
8813
|
-
// onManuallyTriggerRenderHandler={p.manuallyTriggerRenderHandler?.bind(p)}
|
|
8814
|
-
renderShape: p.renderShape });
|
|
8815
|
-
}), texts === null || texts === void 0 ? void 0 :
|
|
8816
|
-
texts.map(function (t, index) {
|
|
8817
|
-
var _a, _b;
|
|
8818
|
-
return React.createElement(Text$1, { id: t.id, key: index, content: t.content, x: ((_a = t.position) === null || _a === void 0 ? void 0 : _a.x) || 0, y: ((_b = t.position) === null || _b === void 0 ? void 0 : _b.y) || 0, width: t.size.width, height: t.size.height, editable: t.editable, align: t.align, fontSize: t.fontSize, border: t.border, container: container, style: t.style, parentAbsolutePosition: elementAbsPosition, onContentChanged: function (ev, newContent) { return onTextUpdated === null || onTextUpdated === void 0 ? void 0 : onTextUpdated(id, t.id, newContent); } });
|
|
8819
|
-
}),
|
|
8820
|
-
children));
|
|
8813
|
+
//log element render
|
|
8814
|
+
logger.debug('Rendering Element', id, x, y, width, height, cssClass, portPlaceholderShape, children, container, parentAbsolutePosition, textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition, textsPlaceHolderClassName, texts, portSlideRailSVGClassName, portMoveableAreas, portDirection, defaultPortSize);
|
|
8815
|
+
return (React.createElement(React.Fragment, null,
|
|
8816
|
+
React.createElement(ElementWrapper, { ref: elementRef, x: x, y: y, cssClass: cssClass, onClick: function (e) { return onClick ? onClick(id, e, elementRef.current) : true; }, onMouseMove: handleElementMouseMove, onMouseLeave: handleElementMouseLeave, onMouseDown: handleElementMouseDown, onMouseUp: handleElementMouseUp, onContextMenu: function (e) { return onContextMenu ? onContextMenu(id, e, elementRef.current) : true; } },
|
|
8817
|
+
renderedShape,
|
|
8818
|
+
potentialPortPosition && (portPlaceholderShape
|
|
8819
|
+
? React.createElement("svg", { x: potentialPortPosition.x, y: potentialPortPosition.y }, portPlaceholderShape)
|
|
8820
|
+
: React.createElement("rect", { x: potentialPortPosition.x - PORT_PLACEHOLDER_DEFAULT_STROKE_WIDTH / 2, y: potentialPortPosition.y - PORT_PLACEHOLDER_DEFAULT_STROKE_WIDTH / 2, width: PORT_PLACEHOLDER_DEFAULT_STROKE_WIDTH, height: PORT_PLACEHOLDER_DEFAULT_STROKE_WIDTH, rx: PORT_PLACEHOLDER_DEFAULT_SIZE, ry: PORT_PLACEHOLDER_DEFAULT_SIZE, stroke: PORT_PLACEHOLDER_DEFAULT_STROKE, fill: "none", strokeWidth: 3 })), ports === null || ports === void 0 ? void 0 :
|
|
8821
|
+
ports.map(function (p, index) {
|
|
8822
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
8823
|
+
return React.createElement(Port, { key: p.id, ref: p.ref, id: p.id, x: p.position.x, y: p.position.y, parentAbsolutePosition: elementAbsPosition, width: (_c = (_b = (_a = p.size) === null || _a === void 0 ? void 0 : _a.width) !== null && _b !== void 0 ? _b : defaultPortSize) !== null && _c !== void 0 ? _c : PORT_DEFAULT_SIZE, height: (_f = (_e = (_d = p.size) === null || _d === void 0 ? void 0 : _d.height) !== null && _e !== void 0 ? _e : defaultPortSize) !== null && _f !== void 0 ? _f : PORT_DEFAULT_SIZE, container: container,
|
|
8824
|
+
// rotation={rotatePort(p)}
|
|
8825
|
+
calculateRotationAngle: rotatePort, label: p.label, onPortLabelMoved: handlePortLabelMoved, onPortLabelResized: handlePortLabelResized, onPortLabelContentChanged: handlePortLabelContentChanged, onSelected: handleSelectedPort, onMouseDown: handlePortMouseDown, onMouseUp: handlePortMouseUp, onMouseMove: handlePortMouseMove,
|
|
8826
|
+
// onMouseEnter={() => {
|
|
8827
|
+
// if (someElementLinkStarted) setHoveredPort(p)
|
|
8828
|
+
// }}
|
|
8829
|
+
onMouseLeave: handlePortMouseLeave,
|
|
8830
|
+
// onManuallyTriggerRenderHandler={p.manuallyTriggerRenderHandler?.bind(p)}
|
|
8831
|
+
renderShape: p.renderShape },
|
|
8832
|
+
selectedPort && selectedPort.id === p.id && (hoveredPort === null || hoveredPort === void 0 ? void 0 : hoveredPort.id) !== p.id &&
|
|
8833
|
+
(React.createElement(SelectionFrame, { container: container, targetSVGElement: ((_g = selectedPort === null || selectedPort === void 0 ? void 0 : selectedPort.ref) === null || _g === void 0 ? void 0 : _g.current) || undefined, resizability: {
|
|
8834
|
+
enabled: false,
|
|
8835
|
+
keepRatio: false
|
|
8836
|
+
}, objectX: elementAbsPosition.x + selectedPort.position.x, objectY: elementAbsPosition.y + selectedPort.position.y, onMove: handlePortMove })),
|
|
8837
|
+
hoveredPort && hoveredPort.id === p.id && (React.createElement(SelectionFrame, { container: container, targetSVGElement: ((_h = hoveredPort === null || hoveredPort === void 0 ? void 0 : hoveredPort.ref) === null || _h === void 0 ? void 0 : _h.current) || undefined, resizability: {
|
|
8838
|
+
enabled: false,
|
|
8839
|
+
keepRatio: false
|
|
8840
|
+
} })));
|
|
8841
|
+
}), texts === null || texts === void 0 ? void 0 :
|
|
8842
|
+
texts.map(function (t, index) {
|
|
8843
|
+
var _a, _b;
|
|
8844
|
+
return React.createElement(Text$1, { id: t.id, key: index, content: t.content, x: ((_a = t.position) === null || _a === void 0 ? void 0 : _a.x) || 0, y: ((_b = t.position) === null || _b === void 0 ? void 0 : _b.y) || 0, width: t.size.width, height: t.size.height, editable: t.editable, align: t.align, fontSize: t.fontSize, border: t.border, container: container, style: t.style, parentAbsolutePosition: elementAbsPosition, onContentChanged: function (ev, newContent) { return onTextUpdated === null || onTextUpdated === void 0 ? void 0 : onTextUpdated(id, t.id, newContent); } });
|
|
8845
|
+
}),
|
|
8846
|
+
children)));
|
|
8821
8847
|
});
|
|
8822
8848
|
var Element$1 = React.memo(Element);
|
|
8823
8849
|
|
|
@@ -9140,7 +9166,7 @@ var Paper = function (props) {
|
|
|
9140
9166
|
var linksRef = React.useRef(links); //Cache links to avoid re-render when links changed
|
|
9141
9167
|
var textsRef = React.useRef(texts); //Cache texts to avoid re-render when texts changed
|
|
9142
9168
|
var size = props.size;
|
|
9143
|
-
var selectedElementAbsPosition = React.useMemo(function () { return selectedElement ? getAbsolutePosition(selectedElement) : null; }, [selectedElement]);
|
|
9169
|
+
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]);
|
|
9144
9170
|
React.useEffect(function () {
|
|
9145
9171
|
setElements(props.elements);
|
|
9146
9172
|
}, [props.elements]);
|
|
@@ -9160,7 +9186,7 @@ var Paper = function (props) {
|
|
|
9160
9186
|
return function () {
|
|
9161
9187
|
off();
|
|
9162
9188
|
};
|
|
9163
|
-
}, [props.onManuallyTriggerRenderElement, props.onElementsChanged, elements]);
|
|
9189
|
+
}, [props.onManuallyTriggerRenderElement, props.onElementsChanged, elements, selectedElement]);
|
|
9164
9190
|
//Cache elements to avoid re-render when elements changed
|
|
9165
9191
|
React.useEffect(function () {
|
|
9166
9192
|
elementsRef.current = elements;
|
|
@@ -9625,78 +9651,6 @@ var Paper = function (props) {
|
|
|
9625
9651
|
}
|
|
9626
9652
|
return element;
|
|
9627
9653
|
};
|
|
9628
|
-
//use selection frame
|
|
9629
|
-
useSelectionFrame({
|
|
9630
|
-
container: paperContainerRef.current,
|
|
9631
|
-
targetSVGElement: selectedElementSVG || undefined,
|
|
9632
|
-
resizability: (selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.resizability) || {
|
|
9633
|
-
enabled: true,
|
|
9634
|
-
keepRatio: true
|
|
9635
|
-
},
|
|
9636
|
-
x: selectedElementAbsPosition === null || selectedElementAbsPosition === void 0 ? void 0 : selectedElementAbsPosition.x,
|
|
9637
|
-
y: selectedElementAbsPosition === null || selectedElementAbsPosition === void 0 ? void 0 : selectedElementAbsPosition.y,
|
|
9638
|
-
width: selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.size.width,
|
|
9639
|
-
height: selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.size.height,
|
|
9640
|
-
//movingOffsetThreshold: ELEMENT_MOVING_OFFSET_THRESHOLD,
|
|
9641
|
-
onMouseDown: function (ev) {
|
|
9642
|
-
var _a;
|
|
9643
|
-
if (selectedElement) {
|
|
9644
|
-
(_a = props.onElementMouseDown) === null || _a === void 0 ? void 0 : _a.call(props, ev, selectedElement);
|
|
9645
|
-
}
|
|
9646
|
-
},
|
|
9647
|
-
onMouseUp: function (ev) {
|
|
9648
|
-
var _a;
|
|
9649
|
-
if (selectedElement) {
|
|
9650
|
-
(_a = props.onElementMouseUp) === null || _a === void 0 ? void 0 : _a.call(props, ev, selectedElement);
|
|
9651
|
-
}
|
|
9652
|
-
},
|
|
9653
|
-
onMove: function (newX, newY) {
|
|
9654
|
-
if (!selectedElement)
|
|
9655
|
-
return;
|
|
9656
|
-
var oldPosition = __assign({}, selectedElement.position);
|
|
9657
|
-
var newPosition = {
|
|
9658
|
-
x: newX,
|
|
9659
|
-
y: newY
|
|
9660
|
-
};
|
|
9661
|
-
logger.info("Element ".concat(selectedElement.id, " is dragging to position ").concat(JSON.stringify(newPosition)));
|
|
9662
|
-
//Adjust position of element if it should move as a port on parent port area
|
|
9663
|
-
if (selectedElement.moveAsPortOnParent && selectedElement.parentElement) {
|
|
9664
|
-
newPosition = adjustElementPositionOnParentPortArea(selectedElement, newPosition, true);
|
|
9665
|
-
updateElementPosition(selectedElement, newPosition.x, newPosition.y, true);
|
|
9666
|
-
}
|
|
9667
|
-
else {
|
|
9668
|
-
updateElementPosition(selectedElement, newPosition.x, newPosition.y, false);
|
|
9669
|
-
}
|
|
9670
|
-
//let newElementPosition = updateElementPosition(selectedElement, newPosition.x, newPosition.y, true)
|
|
9671
|
-
var indexSelectedElement = elements.findIndex(function (e) { return e.id === selectedElement.id; });
|
|
9672
|
-
logger.info("Element ".concat(selectedElement.id, " is moving to relative position ").concat(JSON.stringify(selectedElement.position)));
|
|
9673
|
-
//Set state to re-render UI with new position
|
|
9674
|
-
setElementsInTree(function (prev) { return __spreadArray([], prev, true); });
|
|
9675
|
-
if (props.onElementMoved) {
|
|
9676
|
-
props.onElementMoved(selectedElement.position, selectedElement, indexSelectedElement);
|
|
9677
|
-
}
|
|
9678
|
-
paperEventEmitter.emitElementMoved(selectedElement, oldPosition, selectedElement.position);
|
|
9679
|
-
setMouseDownedOnPaper(false);
|
|
9680
|
-
},
|
|
9681
|
-
onResize: function (width, height) {
|
|
9682
|
-
if (!selectedElement)
|
|
9683
|
-
return;
|
|
9684
|
-
var indexSelectedElement = elements.findIndex(function (e) { return e.id === selectedElement.id; });
|
|
9685
|
-
var oldSize = selectedElement.size;
|
|
9686
|
-
var newSize = { width: width, height: height };
|
|
9687
|
-
elements[indexSelectedElement].size = newSize;
|
|
9688
|
-
var newElements = __spreadArray([], elements, true);
|
|
9689
|
-
setElements(newElements);
|
|
9690
|
-
if (props.onElementsChanged) {
|
|
9691
|
-
props.onElementsChanged(newElements);
|
|
9692
|
-
}
|
|
9693
|
-
if (props.onElementResized) {
|
|
9694
|
-
props.onElementResized(newSize, selectedElement, indexSelectedElement);
|
|
9695
|
-
}
|
|
9696
|
-
paperEventEmitter.emitElementResized(selectedElement, oldSize, newSize);
|
|
9697
|
-
setMouseDownedOnPaper(false);
|
|
9698
|
-
}
|
|
9699
|
-
});
|
|
9700
9654
|
/*
|
|
9701
9655
|
Cache to avoid re-initializing the function when the component re-renders to
|
|
9702
9656
|
avoid causing the components using it to re-render unnecessarily
|
|
@@ -9845,13 +9799,75 @@ var Paper = function (props) {
|
|
|
9845
9799
|
return (React.createElement("g", { id: "group-of-element-".concat(element.id), key: element.id },
|
|
9846
9800
|
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,
|
|
9847
9801
|
// portPlaceholderShape={(<Circle x={0} y={0} width={10} height={10} fill='red' positioningAnchor={PositioningAnchor.Center} />)}
|
|
9848
|
-
onMouseUpAtLinkedPortPlaceholder: handleMouseUpAtLinkedPortPlaceholder, onTextUpdated: handleElementTextChange, onManuallyTriggerRenderPort: props.onManuallyTriggerRenderPort, textsPlaceHolderClassName: element.textsPlaceHolderClassName, textsPlaceHolderFlexStyle: element.textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition: element.textsPlaceHolderFlexboxPosition, parentAbsolutePosition: element.parentElement ? getAbsolutePosition(element.parentElement) : undefined },
|
|
9849
|
-
|
|
9802
|
+
onMouseUpAtLinkedPortPlaceholder: handleMouseUpAtLinkedPortPlaceholder, onTextUpdated: handleElementTextChange, onManuallyTriggerRenderPort: props.onManuallyTriggerRenderPort, textsPlaceHolderClassName: element.textsPlaceHolderClassName, textsPlaceHolderFlexStyle: element.textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition: element.textsPlaceHolderFlexboxPosition, parentAbsolutePosition: element.parentElement ? getAbsolutePosition(element.parentElement) : undefined },
|
|
9803
|
+
element.childrenElementsInTree && element.childrenElementsInTree.map(renderElementInTree),
|
|
9804
|
+
!!paperContainerRef.current && !!selectedElement && selectedElement.id === element.id &&
|
|
9805
|
+
React.createElement(SelectionFrame, { container: paperContainerRef.current, targetSVGElement: selectedElementSVG || undefined, resizability: (selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.resizability) || {
|
|
9806
|
+
enabled: true,
|
|
9807
|
+
keepRatio: true
|
|
9808
|
+
}, objectX: selectedElementAbsPosition === null || selectedElementAbsPosition === void 0 ? void 0 : selectedElementAbsPosition.x, objectY: 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,
|
|
9809
|
+
//movingOffsetThreshold: ELEMENT_MOVING_OFFSET_THRESHOLD,
|
|
9810
|
+
onMouseDown: function (ev) {
|
|
9811
|
+
var _a;
|
|
9812
|
+
if (selectedElement) {
|
|
9813
|
+
(_a = props.onElementMouseDown) === null || _a === void 0 ? void 0 : _a.call(props, ev, selectedElement);
|
|
9814
|
+
}
|
|
9815
|
+
}, onMouseUp: function (ev) {
|
|
9816
|
+
var _a;
|
|
9817
|
+
if (selectedElement) {
|
|
9818
|
+
(_a = props.onElementMouseUp) === null || _a === void 0 ? void 0 : _a.call(props, ev, selectedElement);
|
|
9819
|
+
}
|
|
9820
|
+
}, onMove: function (newX, newY) {
|
|
9821
|
+
if (!selectedElement)
|
|
9822
|
+
return;
|
|
9823
|
+
var oldPosition = __assign({}, selectedElement.position);
|
|
9824
|
+
var newPosition = {
|
|
9825
|
+
x: newX,
|
|
9826
|
+
y: newY
|
|
9827
|
+
};
|
|
9828
|
+
logger.info("Element ".concat(selectedElement.id, " is dragging to position ").concat(JSON.stringify(newPosition)));
|
|
9829
|
+
//Adjust position of element if it should move as a port on parent port area
|
|
9830
|
+
if (selectedElement.moveAsPortOnParent && selectedElement.parentElement) {
|
|
9831
|
+
newPosition = adjustElementPositionOnParentPortArea(selectedElement, newPosition, true);
|
|
9832
|
+
updateElementPosition(selectedElement, newPosition.x, newPosition.y, true);
|
|
9833
|
+
}
|
|
9834
|
+
else {
|
|
9835
|
+
updateElementPosition(selectedElement, newPosition.x, newPosition.y, false);
|
|
9836
|
+
}
|
|
9837
|
+
//let newElementPosition = updateElementPosition(selectedElement, newPosition.x, newPosition.y, true)
|
|
9838
|
+
var indexSelectedElement = elements.findIndex(function (e) { return e.id === selectedElement.id; });
|
|
9839
|
+
logger.info("Element ".concat(selectedElement.id, " is moving to relative position ").concat(JSON.stringify(selectedElement.position)));
|
|
9840
|
+
//Set state to re-render UI with new position
|
|
9841
|
+
setElementsInTree(function (prev) { return __spreadArray([], prev, true); });
|
|
9842
|
+
if (props.onElementMoved) {
|
|
9843
|
+
props.onElementMoved(selectedElement.position, selectedElement, indexSelectedElement);
|
|
9844
|
+
}
|
|
9845
|
+
paperEventEmitter.emitElementMoved(selectedElement, oldPosition, selectedElement.position);
|
|
9846
|
+
setMouseDownedOnPaper(false);
|
|
9847
|
+
}, onResize: function (width, height) {
|
|
9848
|
+
if (!selectedElement)
|
|
9849
|
+
return;
|
|
9850
|
+
var indexSelectedElement = elements.findIndex(function (e) { return e.id === selectedElement.id; });
|
|
9851
|
+
var oldSize = selectedElement.size;
|
|
9852
|
+
var newSize = { width: width, height: height };
|
|
9853
|
+
elements[indexSelectedElement].size = newSize;
|
|
9854
|
+
var newElements = __spreadArray([], elements, true);
|
|
9855
|
+
setElements(newElements);
|
|
9856
|
+
if (props.onElementsChanged) {
|
|
9857
|
+
props.onElementsChanged(newElements);
|
|
9858
|
+
}
|
|
9859
|
+
if (props.onElementResized) {
|
|
9860
|
+
props.onElementResized(newSize, selectedElement, indexSelectedElement);
|
|
9861
|
+
}
|
|
9862
|
+
paperEventEmitter.emitElementResized(selectedElement, oldSize, newSize);
|
|
9863
|
+
setMouseDownedOnPaper(false);
|
|
9864
|
+
} }))));
|
|
9865
|
+
}, [handleElementClicked, handleContextMenu, handlePortMoved, handlePortMouseDown, handlePortMouseUp, handleMouseUpAtLinkedPortPlaceholder, handleElementTextChange, handleMouseUp, handleMouseMove, handleMouseLeave, selectedElement, selectedElementAbsPosition]);
|
|
9850
9866
|
var ElementsInTree = React.useMemo(function () {
|
|
9851
9867
|
return elementsInTree.map(function (element, index) {
|
|
9852
9868
|
return renderElementInTree(element);
|
|
9853
9869
|
});
|
|
9854
|
-
}, [elementsInTree, renderElementInTree]);
|
|
9870
|
+
}, [elementsInTree, renderElementInTree, selectedElement]);
|
|
9855
9871
|
return (React.createElement("div", { style: { position: "relative" } },
|
|
9856
9872
|
React.createElement(Ruler, { squareSize: 100, border: '1px dashed grey' }),
|
|
9857
9873
|
React.createElement("svg", { tabIndex: 0, width: size.width, height: size.height, ref: paperContainerRef, id: "paper-container", onMouseMove: handlePaperMouseMove, onMouseDown: handleMouseDownOnPaper, onMouseUp: handleMouseUpOnPaper },
|