orcasvn-react-diagrams 0.1.52 → 0.1.53
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 +112 -16
- package/dist/cjs/types/components/paper.d.ts +1 -0
- package/dist/cjs/types/models/IElementLinkProps.d.ts +1 -0
- package/dist/cjs/types/models/IElementProps.d.ts +1 -0
- package/dist/cjs/types/models/IText.d.ts +1 -0
- package/dist/cjs/types/models/ITextProps.d.ts +1 -0
- package/dist/cjs/types/models/implementations/ElementLink.d.ts +1 -1
- package/dist/cjs/types/models/implementations/Text.d.ts +2 -1
- package/dist/cjs/types/utils/pathUtil.d.ts +2 -0
- package/dist/esm/index.js +111 -17
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/components/paper.d.ts +1 -0
- package/dist/esm/types/models/IElementLinkProps.d.ts +1 -0
- package/dist/esm/types/models/IElementProps.d.ts +1 -0
- package/dist/esm/types/models/IText.d.ts +1 -0
- package/dist/esm/types/models/ITextProps.d.ts +1 -0
- package/dist/esm/types/models/implementations/ElementLink.d.ts +1 -1
- package/dist/esm/types/models/implementations/Text.d.ts +2 -1
- package/dist/esm/types/utils/pathUtil.d.ts +2 -0
- package/dist/index.d.ts +11 -4
- package/package.json +1 -1
package/dist/cjs/index.js
CHANGED
|
@@ -731,6 +731,7 @@ var Port$1 = /** @class */ (function () {
|
|
|
731
731
|
}());
|
|
732
732
|
|
|
733
733
|
var ElementLink$1 = /** @class */ (function () {
|
|
734
|
+
// constructor(id: string | null, sourceElement: IElement, sourcePort: IPort, targetElement: IElement, targetPort: IPort, tempTargetPosition: IPosition, points?: IPosition[]);
|
|
734
735
|
function ElementLink(id, sourceElement, sourcePort, targetElement, targetPort, tempTargetPosition, points, path, markerStart, markerEnd, markerDistanceFromPort, markerSize, label, sourceLabel, targetLabel) {
|
|
735
736
|
this.id = id || generateUniqueId();
|
|
736
737
|
this.sourceElement = sourceElement;
|
|
@@ -769,7 +770,7 @@ var ElementLink$1 = /** @class */ (function () {
|
|
|
769
770
|
}());
|
|
770
771
|
|
|
771
772
|
var Text$2 = /** @class */ (function () {
|
|
772
|
-
function Text(id, content, width, height, editable, x, y, align, fontSize, border, style) {
|
|
773
|
+
function Text(id, content, width, height, editable, selectable, x, y, align, fontSize, border, style) {
|
|
773
774
|
this._id = id || generateUniqueId();
|
|
774
775
|
this.content = content;
|
|
775
776
|
this.align = align;
|
|
@@ -778,6 +779,10 @@ var Text$2 = /** @class */ (function () {
|
|
|
778
779
|
this.size = { width: width, height: height };
|
|
779
780
|
this.style = style;
|
|
780
781
|
this.editable = editable;
|
|
782
|
+
this.selectable = selectable;
|
|
783
|
+
if (selectable === undefined) {
|
|
784
|
+
this.selectable = true; // Default to true if not specified
|
|
785
|
+
}
|
|
781
786
|
if (x && y) {
|
|
782
787
|
this.position = { x: x, y: y };
|
|
783
788
|
}
|
|
@@ -1710,9 +1715,9 @@ var paperEventEmitterContext = React.createContext({
|
|
|
1710
1715
|
});
|
|
1711
1716
|
|
|
1712
1717
|
var Text = React.forwardRef(function (_a, ref) {
|
|
1713
|
-
var id = _a.id, content = _a.content, x = _a.x, y = _a.y, width = _a.width, height = _a.height, editable = _a.editable, _b = _a.align, align =
|
|
1714
|
-
var
|
|
1715
|
-
var
|
|
1718
|
+
var id = _a.id, content = _a.content, x = _a.x, y = _a.y, width = _a.width, height = _a.height, editable = _a.editable, _b = _a.selectable, selectable = _b === void 0 ? true : _b, _c = _a.align, align = _c === void 0 ? exports.TextAlign.left : _c, fontSizeProp = _a.fontSize, border = _a.border, container = _a.container, parentAbsolutePosition = _a.parentAbsolutePosition, onSelected = _a.onSelected, onMoved = _a.onMoved, onResized = _a.onResized, onContentChanged = _a.onContentChanged;
|
|
1719
|
+
var _d = React.useState(false), isSelected = _d[0], setIsSelected = _d[1];
|
|
1720
|
+
var _e = React.useState(false), isEditing = _e[0], setIsEditing = _e[1];
|
|
1716
1721
|
var absolutePosition = React.useMemo(function () {
|
|
1717
1722
|
var _a, _b;
|
|
1718
1723
|
return {
|
|
@@ -1721,7 +1726,7 @@ var Text = React.forwardRef(function (_a, ref) {
|
|
|
1721
1726
|
};
|
|
1722
1727
|
}, [x, y, parentAbsolutePosition === null || parentAbsolutePosition === void 0 ? void 0 : parentAbsolutePosition.x, parentAbsolutePosition === null || parentAbsolutePosition === void 0 ? void 0 : parentAbsolutePosition.y]);
|
|
1723
1728
|
var svgRef = React.useRef();
|
|
1724
|
-
var
|
|
1729
|
+
var _f = React.useContext(paperEventEmitterContext), onPaperClicked = _f.onPaperClicked, emitTextSelected = _f.emitTextSelected, onPortSelected = _f.onPortSelected, onElementSelected = _f.onElementSelected, onTextSelected = _f.onTextSelected;
|
|
1725
1730
|
React.useEffect(function () {
|
|
1726
1731
|
var paperClickListener = onPaperClicked(function (ev) {
|
|
1727
1732
|
var _a;
|
|
@@ -1754,6 +1759,8 @@ var Text = React.forwardRef(function (_a, ref) {
|
|
|
1754
1759
|
}, []);
|
|
1755
1760
|
//Handle click on svg element
|
|
1756
1761
|
var handleClick = function (ev) {
|
|
1762
|
+
if (!selectable)
|
|
1763
|
+
return;
|
|
1757
1764
|
ev.stopPropagation();
|
|
1758
1765
|
var position = {
|
|
1759
1766
|
x: x,
|
|
@@ -7914,7 +7921,7 @@ var Port1 = React.forwardRef(function (props, ref) {
|
|
|
7914
7921
|
var renderLabel = function (label) {
|
|
7915
7922
|
var content = label.content, size = label.size;
|
|
7916
7923
|
var position = label.position || PORT_LABEL_POSITION;
|
|
7917
|
-
return React.createElement(Text$1, { id: label.id, ref: textRef, x: x + position.x, y: y + position.y, parentAbsolutePosition: parentAbsolutePosition, width: size.width, height: size.height, editable: label.editable, content: content, fontSize: label.fontSize, border: label.border, container: container, onMoved: function (xOnPaper, yOnPaper) {
|
|
7924
|
+
return React.createElement(Text$1, { id: label.id, ref: textRef, x: x + position.x, y: y + position.y, parentAbsolutePosition: parentAbsolutePosition, width: size.width, height: size.height, editable: label.editable, selectable: label.selectable, content: content, fontSize: label.fontSize, border: label.border, container: container, onMoved: function (xOnPaper, yOnPaper) {
|
|
7918
7925
|
if (onPortLabelMoved) {
|
|
7919
7926
|
var relativePosInSideEle = transformAbsPositionToRelativePositionInsideElement({ x: xOnPaper, y: yOnPaper }, parentAbsolutePosition);
|
|
7920
7927
|
var newXPort = relativePosInSideEle.x - x;
|
|
@@ -8055,6 +8062,55 @@ function addPointToList(point, listPoints, path) {
|
|
|
8055
8062
|
var addedIndex = getAddIndex(0, listPoints.length - 1);
|
|
8056
8063
|
listPoints.splice(addedIndex, 0, point);
|
|
8057
8064
|
return __spreadArray([], listPoints, true);
|
|
8065
|
+
}
|
|
8066
|
+
// Parse the d attribute of a path element and extract points from path commands
|
|
8067
|
+
function getPointsFromPathData(dAttribute) {
|
|
8068
|
+
var points = [];
|
|
8069
|
+
// Remove extra whitespace and split by command letters
|
|
8070
|
+
var cleanD = dAttribute.replace(/\s+/g, ' ').trim();
|
|
8071
|
+
// Regular expression to match path commands (M, L, C, etc.) and their values
|
|
8072
|
+
var commandRegex = /([MLCZmlcz])\s*([^MLCZmlcz]*)/g;
|
|
8073
|
+
var match;
|
|
8074
|
+
while ((match = commandRegex.exec(cleanD)) !== null) {
|
|
8075
|
+
var command = match[1].toUpperCase();
|
|
8076
|
+
var values = match[2].trim();
|
|
8077
|
+
if (values) {
|
|
8078
|
+
var coords = values.split(/[\s,]+/).map(Number).filter(function (num) { return !isNaN(num); });
|
|
8079
|
+
switch (command) {
|
|
8080
|
+
case 'M': // Move to
|
|
8081
|
+
if (coords.length >= 2) {
|
|
8082
|
+
points.push({ x: coords[0], y: coords[1] });
|
|
8083
|
+
}
|
|
8084
|
+
break;
|
|
8085
|
+
case 'L': // Line to
|
|
8086
|
+
if (coords.length >= 2) {
|
|
8087
|
+
points.push({ x: coords[0], y: coords[1] });
|
|
8088
|
+
}
|
|
8089
|
+
break;
|
|
8090
|
+
case 'C': // Cubic bezier curve
|
|
8091
|
+
// For cubic curves, we take the end point (last 2 coordinates)
|
|
8092
|
+
if (coords.length >= 6) {
|
|
8093
|
+
points.push({ x: coords[4], y: coords[5] });
|
|
8094
|
+
}
|
|
8095
|
+
break;
|
|
8096
|
+
case 'Q': // Quadratic bezier curve
|
|
8097
|
+
// For quadratic curves, we take the end point (last 2 coordinates)
|
|
8098
|
+
if (coords.length >= 4) {
|
|
8099
|
+
points.push({ x: coords[2], y: coords[3] });
|
|
8100
|
+
}
|
|
8101
|
+
break;
|
|
8102
|
+
}
|
|
8103
|
+
}
|
|
8104
|
+
}
|
|
8105
|
+
return points;
|
|
8106
|
+
}
|
|
8107
|
+
// Get points from a path element's d attribute
|
|
8108
|
+
function getPointsFromPathElement(pathElement) {
|
|
8109
|
+
var dAttribute = pathElement.getAttribute('d');
|
|
8110
|
+
if (!dAttribute) {
|
|
8111
|
+
return [];
|
|
8112
|
+
}
|
|
8113
|
+
return getPointsFromPathData(dAttribute);
|
|
8058
8114
|
}
|
|
8059
8115
|
|
|
8060
8116
|
//Defined remove icon for element link, shown when element link is selected.
|
|
@@ -8074,7 +8130,7 @@ function CloseIcon(_a) {
|
|
|
8074
8130
|
// const makerEnd = <path d="M0 0 L 20 10 L0 20 Z" fill="blue"></path>//<path d="M0 0 L 10 5 L0 10 Z"></path>
|
|
8075
8131
|
var IElementLink = function (_a) {
|
|
8076
8132
|
var _b, _c;
|
|
8077
|
-
var id = _a.id, path = _a.path, stroke = _a.stroke, _d = _a.strokeWidth, strokeWidth = _d === void 0 ? 4 : _d, pointsProp = _a.points, sourcePosition = _a.sourcePosition, targetPosition = _a.targetPosition, onPathChanged = _a.onPathChanged, onClickDelete = _a.onClickDelete, onSelected = _a.onSelected, onDeselected = _a.onDeselected, container = _a.container, markerStart = _a.markerStart, markerEnd = _a.markerEnd, _e = _a.markerDistanceFromPort, markerDistanceFromPort = _e === void 0 ? LINK_MARKER_DISTANCE_FROM_PORT : _e, _f = _a.markerSize, markerSize = _f === void 0 ? LINK_MARKER_SIZE : _f, label = _a.label, sourceLabel = _a.sourceLabel, targetLabel = _a.targetLabel, onLabelMoved = _a.onLabelMoved, onLabelResized = _a.onLabelResized, onLabelContentChanged = _a.onLabelContentChanged;
|
|
8133
|
+
var id = _a.id, path = _a.path, stroke = _a.stroke, _d = _a.strokeWidth, strokeWidth = _d === void 0 ? 4 : _d, pointsProp = _a.points, sourcePosition = _a.sourcePosition, targetPosition = _a.targetPosition, onPathChanged = _a.onPathChanged, onClickDelete = _a.onClickDelete, onSelected = _a.onSelected, onDeselected = _a.onDeselected, onPointsChanged = _a.onPointsChanged, container = _a.container, markerStart = _a.markerStart, markerEnd = _a.markerEnd, _e = _a.markerDistanceFromPort, markerDistanceFromPort = _e === void 0 ? LINK_MARKER_DISTANCE_FROM_PORT : _e, _f = _a.markerSize, markerSize = _f === void 0 ? LINK_MARKER_SIZE : _f, label = _a.label, sourceLabel = _a.sourceLabel, targetLabel = _a.targetLabel, onLabelMoved = _a.onLabelMoved, onLabelResized = _a.onLabelResized, onLabelContentChanged = _a.onLabelContentChanged;
|
|
8078
8134
|
var _g = React.useState(path), pathStr = _g[0], setPathStr = _g[1];
|
|
8079
8135
|
var _h = React.useState(pointsProp !== null && pointsProp !== void 0 ? pointsProp : []), points = _h[0], setPoints = _h[1];
|
|
8080
8136
|
var _j = React.useState(false), isDragging = _j[0], setIsDragging = _j[1];
|
|
@@ -8088,6 +8144,8 @@ var IElementLink = function (_a) {
|
|
|
8088
8144
|
var labelRef = React.useRef(null);
|
|
8089
8145
|
var sourceLabelRef = React.useRef(null);
|
|
8090
8146
|
var targetLabelRef = React.useRef(null);
|
|
8147
|
+
var isFirstRender = React.useRef(true);
|
|
8148
|
+
var onPointsChangedRef = React.useRef();
|
|
8091
8149
|
var angleMarkerStart = '0';
|
|
8092
8150
|
var angleMarkerEnd = '0';
|
|
8093
8151
|
var markerStartPosition;
|
|
@@ -8117,6 +8175,18 @@ var IElementLink = function (_a) {
|
|
|
8117
8175
|
elementSelectedListener.off();
|
|
8118
8176
|
};
|
|
8119
8177
|
}, []);
|
|
8178
|
+
// Store onPointsChanged in a ref to avoid unnecessary re-renders
|
|
8179
|
+
React.useEffect(function () {
|
|
8180
|
+
onPointsChangedRef.current = onPointsChanged;
|
|
8181
|
+
}, [onPointsChanged]);
|
|
8182
|
+
React.useEffect(function () {
|
|
8183
|
+
var _a;
|
|
8184
|
+
if (isFirstRender.current) {
|
|
8185
|
+
isFirstRender.current = false;
|
|
8186
|
+
return;
|
|
8187
|
+
}
|
|
8188
|
+
(_a = onPointsChangedRef.current) === null || _a === void 0 ? void 0 : _a.call(onPointsChangedRef, points, id);
|
|
8189
|
+
}, [points]);
|
|
8120
8190
|
React.useLayoutEffect(function () {
|
|
8121
8191
|
var pointsList = __spreadArray(__spreadArray([sourcePosition], points, true), [targetPosition], false);
|
|
8122
8192
|
var _pathStr = createSmoothPathString(pointsList, undefined, false);
|
|
@@ -8292,7 +8362,7 @@ var IElementLink = function (_a) {
|
|
|
8292
8362
|
position.x += relativePositionTo.x;
|
|
8293
8363
|
position.y += relativePositionTo.y;
|
|
8294
8364
|
}
|
|
8295
|
-
return (React.createElement(Text$1, { id: label.id, x: position.x, y: position.y, width: size.width, height: size.height, editable: label.editable, content: content, fontSize: label.fontSize, border: label.border, ref: curLabelRef, container: container, onSelected: function () { return setSelectedLabelRef(curLabelRef); }, onMoved: handleLabelMoved, onResized: handleLabelResized, onContentChanged: handleLabelContentChanged }));
|
|
8365
|
+
return (React.createElement(Text$1, { id: label.id, x: position.x, y: position.y, width: size.width, height: size.height, editable: label.editable, selectable: label.selectable, content: content, fontSize: label.fontSize, border: label.border, ref: curLabelRef, container: container, onSelected: function () { return setSelectedLabelRef(curLabelRef); }, onMoved: handleLabelMoved, onResized: handleLabelResized, onContentChanged: handleLabelContentChanged }));
|
|
8296
8366
|
};
|
|
8297
8367
|
if ((_b = pathRef.current) === null || _b === void 0 ? void 0 : _b.getAttribute('d')) {
|
|
8298
8368
|
if (markerStart) {
|
|
@@ -8495,15 +8565,18 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
8495
8565
|
//Listen trigger of Delete key, handle delete port is selected
|
|
8496
8566
|
React.useEffect(function () {
|
|
8497
8567
|
var listener = _paperEventEmitterContext.onCommandDeleteSelectedPort(function () {
|
|
8568
|
+
var _a;
|
|
8498
8569
|
if (selectedPort) {
|
|
8499
|
-
|
|
8570
|
+
var newPorts = portsRef.current.filter(function (p) { return p.id !== selectedPort.id; });
|
|
8571
|
+
setPorts(newPorts);
|
|
8500
8572
|
setSelectedPort(undefined);
|
|
8573
|
+
(_a = props.onPortsChanged) === null || _a === void 0 ? void 0 : _a.call(props, newPorts, id);
|
|
8501
8574
|
}
|
|
8502
8575
|
});
|
|
8503
8576
|
return function () {
|
|
8504
8577
|
listener.off();
|
|
8505
8578
|
};
|
|
8506
|
-
}, [selectedPort]);
|
|
8579
|
+
}, [selectedPort, props.onPortsChanged]);
|
|
8507
8580
|
React.useEffect(function () {
|
|
8508
8581
|
//Listener onMouseDown event on #paper-container
|
|
8509
8582
|
var eventListener = _paperEventEmitterContext.onPaperClicked(function (ev) {
|
|
@@ -8842,7 +8915,7 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
8842
8915
|
}), texts === null || texts === void 0 ? void 0 :
|
|
8843
8916
|
texts.map(function (t, index) {
|
|
8844
8917
|
var _a, _b;
|
|
8845
|
-
return React.createElement(Text$1, { id: t.id, key: index, content: t.content, x: ((_a = t.position) === null || _a === void 0 ? void 0 : _a.x) || 0, y: ((_b = t.position) === null || _b === void 0 ? void 0 : _b.y) || 0, width: t.size.width, height: t.size.height, editable: t.editable, align: t.align, fontSize: t.fontSize, border: t.border, container: container, style: t.style, parentAbsolutePosition: elementAbsPosition, onContentChanged: function (ev, newContent) { return onTextUpdated === null || onTextUpdated === void 0 ? void 0 : onTextUpdated(id, t.id, newContent); } });
|
|
8918
|
+
return React.createElement(Text$1, { id: t.id, key: index, content: t.content, x: ((_a = t.position) === null || _a === void 0 ? void 0 : _a.x) || 0, y: ((_b = t.position) === null || _b === void 0 ? void 0 : _b.y) || 0, width: t.size.width, height: t.size.height, editable: t.editable, selectable: t.selectable, align: t.align, fontSize: t.fontSize, border: t.border, container: container, style: t.style, parentAbsolutePosition: elementAbsPosition, onContentChanged: function (ev, newContent) { return onTextUpdated === null || onTextUpdated === void 0 ? void 0 : onTextUpdated(id, t.id, newContent); } });
|
|
8846
8919
|
}),
|
|
8847
8920
|
children)));
|
|
8848
8921
|
});
|
|
@@ -9440,6 +9513,17 @@ var Paper = function (props) {
|
|
|
9440
9513
|
props.onLinksChanged(newLinks);
|
|
9441
9514
|
}
|
|
9442
9515
|
}, [props.onLinksChanged, links]);
|
|
9516
|
+
var handlePointsOfLinkChange = React.useCallback(function (points, id) {
|
|
9517
|
+
//Update path of element link, that changed
|
|
9518
|
+
// const prevLinks = linksRef.current;
|
|
9519
|
+
var updatedLinkIndex = links.findIndex(function (l) { return l.id === id; });
|
|
9520
|
+
links[updatedLinkIndex].points = points;
|
|
9521
|
+
var newLinks = __spreadArray([], links, true);
|
|
9522
|
+
setLinks(newLinks);
|
|
9523
|
+
if (props.onLinksChanged) {
|
|
9524
|
+
props.onLinksChanged(newLinks);
|
|
9525
|
+
}
|
|
9526
|
+
}, [props.onLinksChanged, links]);
|
|
9443
9527
|
var handlePortMoved = React.useCallback(function (port, elementId, oldPosition, newPosition) {
|
|
9444
9528
|
var _a;
|
|
9445
9529
|
var element = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
@@ -9548,6 +9632,13 @@ var Paper = function (props) {
|
|
|
9548
9632
|
setTempLink(null);
|
|
9549
9633
|
}
|
|
9550
9634
|
}, [paperEventEmitter, createElementLink, props.onPortMouseUp, props.onLinksChanged]);
|
|
9635
|
+
var handlePortsChanged = React.useCallback(function (ports, elementId) {
|
|
9636
|
+
var element = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
9637
|
+
if (element) {
|
|
9638
|
+
//broadcast ports changed to parent component
|
|
9639
|
+
props.onPortsChanged(ports, element);
|
|
9640
|
+
}
|
|
9641
|
+
}, [props.onPortsChanged]);
|
|
9551
9642
|
var handleLinkLabelMoved = React.useCallback(function (newX, newY, index, labelType) {
|
|
9552
9643
|
var prevLinks = linksRef.current;
|
|
9553
9644
|
var newLinks = __spreadArray([], prevLinks, true);
|
|
@@ -9798,7 +9889,7 @@ var Paper = function (props) {
|
|
|
9798
9889
|
//use the defined react element or the default Element component
|
|
9799
9890
|
var ReactElement = element.reactElement || Element$1;
|
|
9800
9891
|
return (React.createElement("g", { id: "group-of-element-".concat(element.id), key: element.id },
|
|
9801
|
-
React.createElement(ReactElement, { key: "element-".concat(element.id), id: element.id, ref: function (refDOM) { return element.DOM = refDOM; }, height: element.size.height, width: element.size.width, x: element.positionAnchor === exports.PositioningAnchor.Center ? element.position.x - element.size.width / 2 : element.position.x, y: element.positionAnchor === exports.PositioningAnchor.Center ? element.position.y - element.size.height / 2 : element.position.y, onClick: handleElementClicked, onContextMenu: handleContextMenu, onMouseUp: handleMouseUp, onMouseDown: handleMouseDown, onMouseMove: handleMouseMove, onMouseLeave: handleMouseLeave, container: paperContainerRef.current, renderShape: element.renderShape, cssClass: element.cssClass, texts: element.texts, ports: element.ports, portMoveableAreas: element.portMoveableAreas, portSlideRailSVGClassName: element.portSlideRailSVGClassName, portDirection: element.portDirection, defaultPortSize: element.defaultPortSize, onPortMoved: handlePortMoved, onPortMouseDown: handlePortMouseDown, onPortMouseUp: handlePortMouseUp,
|
|
9892
|
+
React.createElement(ReactElement, { key: "element-".concat(element.id), id: element.id, ref: function (refDOM) { return element.DOM = refDOM; }, height: element.size.height, width: element.size.width, x: element.positionAnchor === exports.PositioningAnchor.Center ? element.position.x - element.size.width / 2 : element.position.x, y: element.positionAnchor === exports.PositioningAnchor.Center ? element.position.y - element.size.height / 2 : element.position.y, onClick: handleElementClicked, onContextMenu: handleContextMenu, onMouseUp: handleMouseUp, onMouseDown: handleMouseDown, onMouseMove: handleMouseMove, onMouseLeave: handleMouseLeave, container: paperContainerRef.current, renderShape: element.renderShape, cssClass: element.cssClass, texts: element.texts, ports: element.ports, portMoveableAreas: element.portMoveableAreas, portSlideRailSVGClassName: element.portSlideRailSVGClassName, portDirection: element.portDirection, defaultPortSize: element.defaultPortSize, onPortMoved: handlePortMoved, onPortMouseDown: handlePortMouseDown, onPortMouseUp: handlePortMouseUp, onPortsChanged: handlePortsChanged,
|
|
9802
9893
|
// portPlaceholderShape={(<Circle x={0} y={0} width={10} height={10} fill='red' positioningAnchor={PositioningAnchor.Center} />)}
|
|
9803
9894
|
onMouseUpAtLinkedPortPlaceholder: handleMouseUpAtLinkedPortPlaceholder, onTextUpdated: handleElementTextChange, onManuallyTriggerRenderPort: props.onManuallyTriggerRenderPort, textsPlaceHolderClassName: element.textsPlaceHolderClassName, textsPlaceHolderFlexStyle: element.textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition: element.textsPlaceHolderFlexboxPosition, parentAbsolutePosition: element.parentElement ? getAbsolutePosition(element.parentElement) : undefined },
|
|
9804
9895
|
element.childrenElementsInTree && element.childrenElementsInTree.map(renderElementInTree),
|
|
@@ -9863,7 +9954,7 @@ var Paper = function (props) {
|
|
|
9863
9954
|
paperEventEmitter.emitElementResized(selectedElement, oldSize, newSize);
|
|
9864
9955
|
setMouseDownedOnPaper(false);
|
|
9865
9956
|
} }))));
|
|
9866
|
-
}, [handleElementClicked, handleContextMenu, handlePortMoved, handlePortMouseDown, handlePortMouseUp, handleMouseUpAtLinkedPortPlaceholder, handleElementTextChange, handleMouseUp, handleMouseMove, handleMouseLeave, selectedElement, selectedElementAbsPosition]);
|
|
9957
|
+
}, [handlePortsChanged, handleElementClicked, handleContextMenu, handlePortMoved, handlePortMouseDown, handlePortMouseUp, handleMouseUpAtLinkedPortPlaceholder, handleElementTextChange, handleMouseUp, handleMouseMove, handleMouseLeave, selectedElement, selectedElementAbsPosition]);
|
|
9867
9958
|
var ElementsInTree = React.useMemo(function () {
|
|
9868
9959
|
return elementsInTree.map(function (element, index) {
|
|
9869
9960
|
return renderElementInTree(element);
|
|
@@ -9882,13 +9973,13 @@ var Paper = function (props) {
|
|
|
9882
9973
|
}, targetPosition: {
|
|
9883
9974
|
x: getAbsolutePosition(link.targetElement).x + link.targetPort.position.x,
|
|
9884
9975
|
y: getAbsolutePosition(link.targetElement).y + link.targetPort.position.y
|
|
9885
|
-
}, points: link.points, onPathChanged: handlePathChange, onClickDelete: handleClickLinkDelete(link, index), onSelected: function () { return handleSelectLink(link); }, onDeselected: function () { return handleDeselectLink(); }, container: paperContainerRef.current, markerStart: link.markerStart, markerEnd: link.markerEnd, markerDistanceFromPort: link.markerDistanceFromPort, markerSize: link.markerSize, label: link.label, sourceLabel: link.sourceLabel, targetLabel: link.targetLabel, onLabelMoved: onLabelMoved(index), onLabelResized: onLabelResized(index), onLabelContentChanged: onLabelContentChanged(index) }));
|
|
9976
|
+
}, points: link.points, onPathChanged: handlePathChange, onPointsChanged: handlePointsOfLinkChange, onClickDelete: handleClickLinkDelete(link, index), onSelected: function () { return handleSelectLink(link); }, onDeselected: function () { return handleDeselectLink(); }, container: paperContainerRef.current, markerStart: link.markerStart, markerEnd: link.markerEnd, markerDistanceFromPort: link.markerDistanceFromPort, markerSize: link.markerSize, label: link.label, sourceLabel: link.sourceLabel, targetLabel: link.targetLabel, onLabelMoved: onLabelMoved(index), onLabelResized: onLabelResized(index), onLabelContentChanged: onLabelContentChanged(index) }));
|
|
9886
9977
|
}),
|
|
9887
9978
|
(tempLink === null || tempLink === void 0 ? void 0 : tempLink.tempTargetPosition) && React.createElement(ElementLink, { id: tempLink.id, points: tempLink.points, sourcePosition: {
|
|
9888
9979
|
x: getAbsolutePosition(tempLink.sourceElement).x + tempLink.sourcePort.position.x,
|
|
9889
9980
|
y: getAbsolutePosition(tempLink.sourceElement).y + tempLink.sourcePort.position.y
|
|
9890
9981
|
}, targetPosition: tempLink.tempTargetPosition, container: paperContainerRef.current, markerStart: tempLink.markerStart, markerEnd: tempLink.markerEnd, markerDistanceFromPort: tempLink.markerDistanceFromPort, markerSize: tempLink.markerSize }),
|
|
9891
|
-
texts.map(function (text, index) { return (React.createElement(Text$1, { key: text.id, id: text.id, x: text.position.x, y: text.position.y, width: text.size.width, height: text.size.height, editable: text.editable, fontSize: text.fontSize, border: text.border, container: paperContainerRef.current, content: text.content, align: text.align, onSelected: function () {
|
|
9982
|
+
texts.map(function (text, index) { return (React.createElement(Text$1, { key: text.id, id: text.id, x: text.position.x, y: text.position.y, width: text.size.width, height: text.size.height, editable: text.editable, selectable: text.selectable, fontSize: text.fontSize, border: text.border, container: paperContainerRef.current, content: text.content, align: text.align, onSelected: function () {
|
|
9892
9983
|
setSelectedText(text);
|
|
9893
9984
|
} })); })),
|
|
9894
9985
|
React.createElement(BBoxDebugger, { elementSVG: selectedElementSVG }),
|
|
@@ -10021,6 +10112,9 @@ var Editor = function (_a) {
|
|
|
10021
10112
|
var handlePortSelected = React.useCallback(function (port, element) {
|
|
10022
10113
|
editorContext.onPortSelectedHandler(port, element);
|
|
10023
10114
|
}, [editorContext]);
|
|
10115
|
+
var handlePortsChanged = React.useCallback(function (ports, element) {
|
|
10116
|
+
element.ports = ports;
|
|
10117
|
+
}, [editorContext]);
|
|
10024
10118
|
var handleElementContextMenu = React.useCallback(function (element, event) {
|
|
10025
10119
|
editorContext.onElementContextMenuHandler(element, event);
|
|
10026
10120
|
}, [editorContext]);
|
|
@@ -10082,7 +10176,7 @@ var Editor = function (_a) {
|
|
|
10082
10176
|
editorContext.onPaperMouseUpHandler(position);
|
|
10083
10177
|
}, [editorContext]);
|
|
10084
10178
|
return (React.createElement(ZoomContextProvider, null,
|
|
10085
|
-
React.createElement(Paper$1, { key: "paper", size: { width: width, height: height }, elements: elements, links: links, texts: texts, onPaperClicked: handlePaperClicked, onPortMouseDown: handlePortMouseDown, onPortMouseUp: handlePortMouseUp, onPortMoved: handlePortMoved, onPortSelected: handlePortSelected, onElementContextMenu: handleElementContextMenu, onElementMoved: handleElementMoved, onElementResized: handleElementResized, onElementSelected: handleElementSelected, onElementMouseLeave: handleElementMouseLeave, onElementMouseMove: handleElementMouseMove, onElementMouseDown: handleElementMouseDown, onElementMouseUp: handleElementMouseUp, onElementsChanged: handleElementsChanged, onCreatingLink: handleOnCreatingLink, onCreatingPortByLinking: handleOnCreatingPortByLinking, onLinkSelected: handleLinkSelected, onLinksChanged: handleLinksChanged, onTextSelected: handleTextSelected, onTextsChanged: handleTextsChanged, onPaperMouseMoved: handlePaperMouseMoved, onPaperMouseUp: handlePaperMouseUp, onPaperMouseDown: handlePaperMouseDown, onManuallyTriggerRenderElement: editorContext.onManuallyTriggerRenderElement.bind(editorContext), onManuallyTriggerRenderPort: editorContext.onManuallyTriggerRenderPort.bind(editorContext) })));
|
|
10179
|
+
React.createElement(Paper$1, { key: "paper", size: { width: width, height: height }, elements: elements, links: links, texts: texts, onPaperClicked: handlePaperClicked, onPortMouseDown: handlePortMouseDown, onPortMouseUp: handlePortMouseUp, onPortMoved: handlePortMoved, onPortSelected: handlePortSelected, onPortsChanged: handlePortsChanged, onElementContextMenu: handleElementContextMenu, onElementMoved: handleElementMoved, onElementResized: handleElementResized, onElementSelected: handleElementSelected, onElementMouseLeave: handleElementMouseLeave, onElementMouseMove: handleElementMouseMove, onElementMouseDown: handleElementMouseDown, onElementMouseUp: handleElementMouseUp, onElementsChanged: handleElementsChanged, onCreatingLink: handleOnCreatingLink, onCreatingPortByLinking: handleOnCreatingPortByLinking, onLinkSelected: handleLinkSelected, onLinksChanged: handleLinksChanged, onTextSelected: handleTextSelected, onTextsChanged: handleTextsChanged, onPaperMouseMoved: handlePaperMouseMoved, onPaperMouseUp: handlePaperMouseUp, onPaperMouseDown: handlePaperMouseDown, onManuallyTriggerRenderElement: editorContext.onManuallyTriggerRenderElement.bind(editorContext), onManuallyTriggerRenderPort: editorContext.onManuallyTriggerRenderPort.bind(editorContext) })));
|
|
10086
10180
|
};
|
|
10087
10181
|
|
|
10088
10182
|
exports.CircleRC = Circle;
|
|
@@ -10122,6 +10216,8 @@ exports.getElementRotationInfo = getElementRotationInfo;
|
|
|
10122
10216
|
exports.getFirstIntersection = getFirstIntersection;
|
|
10123
10217
|
exports.getFourVertexesOfBBoxFromElement = getFourVertexesOfBBoxFromElement;
|
|
10124
10218
|
exports.getIntersectionPositions = getIntersectionPositions;
|
|
10219
|
+
exports.getPointsFromPathData = getPointsFromPathData;
|
|
10220
|
+
exports.getPointsFromPathElement = getPointsFromPathElement;
|
|
10125
10221
|
exports.getPortAbsolutePosition = getPortAbsolutePosition;
|
|
10126
10222
|
exports.getRectangleCorners = getRectangleCorners;
|
|
10127
10223
|
exports.getRelativePosition = getRelativePosition;
|
|
@@ -21,6 +21,7 @@ interface PaperProps {
|
|
|
21
21
|
onPortMouseUp?: (port: IPort, element: IElement) => void;
|
|
22
22
|
onPortMoved?: (position: IPosition, port: IPort, element: IElement) => void;
|
|
23
23
|
onPortSelected?: (port: IPort, element: IElement) => void;
|
|
24
|
+
onPortsChanged: (ports: IPort[], element: IElement) => void;
|
|
24
25
|
onElementContextMenu?: (element: IElement, mouseEvent: React.MouseEvent<SVGElement>) => void;
|
|
25
26
|
onElementMoved?: (position: IPosition, element: IElement, index: number) => void;
|
|
26
27
|
onElementResized?: (size: ISize, element: IElement, index: number) => void;
|
|
@@ -21,6 +21,7 @@ export default interface IElementLinkProps {
|
|
|
21
21
|
markerDistanceFromPort?: number;
|
|
22
22
|
markerSize?: number;
|
|
23
23
|
onPathChanged?: (path: string, id: string) => void;
|
|
24
|
+
onPointsChanged?: (points: IPosition[], id: string) => void;
|
|
24
25
|
onClickDelete?: (ev: React.MouseEvent) => void;
|
|
25
26
|
onSelected?: () => void;
|
|
26
27
|
onDeselected?: () => void;
|
|
@@ -29,6 +29,7 @@ interface IElementProps {
|
|
|
29
29
|
onPortMoved?: onPortMovedHandler;
|
|
30
30
|
onPortMouseDown?: onPortMouseDownHandler;
|
|
31
31
|
onPortMouseUp?: onPortMouseUpHandler;
|
|
32
|
+
onPortsChanged?: (ports: IPort[], elementId: string) => void;
|
|
32
33
|
portPlaceholderShape?: JSX.Element;
|
|
33
34
|
onMouseMove?: (event: React.MouseEvent, elementId: string) => void;
|
|
34
35
|
onMouseLeave?: (event: React.MouseEvent, elementId: string) => void;
|
|
@@ -20,5 +20,5 @@ export default class ElementLink implements IElementLink {
|
|
|
20
20
|
label?: IText;
|
|
21
21
|
sourceLabel?: IText;
|
|
22
22
|
targetLabel?: IText;
|
|
23
|
-
constructor(id: string | null, sourceElement: IElement, sourcePort: IPort, targetElement
|
|
23
|
+
constructor(id: string | null, sourceElement: IElement, sourcePort: IPort, targetElement?: IElement, targetPort?: IPort, tempTargetPosition?: IPosition, points?: IPosition[], path?: string, markerStart?: JSX.Element, markerEnd?: JSX.Element, markerDistanceFromPort?: number, markerSize?: number, label?: IText, sourceLabel?: IText, targetLabel?: IText);
|
|
24
24
|
}
|
|
@@ -7,12 +7,13 @@ export default class Text implements IText {
|
|
|
7
7
|
private readonly _id;
|
|
8
8
|
content: string;
|
|
9
9
|
editable: boolean;
|
|
10
|
+
selectable?: boolean;
|
|
10
11
|
size: ISize;
|
|
11
12
|
position?: IPosition;
|
|
12
13
|
align?: TextAlign;
|
|
13
14
|
fontSize?: number;
|
|
14
15
|
border?: string;
|
|
15
16
|
style?: IFlexboxType;
|
|
16
|
-
constructor(id: string | null, content: string, width: number, height: number, editable: boolean, x?: number, y?: number, align?: TextAlign, fontSize?: number, border?: string, style?: IFlexboxType);
|
|
17
|
+
constructor(id: string | null, content: string, width: number, height: number, editable: boolean, selectable?: boolean, x?: number, y?: number, align?: TextAlign, fontSize?: number, border?: string, style?: IFlexboxType);
|
|
17
18
|
get id(): string;
|
|
18
19
|
}
|
|
@@ -8,4 +8,6 @@ export declare function pathDataToD(pathData: IPathCommand[], decimals?: number)
|
|
|
8
8
|
export declare function createSmoothPathString(points: IPosition[], smoothing?: number, close?: boolean): string;
|
|
9
9
|
export declare function dist(p1: IPosition, p2: IPosition): number;
|
|
10
10
|
export declare function addPointToList(point: IPosition, listPoints: IPosition[], path: SVGPathElement): IPosition[];
|
|
11
|
+
export declare function getPointsFromPathData(dAttribute: string): IPosition[];
|
|
12
|
+
export declare function getPointsFromPathElement(pathElement: SVGPathElement): IPosition[];
|
|
11
13
|
export {};
|