orcasvn-react-diagrams 0.1.22 → 0.1.24
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 +410 -164
- package/dist/cjs/types/components/editor.d.ts +5 -3
- package/dist/cjs/types/components/elements/element.d.ts +2 -2
- package/dist/cjs/types/components/elements/elementWrapper.d.ts +1 -0
- package/dist/cjs/types/components/paper.d.ts +5 -2
- package/dist/cjs/types/contexts/paperEventEmitterContext.d.ts +5 -1
- package/dist/cjs/types/mocks/editorContextForOptimizeRerender.d.ts +2 -0
- package/dist/cjs/types/mocks/editorContextSingleElement.d.ts +2 -0
- package/dist/cjs/types/models/IEditorContext.d.ts +3 -0
- package/dist/cjs/types/models/IElement.d.ts +1 -0
- package/dist/cjs/types/models/IElementProps.d.ts +3 -2
- package/dist/cjs/types/models/IPort.d.ts +2 -0
- package/dist/cjs/types/models/IPortProps.d.ts +5 -4
- package/dist/cjs/types/models/callbackTypes.d.ts +2 -0
- package/dist/cjs/types/models/implementations/EditorContext.d.ts +3 -0
- package/dist/cjs/types/models/implementations/Element.d.ts +1 -0
- package/dist/cjs/types/models/implementations/Port.d.ts +4 -0
- package/dist/cjs/types/utils/constants.d.ts +2 -0
- package/dist/esm/index.js +412 -166
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/components/editor.d.ts +5 -3
- package/dist/esm/types/components/elements/element.d.ts +2 -2
- package/dist/esm/types/components/elements/elementWrapper.d.ts +1 -0
- package/dist/esm/types/components/paper.d.ts +5 -2
- package/dist/esm/types/contexts/paperEventEmitterContext.d.ts +5 -1
- package/dist/esm/types/mocks/editorContextForOptimizeRerender.d.ts +2 -0
- package/dist/esm/types/mocks/editorContextSingleElement.d.ts +2 -0
- package/dist/esm/types/models/IEditorContext.d.ts +3 -0
- package/dist/esm/types/models/IElement.d.ts +1 -0
- package/dist/esm/types/models/IElementProps.d.ts +3 -2
- package/dist/esm/types/models/IPort.d.ts +2 -0
- package/dist/esm/types/models/IPortProps.d.ts +5 -4
- package/dist/esm/types/models/callbackTypes.d.ts +2 -0
- package/dist/esm/types/models/implementations/EditorContext.d.ts +3 -0
- package/dist/esm/types/models/implementations/Element.d.ts +1 -0
- package/dist/esm/types/models/implementations/Port.d.ts +4 -0
- package/dist/esm/types/utils/constants.d.ts +2 -0
- package/dist/index.d.ts +28 -9
- package/package.json +1 -1
package/dist/cjs/index.js
CHANGED
|
@@ -442,7 +442,8 @@ function generateUniqueId() {
|
|
|
442
442
|
return v4();
|
|
443
443
|
}
|
|
444
444
|
|
|
445
|
-
var
|
|
445
|
+
var MANUALLY_TRIGGER_RENDER$1 = 'manuallyTriggerRender';
|
|
446
|
+
var Element$2 = /** @class */ (function () {
|
|
446
447
|
function Element(x, y, width, height, cssClass, renderShape, texts, ports, portMovealeAreas, portSlideRailSVGClassName, portDirection, parentElement, textsPlaceHolderClassName, textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition) {
|
|
447
448
|
if (portMovealeAreas === void 0) { portMovealeAreas = []; }
|
|
448
449
|
this.resizability = {
|
|
@@ -468,9 +469,23 @@ var Element$1 = /** @class */ (function () {
|
|
|
468
469
|
}
|
|
469
470
|
Element.prototype.manuallyTriggerRender = function () {
|
|
470
471
|
//TODO: Implement this
|
|
472
|
+
this._eventEmitter.emit(MANUALLY_TRIGGER_RENDER$1);
|
|
473
|
+
};
|
|
474
|
+
Element.prototype.manuallyTriggerRenderHandler = function (callback) {
|
|
475
|
+
var _this = this;
|
|
476
|
+
//TODO: Implement this
|
|
477
|
+
this._eventEmitter.on(MANUALLY_TRIGGER_RENDER$1, callback);
|
|
478
|
+
var canceller = function () {
|
|
479
|
+
_this._eventEmitter.off(MANUALLY_TRIGGER_RENDER$1, callback);
|
|
480
|
+
};
|
|
481
|
+
return canceller;
|
|
471
482
|
};
|
|
472
483
|
Element.prototype.manuallyTriggerRenderPort = function (portId) {
|
|
473
484
|
//TODO: Implement this
|
|
485
|
+
var port = this.getPort(portId);
|
|
486
|
+
if (port) {
|
|
487
|
+
port.manuallyTriggerRender();
|
|
488
|
+
}
|
|
474
489
|
};
|
|
475
490
|
Object.defineProperty(Element.prototype, "id", {
|
|
476
491
|
get: function () {
|
|
@@ -657,9 +672,12 @@ var CustomShape = React$1.forwardRef(function (props, ref) {
|
|
|
657
672
|
return (React$1.createElement(ShapeWrapper, __assign({}, props, { ref: ref }), props.children));
|
|
658
673
|
});
|
|
659
674
|
|
|
675
|
+
var MANUALLY_TRIGGER_RENDER = 'manuallyTriggerRender';
|
|
660
676
|
var Port$1 = /** @class */ (function () {
|
|
661
677
|
function Port(x, y, label, shapeRenderer, width, height) {
|
|
662
678
|
var _this = this;
|
|
679
|
+
//internal properties
|
|
680
|
+
this._eventEmitter = new EventEmitter();
|
|
663
681
|
this._id = generateUniqueId();
|
|
664
682
|
this.position = { x: x, y: y };
|
|
665
683
|
if (!height) {
|
|
@@ -685,6 +703,18 @@ var Port$1 = /** @class */ (function () {
|
|
|
685
703
|
enumerable: false,
|
|
686
704
|
configurable: true
|
|
687
705
|
});
|
|
706
|
+
Port.prototype.manuallyTriggerRender = function () {
|
|
707
|
+
//TODO: Implement this
|
|
708
|
+
this._eventEmitter.emit(MANUALLY_TRIGGER_RENDER);
|
|
709
|
+
};
|
|
710
|
+
Port.prototype.manuallyTriggerRenderHandler = function (callback) {
|
|
711
|
+
var _this = this;
|
|
712
|
+
this._eventEmitter.on(MANUALLY_TRIGGER_RENDER, callback);
|
|
713
|
+
var canceller = function () {
|
|
714
|
+
_this._eventEmitter.off(MANUALLY_TRIGGER_RENDER, callback);
|
|
715
|
+
};
|
|
716
|
+
return canceller;
|
|
717
|
+
};
|
|
688
718
|
return Port;
|
|
689
719
|
}());
|
|
690
720
|
|
|
@@ -750,6 +780,9 @@ var Text$2 = /** @class */ (function () {
|
|
|
750
780
|
}());
|
|
751
781
|
|
|
752
782
|
var EVENT_PAPER_CLICKED = 'paperClicked';
|
|
783
|
+
var EVENT_PAPER_MOUSE_MOVED = 'paperMouseMoved';
|
|
784
|
+
var EVENT_PAPER_MOUSE_DOWN = 'paperMouseDown';
|
|
785
|
+
var EVENT_PAPER_MOUSE_UP = 'paperMouseUp';
|
|
753
786
|
var EVENT_PORT_MOVED = 'portMoved';
|
|
754
787
|
var EVENT_PORT_SELECTED = 'portSelected';
|
|
755
788
|
var EVENT_ELEMENT_CONTEXT_MENU = 'elementContextMenu';
|
|
@@ -825,6 +858,42 @@ var EditorContext = /** @class */ (function () {
|
|
|
825
858
|
EditorContext.prototype.onPaperClickedHandler = function (position) {
|
|
826
859
|
this._eventEmitter.emit(EVENT_PAPER_CLICKED, position);
|
|
827
860
|
};
|
|
861
|
+
EditorContext.prototype.onPaperMouseMoved = function (callback) {
|
|
862
|
+
var _this = this;
|
|
863
|
+
this._eventEmitter.on(EVENT_PAPER_CLICKED, callback);
|
|
864
|
+
var off = function () {
|
|
865
|
+
_this._eventEmitter.off(EVENT_PAPER_CLICKED, callback);
|
|
866
|
+
};
|
|
867
|
+
return off;
|
|
868
|
+
};
|
|
869
|
+
/** @internal */
|
|
870
|
+
EditorContext.prototype.onPaperMouseMovedHandler = function (position) {
|
|
871
|
+
this._eventEmitter.emit(EVENT_PAPER_MOUSE_MOVED, position);
|
|
872
|
+
};
|
|
873
|
+
EditorContext.prototype.onPaperMouseDown = function (callback) {
|
|
874
|
+
var _this = this;
|
|
875
|
+
this._eventEmitter.on(EVENT_PAPER_MOUSE_DOWN, callback);
|
|
876
|
+
var off = function () {
|
|
877
|
+
_this._eventEmitter.off(EVENT_PAPER_MOUSE_DOWN, callback);
|
|
878
|
+
};
|
|
879
|
+
return off;
|
|
880
|
+
};
|
|
881
|
+
/** @internal */
|
|
882
|
+
EditorContext.prototype.onPaperMouseDownHandler = function (position) {
|
|
883
|
+
this._eventEmitter.emit(EVENT_PAPER_MOUSE_DOWN, position);
|
|
884
|
+
};
|
|
885
|
+
EditorContext.prototype.onPaperMouseUp = function (callback) {
|
|
886
|
+
var _this = this;
|
|
887
|
+
this._eventEmitter.on(EVENT_PAPER_MOUSE_UP, callback);
|
|
888
|
+
var off = function () {
|
|
889
|
+
_this._eventEmitter.off(EVENT_PAPER_MOUSE_UP, callback);
|
|
890
|
+
};
|
|
891
|
+
return off;
|
|
892
|
+
};
|
|
893
|
+
/** @internal */
|
|
894
|
+
EditorContext.prototype.onPaperMouseUpHandler = function (position) {
|
|
895
|
+
this._eventEmitter.emit(EVENT_PAPER_MOUSE_UP, position);
|
|
896
|
+
};
|
|
828
897
|
EditorContext.prototype.onPortMoved = function (callback) {
|
|
829
898
|
var _this = this;
|
|
830
899
|
this._eventEmitter.on(EVENT_PORT_MOVED, callback);
|
|
@@ -923,9 +992,21 @@ var EditorContext = /** @class */ (function () {
|
|
|
923
992
|
};
|
|
924
993
|
EditorContext.prototype.triggerRenderElement = function (elementId) {
|
|
925
994
|
//TODO: to be implemented
|
|
995
|
+
var element = this.getElement(elementId);
|
|
996
|
+
if (element) {
|
|
997
|
+
element.manuallyTriggerRender();
|
|
998
|
+
}
|
|
926
999
|
};
|
|
927
1000
|
EditorContext.prototype.triggerRenderPort = function (portId, elementId) {
|
|
1001
|
+
var _a;
|
|
928
1002
|
//TODO: to be implemented
|
|
1003
|
+
var element = this.getElement(elementId);
|
|
1004
|
+
if (element) {
|
|
1005
|
+
var port = (_a = element.ports) === null || _a === void 0 ? void 0 : _a.find(function (p) { return p.id === portId; });
|
|
1006
|
+
if (port) {
|
|
1007
|
+
port.manuallyTriggerRender();
|
|
1008
|
+
}
|
|
1009
|
+
}
|
|
929
1010
|
};
|
|
930
1011
|
return EditorContext;
|
|
931
1012
|
}());
|
|
@@ -1046,11 +1127,13 @@ var EVENT_NAME = {
|
|
|
1046
1127
|
ELEMENT_RESIZED: 'element_resized',
|
|
1047
1128
|
ELEMENT_DELETED: 'element_deleted',
|
|
1048
1129
|
ELEMENT_SELECTED: 'element_selected',
|
|
1130
|
+
COMMAND_RENDER_ELEMENT: 'command_render_element',
|
|
1049
1131
|
//PORT
|
|
1050
1132
|
PORT_MOUSE_DOWN: 'port_mouse_down',
|
|
1051
1133
|
PORT_MOUSE_UP: 'port_mouse_up',
|
|
1052
1134
|
PORT_MOVED: 'port_moved',
|
|
1053
1135
|
PORT_SELECTED: 'port_selected',
|
|
1136
|
+
COMMAND_RENDER_PORT: 'command_render_port',
|
|
1054
1137
|
//COMMAND
|
|
1055
1138
|
COMMAND_DELETE_SELECTED_PORT: 'command_delete_selected_port',
|
|
1056
1139
|
COMMAND_DELETE_SELECTED_LINK: 'command_delete_selected_link',
|
|
@@ -1123,7 +1206,7 @@ var SelectionFrame = function (props) {
|
|
|
1123
1206
|
if (Date.now() - lastMoveTime < (props.movingRate || 0)) {
|
|
1124
1207
|
return;
|
|
1125
1208
|
}
|
|
1126
|
-
console.info('Selection frame moved by: ', offsetX, offsetY);
|
|
1209
|
+
// console.info('Selection frame moved by: ', offsetX, offsetY);
|
|
1127
1210
|
if (props.onMove) {
|
|
1128
1211
|
props.onMove(offsetX, offsetY);
|
|
1129
1212
|
setLastMoveTime(Date.now());
|
|
@@ -1399,6 +1482,18 @@ var onElementSelected = function (callback) {
|
|
|
1399
1482
|
off: off
|
|
1400
1483
|
};
|
|
1401
1484
|
};
|
|
1485
|
+
var emitCommandRenderElement = function (elementId) {
|
|
1486
|
+
eventEmitter.emit(EVENT_NAME.COMMAND_RENDER_ELEMENT, elementId);
|
|
1487
|
+
};
|
|
1488
|
+
var onCommandRenderElement = function (callback) {
|
|
1489
|
+
eventEmitter.on(EVENT_NAME.COMMAND_RENDER_ELEMENT, callback);
|
|
1490
|
+
var off = function () {
|
|
1491
|
+
eventEmitter.off(EVENT_NAME.COMMAND_RENDER_ELEMENT, callback);
|
|
1492
|
+
};
|
|
1493
|
+
return {
|
|
1494
|
+
off: off
|
|
1495
|
+
};
|
|
1496
|
+
};
|
|
1402
1497
|
var emitPortSelected = function (port, elementId) {
|
|
1403
1498
|
eventEmitter.emit(EVENT_NAME.PORT_SELECTED, port, elementId);
|
|
1404
1499
|
};
|
|
@@ -1411,6 +1506,18 @@ var onPortSelected = function (callback) {
|
|
|
1411
1506
|
off: off
|
|
1412
1507
|
};
|
|
1413
1508
|
};
|
|
1509
|
+
var emitCommandRenderPort = function (portId, elementId) {
|
|
1510
|
+
eventEmitter.emit(EVENT_NAME.COMMAND_RENDER_PORT, portId, elementId);
|
|
1511
|
+
};
|
|
1512
|
+
var onCommandRenderPort = function (callback) {
|
|
1513
|
+
eventEmitter.on(EVENT_NAME.COMMAND_RENDER_PORT, callback);
|
|
1514
|
+
var off = function () {
|
|
1515
|
+
eventEmitter.off(EVENT_NAME.COMMAND_RENDER_PORT, callback);
|
|
1516
|
+
};
|
|
1517
|
+
return {
|
|
1518
|
+
off: off
|
|
1519
|
+
};
|
|
1520
|
+
};
|
|
1414
1521
|
var emitTextSelected = function (text) {
|
|
1415
1522
|
eventEmitter.emit(EVENT_NAME.TEXT_SELECTED, text);
|
|
1416
1523
|
};
|
|
@@ -1441,6 +1548,8 @@ var paperEventEmitterContext = React$1.createContext({
|
|
|
1441
1548
|
onElementResized: onElementResized,
|
|
1442
1549
|
emitElementSelected: emitElementSelected,
|
|
1443
1550
|
onElementSelected: onElementSelected,
|
|
1551
|
+
emitCommandRenderElement: emitCommandRenderElement,
|
|
1552
|
+
onCommandRenderElement: onCommandRenderElement,
|
|
1444
1553
|
emitCommandDeleteSelectedPort: emitCommandDeleteSelectedPort,
|
|
1445
1554
|
onCommandDeleteSelectedPort: onCommandDeleteSelectedPort,
|
|
1446
1555
|
emitCommandDeleteSelectedElement: emitCommandDeleteSelectedElement,
|
|
@@ -1455,6 +1564,8 @@ var paperEventEmitterContext = React$1.createContext({
|
|
|
1455
1564
|
onElementLinkEnded: onElementLinkEnded,
|
|
1456
1565
|
emitTextSelected: emitTextSelected,
|
|
1457
1566
|
onTextSelected: onTextSelected,
|
|
1567
|
+
emitCommandRenderPort: emitCommandRenderPort,
|
|
1568
|
+
onCommandRenderPort: onCommandRenderPort,
|
|
1458
1569
|
});
|
|
1459
1570
|
|
|
1460
1571
|
var Text = React$1.forwardRef(function (_a, ref) {
|
|
@@ -1587,17 +1698,29 @@ var Text = React$1.forwardRef(function (_a, ref) {
|
|
|
1587
1698
|
var Text$1 = React$1.memo(Text);
|
|
1588
1699
|
|
|
1589
1700
|
var Port1 = React$1.forwardRef(function (props, ref) {
|
|
1590
|
-
var id = props.id, x = props.x, y = props.y, width = props.width, height = props.height, container = props.container, label = props.label, 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, renderShape = props.renderShape;
|
|
1701
|
+
var id = props.id, x = props.x, y = props.y, width = props.width, height = props.height, container = props.container, label = props.label, 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, onManuallyTriggerRenderHandler = props.onManuallyTriggerRenderHandler, renderShape = props.renderShape;
|
|
1702
|
+
var _a = React$1.useState(false); _a[0]; var setUpdated = _a[1];
|
|
1591
1703
|
var textRef = React$1.useRef(null);
|
|
1704
|
+
React$1.useEffect(function () {
|
|
1705
|
+
var off = onManuallyTriggerRenderHandler === null || onManuallyTriggerRenderHandler === void 0 ? void 0 : onManuallyTriggerRenderHandler(function () {
|
|
1706
|
+
setUpdated(function (prev) { return !prev; });
|
|
1707
|
+
});
|
|
1708
|
+
return function () {
|
|
1709
|
+
off === null || off === void 0 ? void 0 : off();
|
|
1710
|
+
};
|
|
1711
|
+
}, []);
|
|
1592
1712
|
var rotationAngle = React$1.useMemo(function () {
|
|
1593
1713
|
if (!calculateRotationAngle)
|
|
1594
1714
|
return 0;
|
|
1595
1715
|
return calculateRotationAngle(x, y);
|
|
1596
1716
|
}, [calculateRotationAngle, x, y]);
|
|
1717
|
+
React$1.useEffect(function () {
|
|
1718
|
+
console.info('Testing - rendering Port ' + id);
|
|
1719
|
+
});
|
|
1597
1720
|
var renderLabel = function (label) {
|
|
1598
1721
|
var content = label.content, size = label.size;
|
|
1599
1722
|
var position = label.position || PORT_LABEL_POSITION;
|
|
1600
|
-
return React$1.createElement(Text$1, { id: label.id, ref: textRef, x: x + position.x, y: y + position.y, width: size.width, height: size.height, content: content, fontSize: label.fontSize, border: label.border, container: container, onMoved: onPortLabelMoved, onResized: onPortLabelResized, onContentChanged: onPortLabelContentChanged });
|
|
1723
|
+
return React$1.createElement(Text$1, { id: label.id, ref: textRef, x: x + position.x, y: y + position.y, width: size.width, height: size.height, content: content, fontSize: label.fontSize, border: label.border, container: container, onMoved: function (x, y) { return onPortLabelMoved === null || onPortLabelMoved === void 0 ? void 0 : onPortLabelMoved(x, y, id); }, onResized: function (width, height) { return onPortLabelResized === null || onPortLabelResized === void 0 ? void 0 : onPortLabelResized(width, height, id); }, onContentChanged: function (ev, newValue) { return onPortLabelContentChanged === null || onPortLabelContentChanged === void 0 ? void 0 : onPortLabelContentChanged(ev, newValue, id); } });
|
|
1601
1724
|
};
|
|
1602
1725
|
var renderedShape = React$1.useMemo(function () {
|
|
1603
1726
|
if (renderShape) {
|
|
@@ -1605,7 +1728,7 @@ var Port1 = React$1.forwardRef(function (props, ref) {
|
|
|
1605
1728
|
return (React$1.createElement(RenderShape, __assign({ ref: ref }, props, { rotation: rotationAngle })));
|
|
1606
1729
|
}
|
|
1607
1730
|
else {
|
|
1608
|
-
return React$1.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: onMouseMove, 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" });
|
|
1731
|
+
return React$1.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" });
|
|
1609
1732
|
}
|
|
1610
1733
|
}, [props]);
|
|
1611
1734
|
return (React$1.createElement(React$1.Fragment, null,
|
|
@@ -7798,7 +7921,7 @@ var Ruler = function (_a) {
|
|
|
7798
7921
|
};
|
|
7799
7922
|
|
|
7800
7923
|
var ElementWrapper = React$1.forwardRef(function (_a, ref) {
|
|
7801
|
-
var x = _a.x, y = _a.y, children = _a.children; _a.portPlaceholders; _a.ports; var onClick = _a.onClick, onContextMenu = _a.onContextMenu, onMouseMove = _a.onMouseMove, onMouseLeave = _a.onMouseLeave, onMouseUp = _a.onMouseUp;
|
|
7924
|
+
var x = _a.x, y = _a.y, cssClass = _a.cssClass, children = _a.children; _a.portPlaceholders; _a.ports; var onClick = _a.onClick, onContextMenu = _a.onContextMenu, onMouseMove = _a.onMouseMove, onMouseLeave = _a.onMouseLeave, onMouseUp = _a.onMouseUp;
|
|
7802
7925
|
var handleMouseDown = function (ev) {
|
|
7803
7926
|
ev.stopPropagation();
|
|
7804
7927
|
};
|
|
@@ -7812,7 +7935,7 @@ var ElementWrapper = React$1.forwardRef(function (_a, ref) {
|
|
|
7812
7935
|
onContextMenu(ev);
|
|
7813
7936
|
}
|
|
7814
7937
|
};
|
|
7815
|
-
return (React$1.createElement("svg", { x: x, y: y, onClick: handleClick, onContextMenu: handleClick, onMouseDown: handleMouseDown, ref: ref, style: { overflow: "visible" }, onMouseMove: onMouseMove, onMouseLeave: onMouseLeave, onMouseUp: onMouseUp }, children));
|
|
7938
|
+
return (React$1.createElement("svg", { className: cssClass, x: x, y: y, onClick: handleClick, onContextMenu: handleClick, onMouseDown: handleMouseDown, ref: ref, style: { overflow: "visible" }, onMouseMove: onMouseMove, onMouseLeave: onMouseLeave, onMouseUp: onMouseUp }, children));
|
|
7816
7939
|
});
|
|
7817
7940
|
|
|
7818
7941
|
// Calculate the position of the 4 vertices of a rectangle relative to its parent svg
|
|
@@ -9082,34 +9205,62 @@ var Flexbox$1 = /*@__PURE__*/getDefaultExportFromCjs(bundleExports);
|
|
|
9082
9205
|
|
|
9083
9206
|
var Element = function (props) {
|
|
9084
9207
|
var _a, _b, _c;
|
|
9085
|
-
var id = props.id, x = props.x, y = props.y, width = props.width, height = props.height, portPlaceholderShape = props.portPlaceholderShape, children = props.children, container = props.container, 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; props.onMouseMove; props.onMouseLeave; props.onMouseUp; var onMouseUpAtLinkedPortPlaceholder = props.onMouseUpAtLinkedPortPlaceholder, onTextUpdated = props.onTextUpdated;
|
|
9208
|
+
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, onManuallyTriggerRenderHandler = props.onManuallyTriggerRenderHandler, 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; props.onMouseMove; props.onMouseLeave; props.onMouseUp; var onMouseUpAtLinkedPortPlaceholder = props.onMouseUpAtLinkedPortPlaceholder, onTextUpdated = props.onTextUpdated;
|
|
9086
9209
|
var _d = React$1.useState(), selectedPort = _d[0], setSelectedPort = _d[1];
|
|
9087
9210
|
var _e = React$1.useState(), hoveredPort = _e[0], setHoveredPort = _e[1];
|
|
9088
|
-
var _f = React$1.useState((
|
|
9089
|
-
return __assign(__assign({}, p), { id: p.id, ref: React$1.createRef() });
|
|
9090
|
-
})) !== null && _b !== void 0 ? _b : []), ports = _f[0], setPorts = _f[1];
|
|
9211
|
+
var _f = React$1.useState((_a = props.ports) !== null && _a !== void 0 ? _a : []), ports = _f[0], setPorts = _f[1];
|
|
9091
9212
|
var _g = React$1.useState(false), someElementLinkStarted = _g[0], setSomeElementLinkStarted = _g[1];
|
|
9092
9213
|
var _h = React$1.useState(), potentialPortPosition = _h[0], setPotentialPortPosition = _h[1];
|
|
9214
|
+
var _j = React$1.useState(false); _j[0]; var setUpdated = _j[1];
|
|
9093
9215
|
var _paperEventEmitterContext = React$1.useContext(paperEventEmitterContext);
|
|
9094
9216
|
var elementRef = React$1.useRef(null);
|
|
9095
9217
|
var elementLinkStarted = React$1.useRef();
|
|
9218
|
+
var portsRef = React$1.useRef(ports);
|
|
9219
|
+
//Listen to manually trigger render event
|
|
9220
|
+
React$1.useEffect(function () {
|
|
9221
|
+
var off = onManuallyTriggerRenderHandler === null || onManuallyTriggerRenderHandler === void 0 ? void 0 : onManuallyTriggerRenderHandler(function () {
|
|
9222
|
+
console.log('Manually trigger render element', id);
|
|
9223
|
+
setUpdated(function (prev) { return !prev; });
|
|
9224
|
+
});
|
|
9225
|
+
return function () {
|
|
9226
|
+
off === null || off === void 0 ? void 0 : off();
|
|
9227
|
+
};
|
|
9228
|
+
}, []);
|
|
9229
|
+
//Update portsRef when ports changed
|
|
9230
|
+
React$1.useEffect(function () {
|
|
9231
|
+
portsRef.current = ports;
|
|
9232
|
+
}, [ports]);
|
|
9233
|
+
React$1.useEffect(function () {
|
|
9234
|
+
var _a;
|
|
9235
|
+
console.info('Rendering Element ' + id + ' with text ' + ((_a = texts === null || texts === void 0 ? void 0 : texts[0]) === null || _a === void 0 ? void 0 : _a.content));
|
|
9236
|
+
});
|
|
9096
9237
|
//Listen a new port is created, after add new port to ports state
|
|
9097
9238
|
React$1.useEffect(function () {
|
|
9239
|
+
console.info('Ports changed', props.ports);
|
|
9098
9240
|
setPorts(function (prev) {
|
|
9099
9241
|
var _a, _b;
|
|
9100
9242
|
return (_b = (_a = props.ports) === null || _a === void 0 ? void 0 : _a.map(function (p, index) {
|
|
9101
|
-
var
|
|
9102
|
-
var
|
|
9103
|
-
//
|
|
9104
|
-
if (
|
|
9105
|
-
|
|
9106
|
-
|
|
9107
|
-
|
|
9108
|
-
|
|
9109
|
-
|
|
9243
|
+
var prevPortState = prev.find(function (_p) { return _p.id === p.id; });
|
|
9244
|
+
var newPortState;
|
|
9245
|
+
//If port is existed, keep the ref of the port
|
|
9246
|
+
if (prevPortState) {
|
|
9247
|
+
newPortState = prevPortState;
|
|
9248
|
+
}
|
|
9249
|
+
else {
|
|
9250
|
+
newPortState = p;
|
|
9251
|
+
}
|
|
9252
|
+
//Handle the case new port is created and the ref of the port is not defined
|
|
9253
|
+
if (!newPortState.ref) {
|
|
9254
|
+
var newPosition = normalizePortPosition(newPortState.position);
|
|
9255
|
+
onPortMoved === null || onPortMoved === void 0 ? void 0 : onPortMoved(p, id, newPortState.position, newPosition);
|
|
9256
|
+
_paperEventEmitterContext.emitPortMoved(p, id, newPortState.position, newPosition);
|
|
9257
|
+
newPortState.position = newPosition;
|
|
9258
|
+
newPortState.ref = React$1.createRef();
|
|
9259
|
+
}
|
|
9260
|
+
return newPortState;
|
|
9110
9261
|
})) !== null && _b !== void 0 ? _b : [];
|
|
9111
9262
|
});
|
|
9112
|
-
}, [
|
|
9263
|
+
}, [props.ports]);
|
|
9113
9264
|
//Listen trigger of Delete key, handle delete port is selected
|
|
9114
9265
|
React$1.useEffect(function () {
|
|
9115
9266
|
var listener = _paperEventEmitterContext.onCommandDeleteSelectedPort(function () {
|
|
@@ -9129,7 +9280,7 @@ var Element = function (props) {
|
|
|
9129
9280
|
});
|
|
9130
9281
|
//listen element resize to update position of the ports by element size.
|
|
9131
9282
|
var eleResizeListener = _paperEventEmitterContext.onElementResized(id, function () {
|
|
9132
|
-
var newPorts =
|
|
9283
|
+
var newPorts = portsRef.current.map(function (port) {
|
|
9133
9284
|
var newPosition = normalizePortPosition({ x: port.position.x, y: port.position.y });
|
|
9134
9285
|
//Check port moved
|
|
9135
9286
|
if (port.position.x !== newPosition.x || port.position.y !== newPosition.y) {
|
|
@@ -9144,7 +9295,7 @@ var Element = function (props) {
|
|
|
9144
9295
|
eventListener.off();
|
|
9145
9296
|
eleResizeListener.off();
|
|
9146
9297
|
};
|
|
9147
|
-
}, [
|
|
9298
|
+
}, [onPortMoved]);
|
|
9148
9299
|
//Listen creating element link started, ended.
|
|
9149
9300
|
React$1.useEffect(function () {
|
|
9150
9301
|
var elementStartedListener = _paperEventEmitterContext.onElementLinkStarted(function (tempLink) {
|
|
@@ -9191,11 +9342,14 @@ var Element = function (props) {
|
|
|
9191
9342
|
portSelectedListener.off();
|
|
9192
9343
|
};
|
|
9193
9344
|
}, []);
|
|
9194
|
-
var handleSelectedPort = function (
|
|
9345
|
+
var handleSelectedPort = React$1.useCallback(function (portId, e) {
|
|
9195
9346
|
e.stopPropagation();
|
|
9347
|
+
var port = portsRef.current.find(function (p) { return p.id === portId; });
|
|
9348
|
+
if (!port)
|
|
9349
|
+
return;
|
|
9196
9350
|
setSelectedPort(port);
|
|
9197
9351
|
_paperEventEmitterContext.emitPortSelected(port, id);
|
|
9198
|
-
};
|
|
9352
|
+
}, [_paperEventEmitterContext]);
|
|
9199
9353
|
//From one point find another point on the line segment so that the distance between the two points is the shortest.
|
|
9200
9354
|
var findNearestPointOnSegment = function (position, linePoints) {
|
|
9201
9355
|
var beginPosition = linePoints[0], endPosition = linePoints[1];
|
|
@@ -9313,67 +9467,72 @@ var Element = function (props) {
|
|
|
9313
9467
|
if (newPosition) {
|
|
9314
9468
|
selectedPort.position = newPosition;
|
|
9315
9469
|
onPortMoved === null || onPortMoved === void 0 ? void 0 : onPortMoved(selectedPort, id, oldPosition, newPosition);
|
|
9316
|
-
setPorts(__spreadArray([],
|
|
9470
|
+
setPorts(__spreadArray([], portsRef.current, true));
|
|
9317
9471
|
_paperEventEmitterContext.emitPortMoved(selectedPort, id, oldPosition, newPosition);
|
|
9318
9472
|
}
|
|
9319
9473
|
};
|
|
9320
9474
|
//Handle when mouse down on port
|
|
9321
|
-
var handlePortMouseDown = function (portId, e) {
|
|
9475
|
+
var handlePortMouseDown = React$1.useCallback(function (portId, e) {
|
|
9322
9476
|
e.stopPropagation();
|
|
9323
|
-
var port =
|
|
9477
|
+
var port = portsRef.current.find(function (p) { return p.id === portId; });
|
|
9478
|
+
if (!port)
|
|
9479
|
+
return;
|
|
9324
9480
|
_paperEventEmitterContext.emitPortMouseDown(e, port, id);
|
|
9325
9481
|
onPortMouseDown === null || onPortMouseDown === void 0 ? void 0 : onPortMouseDown(e, port, id);
|
|
9326
|
-
};
|
|
9482
|
+
}, [_paperEventEmitterContext]);
|
|
9327
9483
|
//Handle when mouse up on port
|
|
9328
|
-
var handlePortMouseUp = function (portId, e) {
|
|
9484
|
+
var handlePortMouseUp = React$1.useCallback(function (portId, e) {
|
|
9329
9485
|
e.stopPropagation();
|
|
9330
|
-
var port =
|
|
9486
|
+
var port = portsRef.current.find(function (p) { return p.id === portId; });
|
|
9487
|
+
if (!port)
|
|
9488
|
+
return;
|
|
9331
9489
|
_paperEventEmitterContext.emitPortMouseUp(e, port, id);
|
|
9332
9490
|
onPortMouseUp === null || onPortMouseUp === void 0 ? void 0 : onPortMouseUp(e, port, id);
|
|
9333
9491
|
//Remove port placeholder if mouse up on port
|
|
9334
9492
|
if (potentialPortPosition) {
|
|
9335
9493
|
setPotentialPortPosition(undefined);
|
|
9336
9494
|
}
|
|
9337
|
-
};
|
|
9495
|
+
}, [_paperEventEmitterContext, potentialPortPosition]);
|
|
9338
9496
|
//Update state when label of port is moved
|
|
9339
|
-
var handlePortLabelMoved = function (offsetX, offsetY,
|
|
9340
|
-
if (!port.label)
|
|
9341
|
-
return;
|
|
9342
|
-
var labelPos = port.label.position || PORT_LABEL_POSITION;
|
|
9497
|
+
var handlePortLabelMoved = React$1.useCallback(function (offsetX, offsetY, portId) {
|
|
9343
9498
|
setPorts(function (prevPorts) {
|
|
9344
|
-
|
|
9345
|
-
|
|
9346
|
-
|
|
9347
|
-
|
|
9348
|
-
|
|
9349
|
-
|
|
9350
|
-
|
|
9499
|
+
return prevPorts.map(function (p) {
|
|
9500
|
+
if (p.id === portId && p.label) {
|
|
9501
|
+
if (!p.label.position) {
|
|
9502
|
+
p.label.position = PORT_LABEL_POSITION;
|
|
9503
|
+
}
|
|
9504
|
+
p.label.position.x += offsetX;
|
|
9505
|
+
p.label.position.y += offsetY;
|
|
9506
|
+
}
|
|
9507
|
+
return p;
|
|
9508
|
+
});
|
|
9351
9509
|
});
|
|
9352
|
-
};
|
|
9510
|
+
}, []);
|
|
9353
9511
|
//Update state when label of port is resized
|
|
9354
|
-
var handlePortLabelResized = function (width, height,
|
|
9355
|
-
if (!port.label)
|
|
9356
|
-
return;
|
|
9512
|
+
var handlePortLabelResized = React$1.useCallback(function (width, height, portId) {
|
|
9357
9513
|
setPorts(function (prevPorts) {
|
|
9358
|
-
|
|
9359
|
-
|
|
9360
|
-
|
|
9361
|
-
|
|
9362
|
-
|
|
9363
|
-
|
|
9364
|
-
|
|
9514
|
+
return prevPorts.map(function (p) {
|
|
9515
|
+
if (p.id === portId && p.label) {
|
|
9516
|
+
p.label.size = {
|
|
9517
|
+
width: width,
|
|
9518
|
+
height: height
|
|
9519
|
+
};
|
|
9520
|
+
}
|
|
9521
|
+
return p;
|
|
9522
|
+
});
|
|
9365
9523
|
});
|
|
9366
|
-
};
|
|
9524
|
+
}, []);
|
|
9367
9525
|
//Update state when label of port is changed content
|
|
9368
|
-
var handlePortLabelContentChanged = function (
|
|
9369
|
-
if (!port.label)
|
|
9370
|
-
return;
|
|
9526
|
+
var handlePortLabelContentChanged = React$1.useCallback(function (ev, newValue, portId) {
|
|
9371
9527
|
setPorts(function (prevPorts) {
|
|
9372
|
-
|
|
9373
|
-
|
|
9374
|
-
|
|
9528
|
+
return prevPorts.map(function (p) {
|
|
9529
|
+
if (p.id === portId && p.label) {
|
|
9530
|
+
p.label.content = newValue;
|
|
9531
|
+
}
|
|
9532
|
+
return p;
|
|
9533
|
+
});
|
|
9375
9534
|
});
|
|
9376
|
-
};
|
|
9535
|
+
}, []);
|
|
9377
9536
|
function handleElementMouseMove(ev) {
|
|
9378
9537
|
//ev.stopPropagation(); //Can't use stopPropagation here, because do not create tempLink
|
|
9379
9538
|
if (someElementLinkStarted && elementRef.current) {
|
|
@@ -9419,10 +9578,24 @@ var Element = function (props) {
|
|
|
9419
9578
|
//If an element link is being created, trigger onMouseUpAtLinkedPortPlaceholder when the mouse up the element.
|
|
9420
9579
|
if (potentialPortPosition && elementLinkStarted.current) {
|
|
9421
9580
|
var newElementLink = __assign(__assign({}, elementLinkStarted.current), { tempTargetPosition: undefined });
|
|
9422
|
-
onMouseUpAtLinkedPortPlaceholder === null || onMouseUpAtLinkedPortPlaceholder === void 0 ? void 0 : onMouseUpAtLinkedPortPlaceholder(newElementLink, potentialPortPosition);
|
|
9581
|
+
onMouseUpAtLinkedPortPlaceholder === null || onMouseUpAtLinkedPortPlaceholder === void 0 ? void 0 : onMouseUpAtLinkedPortPlaceholder(newElementLink, potentialPortPosition, id);
|
|
9423
9582
|
elementLinkStarted.current = undefined;
|
|
9424
9583
|
}
|
|
9425
9584
|
};
|
|
9585
|
+
//Handle when mouse move on port
|
|
9586
|
+
var handlePortMouseMove = React$1.useCallback(function (portId) {
|
|
9587
|
+
if (someElementLinkStarted) {
|
|
9588
|
+
var port = portsRef.current.find(function (p) { return p.id === portId; });
|
|
9589
|
+
if (!port)
|
|
9590
|
+
return;
|
|
9591
|
+
setHoveredPort(port);
|
|
9592
|
+
}
|
|
9593
|
+
}, [someElementLinkStarted]);
|
|
9594
|
+
//Handle when mouse leave on port
|
|
9595
|
+
var handlePortMouseLeave = React$1.useCallback(function () {
|
|
9596
|
+
if (someElementLinkStarted)
|
|
9597
|
+
setHoveredPort(undefined);
|
|
9598
|
+
}, [someElementLinkStarted]);
|
|
9426
9599
|
//Get rotate angle of port by port direction is defined.
|
|
9427
9600
|
var rotatePort = React$1.useCallback(function (x, y) {
|
|
9428
9601
|
// console.info('calculating port rotation', x, y)
|
|
@@ -9468,7 +9641,7 @@ var Element = function (props) {
|
|
|
9468
9641
|
if (renderShape)
|
|
9469
9642
|
return renderShape(props);
|
|
9470
9643
|
return null;
|
|
9471
|
-
}, [props]);
|
|
9644
|
+
}, [props, renderShape]);
|
|
9472
9645
|
//Re-render port again after rendered to automation rotate port
|
|
9473
9646
|
//Because elementRef.current equals null in first render so automation rotate port is incorrect.
|
|
9474
9647
|
//TODO: check if this is still needed -> Still needed
|
|
@@ -9480,7 +9653,7 @@ var Element = function (props) {
|
|
|
9480
9653
|
//use selection frame
|
|
9481
9654
|
useSelectionFrame({
|
|
9482
9655
|
container: container,
|
|
9483
|
-
targetSVGElement: (selectedPort === null || selectedPort === void 0 ? void 0 : selectedPort.ref.current) || undefined,
|
|
9656
|
+
targetSVGElement: ((_b = selectedPort === null || selectedPort === void 0 ? void 0 : selectedPort.ref) === null || _b === void 0 ? void 0 : _b.current) || undefined,
|
|
9484
9657
|
resizability: {
|
|
9485
9658
|
enabled: false,
|
|
9486
9659
|
keepRatio: false
|
|
@@ -9492,40 +9665,34 @@ var Element = function (props) {
|
|
|
9492
9665
|
});
|
|
9493
9666
|
useSelectionFrame({
|
|
9494
9667
|
container: container,
|
|
9495
|
-
targetSVGElement: (hoveredPort === null || hoveredPort === void 0 ? void 0 : hoveredPort.ref.current) || undefined,
|
|
9668
|
+
targetSVGElement: ((_c = hoveredPort === null || hoveredPort === void 0 ? void 0 : hoveredPort.ref) === null || _c === void 0 ? void 0 : _c.current) || undefined,
|
|
9496
9669
|
resizability: {
|
|
9497
9670
|
enabled: false,
|
|
9498
9671
|
keepRatio: false
|
|
9499
9672
|
},
|
|
9500
9673
|
});
|
|
9501
|
-
return (React$1.createElement(ElementWrapper, { ref: elementRef, x: x, y: y, onClick: function (e) { return onClick ? onClick(id, e, elementRef.current) : true; }, onMouseMove: handleElementMouseMove, onMouseLeave: handleElementMouseLeave, onMouseUp: handleElementMouseUp, onContextMenu: function (e) { return onContextMenu ? onContextMenu(id, e, elementRef.current) : true; } },
|
|
9674
|
+
return (React$1.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, onMouseUp: handleElementMouseUp, onContextMenu: function (e) { return onContextMenu ? onContextMenu(id, e, elementRef.current) : true; } },
|
|
9502
9675
|
renderedShape,
|
|
9503
9676
|
potentialPortPosition && (portPlaceholderShape
|
|
9504
9677
|
? React$1.createElement("svg", { x: potentialPortPosition.x, y: potentialPortPosition.y }, portPlaceholderShape)
|
|
9505
9678
|
: React$1.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 :
|
|
9506
9679
|
ports.map(function (p, index) {
|
|
9507
|
-
var _a, _b, _c, _d, _e, _f;
|
|
9680
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
9508
9681
|
return React$1.createElement(Port, { key: p.id, ref: p.ref, id: p.id, x: p.position.x, y: p.position.y, 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,
|
|
9509
9682
|
// rotation={rotatePort(p)}
|
|
9510
|
-
calculateRotationAngle: rotatePort, label: p.label, onPortLabelMoved:
|
|
9511
|
-
if (someElementLinkStarted)
|
|
9512
|
-
setHoveredPort(p);
|
|
9513
|
-
},
|
|
9683
|
+
calculateRotationAngle: rotatePort, label: p.label, onPortLabelMoved: handlePortLabelMoved, onPortLabelResized: handlePortLabelResized, onPortLabelContentChanged: handlePortLabelContentChanged, onSelected: handleSelectedPort, onMouseDown: handlePortMouseDown, onMouseUp: handlePortMouseUp, onMouseMove: handlePortMouseMove,
|
|
9514
9684
|
// onMouseEnter={() => {
|
|
9515
9685
|
// if (someElementLinkStarted) setHoveredPort(p)
|
|
9516
9686
|
// }}
|
|
9517
|
-
onMouseLeave:
|
|
9518
|
-
console.log('onMouseLeave');
|
|
9519
|
-
if (someElementLinkStarted)
|
|
9520
|
-
setHoveredPort(undefined);
|
|
9521
|
-
}, renderShape: p.renderShape });
|
|
9687
|
+
onMouseLeave: handlePortMouseLeave, onManuallyTriggerRenderHandler: (_g = p.manuallyTriggerRenderHandler) === null || _g === void 0 ? void 0 : _g.bind(p), renderShape: p.renderShape });
|
|
9522
9688
|
}),
|
|
9523
9689
|
React$1.createElement(Flexbox$1, { className: textsPlaceHolderClassName, style: textsPlaceHolderFlexStyle, x: textsPlaceHolderFlexboxPosition === null || textsPlaceHolderFlexboxPosition === void 0 ? void 0 : textsPlaceHolderFlexboxPosition.x, y: textsPlaceHolderFlexboxPosition === null || textsPlaceHolderFlexboxPosition === void 0 ? void 0 : textsPlaceHolderFlexboxPosition.y }, texts === null || texts === void 0 ? void 0 : texts.map(function (t, index) {
|
|
9524
9690
|
var _a, _b;
|
|
9525
|
-
return React$1.createElement(Text$1, { id: t.id, key: index, content: t.content, x: (_a = t.position) === null || _a === void 0 ? void 0 : _a.x, y: (_b = t.position) === null || _b === void 0 ? void 0 : _b.y, width: t.size.width, height: t.size.height, align: t.align, fontSize: t.fontSize, border: t.border, container: container, style: t.style, onContentChanged: function (ev, newContent) { return onTextUpdated === null || onTextUpdated === void 0 ? void 0 : onTextUpdated(t.id, newContent); } });
|
|
9691
|
+
return React$1.createElement(Text$1, { id: t.id, key: index, content: t.content, x: (_a = t.position) === null || _a === void 0 ? void 0 : _a.x, y: (_b = t.position) === null || _b === void 0 ? void 0 : _b.y, width: t.size.width, height: t.size.height, align: t.align, fontSize: t.fontSize, border: t.border, container: container, style: t.style, onContentChanged: function (ev, newContent) { return onTextUpdated === null || onTextUpdated === void 0 ? void 0 : onTextUpdated(id, t.id, newContent); } });
|
|
9526
9692
|
})),
|
|
9527
9693
|
children));
|
|
9528
|
-
};
|
|
9694
|
+
};
|
|
9695
|
+
var Element$1 = React$1.memo(Element);
|
|
9529
9696
|
|
|
9530
9697
|
var createRect = function (x, y, width, height, strokeWidth, transformOrigin, transform) {
|
|
9531
9698
|
var rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');
|
|
@@ -9761,13 +9928,23 @@ var Paper = function (props) {
|
|
|
9761
9928
|
var _d = React$1.useState(), selectedElement = _d[0], setSelectedElement = _d[1];
|
|
9762
9929
|
var _e = React$1.useState((_a = props.links) !== null && _a !== void 0 ? _a : []), links = _e[0], setLinks = _e[1];
|
|
9763
9930
|
var _f = React$1.useState(), selectedLink = _f[0], setSelectedLink = _f[1];
|
|
9764
|
-
var _g = React$1.useState(), tempLink = _g[0], setTempLink = _g[1];
|
|
9931
|
+
var _g = React$1.useState(null), tempLink = _g[0], setTempLink = _g[1];
|
|
9765
9932
|
var _h = React$1.useState(props.texts), texts = _h[0], setTexts = _h[1];
|
|
9766
9933
|
var _j = React$1.useState(), selectedText = _j[0], setSelectedText = _j[1];
|
|
9767
9934
|
var _k = React$1.useState(null), selectedElementSVG = _k[0], setSelectedElementSVG = _k[1];
|
|
9768
9935
|
var _l = React$1.useState(false), mouseDownedOnPaper = _l[0], setMouseDownedOnPaper = _l[1];
|
|
9769
9936
|
var paperEventEmitter = React$1.useContext(paperEventEmitterContext);
|
|
9770
9937
|
var paperContainerRef = React$1.useRef(null);
|
|
9938
|
+
var tempLinkRef = React$1.useRef(tempLink); //Cache tempLink to avoid re-render when tempLink changed
|
|
9939
|
+
var elementsRef = React$1.useRef(elements); //Cache elements to avoid re-render when elements changed
|
|
9940
|
+
var size = props.size;
|
|
9941
|
+
React$1.useEffect(function () {
|
|
9942
|
+
console.log('Render Paper');
|
|
9943
|
+
});
|
|
9944
|
+
//Cache elements to avoid re-render when elements changed
|
|
9945
|
+
React$1.useEffect(function () {
|
|
9946
|
+
elementsRef.current = elements;
|
|
9947
|
+
}, [elements]);
|
|
9771
9948
|
useKeyboardCommands({
|
|
9772
9949
|
element: paperContainerRef.current
|
|
9773
9950
|
});
|
|
@@ -9775,6 +9952,10 @@ var Paper = function (props) {
|
|
|
9775
9952
|
var parsedElementsInTree = convertElementsToTree(elements);
|
|
9776
9953
|
setElementsInTree(parsedElementsInTree);
|
|
9777
9954
|
};
|
|
9955
|
+
//Cache tempLink to avoid re-render when tempLink changed
|
|
9956
|
+
React$1.useEffect(function () {
|
|
9957
|
+
tempLinkRef.current = tempLink;
|
|
9958
|
+
}, [tempLink]);
|
|
9778
9959
|
//Listen text is selected
|
|
9779
9960
|
React$1.useEffect(function () {
|
|
9780
9961
|
var textSelectedListener = paperEventEmitter.onTextSelected(function (text) {
|
|
@@ -9797,7 +9978,7 @@ var Paper = function (props) {
|
|
|
9797
9978
|
setSelectedElementSVG(null);
|
|
9798
9979
|
setSelectedLink(undefined);
|
|
9799
9980
|
//broadcast selected port to parent component
|
|
9800
|
-
var element =
|
|
9981
|
+
var element = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
9801
9982
|
if (element) {
|
|
9802
9983
|
(_a = props.onPortSelected) === null || _a === void 0 ? void 0 : _a.call(props, port, element);
|
|
9803
9984
|
}
|
|
@@ -9808,16 +9989,17 @@ var Paper = function (props) {
|
|
|
9808
9989
|
}, []);
|
|
9809
9990
|
React$1.useEffect(function () {
|
|
9810
9991
|
//Listen parent of elements changed, then update elements tree
|
|
9811
|
-
var parentChangedCancelers =
|
|
9992
|
+
var parentChangedCancelers = elementsRef.current.map(function (element) {
|
|
9812
9993
|
var _a;
|
|
9813
9994
|
return (_a = element.onParentChanged) === null || _a === void 0 ? void 0 : _a.call(element, function (newPa, oldPa) {
|
|
9814
9995
|
updateElementsTree();
|
|
9815
9996
|
});
|
|
9816
9997
|
});
|
|
9817
9998
|
//Listen a new port added, then re-render the element component
|
|
9818
|
-
var addedPortCancelers =
|
|
9999
|
+
var addedPortCancelers = elementsRef.current.map(function (element) {
|
|
9819
10000
|
var _a;
|
|
9820
10001
|
return (_a = element.onAddedPort) === null || _a === void 0 ? void 0 : _a.call(element, function (newPort) {
|
|
10002
|
+
console.log("A new port has been added to element ".concat(element.id));
|
|
9821
10003
|
//Set state to re-render component
|
|
9822
10004
|
setElements(function (prev) { return prev.map(function (ele) {
|
|
9823
10005
|
if (ele.id === element.id) {
|
|
@@ -9831,11 +10013,11 @@ var Paper = function (props) {
|
|
|
9831
10013
|
parentChangedCancelers.forEach(function (canceller) { return canceller === null || canceller === void 0 ? void 0 : canceller(); });
|
|
9832
10014
|
addedPortCancelers.forEach(function (canceller) { return canceller(); });
|
|
9833
10015
|
};
|
|
9834
|
-
},
|
|
10016
|
+
}, []);
|
|
9835
10017
|
//Update elements tree when length of elements change
|
|
9836
10018
|
React$1.useEffect(function () {
|
|
9837
10019
|
updateElementsTree();
|
|
9838
|
-
}, [elements
|
|
10020
|
+
}, [elements]);
|
|
9839
10021
|
//Get all child elements of the deleted element
|
|
9840
10022
|
var getDeletedChildElements = function (deletedElement) {
|
|
9841
10023
|
if (!deletedElement.childrenElements)
|
|
@@ -9901,9 +10083,9 @@ var Paper = function (props) {
|
|
|
9901
10083
|
listener.off();
|
|
9902
10084
|
};
|
|
9903
10085
|
}, [selectedText]);
|
|
9904
|
-
var size = props.size;
|
|
9905
10086
|
//Automatically add points on the link so that the link does not cross elements, default maximum 10 points
|
|
9906
|
-
var automationAddPointsToLink = function (eleLink, limitPoint) {
|
|
10087
|
+
var automationAddPointsToLink = React$1.useCallback(function (eleLink, limitPoint) {
|
|
10088
|
+
if (limitPoint === void 0) { limitPoint = 10; }
|
|
9907
10089
|
var sourceElement = eleLink.sourceElement, sourcePort = eleLink.sourcePort, targetElement = eleLink.targetElement, targetPort = eleLink.targetPort;
|
|
9908
10090
|
var sourcePosition = {
|
|
9909
10091
|
x: sourceElement.position.x + sourcePort.position.x,
|
|
@@ -9931,10 +10113,12 @@ var Paper = function (props) {
|
|
|
9931
10113
|
var appendedPoints = generatePositions(replacementPosition, targetPosition, elements);
|
|
9932
10114
|
return __spreadArray(__spreadArray(__spreadArray([], prependedPoints, true), [replacementPosition], false), appendedPoints, true);
|
|
9933
10115
|
}
|
|
10116
|
+
var elements = elementsRef.current;
|
|
9934
10117
|
var points = generatePositions(sourcePosition, targetPosition, elements);
|
|
9935
10118
|
return __assign(__assign({}, eleLink), { points: points });
|
|
9936
|
-
};
|
|
10119
|
+
}, []);
|
|
9937
10120
|
var handlePaperMouseMove = function (ev) {
|
|
10121
|
+
var _a;
|
|
9938
10122
|
//if there is a temp link, update the temp target point
|
|
9939
10123
|
if (tempLink) {
|
|
9940
10124
|
var currentTarget = ev.currentTarget;
|
|
@@ -9953,24 +10137,35 @@ var Paper = function (props) {
|
|
|
9953
10137
|
};
|
|
9954
10138
|
setTempLink(function (prev) { return (__assign(__assign({}, prev), { tempTargetPosition: tempTargetPosition_1 })); });
|
|
9955
10139
|
}
|
|
10140
|
+
//broadcast mouse moved position to parent component
|
|
10141
|
+
(_a = props.onPaperMouseMoved) === null || _a === void 0 ? void 0 : _a.call(props, {
|
|
10142
|
+
x: ev.clientX,
|
|
10143
|
+
y: ev.clientY
|
|
10144
|
+
});
|
|
9956
10145
|
};
|
|
9957
10146
|
var handleMouseDownOnPaper = function (ev) {
|
|
9958
|
-
var _a;
|
|
10147
|
+
var _a, _b;
|
|
9959
10148
|
setMouseDownedOnPaper(true);
|
|
9960
10149
|
(_a = props.onPaperClicked) === null || _a === void 0 ? void 0 : _a.call(props, {
|
|
9961
10150
|
x: ev.clientX,
|
|
9962
10151
|
y: ev.clientY
|
|
9963
10152
|
});
|
|
9964
10153
|
paperEventEmitter.emitPaperClicked(ev);
|
|
10154
|
+
//broadcast mouse moved position to parent component
|
|
10155
|
+
(_b = props.onPaperMouseDown) === null || _b === void 0 ? void 0 : _b.call(props, {
|
|
10156
|
+
x: ev.clientX,
|
|
10157
|
+
y: ev.clientY
|
|
10158
|
+
});
|
|
9965
10159
|
};
|
|
9966
10160
|
var handleMouseUpOnPaper = function (ev) {
|
|
10161
|
+
var _a;
|
|
9967
10162
|
if (mouseDownedOnPaper) {
|
|
9968
10163
|
setSelectedElement(undefined);
|
|
9969
10164
|
setSelectedElementSVG(null);
|
|
9970
10165
|
}
|
|
9971
10166
|
//clear temp link if exists
|
|
9972
10167
|
if (tempLink) {
|
|
9973
|
-
setTempLink(
|
|
10168
|
+
setTempLink(null);
|
|
9974
10169
|
paperEventEmitter.emitElementLinkEnded();
|
|
9975
10170
|
}
|
|
9976
10171
|
//Clear selected text
|
|
@@ -9978,6 +10173,11 @@ var Paper = function (props) {
|
|
|
9978
10173
|
setSelectedText(undefined);
|
|
9979
10174
|
}
|
|
9980
10175
|
setMouseDownedOnPaper(false);
|
|
10176
|
+
//broadcast mouse moved position to parent component
|
|
10177
|
+
(_a = props.onPaperMouseUp) === null || _a === void 0 ? void 0 : _a.call(props, {
|
|
10178
|
+
x: ev.clientX,
|
|
10179
|
+
y: ev.clientY
|
|
10180
|
+
});
|
|
9981
10181
|
};
|
|
9982
10182
|
var handlePathChange = React$1.useCallback(function (path, id) {
|
|
9983
10183
|
//Update path of element link, that changed
|
|
@@ -9987,42 +10187,44 @@ var Paper = function (props) {
|
|
|
9987
10187
|
return __spreadArray([], prevLinks, true);
|
|
9988
10188
|
});
|
|
9989
10189
|
}, []);
|
|
9990
|
-
var handlePortMoved = function (port, elementId, oldPosition, newPosition) {
|
|
9991
|
-
var element =
|
|
9992
|
-
if (
|
|
9993
|
-
|
|
9994
|
-
|
|
9995
|
-
|
|
9996
|
-
|
|
9997
|
-
|
|
9998
|
-
if (link.sourceElement.id === elementId && link.sourcePort.id === port.id) {
|
|
9999
|
-
link.sourcePort.position = newPosition;
|
|
10000
|
-
}
|
|
10001
|
-
if (((_a = link.targetElement) === null || _a === void 0 ? void 0 : _a.id) === elementId && ((_b = link.targetPort) === null || _b === void 0 ? void 0 : _b.id) === port.id) {
|
|
10002
|
-
link.targetPort.position = newPosition;
|
|
10003
|
-
}
|
|
10004
|
-
return link;
|
|
10005
|
-
}); });
|
|
10006
|
-
//Update port position in element, not re-render
|
|
10007
|
-
setElements(function (prevElements) {
|
|
10008
|
-
var _a;
|
|
10009
|
-
var updatedElementIndex = prevElements.findIndex(function (e) { return e.id === elementId; });
|
|
10010
|
-
prevElements[updatedElementIndex].ports = (_a = prevElements[updatedElementIndex].ports) === null || _a === void 0 ? void 0 : _a.map(function (p) {
|
|
10011
|
-
if (p.id === port.id) {
|
|
10012
|
-
p.position = newPosition;
|
|
10190
|
+
var handlePortMoved = React$1.useCallback(function (port, elementId, oldPosition, newPosition) {
|
|
10191
|
+
var element = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
10192
|
+
if (element) {
|
|
10193
|
+
//set links equals a clone links to re-render links with new position
|
|
10194
|
+
setLinks(function (prev) { return prev.map(function (link) {
|
|
10195
|
+
var _a, _b;
|
|
10196
|
+
if (link.sourceElement.id === elementId && link.sourcePort.id === port.id) {
|
|
10197
|
+
link.sourcePort.position = newPosition;
|
|
10013
10198
|
}
|
|
10014
|
-
|
|
10199
|
+
if (((_a = link.targetElement) === null || _a === void 0 ? void 0 : _a.id) === elementId && ((_b = link.targetPort) === null || _b === void 0 ? void 0 : _b.id) === port.id) {
|
|
10200
|
+
link.targetPort.position = newPosition;
|
|
10201
|
+
}
|
|
10202
|
+
return link;
|
|
10203
|
+
}); });
|
|
10204
|
+
//Update port position in element, not re-render
|
|
10205
|
+
setElements(function (prevElements) {
|
|
10206
|
+
var _a;
|
|
10207
|
+
var updatedElementIndex = prevElements.findIndex(function (e) { return e.id === elementId; });
|
|
10208
|
+
prevElements[updatedElementIndex].ports = (_a = prevElements[updatedElementIndex].ports) === null || _a === void 0 ? void 0 : _a.map(function (p) {
|
|
10209
|
+
if (p.id === port.id) {
|
|
10210
|
+
p.position = newPosition;
|
|
10211
|
+
}
|
|
10212
|
+
return p;
|
|
10213
|
+
});
|
|
10214
|
+
return prevElements;
|
|
10015
10215
|
});
|
|
10016
|
-
|
|
10017
|
-
|
|
10018
|
-
|
|
10216
|
+
if (props.onPortMoved) {
|
|
10217
|
+
props.onPortMoved(newPosition, port, element);
|
|
10218
|
+
}
|
|
10219
|
+
}
|
|
10220
|
+
}, [props.onPortMoved]);
|
|
10019
10221
|
//Handle creating a new element link
|
|
10020
|
-
var handlePortMouseDown = function (ev, port, elementId) {
|
|
10222
|
+
var handlePortMouseDown = React$1.useCallback(function (ev, port, elementId) {
|
|
10021
10223
|
ev.stopPropagation();
|
|
10022
10224
|
//Return if creating a new element link
|
|
10023
|
-
if (
|
|
10225
|
+
if (tempLinkRef.current)
|
|
10024
10226
|
return;
|
|
10025
|
-
var sourceElement =
|
|
10227
|
+
var sourceElement = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
10026
10228
|
//handle create temp element link;
|
|
10027
10229
|
var newLink = {
|
|
10028
10230
|
id: generateUniqueId(),
|
|
@@ -10032,8 +10234,8 @@ var Paper = function (props) {
|
|
|
10032
10234
|
};
|
|
10033
10235
|
setTempLink(newLink);
|
|
10034
10236
|
paperEventEmitter.emitElementLinkStarted(newLink);
|
|
10035
|
-
};
|
|
10036
|
-
var createElementLink = function (sourcePort, sourceElement, targetPort, targetElement) {
|
|
10237
|
+
}, [paperEventEmitter]);
|
|
10238
|
+
var createElementLink = React$1.useCallback(function (sourcePort, sourceElement, targetPort, targetElement) {
|
|
10037
10239
|
//if no onCreatingLink prop, no link will be created
|
|
10038
10240
|
if (!props.onCreatingLink) {
|
|
10039
10241
|
return null;
|
|
@@ -10046,17 +10248,17 @@ var Paper = function (props) {
|
|
|
10046
10248
|
newElementLink = automationAddPointsToLink(newElementLink, MAX_LINK_KNOT_COUNT);
|
|
10047
10249
|
}
|
|
10048
10250
|
return newElementLink;
|
|
10049
|
-
};
|
|
10050
|
-
var handlePortMouseUp = function (ev, port, elementId) {
|
|
10251
|
+
}, [props.onCreatingLink, automationAddPointsToLink]);
|
|
10252
|
+
var handlePortMouseUp = React$1.useCallback(function (ev, port, elementId) {
|
|
10051
10253
|
ev.stopPropagation();
|
|
10052
10254
|
//Create new element link, if has tempLink
|
|
10053
|
-
if (
|
|
10255
|
+
if (tempLinkRef.current) {
|
|
10054
10256
|
//Check if mouse up point is mouse down point or not
|
|
10055
|
-
var isMouseUpOnNotSelf =
|
|
10257
|
+
var isMouseUpOnNotSelf = tempLinkRef.current.sourcePort.id !== port.id || tempLinkRef.current.sourceElement.id !== elementId;
|
|
10056
10258
|
var newElementLink_1 = null;
|
|
10057
10259
|
if (isMouseUpOnNotSelf) {
|
|
10058
|
-
var sourcePort =
|
|
10059
|
-
var targetElement =
|
|
10260
|
+
var _a = tempLinkRef.current, sourcePort = _a.sourcePort, sourceElement = _a.sourceElement;
|
|
10261
|
+
var targetElement = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
10060
10262
|
newElementLink_1 = createElementLink(sourcePort, sourceElement, port, targetElement);
|
|
10061
10263
|
}
|
|
10062
10264
|
if (newElementLink_1) {
|
|
@@ -10066,9 +10268,9 @@ var Paper = function (props) {
|
|
|
10066
10268
|
else {
|
|
10067
10269
|
paperEventEmitter.emitElementLinkEnded();
|
|
10068
10270
|
}
|
|
10069
|
-
setTempLink(
|
|
10271
|
+
setTempLink(null);
|
|
10070
10272
|
}
|
|
10071
|
-
};
|
|
10273
|
+
}, [paperEventEmitter, createElementLink]);
|
|
10072
10274
|
var handleLinkLabelMoved = React$1.useCallback(function (offsetX, offsetY, index, labelType) {
|
|
10073
10275
|
setLinks(function (prevLinks) {
|
|
10074
10276
|
var newLinks = __spreadArray([], prevLinks, true);
|
|
@@ -10254,8 +10456,11 @@ var Paper = function (props) {
|
|
|
10254
10456
|
});
|
|
10255
10457
|
};
|
|
10256
10458
|
}, []);
|
|
10257
|
-
var handleMouseUpAtLinkedPortPlaceholder = function (link, position,
|
|
10258
|
-
|
|
10459
|
+
var handleMouseUpAtLinkedPortPlaceholder = React$1.useCallback(function (link, position, targetElementId) {
|
|
10460
|
+
var targetElement = elementsRef.current.find(function (e) { return e.id === targetElementId; });
|
|
10461
|
+
if (!targetElement)
|
|
10462
|
+
return;
|
|
10463
|
+
console.log("A port could have been created at position ".concat(JSON.stringify(position), " on element ").concat(targetElementId, " by linking from element ").concat(link.sourceElement.id));
|
|
10259
10464
|
if (props.onCreatingPortByLinking) {
|
|
10260
10465
|
var sourcePort = link.sourcePort, sourceElement = link.sourceElement;
|
|
10261
10466
|
//Handle create port via onCreatingPortByLinking prop
|
|
@@ -10269,20 +10474,20 @@ var Paper = function (props) {
|
|
|
10269
10474
|
if (newElementLink_2) {
|
|
10270
10475
|
setLinks(function (prev) { return __spreadArray(__spreadArray([], prev, true), [newElementLink_2], false); });
|
|
10271
10476
|
paperEventEmitter.emitElementLinkEnded(newElementLink_2);
|
|
10272
|
-
setTempLink(
|
|
10477
|
+
setTempLink(null);
|
|
10273
10478
|
return;
|
|
10274
10479
|
}
|
|
10275
10480
|
}
|
|
10276
10481
|
}
|
|
10277
10482
|
//Clear tempLink
|
|
10278
|
-
setTempLink(
|
|
10483
|
+
setTempLink(null);
|
|
10279
10484
|
paperEventEmitter.emitElementLinkEnded();
|
|
10280
|
-
};
|
|
10281
|
-
var handleElementTextChange = function (
|
|
10485
|
+
}, [props.onCreatingPortByLinking, createElementLink, paperEventEmitter]);
|
|
10486
|
+
var handleElementTextChange = React$1.useCallback(function (elementId, textId, newContent) {
|
|
10282
10487
|
setElements(function (prevElms) {
|
|
10283
10488
|
return prevElms.map(function (curEle) {
|
|
10284
10489
|
//Find changed text of element to update the content for it.
|
|
10285
|
-
if (curEle.id ===
|
|
10490
|
+
if (curEle.id === elementId && curEle.texts) {
|
|
10286
10491
|
var updatedTextId = curEle.texts.findIndex(function (t) { return t.id === textId; });
|
|
10287
10492
|
if (updatedTextId !== undefined) {
|
|
10288
10493
|
curEle.texts[updatedTextId].content = newContent;
|
|
@@ -10291,41 +10496,53 @@ var Paper = function (props) {
|
|
|
10291
10496
|
return curEle;
|
|
10292
10497
|
});
|
|
10293
10498
|
});
|
|
10294
|
-
};
|
|
10295
|
-
var handleElementClicked = function (
|
|
10499
|
+
}, []);
|
|
10500
|
+
var handleElementClicked = React$1.useCallback(function (elementId, e, ref) {
|
|
10296
10501
|
e.stopPropagation();
|
|
10502
|
+
var tempLink = tempLinkRef.current;
|
|
10297
10503
|
if (tempLink) {
|
|
10298
10504
|
//Clear tempLink
|
|
10299
|
-
setTempLink(
|
|
10505
|
+
setTempLink(null);
|
|
10300
10506
|
paperEventEmitter.emitElementLinkEnded();
|
|
10301
10507
|
}
|
|
10302
10508
|
else {
|
|
10509
|
+
var element = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
10303
10510
|
setSelectedElementSVG(ref);
|
|
10304
|
-
|
|
10305
|
-
|
|
10511
|
+
if (element) {
|
|
10512
|
+
setSelectedElement(element);
|
|
10513
|
+
paperEventEmitter.emitElementSelected(element);
|
|
10514
|
+
}
|
|
10306
10515
|
}
|
|
10307
10516
|
setMouseDownedOnPaper(false);
|
|
10308
|
-
};
|
|
10309
|
-
var
|
|
10310
|
-
var _a
|
|
10517
|
+
}, [paperEventEmitter]);
|
|
10518
|
+
var handleContextMenu = React$1.useCallback(function (elementId, e, ref) {
|
|
10519
|
+
var _a;
|
|
10520
|
+
e.preventDefault();
|
|
10521
|
+
var element = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
10522
|
+
if (element) {
|
|
10523
|
+
handleElementClicked(elementId, e, ref);
|
|
10524
|
+
(_a = props.onElementContextMenu) === null || _a === void 0 ? void 0 : _a.call(props, element, e);
|
|
10525
|
+
}
|
|
10526
|
+
}, [props.onElementContextMenu, handleElementClicked]);
|
|
10527
|
+
var renderElementInTree = React$1.useCallback(function (element) {
|
|
10528
|
+
var _a, _b, _c;
|
|
10311
10529
|
//use the defined react element or the default Element component
|
|
10312
|
-
var ReactElement = element.reactElement || Element;
|
|
10313
|
-
|
|
10314
|
-
|
|
10315
|
-
|
|
10316
|
-
|
|
10317
|
-
|
|
10318
|
-
|
|
10319
|
-
|
|
10320
|
-
|
|
10321
|
-
|
|
10322
|
-
|
|
10530
|
+
var ReactElement = element.reactElement || Element$1;
|
|
10531
|
+
console.log("Render element ".concat(element.id));
|
|
10532
|
+
return (React$1.createElement("g", { key: element.id },
|
|
10533
|
+
React$1.createElement(ReactElement, { key: "element-".concat(element.id), id: element.id, height: element.size.height, width: element.size.width, x: (_a = element.relativePosition) === null || _a === void 0 ? void 0 : _a.x, y: (_b = element.relativePosition) === null || _b === void 0 ? void 0 : _b.y, onClick: handleElementClicked, onContextMenu: handleContextMenu, 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,
|
|
10534
|
+
// portPlaceholderShape={(<Circle x={0} y={0} width={10} height={10} fill='red' positioningAnchor={PositioningAnchor.Center} />)}
|
|
10535
|
+
onMouseUpAtLinkedPortPlaceholder: handleMouseUpAtLinkedPortPlaceholder, onTextUpdated: handleElementTextChange, onManuallyTriggerRenderHandler: (_c = element.manuallyTriggerRenderHandler) === null || _c === void 0 ? void 0 : _c.bind(element), textsPlaceHolderClassName: element.textsPlaceHolderClassName, textsPlaceHolderFlexStyle: element.textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition: element.textsPlaceHolderFlexboxPosition }, element.childrenElements && element.childrenElements.map(renderElementInTree))));
|
|
10536
|
+
}, [handleElementClicked, handleContextMenu, handlePortMoved, handlePortMouseDown, handlePortMouseUp, handleMouseUpAtLinkedPortPlaceholder, handleElementTextChange]);
|
|
10537
|
+
var ElementsInTree = React$1.useMemo(function () {
|
|
10538
|
+
return elementsInTree.map(function (element, index) {
|
|
10539
|
+
return renderElementInTree(element);
|
|
10540
|
+
});
|
|
10541
|
+
}, [elementsInTree, renderElementInTree]);
|
|
10323
10542
|
return (React$1.createElement("div", { style: { position: "relative" } },
|
|
10324
10543
|
React$1.createElement(Ruler, { squareSize: 100, border: '1px dashed grey' }),
|
|
10325
10544
|
React$1.createElement("svg", { tabIndex: 0, width: size.width, height: size.height, ref: paperContainerRef, id: "paper-container", onMouseMove: handlePaperMouseMove, onMouseDown: handleMouseDownOnPaper, onMouseUp: handleMouseUpOnPaper },
|
|
10326
|
-
paperContainerRef.current ?
|
|
10327
|
-
return renderElementInTree(element);
|
|
10328
|
-
}) : "",
|
|
10545
|
+
paperContainerRef.current ? ElementsInTree : "",
|
|
10329
10546
|
links && links.map(function (link, index) {
|
|
10330
10547
|
var _a, _b, _c, _d;
|
|
10331
10548
|
return (React$1.createElement(ElementLink, { key: link.id, id: link.id, path: link.path, sourcePosition: {
|
|
@@ -10345,10 +10562,17 @@ var Paper = function (props) {
|
|
|
10345
10562
|
} })); })),
|
|
10346
10563
|
React$1.createElement(BBoxDebugger, { elementSVG: selectedElementSVG }),
|
|
10347
10564
|
React$1.createElement(LinkDebugger, { links: links, svgContainer: paperContainerRef.current })));
|
|
10348
|
-
};
|
|
10565
|
+
};
|
|
10566
|
+
var Paper$1 = React$1.memo(Paper);
|
|
10349
10567
|
|
|
10350
10568
|
function Editor(_a) {
|
|
10351
|
-
var editorContext = _a.editorContext;
|
|
10569
|
+
var editorContext = _a.editorContext, width = _a.width, height = _a.height;
|
|
10570
|
+
if (!width) {
|
|
10571
|
+
width = 3000;
|
|
10572
|
+
}
|
|
10573
|
+
if (!height) {
|
|
10574
|
+
height = 3000;
|
|
10575
|
+
}
|
|
10352
10576
|
var handlePaperClicked = React$1.useCallback(function (position) {
|
|
10353
10577
|
editorContext.onPaperClickedHandler(position);
|
|
10354
10578
|
}, [editorContext]);
|
|
@@ -10376,15 +10600,37 @@ function Editor(_a) {
|
|
|
10376
10600
|
var handleTextSelected = React$1.useCallback(function (text) {
|
|
10377
10601
|
editorContext.onTextSelectedHandler(text);
|
|
10378
10602
|
}, [editorContext]);
|
|
10379
|
-
|
|
10380
|
-
|
|
10603
|
+
var handleOnCreatingLink = React$1.useCallback(function (sourcePort, sourceElement, targetPort, targetElement) {
|
|
10604
|
+
if (editorContext.onCreatingLinkHandler) {
|
|
10605
|
+
return editorContext.onCreatingLinkHandler(sourcePort, sourceElement, targetPort, targetElement);
|
|
10606
|
+
}
|
|
10607
|
+
return null;
|
|
10608
|
+
}, [editorContext]);
|
|
10609
|
+
var handleOnCreatingPortByLinking = React$1.useCallback(function (sourceElement, sourcePort, targetElement, position) {
|
|
10610
|
+
if (editorContext.onCreatingPortByLinkingHandler) {
|
|
10611
|
+
return editorContext.onCreatingPortByLinkingHandler(sourceElement, sourcePort, targetElement, position);
|
|
10612
|
+
}
|
|
10613
|
+
return null;
|
|
10614
|
+
}, [editorContext]);
|
|
10615
|
+
var handlePaperMouseMoved = React$1.useCallback(function (position) {
|
|
10616
|
+
editorContext.onPaperMouseMovedHandler(position);
|
|
10617
|
+
}, [editorContext]);
|
|
10618
|
+
var handlePaperMouseDown = React$1.useCallback(function (position) {
|
|
10619
|
+
editorContext.onPaperMouseDownHandler(position);
|
|
10620
|
+
}, [editorContext]);
|
|
10621
|
+
var handlePaperMouseUp = React$1.useCallback(function (position) {
|
|
10622
|
+
editorContext.onPaperMouseUpHandler(position);
|
|
10623
|
+
}, [editorContext]);
|
|
10624
|
+
if (editorContext)
|
|
10625
|
+
return (React$1.createElement(Paper$1, { size: { width: width, height: height }, elements: editorContext.elements, links: editorContext.links, texts: editorContext.texts, onPaperClicked: handlePaperClicked, onPortMoved: handlePortMoved, onPortSelected: handlePortSelected, onElementContextMenu: handleElementContextMenu, onElementMoved: handleElementMoved, onElementResized: handleElementResized, onElementSelected: handleElementSelected, onCreatingLink: handleOnCreatingLink, onCreatingPortByLinking: handleOnCreatingPortByLinking, onLinkSelected: handleLinkSelected, onTextSelected: handleTextSelected, onPaperMouseMoved: handlePaperMouseMoved, onPaperMouseUp: handlePaperMouseDown, onPaperMouseDown: handlePaperMouseUp }));
|
|
10626
|
+
return null;
|
|
10381
10627
|
}
|
|
10382
10628
|
|
|
10383
10629
|
exports.CircleRC = Circle;
|
|
10384
10630
|
exports.CrescentRC = Crescent;
|
|
10385
10631
|
exports.CustomShapeRC = CustomShape;
|
|
10386
10632
|
exports.EditorContext = EditorContext;
|
|
10387
|
-
exports.Element = Element$
|
|
10633
|
+
exports.Element = Element$2;
|
|
10388
10634
|
exports.ElementLink = ElementLink$1;
|
|
10389
10635
|
exports.ElementLinkRC = ElementLink;
|
|
10390
10636
|
exports.Port = Port$1;
|