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 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 _a, _b;
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 _c = React.useState(propWidth || (bbox === null || bbox === void 0 ? void 0 : bbox.width) || MIN_ELEMENT_SIZE), width = _c[0], setWidth = _c[1];
1217
- var _d = React.useState(propHeight || (bbox === null || bbox === void 0 ? void 0 : bbox.height) || MIN_ELEMENT_SIZE), height = _d[0], setHeight = _d[1];
1218
- var _e = React.useState((_a = props.x) !== null && _a !== void 0 ? _a : 0), x = _e[0], setX = _e[1];
1219
- var _f = React.useState((_b = props.y) !== null && _b !== void 0 ? _b : 0), y = _f[0], setY = _f[1];
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 _g = React.useState(false), draggingRect = _g[0], setDraggingRect = _g[1];
1223
- var _h = React.useState(false), draggingCircle = _h[0], setDraggingCircle = _h[1];
1224
- var _j = React.useState(0), startX = _j[0], setStartX = _j[1];
1225
- var _k = React.useState(0), startY = _k[0], setStartY = _k[1];
1226
- var _l = React.useState(0), xFromMouse = _l[0], setXFromMouse = _l[1];
1227
- var _m = React.useState(0), yFromMouse = _m[0], setYFromMouse = _m[1];
1228
- var _o = React.useState(0), lastMoveTime = _o[0], setLastMoveTime = _o[1];
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 = x - mousePosition.x;
1246
- var yFromMouse_1 = y - mousePosition.y;
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
- setX(newX);
1263
- setY(newY);
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.targetSVGElement, props.container]);
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
- x: absolutePosition === null || absolutePosition === void 0 ? void 0 : absolutePosition.x,
1688
- y: absolutePosition === null || absolutePosition === void 0 ? void 0 : absolutePosition.y,
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", "stroke-width": "0.048" }),
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 _a, _b;
8393
- 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; props.textsPlaceHolderFlexStyle; props.textsPlaceHolderFlexboxPosition; props.textsPlaceHolderClassName; var 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;
8394
- var _c = React.useState(), selectedPort = _c[0], setSelectedPort = _c[1];
8395
- var _d = React.useState(), hoveredPort = _d[0], setHoveredPort = _d[1];
8396
- var _e = React.useState([]), ports = _e[0], setPorts = _e[1];
8397
- var _f = React.useState(false), someElementLinkStarted = _f[0], setSomeElementLinkStarted = _f[1];
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
- //use selection frame
8777
- useSelectionFrame({
8778
- container: container,
8779
- targetSVGElement: ((_a = selectedPort === null || selectedPort === void 0 ? void 0 : selectedPort.ref) === null || _a === void 0 ? void 0 : _a.current) || undefined,
8780
- resizability: {
8781
- enabled: false,
8782
- keepRatio: false
8783
- },
8784
- x: selectedPort ? elementAbsPosition.x + selectedPort.position.x : undefined,
8785
- y: selectedPort ? elementAbsPosition.y + selectedPort.position.y : undefined,
8786
- // width: selectedPort?.size.width,
8787
- // height: selectedPort?.size.height,
8788
- // movingOffsetThreshold: PORT_MOVING_OFFSET_THRESHOLD,
8789
- onMove: handlePortMove
8790
- });
8791
- useSelectionFrame({
8792
- container: container,
8793
- targetSVGElement: ((_b = hoveredPort === null || hoveredPort === void 0 ? void 0 : hoveredPort.ref) === null || _b === void 0 ? void 0 : _b.current) || undefined,
8794
- resizability: {
8795
- enabled: false,
8796
- keepRatio: false
8797
- },
8798
- });
8799
- return (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; } },
8800
- renderedShape,
8801
- potentialPortPosition && (portPlaceholderShape
8802
- ? React.createElement("svg", { x: potentialPortPosition.x, y: potentialPortPosition.y }, portPlaceholderShape)
8803
- : 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 :
8804
- ports.map(function (p, index) {
8805
- var _a, _b, _c, _d, _e, _f;
8806
- 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,
8807
- // rotation={rotatePort(p)}
8808
- calculateRotationAngle: rotatePort, label: p.label, onPortLabelMoved: handlePortLabelMoved, onPortLabelResized: handlePortLabelResized, onPortLabelContentChanged: handlePortLabelContentChanged, onSelected: handleSelectedPort, onMouseDown: handlePortMouseDown, onMouseUp: handlePortMouseUp, onMouseMove: handlePortMouseMove,
8809
- // onMouseEnter={() => {
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 }, element.childrenElementsInTree && element.childrenElementsInTree.map(renderElementInTree))));
9849
- }, [handleElementClicked, handleContextMenu, handlePortMoved, handlePortMouseDown, handlePortMouseUp, handleMouseUpAtLinkedPortPlaceholder, handleElementTextChange, handleMouseUp, handleMouseMove, handleMouseLeave]);
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 },
@@ -0,0 +1,2 @@
1
+ import { EditorContext } from "../models/implementations/EditorContext";
2
+ export declare const editorContext: EditorContext;