orcasvn-react-diagrams 0.1.23 → 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 +411 -170
- 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 +413 -172
- 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,16 +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
|
-
|
|
9198
|
-
|
|
9199
|
-
if (orgPort) {
|
|
9200
|
-
_paperEventEmitterContext.emitPortSelected(orgPort, id);
|
|
9201
|
-
}
|
|
9202
|
-
}
|
|
9203
|
-
};
|
|
9351
|
+
_paperEventEmitterContext.emitPortSelected(port, id);
|
|
9352
|
+
}, [_paperEventEmitterContext]);
|
|
9204
9353
|
//From one point find another point on the line segment so that the distance between the two points is the shortest.
|
|
9205
9354
|
var findNearestPointOnSegment = function (position, linePoints) {
|
|
9206
9355
|
var beginPosition = linePoints[0], endPosition = linePoints[1];
|
|
@@ -9318,67 +9467,72 @@ var Element = function (props) {
|
|
|
9318
9467
|
if (newPosition) {
|
|
9319
9468
|
selectedPort.position = newPosition;
|
|
9320
9469
|
onPortMoved === null || onPortMoved === void 0 ? void 0 : onPortMoved(selectedPort, id, oldPosition, newPosition);
|
|
9321
|
-
setPorts(__spreadArray([],
|
|
9470
|
+
setPorts(__spreadArray([], portsRef.current, true));
|
|
9322
9471
|
_paperEventEmitterContext.emitPortMoved(selectedPort, id, oldPosition, newPosition);
|
|
9323
9472
|
}
|
|
9324
9473
|
};
|
|
9325
9474
|
//Handle when mouse down on port
|
|
9326
|
-
var handlePortMouseDown = function (portId, e) {
|
|
9475
|
+
var handlePortMouseDown = React$1.useCallback(function (portId, e) {
|
|
9327
9476
|
e.stopPropagation();
|
|
9328
|
-
var port =
|
|
9477
|
+
var port = portsRef.current.find(function (p) { return p.id === portId; });
|
|
9478
|
+
if (!port)
|
|
9479
|
+
return;
|
|
9329
9480
|
_paperEventEmitterContext.emitPortMouseDown(e, port, id);
|
|
9330
9481
|
onPortMouseDown === null || onPortMouseDown === void 0 ? void 0 : onPortMouseDown(e, port, id);
|
|
9331
|
-
};
|
|
9482
|
+
}, [_paperEventEmitterContext]);
|
|
9332
9483
|
//Handle when mouse up on port
|
|
9333
|
-
var handlePortMouseUp = function (portId, e) {
|
|
9484
|
+
var handlePortMouseUp = React$1.useCallback(function (portId, e) {
|
|
9334
9485
|
e.stopPropagation();
|
|
9335
|
-
var port =
|
|
9486
|
+
var port = portsRef.current.find(function (p) { return p.id === portId; });
|
|
9487
|
+
if (!port)
|
|
9488
|
+
return;
|
|
9336
9489
|
_paperEventEmitterContext.emitPortMouseUp(e, port, id);
|
|
9337
9490
|
onPortMouseUp === null || onPortMouseUp === void 0 ? void 0 : onPortMouseUp(e, port, id);
|
|
9338
9491
|
//Remove port placeholder if mouse up on port
|
|
9339
9492
|
if (potentialPortPosition) {
|
|
9340
9493
|
setPotentialPortPosition(undefined);
|
|
9341
9494
|
}
|
|
9342
|
-
};
|
|
9495
|
+
}, [_paperEventEmitterContext, potentialPortPosition]);
|
|
9343
9496
|
//Update state when label of port is moved
|
|
9344
|
-
var handlePortLabelMoved = function (offsetX, offsetY,
|
|
9345
|
-
if (!port.label)
|
|
9346
|
-
return;
|
|
9347
|
-
var labelPos = port.label.position || PORT_LABEL_POSITION;
|
|
9497
|
+
var handlePortLabelMoved = React$1.useCallback(function (offsetX, offsetY, portId) {
|
|
9348
9498
|
setPorts(function (prevPorts) {
|
|
9349
|
-
|
|
9350
|
-
|
|
9351
|
-
|
|
9352
|
-
|
|
9353
|
-
|
|
9354
|
-
|
|
9355
|
-
|
|
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
|
+
});
|
|
9356
9509
|
});
|
|
9357
|
-
};
|
|
9510
|
+
}, []);
|
|
9358
9511
|
//Update state when label of port is resized
|
|
9359
|
-
var handlePortLabelResized = function (width, height,
|
|
9360
|
-
if (!port.label)
|
|
9361
|
-
return;
|
|
9512
|
+
var handlePortLabelResized = React$1.useCallback(function (width, height, portId) {
|
|
9362
9513
|
setPorts(function (prevPorts) {
|
|
9363
|
-
|
|
9364
|
-
|
|
9365
|
-
|
|
9366
|
-
|
|
9367
|
-
|
|
9368
|
-
|
|
9369
|
-
|
|
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
|
+
});
|
|
9370
9523
|
});
|
|
9371
|
-
};
|
|
9524
|
+
}, []);
|
|
9372
9525
|
//Update state when label of port is changed content
|
|
9373
|
-
var handlePortLabelContentChanged = function (
|
|
9374
|
-
if (!port.label)
|
|
9375
|
-
return;
|
|
9526
|
+
var handlePortLabelContentChanged = React$1.useCallback(function (ev, newValue, portId) {
|
|
9376
9527
|
setPorts(function (prevPorts) {
|
|
9377
|
-
|
|
9378
|
-
|
|
9379
|
-
|
|
9528
|
+
return prevPorts.map(function (p) {
|
|
9529
|
+
if (p.id === portId && p.label) {
|
|
9530
|
+
p.label.content = newValue;
|
|
9531
|
+
}
|
|
9532
|
+
return p;
|
|
9533
|
+
});
|
|
9380
9534
|
});
|
|
9381
|
-
};
|
|
9535
|
+
}, []);
|
|
9382
9536
|
function handleElementMouseMove(ev) {
|
|
9383
9537
|
//ev.stopPropagation(); //Can't use stopPropagation here, because do not create tempLink
|
|
9384
9538
|
if (someElementLinkStarted && elementRef.current) {
|
|
@@ -9424,10 +9578,24 @@ var Element = function (props) {
|
|
|
9424
9578
|
//If an element link is being created, trigger onMouseUpAtLinkedPortPlaceholder when the mouse up the element.
|
|
9425
9579
|
if (potentialPortPosition && elementLinkStarted.current) {
|
|
9426
9580
|
var newElementLink = __assign(__assign({}, elementLinkStarted.current), { tempTargetPosition: undefined });
|
|
9427
|
-
onMouseUpAtLinkedPortPlaceholder === null || onMouseUpAtLinkedPortPlaceholder === void 0 ? void 0 : onMouseUpAtLinkedPortPlaceholder(newElementLink, potentialPortPosition);
|
|
9581
|
+
onMouseUpAtLinkedPortPlaceholder === null || onMouseUpAtLinkedPortPlaceholder === void 0 ? void 0 : onMouseUpAtLinkedPortPlaceholder(newElementLink, potentialPortPosition, id);
|
|
9428
9582
|
elementLinkStarted.current = undefined;
|
|
9429
9583
|
}
|
|
9430
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]);
|
|
9431
9599
|
//Get rotate angle of port by port direction is defined.
|
|
9432
9600
|
var rotatePort = React$1.useCallback(function (x, y) {
|
|
9433
9601
|
// console.info('calculating port rotation', x, y)
|
|
@@ -9473,7 +9641,7 @@ var Element = function (props) {
|
|
|
9473
9641
|
if (renderShape)
|
|
9474
9642
|
return renderShape(props);
|
|
9475
9643
|
return null;
|
|
9476
|
-
}, [props]);
|
|
9644
|
+
}, [props, renderShape]);
|
|
9477
9645
|
//Re-render port again after rendered to automation rotate port
|
|
9478
9646
|
//Because elementRef.current equals null in first render so automation rotate port is incorrect.
|
|
9479
9647
|
//TODO: check if this is still needed -> Still needed
|
|
@@ -9485,7 +9653,7 @@ var Element = function (props) {
|
|
|
9485
9653
|
//use selection frame
|
|
9486
9654
|
useSelectionFrame({
|
|
9487
9655
|
container: container,
|
|
9488
|
-
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,
|
|
9489
9657
|
resizability: {
|
|
9490
9658
|
enabled: false,
|
|
9491
9659
|
keepRatio: false
|
|
@@ -9497,40 +9665,34 @@ var Element = function (props) {
|
|
|
9497
9665
|
});
|
|
9498
9666
|
useSelectionFrame({
|
|
9499
9667
|
container: container,
|
|
9500
|
-
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,
|
|
9501
9669
|
resizability: {
|
|
9502
9670
|
enabled: false,
|
|
9503
9671
|
keepRatio: false
|
|
9504
9672
|
},
|
|
9505
9673
|
});
|
|
9506
|
-
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; } },
|
|
9507
9675
|
renderedShape,
|
|
9508
9676
|
potentialPortPosition && (portPlaceholderShape
|
|
9509
9677
|
? React$1.createElement("svg", { x: potentialPortPosition.x, y: potentialPortPosition.y }, portPlaceholderShape)
|
|
9510
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 :
|
|
9511
9679
|
ports.map(function (p, index) {
|
|
9512
|
-
var _a, _b, _c, _d, _e, _f;
|
|
9680
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
9513
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,
|
|
9514
9682
|
// rotation={rotatePort(p)}
|
|
9515
|
-
calculateRotationAngle: rotatePort, label: p.label, onPortLabelMoved:
|
|
9516
|
-
if (someElementLinkStarted)
|
|
9517
|
-
setHoveredPort(p);
|
|
9518
|
-
},
|
|
9683
|
+
calculateRotationAngle: rotatePort, label: p.label, onPortLabelMoved: handlePortLabelMoved, onPortLabelResized: handlePortLabelResized, onPortLabelContentChanged: handlePortLabelContentChanged, onSelected: handleSelectedPort, onMouseDown: handlePortMouseDown, onMouseUp: handlePortMouseUp, onMouseMove: handlePortMouseMove,
|
|
9519
9684
|
// onMouseEnter={() => {
|
|
9520
9685
|
// if (someElementLinkStarted) setHoveredPort(p)
|
|
9521
9686
|
// }}
|
|
9522
|
-
onMouseLeave:
|
|
9523
|
-
console.log('onMouseLeave');
|
|
9524
|
-
if (someElementLinkStarted)
|
|
9525
|
-
setHoveredPort(undefined);
|
|
9526
|
-
}, renderShape: p.renderShape });
|
|
9687
|
+
onMouseLeave: handlePortMouseLeave, onManuallyTriggerRenderHandler: (_g = p.manuallyTriggerRenderHandler) === null || _g === void 0 ? void 0 : _g.bind(p), renderShape: p.renderShape });
|
|
9527
9688
|
}),
|
|
9528
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) {
|
|
9529
9690
|
var _a, _b;
|
|
9530
|
-
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); } });
|
|
9531
9692
|
})),
|
|
9532
9693
|
children));
|
|
9533
|
-
};
|
|
9694
|
+
};
|
|
9695
|
+
var Element$1 = React$1.memo(Element);
|
|
9534
9696
|
|
|
9535
9697
|
var createRect = function (x, y, width, height, strokeWidth, transformOrigin, transform) {
|
|
9536
9698
|
var rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');
|
|
@@ -9766,13 +9928,23 @@ var Paper = function (props) {
|
|
|
9766
9928
|
var _d = React$1.useState(), selectedElement = _d[0], setSelectedElement = _d[1];
|
|
9767
9929
|
var _e = React$1.useState((_a = props.links) !== null && _a !== void 0 ? _a : []), links = _e[0], setLinks = _e[1];
|
|
9768
9930
|
var _f = React$1.useState(), selectedLink = _f[0], setSelectedLink = _f[1];
|
|
9769
|
-
var _g = React$1.useState(), tempLink = _g[0], setTempLink = _g[1];
|
|
9931
|
+
var _g = React$1.useState(null), tempLink = _g[0], setTempLink = _g[1];
|
|
9770
9932
|
var _h = React$1.useState(props.texts), texts = _h[0], setTexts = _h[1];
|
|
9771
9933
|
var _j = React$1.useState(), selectedText = _j[0], setSelectedText = _j[1];
|
|
9772
9934
|
var _k = React$1.useState(null), selectedElementSVG = _k[0], setSelectedElementSVG = _k[1];
|
|
9773
9935
|
var _l = React$1.useState(false), mouseDownedOnPaper = _l[0], setMouseDownedOnPaper = _l[1];
|
|
9774
9936
|
var paperEventEmitter = React$1.useContext(paperEventEmitterContext);
|
|
9775
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]);
|
|
9776
9948
|
useKeyboardCommands({
|
|
9777
9949
|
element: paperContainerRef.current
|
|
9778
9950
|
});
|
|
@@ -9780,6 +9952,10 @@ var Paper = function (props) {
|
|
|
9780
9952
|
var parsedElementsInTree = convertElementsToTree(elements);
|
|
9781
9953
|
setElementsInTree(parsedElementsInTree);
|
|
9782
9954
|
};
|
|
9955
|
+
//Cache tempLink to avoid re-render when tempLink changed
|
|
9956
|
+
React$1.useEffect(function () {
|
|
9957
|
+
tempLinkRef.current = tempLink;
|
|
9958
|
+
}, [tempLink]);
|
|
9783
9959
|
//Listen text is selected
|
|
9784
9960
|
React$1.useEffect(function () {
|
|
9785
9961
|
var textSelectedListener = paperEventEmitter.onTextSelected(function (text) {
|
|
@@ -9802,7 +9978,7 @@ var Paper = function (props) {
|
|
|
9802
9978
|
setSelectedElementSVG(null);
|
|
9803
9979
|
setSelectedLink(undefined);
|
|
9804
9980
|
//broadcast selected port to parent component
|
|
9805
|
-
var element =
|
|
9981
|
+
var element = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
9806
9982
|
if (element) {
|
|
9807
9983
|
(_a = props.onPortSelected) === null || _a === void 0 ? void 0 : _a.call(props, port, element);
|
|
9808
9984
|
}
|
|
@@ -9813,16 +9989,17 @@ var Paper = function (props) {
|
|
|
9813
9989
|
}, []);
|
|
9814
9990
|
React$1.useEffect(function () {
|
|
9815
9991
|
//Listen parent of elements changed, then update elements tree
|
|
9816
|
-
var parentChangedCancelers =
|
|
9992
|
+
var parentChangedCancelers = elementsRef.current.map(function (element) {
|
|
9817
9993
|
var _a;
|
|
9818
9994
|
return (_a = element.onParentChanged) === null || _a === void 0 ? void 0 : _a.call(element, function (newPa, oldPa) {
|
|
9819
9995
|
updateElementsTree();
|
|
9820
9996
|
});
|
|
9821
9997
|
});
|
|
9822
9998
|
//Listen a new port added, then re-render the element component
|
|
9823
|
-
var addedPortCancelers =
|
|
9999
|
+
var addedPortCancelers = elementsRef.current.map(function (element) {
|
|
9824
10000
|
var _a;
|
|
9825
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));
|
|
9826
10003
|
//Set state to re-render component
|
|
9827
10004
|
setElements(function (prev) { return prev.map(function (ele) {
|
|
9828
10005
|
if (ele.id === element.id) {
|
|
@@ -9836,11 +10013,11 @@ var Paper = function (props) {
|
|
|
9836
10013
|
parentChangedCancelers.forEach(function (canceller) { return canceller === null || canceller === void 0 ? void 0 : canceller(); });
|
|
9837
10014
|
addedPortCancelers.forEach(function (canceller) { return canceller(); });
|
|
9838
10015
|
};
|
|
9839
|
-
},
|
|
10016
|
+
}, []);
|
|
9840
10017
|
//Update elements tree when length of elements change
|
|
9841
10018
|
React$1.useEffect(function () {
|
|
9842
10019
|
updateElementsTree();
|
|
9843
|
-
}, [elements
|
|
10020
|
+
}, [elements]);
|
|
9844
10021
|
//Get all child elements of the deleted element
|
|
9845
10022
|
var getDeletedChildElements = function (deletedElement) {
|
|
9846
10023
|
if (!deletedElement.childrenElements)
|
|
@@ -9906,9 +10083,9 @@ var Paper = function (props) {
|
|
|
9906
10083
|
listener.off();
|
|
9907
10084
|
};
|
|
9908
10085
|
}, [selectedText]);
|
|
9909
|
-
var size = props.size;
|
|
9910
10086
|
//Automatically add points on the link so that the link does not cross elements, default maximum 10 points
|
|
9911
|
-
var automationAddPointsToLink = function (eleLink, limitPoint) {
|
|
10087
|
+
var automationAddPointsToLink = React$1.useCallback(function (eleLink, limitPoint) {
|
|
10088
|
+
if (limitPoint === void 0) { limitPoint = 10; }
|
|
9912
10089
|
var sourceElement = eleLink.sourceElement, sourcePort = eleLink.sourcePort, targetElement = eleLink.targetElement, targetPort = eleLink.targetPort;
|
|
9913
10090
|
var sourcePosition = {
|
|
9914
10091
|
x: sourceElement.position.x + sourcePort.position.x,
|
|
@@ -9936,10 +10113,12 @@ var Paper = function (props) {
|
|
|
9936
10113
|
var appendedPoints = generatePositions(replacementPosition, targetPosition, elements);
|
|
9937
10114
|
return __spreadArray(__spreadArray(__spreadArray([], prependedPoints, true), [replacementPosition], false), appendedPoints, true);
|
|
9938
10115
|
}
|
|
10116
|
+
var elements = elementsRef.current;
|
|
9939
10117
|
var points = generatePositions(sourcePosition, targetPosition, elements);
|
|
9940
10118
|
return __assign(__assign({}, eleLink), { points: points });
|
|
9941
|
-
};
|
|
10119
|
+
}, []);
|
|
9942
10120
|
var handlePaperMouseMove = function (ev) {
|
|
10121
|
+
var _a;
|
|
9943
10122
|
//if there is a temp link, update the temp target point
|
|
9944
10123
|
if (tempLink) {
|
|
9945
10124
|
var currentTarget = ev.currentTarget;
|
|
@@ -9958,24 +10137,35 @@ var Paper = function (props) {
|
|
|
9958
10137
|
};
|
|
9959
10138
|
setTempLink(function (prev) { return (__assign(__assign({}, prev), { tempTargetPosition: tempTargetPosition_1 })); });
|
|
9960
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
|
+
});
|
|
9961
10145
|
};
|
|
9962
10146
|
var handleMouseDownOnPaper = function (ev) {
|
|
9963
|
-
var _a;
|
|
10147
|
+
var _a, _b;
|
|
9964
10148
|
setMouseDownedOnPaper(true);
|
|
9965
10149
|
(_a = props.onPaperClicked) === null || _a === void 0 ? void 0 : _a.call(props, {
|
|
9966
10150
|
x: ev.clientX,
|
|
9967
10151
|
y: ev.clientY
|
|
9968
10152
|
});
|
|
9969
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
|
+
});
|
|
9970
10159
|
};
|
|
9971
10160
|
var handleMouseUpOnPaper = function (ev) {
|
|
10161
|
+
var _a;
|
|
9972
10162
|
if (mouseDownedOnPaper) {
|
|
9973
10163
|
setSelectedElement(undefined);
|
|
9974
10164
|
setSelectedElementSVG(null);
|
|
9975
10165
|
}
|
|
9976
10166
|
//clear temp link if exists
|
|
9977
10167
|
if (tempLink) {
|
|
9978
|
-
setTempLink(
|
|
10168
|
+
setTempLink(null);
|
|
9979
10169
|
paperEventEmitter.emitElementLinkEnded();
|
|
9980
10170
|
}
|
|
9981
10171
|
//Clear selected text
|
|
@@ -9983,6 +10173,11 @@ var Paper = function (props) {
|
|
|
9983
10173
|
setSelectedText(undefined);
|
|
9984
10174
|
}
|
|
9985
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
|
+
});
|
|
9986
10181
|
};
|
|
9987
10182
|
var handlePathChange = React$1.useCallback(function (path, id) {
|
|
9988
10183
|
//Update path of element link, that changed
|
|
@@ -9992,42 +10187,44 @@ var Paper = function (props) {
|
|
|
9992
10187
|
return __spreadArray([], prevLinks, true);
|
|
9993
10188
|
});
|
|
9994
10189
|
}, []);
|
|
9995
|
-
var handlePortMoved = function (port, elementId, oldPosition, newPosition) {
|
|
9996
|
-
var element =
|
|
9997
|
-
if (
|
|
9998
|
-
|
|
9999
|
-
|
|
10000
|
-
|
|
10001
|
-
|
|
10002
|
-
|
|
10003
|
-
if (link.sourceElement.id === elementId && link.sourcePort.id === port.id) {
|
|
10004
|
-
link.sourcePort.position = newPosition;
|
|
10005
|
-
}
|
|
10006
|
-
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) {
|
|
10007
|
-
link.targetPort.position = newPosition;
|
|
10008
|
-
}
|
|
10009
|
-
return link;
|
|
10010
|
-
}); });
|
|
10011
|
-
//Update port position in element, not re-render
|
|
10012
|
-
setElements(function (prevElements) {
|
|
10013
|
-
var _a;
|
|
10014
|
-
var updatedElementIndex = prevElements.findIndex(function (e) { return e.id === elementId; });
|
|
10015
|
-
prevElements[updatedElementIndex].ports = (_a = prevElements[updatedElementIndex].ports) === null || _a === void 0 ? void 0 : _a.map(function (p) {
|
|
10016
|
-
if (p.id === port.id) {
|
|
10017
|
-
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;
|
|
10018
10198
|
}
|
|
10019
|
-
|
|
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;
|
|
10020
10215
|
});
|
|
10021
|
-
|
|
10022
|
-
|
|
10023
|
-
|
|
10216
|
+
if (props.onPortMoved) {
|
|
10217
|
+
props.onPortMoved(newPosition, port, element);
|
|
10218
|
+
}
|
|
10219
|
+
}
|
|
10220
|
+
}, [props.onPortMoved]);
|
|
10024
10221
|
//Handle creating a new element link
|
|
10025
|
-
var handlePortMouseDown = function (ev, port, elementId) {
|
|
10222
|
+
var handlePortMouseDown = React$1.useCallback(function (ev, port, elementId) {
|
|
10026
10223
|
ev.stopPropagation();
|
|
10027
10224
|
//Return if creating a new element link
|
|
10028
|
-
if (
|
|
10225
|
+
if (tempLinkRef.current)
|
|
10029
10226
|
return;
|
|
10030
|
-
var sourceElement =
|
|
10227
|
+
var sourceElement = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
10031
10228
|
//handle create temp element link;
|
|
10032
10229
|
var newLink = {
|
|
10033
10230
|
id: generateUniqueId(),
|
|
@@ -10037,8 +10234,8 @@ var Paper = function (props) {
|
|
|
10037
10234
|
};
|
|
10038
10235
|
setTempLink(newLink);
|
|
10039
10236
|
paperEventEmitter.emitElementLinkStarted(newLink);
|
|
10040
|
-
};
|
|
10041
|
-
var createElementLink = function (sourcePort, sourceElement, targetPort, targetElement) {
|
|
10237
|
+
}, [paperEventEmitter]);
|
|
10238
|
+
var createElementLink = React$1.useCallback(function (sourcePort, sourceElement, targetPort, targetElement) {
|
|
10042
10239
|
//if no onCreatingLink prop, no link will be created
|
|
10043
10240
|
if (!props.onCreatingLink) {
|
|
10044
10241
|
return null;
|
|
@@ -10051,17 +10248,17 @@ var Paper = function (props) {
|
|
|
10051
10248
|
newElementLink = automationAddPointsToLink(newElementLink, MAX_LINK_KNOT_COUNT);
|
|
10052
10249
|
}
|
|
10053
10250
|
return newElementLink;
|
|
10054
|
-
};
|
|
10055
|
-
var handlePortMouseUp = function (ev, port, elementId) {
|
|
10251
|
+
}, [props.onCreatingLink, automationAddPointsToLink]);
|
|
10252
|
+
var handlePortMouseUp = React$1.useCallback(function (ev, port, elementId) {
|
|
10056
10253
|
ev.stopPropagation();
|
|
10057
10254
|
//Create new element link, if has tempLink
|
|
10058
|
-
if (
|
|
10255
|
+
if (tempLinkRef.current) {
|
|
10059
10256
|
//Check if mouse up point is mouse down point or not
|
|
10060
|
-
var isMouseUpOnNotSelf =
|
|
10257
|
+
var isMouseUpOnNotSelf = tempLinkRef.current.sourcePort.id !== port.id || tempLinkRef.current.sourceElement.id !== elementId;
|
|
10061
10258
|
var newElementLink_1 = null;
|
|
10062
10259
|
if (isMouseUpOnNotSelf) {
|
|
10063
|
-
var sourcePort =
|
|
10064
|
-
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; });
|
|
10065
10262
|
newElementLink_1 = createElementLink(sourcePort, sourceElement, port, targetElement);
|
|
10066
10263
|
}
|
|
10067
10264
|
if (newElementLink_1) {
|
|
@@ -10071,9 +10268,9 @@ var Paper = function (props) {
|
|
|
10071
10268
|
else {
|
|
10072
10269
|
paperEventEmitter.emitElementLinkEnded();
|
|
10073
10270
|
}
|
|
10074
|
-
setTempLink(
|
|
10271
|
+
setTempLink(null);
|
|
10075
10272
|
}
|
|
10076
|
-
};
|
|
10273
|
+
}, [paperEventEmitter, createElementLink]);
|
|
10077
10274
|
var handleLinkLabelMoved = React$1.useCallback(function (offsetX, offsetY, index, labelType) {
|
|
10078
10275
|
setLinks(function (prevLinks) {
|
|
10079
10276
|
var newLinks = __spreadArray([], prevLinks, true);
|
|
@@ -10259,8 +10456,11 @@ var Paper = function (props) {
|
|
|
10259
10456
|
});
|
|
10260
10457
|
};
|
|
10261
10458
|
}, []);
|
|
10262
|
-
var handleMouseUpAtLinkedPortPlaceholder = function (link, position,
|
|
10263
|
-
|
|
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));
|
|
10264
10464
|
if (props.onCreatingPortByLinking) {
|
|
10265
10465
|
var sourcePort = link.sourcePort, sourceElement = link.sourceElement;
|
|
10266
10466
|
//Handle create port via onCreatingPortByLinking prop
|
|
@@ -10274,20 +10474,20 @@ var Paper = function (props) {
|
|
|
10274
10474
|
if (newElementLink_2) {
|
|
10275
10475
|
setLinks(function (prev) { return __spreadArray(__spreadArray([], prev, true), [newElementLink_2], false); });
|
|
10276
10476
|
paperEventEmitter.emitElementLinkEnded(newElementLink_2);
|
|
10277
|
-
setTempLink(
|
|
10477
|
+
setTempLink(null);
|
|
10278
10478
|
return;
|
|
10279
10479
|
}
|
|
10280
10480
|
}
|
|
10281
10481
|
}
|
|
10282
10482
|
//Clear tempLink
|
|
10283
|
-
setTempLink(
|
|
10483
|
+
setTempLink(null);
|
|
10284
10484
|
paperEventEmitter.emitElementLinkEnded();
|
|
10285
|
-
};
|
|
10286
|
-
var handleElementTextChange = function (
|
|
10485
|
+
}, [props.onCreatingPortByLinking, createElementLink, paperEventEmitter]);
|
|
10486
|
+
var handleElementTextChange = React$1.useCallback(function (elementId, textId, newContent) {
|
|
10287
10487
|
setElements(function (prevElms) {
|
|
10288
10488
|
return prevElms.map(function (curEle) {
|
|
10289
10489
|
//Find changed text of element to update the content for it.
|
|
10290
|
-
if (curEle.id ===
|
|
10490
|
+
if (curEle.id === elementId && curEle.texts) {
|
|
10291
10491
|
var updatedTextId = curEle.texts.findIndex(function (t) { return t.id === textId; });
|
|
10292
10492
|
if (updatedTextId !== undefined) {
|
|
10293
10493
|
curEle.texts[updatedTextId].content = newContent;
|
|
@@ -10296,41 +10496,53 @@ var Paper = function (props) {
|
|
|
10296
10496
|
return curEle;
|
|
10297
10497
|
});
|
|
10298
10498
|
});
|
|
10299
|
-
};
|
|
10300
|
-
var handleElementClicked = function (
|
|
10499
|
+
}, []);
|
|
10500
|
+
var handleElementClicked = React$1.useCallback(function (elementId, e, ref) {
|
|
10301
10501
|
e.stopPropagation();
|
|
10502
|
+
var tempLink = tempLinkRef.current;
|
|
10302
10503
|
if (tempLink) {
|
|
10303
10504
|
//Clear tempLink
|
|
10304
|
-
setTempLink(
|
|
10505
|
+
setTempLink(null);
|
|
10305
10506
|
paperEventEmitter.emitElementLinkEnded();
|
|
10306
10507
|
}
|
|
10307
10508
|
else {
|
|
10509
|
+
var element = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
10308
10510
|
setSelectedElementSVG(ref);
|
|
10309
|
-
|
|
10310
|
-
|
|
10511
|
+
if (element) {
|
|
10512
|
+
setSelectedElement(element);
|
|
10513
|
+
paperEventEmitter.emitElementSelected(element);
|
|
10514
|
+
}
|
|
10311
10515
|
}
|
|
10312
10516
|
setMouseDownedOnPaper(false);
|
|
10313
|
-
};
|
|
10314
|
-
var
|
|
10315
|
-
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;
|
|
10316
10529
|
//use the defined react element or the default Element component
|
|
10317
|
-
var ReactElement = element.reactElement || Element;
|
|
10318
|
-
|
|
10319
|
-
|
|
10320
|
-
|
|
10321
|
-
|
|
10322
|
-
|
|
10323
|
-
|
|
10324
|
-
|
|
10325
|
-
|
|
10326
|
-
|
|
10327
|
-
|
|
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]);
|
|
10328
10542
|
return (React$1.createElement("div", { style: { position: "relative" } },
|
|
10329
10543
|
React$1.createElement(Ruler, { squareSize: 100, border: '1px dashed grey' }),
|
|
10330
10544
|
React$1.createElement("svg", { tabIndex: 0, width: size.width, height: size.height, ref: paperContainerRef, id: "paper-container", onMouseMove: handlePaperMouseMove, onMouseDown: handleMouseDownOnPaper, onMouseUp: handleMouseUpOnPaper },
|
|
10331
|
-
paperContainerRef.current ?
|
|
10332
|
-
return renderElementInTree(element);
|
|
10333
|
-
}) : "",
|
|
10545
|
+
paperContainerRef.current ? ElementsInTree : "",
|
|
10334
10546
|
links && links.map(function (link, index) {
|
|
10335
10547
|
var _a, _b, _c, _d;
|
|
10336
10548
|
return (React$1.createElement(ElementLink, { key: link.id, id: link.id, path: link.path, sourcePosition: {
|
|
@@ -10350,10 +10562,17 @@ var Paper = function (props) {
|
|
|
10350
10562
|
} })); })),
|
|
10351
10563
|
React$1.createElement(BBoxDebugger, { elementSVG: selectedElementSVG }),
|
|
10352
10564
|
React$1.createElement(LinkDebugger, { links: links, svgContainer: paperContainerRef.current })));
|
|
10353
|
-
};
|
|
10565
|
+
};
|
|
10566
|
+
var Paper$1 = React$1.memo(Paper);
|
|
10354
10567
|
|
|
10355
10568
|
function Editor(_a) {
|
|
10356
|
-
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
|
+
}
|
|
10357
10576
|
var handlePaperClicked = React$1.useCallback(function (position) {
|
|
10358
10577
|
editorContext.onPaperClickedHandler(position);
|
|
10359
10578
|
}, [editorContext]);
|
|
@@ -10381,15 +10600,37 @@ function Editor(_a) {
|
|
|
10381
10600
|
var handleTextSelected = React$1.useCallback(function (text) {
|
|
10382
10601
|
editorContext.onTextSelectedHandler(text);
|
|
10383
10602
|
}, [editorContext]);
|
|
10384
|
-
|
|
10385
|
-
|
|
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;
|
|
10386
10627
|
}
|
|
10387
10628
|
|
|
10388
10629
|
exports.CircleRC = Circle;
|
|
10389
10630
|
exports.CrescentRC = Crescent;
|
|
10390
10631
|
exports.CustomShapeRC = CustomShape;
|
|
10391
10632
|
exports.EditorContext = EditorContext;
|
|
10392
|
-
exports.Element = Element$
|
|
10633
|
+
exports.Element = Element$2;
|
|
10393
10634
|
exports.ElementLink = ElementLink$1;
|
|
10394
10635
|
exports.ElementLinkRC = ElementLink;
|
|
10395
10636
|
exports.Port = Port$1;
|