orcasvn-react-diagrams 0.1.52 → 0.1.54
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 +192 -36
- package/dist/cjs/types/components/paper.d.ts +1 -0
- package/dist/cjs/types/components/shapes/rectangle.d.ts +1 -0
- package/dist/cjs/types/components/shapes/rectangularFrame.d.ts +1 -0
- package/dist/cjs/types/contexts/editorConfigurationContext.d.ts +4 -0
- package/dist/cjs/types/models/IEditorConfiguration.d.ts +3 -0
- package/dist/cjs/types/models/IEditorContext.d.ts +2 -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/EditorContext.d.ts +4 -1
- package/dist/cjs/types/models/implementations/Element.d.ts +1 -1
- 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 +192 -38
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/components/paper.d.ts +1 -0
- package/dist/esm/types/components/shapes/rectangle.d.ts +1 -0
- package/dist/esm/types/components/shapes/rectangularFrame.d.ts +1 -0
- package/dist/esm/types/contexts/editorConfigurationContext.d.ts +4 -0
- package/dist/esm/types/models/IEditorConfiguration.d.ts +3 -0
- package/dist/esm/types/models/IEditorContext.d.ts +2 -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/EditorContext.d.ts +4 -1
- package/dist/esm/types/models/implementations/Element.d.ts +1 -1
- 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 +22 -6
- 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
|
}
|
|
@@ -814,7 +819,7 @@ var EVENT_ELEMENT_MOUSE_DOWN = 'elementMouseDown';
|
|
|
814
819
|
var EVENT_LINK_SELECTED = 'linkSelected';
|
|
815
820
|
var EVENT_TEXT_SELECTED = 'textSelected';
|
|
816
821
|
var EditorContext = /** @class */ (function () {
|
|
817
|
-
function EditorContext(elements, links, texts) {
|
|
822
|
+
function EditorContext(elements, links, texts, configuration) {
|
|
818
823
|
var _this = this;
|
|
819
824
|
/** @internal */
|
|
820
825
|
this.onEditorContextUpdated = function (callback) {
|
|
@@ -827,6 +832,7 @@ var EditorContext = /** @class */ (function () {
|
|
|
827
832
|
this._elements = elements;
|
|
828
833
|
this._links = links;
|
|
829
834
|
this._texts = texts;
|
|
835
|
+
this._configuration = configuration || {};
|
|
830
836
|
this._eventEmitter = new EventEmitter();
|
|
831
837
|
}
|
|
832
838
|
EditorContext.prototype.addEventListener = function (event, callback) {
|
|
@@ -867,6 +873,13 @@ var EditorContext = /** @class */ (function () {
|
|
|
867
873
|
enumerable: false,
|
|
868
874
|
configurable: true
|
|
869
875
|
});
|
|
876
|
+
Object.defineProperty(EditorContext.prototype, "configuration", {
|
|
877
|
+
get: function () {
|
|
878
|
+
return this._configuration;
|
|
879
|
+
},
|
|
880
|
+
enumerable: false,
|
|
881
|
+
configurable: true
|
|
882
|
+
});
|
|
870
883
|
EditorContext.prototype.getElement = function (elementId) {
|
|
871
884
|
return this._elements.find(function (e) { return e.id === elementId; });
|
|
872
885
|
};
|
|
@@ -1105,8 +1118,20 @@ var Rectangle = React.forwardRef(function (props, ref) {
|
|
|
1105
1118
|
scaledWidth = scaledWidth / heightRatio;
|
|
1106
1119
|
}
|
|
1107
1120
|
var sw = props.stroke ? (props.strokeWidth || 1) : 0;
|
|
1121
|
+
var strokeDasharray;
|
|
1122
|
+
var strokeLinecap = undefined;
|
|
1123
|
+
if (props.strokeStyle === 'dashed') {
|
|
1124
|
+
strokeDasharray = '8, 4';
|
|
1125
|
+
}
|
|
1126
|
+
else if (props.strokeStyle === 'dotted') {
|
|
1127
|
+
strokeDasharray = '0, 4';
|
|
1128
|
+
strokeLinecap = 'round';
|
|
1129
|
+
}
|
|
1130
|
+
else {
|
|
1131
|
+
strokeDasharray = undefined;
|
|
1132
|
+
}
|
|
1108
1133
|
return (React.createElement(ShapeWrapper, __assign({}, props, { ref: ref, height: props.height, width: props.width }),
|
|
1109
|
-
React.createElement("rect", { className: "rect-border ".concat(props.portMoveableAreaCssClass), vectorEffect: "non-scaling-stroke", width: scaledWidth, height: scaledHeight, fill: props.fill || "transparent", stroke: props.stroke || "none", strokeWidth: sw }),
|
|
1134
|
+
React.createElement("rect", { className: "rect-border ".concat(props.portMoveableAreaCssClass), vectorEffect: "non-scaling-stroke", width: scaledWidth, height: scaledHeight, fill: props.fill || "transparent", stroke: props.stroke || "none", strokeWidth: sw, strokeDasharray: strokeDasharray, strokeLinecap: strokeLinecap }),
|
|
1110
1135
|
props.children));
|
|
1111
1136
|
});
|
|
1112
1137
|
|
|
@@ -1128,10 +1153,22 @@ var RectangularFrame = React.forwardRef(function (props, ref) {
|
|
|
1128
1153
|
var fw = props.frameColor ? (props.frameWidth || 1) : 0;
|
|
1129
1154
|
var scaledFw = scaledWidth / props.width * fw;
|
|
1130
1155
|
var sw = props.stroke ? (props.strokeWidth || 1) : 0;
|
|
1156
|
+
var strokeDasharray;
|
|
1157
|
+
var strokeLinecap = undefined;
|
|
1158
|
+
if (props.strokeStyle === 'dashed') {
|
|
1159
|
+
strokeDasharray = '8, 4';
|
|
1160
|
+
}
|
|
1161
|
+
else if (props.strokeStyle === 'dotted') {
|
|
1162
|
+
strokeDasharray = '0, 4';
|
|
1163
|
+
strokeLinecap = 'round';
|
|
1164
|
+
}
|
|
1165
|
+
else {
|
|
1166
|
+
strokeDasharray = undefined;
|
|
1167
|
+
}
|
|
1131
1168
|
return (React.createElement(ShapeWrapper, __assign({}, props, { ref: ref, height: props.height, width: props.width }),
|
|
1132
|
-
React.createElement("rect", { vectorEffect: "non-scaling-stroke", className: "rectangular-frame-outer-border ".concat(props.portMoveableAreaCssClass), x: vbX, y: vbY, width: scaledWidth, height: scaledHeight, fill: "none", stroke: props.stroke || "none", strokeWidth: sw }),
|
|
1169
|
+
React.createElement("rect", { vectorEffect: "non-scaling-stroke", className: "rectangular-frame-outer-border ".concat(props.portMoveableAreaCssClass), x: vbX, y: vbY, width: scaledWidth, height: scaledHeight, fill: "none", stroke: props.stroke || "none", strokeWidth: sw, strokeDasharray: strokeDasharray, strokeLinecap: strokeLinecap }),
|
|
1133
1170
|
React.createElement("rect", { vectorEffect: "non-scaling-stroke", className: 'rectangular-frame-hallway', x: vbX + scaledFw / 2, y: vbY + scaledFw / 2, width: scaledWidth - scaledFw, height: scaledHeight - scaledFw, stroke: props.frameColor || "none", strokeWidth: fw, fill: props.fill || "transparent" }),
|
|
1134
|
-
React.createElement("rect", { vectorEffect: "non-scaling-stroke", className: 'rectangular-frame-inner-border', x: vbX + scaledFw, y: vbY + scaledFw, width: scaledWidth - scaledFw * 2, height: scaledHeight - scaledFw * 2, stroke: props.stroke || "none", strokeWidth: sw, fill: props.fill || "transparent" }),
|
|
1171
|
+
React.createElement("rect", { vectorEffect: "non-scaling-stroke", className: 'rectangular-frame-inner-border', x: vbX + scaledFw, y: vbY + scaledFw, width: scaledWidth - scaledFw * 2, height: scaledHeight - scaledFw * 2, stroke: props.stroke || "none", strokeWidth: sw, fill: props.fill || "transparent", strokeDasharray: strokeDasharray, strokeLinecap: strokeLinecap }),
|
|
1135
1172
|
props.children));
|
|
1136
1173
|
});
|
|
1137
1174
|
|
|
@@ -1709,10 +1746,21 @@ var paperEventEmitterContext = React.createContext({
|
|
|
1709
1746
|
onCommandRenderPort: onCommandRenderPort,
|
|
1710
1747
|
});
|
|
1711
1748
|
|
|
1749
|
+
var editorConfigurationContext = React.createContext(null);
|
|
1750
|
+
var useEditorConfiguration = function () {
|
|
1751
|
+
var context = React.useContext(editorConfigurationContext);
|
|
1752
|
+
if (!context) {
|
|
1753
|
+
throw new Error("useEditorConfiguration must be used within an EditorConfigurationProvider");
|
|
1754
|
+
}
|
|
1755
|
+
return context;
|
|
1756
|
+
};
|
|
1757
|
+
var EditorConfigurationContextProvider = editorConfigurationContext.Provider;
|
|
1758
|
+
|
|
1712
1759
|
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
|
|
1760
|
+
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;
|
|
1761
|
+
var _d = React.useState(false), isSelected = _d[0], setIsSelected = _d[1];
|
|
1762
|
+
var _e = React.useState(false), isEditing = _e[0], setIsEditing = _e[1];
|
|
1763
|
+
var textFontSize = useEditorConfiguration().textFontSize;
|
|
1716
1764
|
var absolutePosition = React.useMemo(function () {
|
|
1717
1765
|
var _a, _b;
|
|
1718
1766
|
return {
|
|
@@ -1721,7 +1769,7 @@ var Text = React.forwardRef(function (_a, ref) {
|
|
|
1721
1769
|
};
|
|
1722
1770
|
}, [x, y, parentAbsolutePosition === null || parentAbsolutePosition === void 0 ? void 0 : parentAbsolutePosition.x, parentAbsolutePosition === null || parentAbsolutePosition === void 0 ? void 0 : parentAbsolutePosition.y]);
|
|
1723
1771
|
var svgRef = React.useRef();
|
|
1724
|
-
var
|
|
1772
|
+
var _f = React.useContext(paperEventEmitterContext), onPaperClicked = _f.onPaperClicked, emitTextSelected = _f.emitTextSelected, onPortSelected = _f.onPortSelected, onElementSelected = _f.onElementSelected, onTextSelected = _f.onTextSelected;
|
|
1725
1773
|
React.useEffect(function () {
|
|
1726
1774
|
var paperClickListener = onPaperClicked(function (ev) {
|
|
1727
1775
|
var _a;
|
|
@@ -1754,6 +1802,8 @@ var Text = React.forwardRef(function (_a, ref) {
|
|
|
1754
1802
|
}, []);
|
|
1755
1803
|
//Handle click on svg element
|
|
1756
1804
|
var handleClick = function (ev) {
|
|
1805
|
+
if (!selectable)
|
|
1806
|
+
return;
|
|
1757
1807
|
ev.stopPropagation();
|
|
1758
1808
|
var position = {
|
|
1759
1809
|
x: x,
|
|
@@ -1803,9 +1853,12 @@ var Text = React.forwardRef(function (_a, ref) {
|
|
|
1803
1853
|
return 'left';
|
|
1804
1854
|
}
|
|
1805
1855
|
}, [align]);
|
|
1806
|
-
var fontSize = fontSizeProp || TEXT_FONT_SIZE;
|
|
1856
|
+
var fontSize = fontSizeProp || textFontSize || TEXT_FONT_SIZE;
|
|
1807
1857
|
var borderStyle = border || 'none';
|
|
1808
|
-
return (React.createElement("svg", { style: {
|
|
1858
|
+
return (React.createElement("svg", { style: {
|
|
1859
|
+
overflow: "visible",
|
|
1860
|
+
pointerEvents: selectable ? undefined : 'none',
|
|
1861
|
+
}, x: x, y: y, ref: function (node) {
|
|
1809
1862
|
svgRef.current = node;
|
|
1810
1863
|
if (typeof ref === 'function') {
|
|
1811
1864
|
ref(node);
|
|
@@ -7914,7 +7967,7 @@ var Port1 = React.forwardRef(function (props, ref) {
|
|
|
7914
7967
|
var renderLabel = function (label) {
|
|
7915
7968
|
var content = label.content, size = label.size;
|
|
7916
7969
|
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) {
|
|
7970
|
+
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
7971
|
if (onPortLabelMoved) {
|
|
7919
7972
|
var relativePosInSideEle = transformAbsPositionToRelativePositionInsideElement({ x: xOnPaper, y: yOnPaper }, parentAbsolutePosition);
|
|
7920
7973
|
var newXPort = relativePosInSideEle.x - x;
|
|
@@ -8055,6 +8108,55 @@ function addPointToList(point, listPoints, path) {
|
|
|
8055
8108
|
var addedIndex = getAddIndex(0, listPoints.length - 1);
|
|
8056
8109
|
listPoints.splice(addedIndex, 0, point);
|
|
8057
8110
|
return __spreadArray([], listPoints, true);
|
|
8111
|
+
}
|
|
8112
|
+
// Parse the d attribute of a path element and extract points from path commands
|
|
8113
|
+
function getPointsFromPathData(dAttribute) {
|
|
8114
|
+
var points = [];
|
|
8115
|
+
// Remove extra whitespace and split by command letters
|
|
8116
|
+
var cleanD = dAttribute.replace(/\s+/g, ' ').trim();
|
|
8117
|
+
// Regular expression to match path commands (M, L, C, etc.) and their values
|
|
8118
|
+
var commandRegex = /([MLCZmlcz])\s*([^MLCZmlcz]*)/g;
|
|
8119
|
+
var match;
|
|
8120
|
+
while ((match = commandRegex.exec(cleanD)) !== null) {
|
|
8121
|
+
var command = match[1].toUpperCase();
|
|
8122
|
+
var values = match[2].trim();
|
|
8123
|
+
if (values) {
|
|
8124
|
+
var coords = values.split(/[\s,]+/).map(Number).filter(function (num) { return !isNaN(num); });
|
|
8125
|
+
switch (command) {
|
|
8126
|
+
case 'M': // Move to
|
|
8127
|
+
if (coords.length >= 2) {
|
|
8128
|
+
points.push({ x: coords[0], y: coords[1] });
|
|
8129
|
+
}
|
|
8130
|
+
break;
|
|
8131
|
+
case 'L': // Line to
|
|
8132
|
+
if (coords.length >= 2) {
|
|
8133
|
+
points.push({ x: coords[0], y: coords[1] });
|
|
8134
|
+
}
|
|
8135
|
+
break;
|
|
8136
|
+
case 'C': // Cubic bezier curve
|
|
8137
|
+
// For cubic curves, we take the end point (last 2 coordinates)
|
|
8138
|
+
if (coords.length >= 6) {
|
|
8139
|
+
points.push({ x: coords[4], y: coords[5] });
|
|
8140
|
+
}
|
|
8141
|
+
break;
|
|
8142
|
+
case 'Q': // Quadratic bezier curve
|
|
8143
|
+
// For quadratic curves, we take the end point (last 2 coordinates)
|
|
8144
|
+
if (coords.length >= 4) {
|
|
8145
|
+
points.push({ x: coords[2], y: coords[3] });
|
|
8146
|
+
}
|
|
8147
|
+
break;
|
|
8148
|
+
}
|
|
8149
|
+
}
|
|
8150
|
+
}
|
|
8151
|
+
return points;
|
|
8152
|
+
}
|
|
8153
|
+
// Get points from a path element's d attribute
|
|
8154
|
+
function getPointsFromPathElement(pathElement) {
|
|
8155
|
+
var dAttribute = pathElement.getAttribute('d');
|
|
8156
|
+
if (!dAttribute) {
|
|
8157
|
+
return [];
|
|
8158
|
+
}
|
|
8159
|
+
return getPointsFromPathData(dAttribute);
|
|
8058
8160
|
}
|
|
8059
8161
|
|
|
8060
8162
|
//Defined remove icon for element link, shown when element link is selected.
|
|
@@ -8074,7 +8176,7 @@ function CloseIcon(_a) {
|
|
|
8074
8176
|
// 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
8177
|
var IElementLink = function (_a) {
|
|
8076
8178
|
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;
|
|
8179
|
+
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
8180
|
var _g = React.useState(path), pathStr = _g[0], setPathStr = _g[1];
|
|
8079
8181
|
var _h = React.useState(pointsProp !== null && pointsProp !== void 0 ? pointsProp : []), points = _h[0], setPoints = _h[1];
|
|
8080
8182
|
var _j = React.useState(false), isDragging = _j[0], setIsDragging = _j[1];
|
|
@@ -8088,6 +8190,8 @@ var IElementLink = function (_a) {
|
|
|
8088
8190
|
var labelRef = React.useRef(null);
|
|
8089
8191
|
var sourceLabelRef = React.useRef(null);
|
|
8090
8192
|
var targetLabelRef = React.useRef(null);
|
|
8193
|
+
var isFirstRender = React.useRef(true);
|
|
8194
|
+
var onPointsChangedRef = React.useRef();
|
|
8091
8195
|
var angleMarkerStart = '0';
|
|
8092
8196
|
var angleMarkerEnd = '0';
|
|
8093
8197
|
var markerStartPosition;
|
|
@@ -8117,6 +8221,18 @@ var IElementLink = function (_a) {
|
|
|
8117
8221
|
elementSelectedListener.off();
|
|
8118
8222
|
};
|
|
8119
8223
|
}, []);
|
|
8224
|
+
// Store onPointsChanged in a ref to avoid unnecessary re-renders
|
|
8225
|
+
React.useEffect(function () {
|
|
8226
|
+
onPointsChangedRef.current = onPointsChanged;
|
|
8227
|
+
}, [onPointsChanged]);
|
|
8228
|
+
React.useEffect(function () {
|
|
8229
|
+
var _a;
|
|
8230
|
+
if (isFirstRender.current) {
|
|
8231
|
+
isFirstRender.current = false;
|
|
8232
|
+
return;
|
|
8233
|
+
}
|
|
8234
|
+
(_a = onPointsChangedRef.current) === null || _a === void 0 ? void 0 : _a.call(onPointsChangedRef, points, id);
|
|
8235
|
+
}, [points]);
|
|
8120
8236
|
React.useLayoutEffect(function () {
|
|
8121
8237
|
var pointsList = __spreadArray(__spreadArray([sourcePosition], points, true), [targetPosition], false);
|
|
8122
8238
|
var _pathStr = createSmoothPathString(pointsList, undefined, false);
|
|
@@ -8292,7 +8408,7 @@ var IElementLink = function (_a) {
|
|
|
8292
8408
|
position.x += relativePositionTo.x;
|
|
8293
8409
|
position.y += relativePositionTo.y;
|
|
8294
8410
|
}
|
|
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 }));
|
|
8411
|
+
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
8412
|
};
|
|
8297
8413
|
if ((_b = pathRef.current) === null || _b === void 0 ? void 0 : _b.getAttribute('d')) {
|
|
8298
8414
|
if (markerStart) {
|
|
@@ -8495,15 +8611,18 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
8495
8611
|
//Listen trigger of Delete key, handle delete port is selected
|
|
8496
8612
|
React.useEffect(function () {
|
|
8497
8613
|
var listener = _paperEventEmitterContext.onCommandDeleteSelectedPort(function () {
|
|
8614
|
+
var _a;
|
|
8498
8615
|
if (selectedPort) {
|
|
8499
|
-
|
|
8616
|
+
var newPorts = portsRef.current.filter(function (p) { return p.id !== selectedPort.id; });
|
|
8617
|
+
setPorts(newPorts);
|
|
8500
8618
|
setSelectedPort(undefined);
|
|
8619
|
+
(_a = props.onPortsChanged) === null || _a === void 0 ? void 0 : _a.call(props, newPorts, id);
|
|
8501
8620
|
}
|
|
8502
8621
|
});
|
|
8503
8622
|
return function () {
|
|
8504
8623
|
listener.off();
|
|
8505
8624
|
};
|
|
8506
|
-
}, [selectedPort]);
|
|
8625
|
+
}, [selectedPort, props.onPortsChanged]);
|
|
8507
8626
|
React.useEffect(function () {
|
|
8508
8627
|
//Listener onMouseDown event on #paper-container
|
|
8509
8628
|
var eventListener = _paperEventEmitterContext.onPaperClicked(function (ev) {
|
|
@@ -8842,7 +8961,7 @@ var Element = React.forwardRef(function (props, forwardedRef) {
|
|
|
8842
8961
|
}), texts === null || texts === void 0 ? void 0 :
|
|
8843
8962
|
texts.map(function (t, index) {
|
|
8844
8963
|
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); } });
|
|
8964
|
+
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
8965
|
}),
|
|
8847
8966
|
children)));
|
|
8848
8967
|
});
|
|
@@ -9368,13 +9487,13 @@ var Paper = function (props) {
|
|
|
9368
9487
|
}, [selectedText, props.onTextsChanged]);
|
|
9369
9488
|
var handlePaperMouseMove = function (ev) {
|
|
9370
9489
|
var _a;
|
|
9490
|
+
var currentTarget = ev.currentTarget;
|
|
9491
|
+
// Get the mouse position relative to the paper container
|
|
9492
|
+
var paperRect = currentTarget.getBoundingClientRect();
|
|
9493
|
+
var xPosOnPaper = ev.clientX - paperRect.left;
|
|
9494
|
+
var yPosOnPaper = ev.clientY - paperRect.top;
|
|
9371
9495
|
//if there is a temp link, update the temp target point
|
|
9372
9496
|
if (tempLink) {
|
|
9373
|
-
var currentTarget = ev.currentTarget;
|
|
9374
|
-
//get offset x,y of the temp target point relative paper container
|
|
9375
|
-
var rect = currentTarget.getBoundingClientRect();
|
|
9376
|
-
var offsetX = ev.clientX - rect.left;
|
|
9377
|
-
var offsetY = ev.clientY - rect.top;
|
|
9378
9497
|
var sourceElementAbsPosition = getAbsolutePosition(tempLink.sourceElement);
|
|
9379
9498
|
var sourcePosition = {
|
|
9380
9499
|
x: sourceElementAbsPosition.x + tempLink.sourcePort.position.x,
|
|
@@ -9382,19 +9501,24 @@ var Paper = function (props) {
|
|
|
9382
9501
|
};
|
|
9383
9502
|
//reduce the position of offset to the direction of the source point 1 unit to avoid the link to reach the current mouse position
|
|
9384
9503
|
var tempTargetPosition_1 = {
|
|
9385
|
-
x:
|
|
9386
|
-
y:
|
|
9504
|
+
x: xPosOnPaper - (xPosOnPaper > sourcePosition.x ? 1 : -1),
|
|
9505
|
+
y: yPosOnPaper - (yPosOnPaper > sourcePosition.y ? 1 : -1)
|
|
9387
9506
|
};
|
|
9388
9507
|
setTempLink(function (prev) { return (__assign(__assign({}, prev), { tempTargetPosition: tempTargetPosition_1 })); });
|
|
9389
9508
|
}
|
|
9390
9509
|
//broadcast mouse moved position to parent component
|
|
9391
9510
|
(_a = props.onPaperMouseMoved) === null || _a === void 0 ? void 0 : _a.call(props, {
|
|
9392
|
-
x:
|
|
9393
|
-
y:
|
|
9511
|
+
x: xPosOnPaper,
|
|
9512
|
+
y: yPosOnPaper
|
|
9394
9513
|
});
|
|
9395
9514
|
};
|
|
9396
9515
|
var handleMouseDownOnPaper = function (ev) {
|
|
9397
9516
|
var _a, _b;
|
|
9517
|
+
var currentTarget = ev.currentTarget;
|
|
9518
|
+
// Get the mouse position relative to the paper container
|
|
9519
|
+
var paperRect = currentTarget.getBoundingClientRect();
|
|
9520
|
+
var xPosOnPaper = ev.clientX - paperRect.left;
|
|
9521
|
+
var yPosOnPaper = ev.clientY - paperRect.top;
|
|
9398
9522
|
setMouseDownedOnPaper(true);
|
|
9399
9523
|
(_a = props.onPaperClicked) === null || _a === void 0 ? void 0 : _a.call(props, {
|
|
9400
9524
|
x: ev.clientX,
|
|
@@ -9403,12 +9527,17 @@ var Paper = function (props) {
|
|
|
9403
9527
|
paperEventEmitter.emitPaperClicked(ev);
|
|
9404
9528
|
//broadcast mouse moved position to parent component
|
|
9405
9529
|
(_b = props.onPaperMouseDown) === null || _b === void 0 ? void 0 : _b.call(props, {
|
|
9406
|
-
x:
|
|
9407
|
-
y:
|
|
9530
|
+
x: xPosOnPaper,
|
|
9531
|
+
y: yPosOnPaper
|
|
9408
9532
|
});
|
|
9409
9533
|
};
|
|
9410
9534
|
var handleMouseUpOnPaper = function (ev) {
|
|
9411
9535
|
var _a;
|
|
9536
|
+
var currentTarget = ev.currentTarget;
|
|
9537
|
+
// Get the mouse position relative to the paper container
|
|
9538
|
+
var paperRect = currentTarget.getBoundingClientRect();
|
|
9539
|
+
var xPosOnPaper = ev.clientX - paperRect.left;
|
|
9540
|
+
var yPosOnPaper = ev.clientY - paperRect.top;
|
|
9412
9541
|
if (mouseDownedOnPaper) {
|
|
9413
9542
|
setSelectedElement(undefined);
|
|
9414
9543
|
setSelectedElementSVG(null);
|
|
@@ -9425,8 +9554,8 @@ var Paper = function (props) {
|
|
|
9425
9554
|
setMouseDownedOnPaper(false);
|
|
9426
9555
|
//broadcast mouse moved position to parent component
|
|
9427
9556
|
(_a = props.onPaperMouseUp) === null || _a === void 0 ? void 0 : _a.call(props, {
|
|
9428
|
-
x:
|
|
9429
|
-
y:
|
|
9557
|
+
x: xPosOnPaper,
|
|
9558
|
+
y: yPosOnPaper
|
|
9430
9559
|
});
|
|
9431
9560
|
};
|
|
9432
9561
|
var handlePathChange = React.useCallback(function (path, id) {
|
|
@@ -9440,6 +9569,17 @@ var Paper = function (props) {
|
|
|
9440
9569
|
props.onLinksChanged(newLinks);
|
|
9441
9570
|
}
|
|
9442
9571
|
}, [props.onLinksChanged, links]);
|
|
9572
|
+
var handlePointsOfLinkChange = React.useCallback(function (points, id) {
|
|
9573
|
+
//Update path of element link, that changed
|
|
9574
|
+
// const prevLinks = linksRef.current;
|
|
9575
|
+
var updatedLinkIndex = links.findIndex(function (l) { return l.id === id; });
|
|
9576
|
+
links[updatedLinkIndex].points = points;
|
|
9577
|
+
var newLinks = __spreadArray([], links, true);
|
|
9578
|
+
setLinks(newLinks);
|
|
9579
|
+
if (props.onLinksChanged) {
|
|
9580
|
+
props.onLinksChanged(newLinks);
|
|
9581
|
+
}
|
|
9582
|
+
}, [props.onLinksChanged, links]);
|
|
9443
9583
|
var handlePortMoved = React.useCallback(function (port, elementId, oldPosition, newPosition) {
|
|
9444
9584
|
var _a;
|
|
9445
9585
|
var element = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
@@ -9548,6 +9688,13 @@ var Paper = function (props) {
|
|
|
9548
9688
|
setTempLink(null);
|
|
9549
9689
|
}
|
|
9550
9690
|
}, [paperEventEmitter, createElementLink, props.onPortMouseUp, props.onLinksChanged]);
|
|
9691
|
+
var handlePortsChanged = React.useCallback(function (ports, elementId) {
|
|
9692
|
+
var element = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
9693
|
+
if (element) {
|
|
9694
|
+
//broadcast ports changed to parent component
|
|
9695
|
+
props.onPortsChanged(ports, element);
|
|
9696
|
+
}
|
|
9697
|
+
}, [props.onPortsChanged]);
|
|
9551
9698
|
var handleLinkLabelMoved = React.useCallback(function (newX, newY, index, labelType) {
|
|
9552
9699
|
var prevLinks = linksRef.current;
|
|
9553
9700
|
var newLinks = __spreadArray([], prevLinks, true);
|
|
@@ -9798,7 +9945,7 @@ var Paper = function (props) {
|
|
|
9798
9945
|
//use the defined react element or the default Element component
|
|
9799
9946
|
var ReactElement = element.reactElement || Element$1;
|
|
9800
9947
|
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,
|
|
9948
|
+
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
9949
|
// portPlaceholderShape={(<Circle x={0} y={0} width={10} height={10} fill='red' positioningAnchor={PositioningAnchor.Center} />)}
|
|
9803
9950
|
onMouseUpAtLinkedPortPlaceholder: handleMouseUpAtLinkedPortPlaceholder, onTextUpdated: handleElementTextChange, onManuallyTriggerRenderPort: props.onManuallyTriggerRenderPort, textsPlaceHolderClassName: element.textsPlaceHolderClassName, textsPlaceHolderFlexStyle: element.textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition: element.textsPlaceHolderFlexboxPosition, parentAbsolutePosition: element.parentElement ? getAbsolutePosition(element.parentElement) : undefined },
|
|
9804
9951
|
element.childrenElementsInTree && element.childrenElementsInTree.map(renderElementInTree),
|
|
@@ -9863,7 +10010,7 @@ var Paper = function (props) {
|
|
|
9863
10010
|
paperEventEmitter.emitElementResized(selectedElement, oldSize, newSize);
|
|
9864
10011
|
setMouseDownedOnPaper(false);
|
|
9865
10012
|
} }))));
|
|
9866
|
-
}, [handleElementClicked, handleContextMenu, handlePortMoved, handlePortMouseDown, handlePortMouseUp, handleMouseUpAtLinkedPortPlaceholder, handleElementTextChange, handleMouseUp, handleMouseMove, handleMouseLeave, selectedElement, selectedElementAbsPosition]);
|
|
10013
|
+
}, [handlePortsChanged, handleElementClicked, handleContextMenu, handlePortMoved, handlePortMouseDown, handlePortMouseUp, handleMouseUpAtLinkedPortPlaceholder, handleElementTextChange, handleMouseUp, handleMouseMove, handleMouseLeave, selectedElement, selectedElementAbsPosition]);
|
|
9867
10014
|
var ElementsInTree = React.useMemo(function () {
|
|
9868
10015
|
return elementsInTree.map(function (element, index) {
|
|
9869
10016
|
return renderElementInTree(element);
|
|
@@ -9882,13 +10029,13 @@ var Paper = function (props) {
|
|
|
9882
10029
|
}, targetPosition: {
|
|
9883
10030
|
x: getAbsolutePosition(link.targetElement).x + link.targetPort.position.x,
|
|
9884
10031
|
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) }));
|
|
10032
|
+
}, 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
10033
|
}),
|
|
9887
10034
|
(tempLink === null || tempLink === void 0 ? void 0 : tempLink.tempTargetPosition) && React.createElement(ElementLink, { id: tempLink.id, points: tempLink.points, sourcePosition: {
|
|
9888
10035
|
x: getAbsolutePosition(tempLink.sourceElement).x + tempLink.sourcePort.position.x,
|
|
9889
10036
|
y: getAbsolutePosition(tempLink.sourceElement).y + tempLink.sourcePort.position.y
|
|
9890
10037
|
}, 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 () {
|
|
10038
|
+
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
10039
|
setSelectedText(text);
|
|
9893
10040
|
} })); })),
|
|
9894
10041
|
React.createElement(BBoxDebugger, { elementSVG: selectedElementSVG }),
|
|
@@ -10021,6 +10168,9 @@ var Editor = function (_a) {
|
|
|
10021
10168
|
var handlePortSelected = React.useCallback(function (port, element) {
|
|
10022
10169
|
editorContext.onPortSelectedHandler(port, element);
|
|
10023
10170
|
}, [editorContext]);
|
|
10171
|
+
var handlePortsChanged = React.useCallback(function (ports, element) {
|
|
10172
|
+
element.ports = ports;
|
|
10173
|
+
}, [editorContext]);
|
|
10024
10174
|
var handleElementContextMenu = React.useCallback(function (element, event) {
|
|
10025
10175
|
editorContext.onElementContextMenuHandler(element, event);
|
|
10026
10176
|
}, [editorContext]);
|
|
@@ -10052,6 +10202,7 @@ var Editor = function (_a) {
|
|
|
10052
10202
|
editorContext.onLinkSelectedHandler(link);
|
|
10053
10203
|
}, [editorContext]);
|
|
10054
10204
|
var handleLinksChanged = React.useCallback(function (links) {
|
|
10205
|
+
console.log(links);
|
|
10055
10206
|
editorContext.links = links;
|
|
10056
10207
|
}, [editorContext]);
|
|
10057
10208
|
var handleTextSelected = React.useCallback(function (text) {
|
|
@@ -10073,16 +10224,19 @@ var Editor = function (_a) {
|
|
|
10073
10224
|
return null;
|
|
10074
10225
|
}, [editorContext]);
|
|
10075
10226
|
var handlePaperMouseMoved = React.useCallback(function (position) {
|
|
10227
|
+
console.log("handlePaperMouseMoved", position);
|
|
10076
10228
|
editorContext.onPaperMouseMovedHandler(position);
|
|
10077
10229
|
}, [editorContext]);
|
|
10078
10230
|
var handlePaperMouseDown = React.useCallback(function (position) {
|
|
10231
|
+
console.log("handlePaperMouseDown", position);
|
|
10079
10232
|
editorContext.onPaperMouseDownHandler(position);
|
|
10080
10233
|
}, [editorContext]);
|
|
10081
10234
|
var handlePaperMouseUp = React.useCallback(function (position) {
|
|
10082
10235
|
editorContext.onPaperMouseUpHandler(position);
|
|
10083
10236
|
}, [editorContext]);
|
|
10084
|
-
return (React.createElement(
|
|
10085
|
-
React.createElement(
|
|
10237
|
+
return (React.createElement(EditorConfigurationContextProvider, { value: editorContext.configuration },
|
|
10238
|
+
React.createElement(ZoomContextProvider, null,
|
|
10239
|
+
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
10240
|
};
|
|
10087
10241
|
|
|
10088
10242
|
exports.CircleRC = Circle;
|
|
@@ -10122,6 +10276,8 @@ exports.getElementRotationInfo = getElementRotationInfo;
|
|
|
10122
10276
|
exports.getFirstIntersection = getFirstIntersection;
|
|
10123
10277
|
exports.getFourVertexesOfBBoxFromElement = getFourVertexesOfBBoxFromElement;
|
|
10124
10278
|
exports.getIntersectionPositions = getIntersectionPositions;
|
|
10279
|
+
exports.getPointsFromPathData = getPointsFromPathData;
|
|
10280
|
+
exports.getPointsFromPathElement = getPointsFromPathElement;
|
|
10125
10281
|
exports.getPortAbsolutePosition = getPortAbsolutePosition;
|
|
10126
10282
|
exports.getRectangleCorners = getRectangleCorners;
|
|
10127
10283
|
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;
|
|
@@ -4,6 +4,7 @@ interface RectangleProps extends IShape {
|
|
|
4
4
|
fill?: string;
|
|
5
5
|
stroke?: string;
|
|
6
6
|
strokeWidth?: number;
|
|
7
|
+
strokeStyle?: string;
|
|
7
8
|
}
|
|
8
9
|
declare const Rectangle: React.ForwardRefExoticComponent<RectangleProps & React.RefAttributes<SVGSVGElement>>;
|
|
9
10
|
export default Rectangle;
|
|
@@ -6,6 +6,7 @@ interface RectangularFrameProps extends IShape {
|
|
|
6
6
|
strokeWidth?: number;
|
|
7
7
|
frameColor?: string;
|
|
8
8
|
frameWidth?: number;
|
|
9
|
+
strokeStyle?: string;
|
|
9
10
|
}
|
|
10
11
|
declare const RectangularFrame: React.ForwardRefExoticComponent<RectangularFrameProps & React.RefAttributes<SVGSVGElement>>;
|
|
11
12
|
export default RectangularFrame;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { IEditorConfiguration } from "../models/IEditorConfiguration";
|
|
3
|
+
export declare const useEditorConfiguration: () => IEditorConfiguration;
|
|
4
|
+
export declare const EditorConfigurationContextProvider: import("react").Provider<IEditorConfiguration | null>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
+
import { IEditorConfiguration } from "./IEditorConfiguration";
|
|
2
3
|
import IElement from "./IElement";
|
|
3
4
|
import IElementLink from "./IElementLink";
|
|
4
5
|
import IPort from "./IPort";
|
|
@@ -9,6 +10,7 @@ export default interface IEditorContext {
|
|
|
9
10
|
elements: IElement[];
|
|
10
11
|
links: IElementLink[];
|
|
11
12
|
texts: IPaperText[];
|
|
13
|
+
configuration: IEditorConfiguration;
|
|
12
14
|
onCreatingPortByLinkingHandler?: (sourceElement: IElement, sourcePort: IPort, targetElement: IElement, position: IPosition) => IPort | null;
|
|
13
15
|
onCreatingLinkHandler?: (sourcePort: IPort, sourceElement: IElement, targetPort: IPort, targetElement: IElement) => IElementLink | null;
|
|
14
16
|
onPaperClicked: (callback: (position: IPosition) => void) => (() => 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;
|
|
@@ -6,14 +6,16 @@ import IPosition from "../position";
|
|
|
6
6
|
import IPort from "../IPort";
|
|
7
7
|
import ISize from "../size";
|
|
8
8
|
import IEditorContext from "../IEditorContext";
|
|
9
|
+
import { IEditorConfiguration } from "../IEditorConfiguration";
|
|
9
10
|
export declare class EditorContext implements IEditorContext {
|
|
10
11
|
private _elements;
|
|
11
12
|
private _links;
|
|
12
13
|
private _texts;
|
|
13
14
|
private _eventEmitter;
|
|
15
|
+
private _configuration;
|
|
14
16
|
onCreatingPortByLinkingHandler?: ((sourceElement: IElement, sourcePort: IPort, targetElement: IElement, position: IPosition) => IPort | null) | undefined;
|
|
15
17
|
onCreatingLinkHandler?: ((sourcePort: IPort, sourceElement: IElement, targetPort: IPort, targetElement: IElement) => IElementLink | null) | undefined;
|
|
16
|
-
constructor(elements: IElement[], links: IElementLink[], texts: IPaperText[]);
|
|
18
|
+
constructor(elements: IElement[], links: IElementLink[], texts: IPaperText[], configuration?: IEditorConfiguration);
|
|
17
19
|
private addEventListener;
|
|
18
20
|
get elements(): IElement[];
|
|
19
21
|
get links(): IElementLink[];
|
|
@@ -21,6 +23,7 @@ export declare class EditorContext implements IEditorContext {
|
|
|
21
23
|
set elements(value: IElement[]);
|
|
22
24
|
set links(value: IElementLink[]);
|
|
23
25
|
set texts(value: IPaperText[]);
|
|
26
|
+
get configuration(): IEditorConfiguration;
|
|
24
27
|
getElement(elementId: string): IElement | undefined;
|
|
25
28
|
addElement(element: IElement): void;
|
|
26
29
|
removeElement(elementId: string): void;
|
|
@@ -37,7 +37,7 @@ export default class Element implements IElement {
|
|
|
37
37
|
textsPlaceHolderFlexStyle?: IFlexboxType;
|
|
38
38
|
textsPlaceHolderFlexboxPosition?: IPosition;
|
|
39
39
|
_eventEmitter: EventEmitter;
|
|
40
|
-
constructor(id: string | null, x: number, y: number, width: number, height: number, cssClass?: string, renderShape?: (props: IElementProps) => JSX.Element, texts?: IText[], ports?: IPort[], portMovealeAreas?: IPosition[][], portSlideRailSVGClassName?: string, portDirection?: SubObjectDirection, parentElement?:
|
|
40
|
+
constructor(id: string | null, x: number, y: number, width: number, height: number, cssClass?: string, renderShape?: (props: IElementProps) => JSX.Element, texts?: IText[], ports?: IPort[], portMovealeAreas?: IPosition[][], portSlideRailSVGClassName?: string, portDirection?: SubObjectDirection, parentElement?: IElement, textsPlaceHolderClassName?: string, textsPlaceHolderFlexStyle?: IFlexboxType, textsPlaceHolderFlexboxPosition?: IPosition);
|
|
41
41
|
get id(): string;
|
|
42
42
|
get size(): ISize;
|
|
43
43
|
set size(value: ISize);
|
|
@@ -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
|
}
|