orcasvn-react-diagrams 0.1.34 → 0.1.35
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 +253 -182
- package/dist/cjs/types/components/paper.d.ts +3 -0
- package/dist/cjs/types/models/implementations/EditorContext.d.ts +3 -0
- package/dist/esm/index.js +253 -182
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/components/paper.d.ts +3 -0
- package/dist/esm/types/models/implementations/EditorContext.d.ts +3 -0
- package/dist/index.d.ts +3 -0
- package/package.json +1 -1
package/dist/cjs/index.js
CHANGED
|
@@ -837,6 +837,9 @@ var EditorContext = /** @class */ (function () {
|
|
|
837
837
|
get: function () {
|
|
838
838
|
return this._elements;
|
|
839
839
|
},
|
|
840
|
+
set: function (value) {
|
|
841
|
+
this._elements = value;
|
|
842
|
+
},
|
|
840
843
|
enumerable: false,
|
|
841
844
|
configurable: true
|
|
842
845
|
});
|
|
@@ -844,6 +847,9 @@ var EditorContext = /** @class */ (function () {
|
|
|
844
847
|
get: function () {
|
|
845
848
|
return this._links;
|
|
846
849
|
},
|
|
850
|
+
set: function (value) {
|
|
851
|
+
this._links = value;
|
|
852
|
+
},
|
|
847
853
|
enumerable: false,
|
|
848
854
|
configurable: true
|
|
849
855
|
});
|
|
@@ -851,6 +857,9 @@ var EditorContext = /** @class */ (function () {
|
|
|
851
857
|
get: function () {
|
|
852
858
|
return this._texts;
|
|
853
859
|
},
|
|
860
|
+
set: function (value) {
|
|
861
|
+
this._texts = value;
|
|
862
|
+
},
|
|
854
863
|
enumerable: false,
|
|
855
864
|
configurable: true
|
|
856
865
|
});
|
|
@@ -858,6 +867,10 @@ var EditorContext = /** @class */ (function () {
|
|
|
858
867
|
return this._elements.find(function (e) { return e.id === elementId; });
|
|
859
868
|
};
|
|
860
869
|
EditorContext.prototype.addElement = function (element) {
|
|
870
|
+
//check if element with the same id already exists
|
|
871
|
+
if (this._elements.find(function (e) { return e.id === element.id; })) {
|
|
872
|
+
throw new Error("Element with id ".concat(element.id, " already exists"));
|
|
873
|
+
}
|
|
861
874
|
this._elements = __spreadArray(__spreadArray([], this._elements, true), [element], false);
|
|
862
875
|
this._eventEmitter.emit(EVENT_EDITOR_CONTEXT_UPDATED);
|
|
863
876
|
};
|
|
@@ -869,6 +882,10 @@ var EditorContext = /** @class */ (function () {
|
|
|
869
882
|
return this._links.find(function (l) { return l.id === linkId; });
|
|
870
883
|
};
|
|
871
884
|
EditorContext.prototype.addLink = function (link) {
|
|
885
|
+
//check if link with the same id already exists
|
|
886
|
+
if (this._links.find(function (l) { return l.id === link.id; })) {
|
|
887
|
+
throw new Error("Link with id ".concat(link.id, " already exists"));
|
|
888
|
+
}
|
|
872
889
|
this._links = __spreadArray(__spreadArray([], this._links, true), [link], false);
|
|
873
890
|
this._eventEmitter.emit(EVENT_EDITOR_CONTEXT_UPDATED);
|
|
874
891
|
};
|
|
@@ -880,6 +897,10 @@ var EditorContext = /** @class */ (function () {
|
|
|
880
897
|
return this._texts.find(function (t) { return t.id === textId; });
|
|
881
898
|
};
|
|
882
899
|
EditorContext.prototype.addText = function (text) {
|
|
900
|
+
//check if text with the same id already exists
|
|
901
|
+
if (this._texts.find(function (t) { return t.id === text.id; })) {
|
|
902
|
+
throw new Error("Text with id ".concat(text.id, " already exists"));
|
|
903
|
+
}
|
|
883
904
|
this._texts = __spreadArray(__spreadArray([], this._texts, true), [text], false);
|
|
884
905
|
this._eventEmitter.emit(EVENT_EDITOR_CONTEXT_UPDATED);
|
|
885
906
|
};
|
|
@@ -8082,22 +8103,12 @@ var Element = function (props) {
|
|
|
8082
8103
|
var elementRef = React.useRef(null);
|
|
8083
8104
|
var elementLinkStarted = React.useRef();
|
|
8084
8105
|
var portsRef = React.useRef(ports);
|
|
8085
|
-
React.useEffect(function () {
|
|
8086
|
-
console.log('changed props.children', texts === null || texts === void 0 ? void 0 : texts[0].content);
|
|
8087
|
-
}, [props.children]);
|
|
8088
|
-
React.useEffect(function () {
|
|
8089
|
-
return function () {
|
|
8090
|
-
var _a;
|
|
8091
|
-
console.log('un mount', (_a = texts === null || texts === void 0 ? void 0 : texts[0]) === null || _a === void 0 ? void 0 : _a.content);
|
|
8092
|
-
};
|
|
8093
|
-
}, []);
|
|
8094
8106
|
//Listen to manually trigger render event
|
|
8095
8107
|
React.useEffect(function () {
|
|
8096
8108
|
var _a;
|
|
8097
8109
|
var off = (_a = props.onManuallyTriggerRenderPort) === null || _a === void 0 ? void 0 : _a.call(props, function (portId, elementId) {
|
|
8098
8110
|
if (elementId !== id)
|
|
8099
8111
|
return;
|
|
8100
|
-
console.log('onManuallyTriggerRenderPort', id);
|
|
8101
8112
|
setPorts(function (prev) { return __spreadArray([], prev, true); });
|
|
8102
8113
|
});
|
|
8103
8114
|
return function () {
|
|
@@ -8814,11 +8825,6 @@ function convertElementsToTree(elements) {
|
|
|
8814
8825
|
var foundChildElements = possibleChildElements.filter(function (ele) { var _a; return ((_a = ele.parentElement) === null || _a === void 0 ? void 0 : _a.id) === elementNodeInTree.id; });
|
|
8815
8826
|
var orphanedElements = possibleChildElements.filter(function (ele) { var _a; return ((_a = ele.parentElement) === null || _a === void 0 ? void 0 : _a.id) !== elementNodeInTree.id; });
|
|
8816
8827
|
var childElementsWithChild = foundChildElements.map(function (_elementNodeInTree) {
|
|
8817
|
-
// const relativePosition = {
|
|
8818
|
-
// x: _elementNodeInTree.position.x - elementNodeInTree.position.x,
|
|
8819
|
-
// y: _elementNodeInTree.position.y - elementNodeInTree.position.y,
|
|
8820
|
-
// }
|
|
8821
|
-
// _elementNodeInTree.relativePosition = relativePosition;
|
|
8822
8828
|
var newNode = findChildElementsOfNode(_elementNodeInTree, orphanedElements);
|
|
8823
8829
|
return newNode;
|
|
8824
8830
|
});
|
|
@@ -8828,7 +8834,6 @@ function convertElementsToTree(elements) {
|
|
|
8828
8834
|
var parentElms = elements.filter(function (e) { return !e.parentElement; });
|
|
8829
8835
|
var childElms = elements.filter(function (e) { return e.parentElement; });
|
|
8830
8836
|
var parsedElementsInTree = parentElms.map(function (ele) {
|
|
8831
|
-
// ele.relativePosition = ele.position;
|
|
8832
8837
|
var eleWithChild = findChildElementsOfNode(ele, childElms);
|
|
8833
8838
|
return eleWithChild;
|
|
8834
8839
|
});
|
|
@@ -8849,10 +8854,9 @@ var Paper = function (props) {
|
|
|
8849
8854
|
var paperContainerRef = React.useRef(null);
|
|
8850
8855
|
var tempLinkRef = React.useRef(tempLink); //Cache tempLink to avoid re-render when tempLink changed
|
|
8851
8856
|
var elementsRef = React.useRef(elements); //Cache elements to avoid re-render when elements changed
|
|
8857
|
+
var linksRef = React.useRef(links); //Cache links to avoid re-render when links changed
|
|
8858
|
+
var textsRef = React.useRef(texts); //Cache texts to avoid re-render when texts changed
|
|
8852
8859
|
var size = props.size;
|
|
8853
|
-
React.useEffect(function () {
|
|
8854
|
-
console.log('Render Paper');
|
|
8855
|
-
});
|
|
8856
8860
|
React.useEffect(function () {
|
|
8857
8861
|
setElements(props.elements);
|
|
8858
8862
|
}, [props.elements]);
|
|
@@ -8864,17 +8868,27 @@ var Paper = function (props) {
|
|
|
8864
8868
|
}, [props.texts]);
|
|
8865
8869
|
React.useEffect(function () {
|
|
8866
8870
|
var off = props.onManuallyTriggerRenderElement(function (elementId) {
|
|
8867
|
-
|
|
8868
|
-
|
|
8871
|
+
setElements(__spreadArray([], elements, true));
|
|
8872
|
+
if (props.onElementsChanged) {
|
|
8873
|
+
props.onElementsChanged(__spreadArray([], elements, true));
|
|
8874
|
+
}
|
|
8869
8875
|
});
|
|
8870
8876
|
return function () {
|
|
8871
8877
|
off();
|
|
8872
8878
|
};
|
|
8873
|
-
}, [props.onManuallyTriggerRenderElement]);
|
|
8879
|
+
}, [props.onManuallyTriggerRenderElement, props.onElementsChanged, elements]);
|
|
8874
8880
|
//Cache elements to avoid re-render when elements changed
|
|
8875
8881
|
React.useEffect(function () {
|
|
8876
8882
|
elementsRef.current = elements;
|
|
8877
8883
|
}, [elements]);
|
|
8884
|
+
//Cache links to avoid re-render when links changed
|
|
8885
|
+
React.useEffect(function () {
|
|
8886
|
+
linksRef.current = links;
|
|
8887
|
+
}, [links]);
|
|
8888
|
+
//Cache texts to avoid re-render when texts changed
|
|
8889
|
+
React.useEffect(function () {
|
|
8890
|
+
textsRef.current = texts;
|
|
8891
|
+
}, [texts]);
|
|
8878
8892
|
useKeyboardCommands({
|
|
8879
8893
|
element: paperContainerRef.current
|
|
8880
8894
|
});
|
|
@@ -8922,7 +8936,6 @@ var Paper = function (props) {
|
|
|
8922
8936
|
var parentChangedCancelers = elementsRef.current.map(function (element) {
|
|
8923
8937
|
var _a;
|
|
8924
8938
|
return (_a = element.onParentChanged) === null || _a === void 0 ? void 0 : _a.call(element, function (newPa, oldPa) {
|
|
8925
|
-
console.log('onParentChanged');
|
|
8926
8939
|
updateElementsTree();
|
|
8927
8940
|
});
|
|
8928
8941
|
});
|
|
@@ -8931,13 +8944,18 @@ var Paper = function (props) {
|
|
|
8931
8944
|
var _a;
|
|
8932
8945
|
return (_a = element.onAddedPort) === null || _a === void 0 ? void 0 : _a.call(element, function (newPort) {
|
|
8933
8946
|
console.log("A new port has been added to element ".concat(element.id));
|
|
8934
|
-
|
|
8935
|
-
|
|
8947
|
+
var prevElements = elementsRef.current;
|
|
8948
|
+
var newElements = prevElements.map(function (ele) {
|
|
8936
8949
|
if (ele.id === element.id) {
|
|
8937
8950
|
ele.ports = __spreadArray([], (ele.ports || []), true);
|
|
8938
8951
|
}
|
|
8939
8952
|
return ele;
|
|
8940
|
-
});
|
|
8953
|
+
});
|
|
8954
|
+
//Set state to re-render component
|
|
8955
|
+
setElements(newElements);
|
|
8956
|
+
if (props.onElementsChanged) {
|
|
8957
|
+
props.onElementsChanged(newElements);
|
|
8958
|
+
}
|
|
8941
8959
|
});
|
|
8942
8960
|
});
|
|
8943
8961
|
return function () {
|
|
@@ -8966,8 +8984,20 @@ var Paper = function (props) {
|
|
|
8966
8984
|
if (selectedElement) {
|
|
8967
8985
|
var deletedChildElements = getDeletedChildElements(selectedElement);
|
|
8968
8986
|
var deletedElementIds_1 = __spreadArray(__spreadArray([], deletedChildElements, true), [selectedElement], false).map(function (e) { return e.id; });
|
|
8969
|
-
|
|
8970
|
-
|
|
8987
|
+
var prevElements = elementsRef.current;
|
|
8988
|
+
var newElements = prevElements.filter(function (e) { return !deletedElementIds_1.includes(e.id); });
|
|
8989
|
+
//Set state to re-render component
|
|
8990
|
+
setElements(newElements);
|
|
8991
|
+
if (props.onElementsChanged) {
|
|
8992
|
+
props.onElementsChanged(newElements);
|
|
8993
|
+
}
|
|
8994
|
+
//Update links
|
|
8995
|
+
var prevLinks = linksRef.current;
|
|
8996
|
+
var newLinks = prevLinks.filter(function (l) { return !deletedElementIds_1.includes(l.sourceElement.id) && !deletedElementIds_1.includes(l.targetElement.id); });
|
|
8997
|
+
setLinks(newLinks);
|
|
8998
|
+
if (props.onLinksChanged) {
|
|
8999
|
+
props.onLinksChanged(newLinks);
|
|
9000
|
+
}
|
|
8971
9001
|
setSelectedElement(undefined);
|
|
8972
9002
|
setSelectedElementSVG(null);
|
|
8973
9003
|
}
|
|
@@ -8979,14 +9009,19 @@ var Paper = function (props) {
|
|
|
8979
9009
|
return function () {
|
|
8980
9010
|
listener.off();
|
|
8981
9011
|
};
|
|
8982
|
-
}, [selectedElement]);
|
|
9012
|
+
}, [selectedElement, props.onElementsChanged]);
|
|
8983
9013
|
//Listen command delete selected for link
|
|
8984
9014
|
React.useEffect(function () {
|
|
8985
9015
|
var _a;
|
|
8986
9016
|
var listener = paperEventEmitter.onCommandDeleteSelectedLink(function () {
|
|
8987
9017
|
if (selectedLink) {
|
|
8988
|
-
|
|
9018
|
+
var prevLinks = linksRef.current;
|
|
9019
|
+
var newLinks = prevLinks.filter(function (l) { return l.id !== selectedLink.id; });
|
|
9020
|
+
setLinks(links);
|
|
8989
9021
|
setSelectedLink(undefined);
|
|
9022
|
+
if (props.onLinksChanged) {
|
|
9023
|
+
props.onLinksChanged(newLinks);
|
|
9024
|
+
}
|
|
8990
9025
|
}
|
|
8991
9026
|
});
|
|
8992
9027
|
//broadcast selected link to parent component
|
|
@@ -8996,13 +9031,18 @@ var Paper = function (props) {
|
|
|
8996
9031
|
return function () {
|
|
8997
9032
|
listener.off();
|
|
8998
9033
|
};
|
|
8999
|
-
}, [selectedLink]);
|
|
9034
|
+
}, [selectedLink, props.onLinksChanged]);
|
|
9000
9035
|
//Listen command delete selected for Text
|
|
9001
9036
|
React.useEffect(function () {
|
|
9002
9037
|
var _a;
|
|
9003
9038
|
var listener = paperEventEmitter.onCommandDeleteSelectedText(function () {
|
|
9004
9039
|
if (selectedText) {
|
|
9005
|
-
|
|
9040
|
+
var prevTexts = textsRef.current;
|
|
9041
|
+
var newTexts = prevTexts.filter(function (t) { return t.id !== selectedText.id; });
|
|
9042
|
+
setTexts(newTexts);
|
|
9043
|
+
if (props.onTextsChanged) {
|
|
9044
|
+
props.onTextsChanged(newTexts);
|
|
9045
|
+
}
|
|
9006
9046
|
setSelectedText(undefined);
|
|
9007
9047
|
}
|
|
9008
9048
|
});
|
|
@@ -9013,7 +9053,7 @@ var Paper = function (props) {
|
|
|
9013
9053
|
return function () {
|
|
9014
9054
|
listener.off();
|
|
9015
9055
|
};
|
|
9016
|
-
}, [selectedText]);
|
|
9056
|
+
}, [selectedText, props.onTextsChanged]);
|
|
9017
9057
|
var handlePaperMouseMove = function (ev) {
|
|
9018
9058
|
var _a;
|
|
9019
9059
|
//if there is a temp link, update the temp target point
|
|
@@ -9078,17 +9118,22 @@ var Paper = function (props) {
|
|
|
9078
9118
|
};
|
|
9079
9119
|
var handlePathChange = React.useCallback(function (path, id) {
|
|
9080
9120
|
//Update path of element link, that changed
|
|
9081
|
-
|
|
9082
|
-
|
|
9083
|
-
|
|
9084
|
-
|
|
9085
|
-
|
|
9086
|
-
|
|
9121
|
+
// const prevLinks = linksRef.current;
|
|
9122
|
+
var updatedLinkIndex = links.findIndex(function (l) { return l.id === id; });
|
|
9123
|
+
links[updatedLinkIndex].path = path;
|
|
9124
|
+
var newLinks = __spreadArray([], links, true);
|
|
9125
|
+
setLinks(newLinks);
|
|
9126
|
+
if (props.onLinksChanged) {
|
|
9127
|
+
props.onLinksChanged(newLinks);
|
|
9128
|
+
}
|
|
9129
|
+
}, [props.onLinksChanged, links]);
|
|
9087
9130
|
var handlePortMoved = React.useCallback(function (port, elementId, oldPosition, newPosition) {
|
|
9131
|
+
var _a;
|
|
9088
9132
|
var element = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
9089
9133
|
if (element) {
|
|
9090
9134
|
//set links equals a clone links to re-render links with new position
|
|
9091
|
-
|
|
9135
|
+
var prevLinks = linksRef.current;
|
|
9136
|
+
var newLinks = prevLinks.map(function (link) {
|
|
9092
9137
|
var _a, _b;
|
|
9093
9138
|
if (link.sourceElement.id === elementId && link.sourcePort.id === port.id) {
|
|
9094
9139
|
link.sourcePort.position = newPosition;
|
|
@@ -9097,24 +9142,30 @@ var Paper = function (props) {
|
|
|
9097
9142
|
link.targetPort.position = newPosition;
|
|
9098
9143
|
}
|
|
9099
9144
|
return link;
|
|
9100
|
-
}); });
|
|
9101
|
-
//Update port position in element, not re-render
|
|
9102
|
-
setElements(function (prevElements) {
|
|
9103
|
-
var _a;
|
|
9104
|
-
var updatedElementIndex = prevElements.findIndex(function (e) { return e.id === elementId; });
|
|
9105
|
-
prevElements[updatedElementIndex].ports = (_a = prevElements[updatedElementIndex].ports) === null || _a === void 0 ? void 0 : _a.map(function (p) {
|
|
9106
|
-
if (p.id === port.id) {
|
|
9107
|
-
p.position = newPosition;
|
|
9108
|
-
}
|
|
9109
|
-
return p;
|
|
9110
|
-
});
|
|
9111
|
-
return prevElements;
|
|
9112
9145
|
});
|
|
9146
|
+
setLinks(newLinks);
|
|
9147
|
+
if (props.onLinksChanged) {
|
|
9148
|
+
props.onLinksChanged(newLinks);
|
|
9149
|
+
}
|
|
9150
|
+
var newElements = elementsRef.current;
|
|
9151
|
+
var updatedElementIndex = newElements.findIndex(function (e) { return e.id === elementId; });
|
|
9152
|
+
newElements[updatedElementIndex].ports = (_a = newElements[updatedElementIndex].ports) === null || _a === void 0 ? void 0 : _a.map(function (p) {
|
|
9153
|
+
if (p.id === port.id) {
|
|
9154
|
+
p.position = newPosition;
|
|
9155
|
+
}
|
|
9156
|
+
return p;
|
|
9157
|
+
});
|
|
9158
|
+
//Update port position in element, not re-render
|
|
9159
|
+
//To avoid re-render
|
|
9160
|
+
setElements(newElements);
|
|
9161
|
+
if (props.onElementsChanged) {
|
|
9162
|
+
props.onElementsChanged(newElements);
|
|
9163
|
+
}
|
|
9113
9164
|
if (props.onPortMoved) {
|
|
9114
9165
|
props.onPortMoved(newPosition, port, element);
|
|
9115
9166
|
}
|
|
9116
9167
|
}
|
|
9117
|
-
}, [props.onPortMoved]);
|
|
9168
|
+
}, [props.onPortMoved, props.onElementsChanged, props.onLinksChanged]);
|
|
9118
9169
|
//Handle creating a new element link
|
|
9119
9170
|
var handlePortMouseDown = React.useCallback(function (ev, port, elementId) {
|
|
9120
9171
|
var _a;
|
|
@@ -9163,112 +9214,123 @@ var Paper = function (props) {
|
|
|
9163
9214
|
if (tempLinkRef.current) {
|
|
9164
9215
|
//Check if mouse up point is mouse down point or not
|
|
9165
9216
|
var isMouseUpOnNotSelf = tempLinkRef.current.sourcePort.id !== port.id || tempLinkRef.current.sourceElement.id !== elementId;
|
|
9166
|
-
var
|
|
9217
|
+
var newElementLink = null;
|
|
9167
9218
|
if (isMouseUpOnNotSelf) {
|
|
9168
9219
|
var _b = tempLinkRef.current, sourcePort = _b.sourcePort, sourceElement = _b.sourceElement;
|
|
9169
9220
|
var targetElement = elementsRef.current.find(function (e) { return e.id === elementId; });
|
|
9170
|
-
|
|
9221
|
+
newElementLink = createElementLink(sourcePort, sourceElement, port, targetElement);
|
|
9171
9222
|
}
|
|
9172
|
-
if (
|
|
9173
|
-
|
|
9174
|
-
|
|
9223
|
+
if (newElementLink) {
|
|
9224
|
+
var prevLinks = linksRef.current;
|
|
9225
|
+
var newLinks = __spreadArray(__spreadArray([], prevLinks, true), [newElementLink], false);
|
|
9226
|
+
setLinks(newLinks);
|
|
9227
|
+
if (props.onLinksChanged) {
|
|
9228
|
+
props.onLinksChanged(newLinks);
|
|
9229
|
+
}
|
|
9230
|
+
paperEventEmitter.emitElementLinkEnded(newElementLink);
|
|
9175
9231
|
}
|
|
9176
9232
|
else {
|
|
9177
9233
|
paperEventEmitter.emitElementLinkEnded();
|
|
9178
9234
|
}
|
|
9179
9235
|
setTempLink(null);
|
|
9180
9236
|
}
|
|
9181
|
-
}, [paperEventEmitter, createElementLink, props.onPortMouseUp]);
|
|
9237
|
+
}, [paperEventEmitter, createElementLink, props.onPortMouseUp, props.onLinksChanged]);
|
|
9182
9238
|
var handleLinkLabelMoved = React.useCallback(function (offsetX, offsetY, index, labelType) {
|
|
9183
|
-
|
|
9184
|
-
|
|
9185
|
-
|
|
9186
|
-
|
|
9187
|
-
|
|
9188
|
-
|
|
9189
|
-
|
|
9190
|
-
|
|
9191
|
-
|
|
9192
|
-
|
|
9193
|
-
|
|
9194
|
-
|
|
9195
|
-
}
|
|
9196
|
-
case 'source': {
|
|
9197
|
-
var oldPosition = currentLink.sourceLabel.position || LINK_SOURCE_LABEL_POSITION_FROM_SOURCE_PORT;
|
|
9198
|
-
var newPosition = {
|
|
9199
|
-
x: oldPosition.x + offsetX,
|
|
9200
|
-
y: oldPosition.y + offsetY,
|
|
9201
|
-
};
|
|
9202
|
-
currentLink.sourceLabel.position = newPosition;
|
|
9203
|
-
break;
|
|
9204
|
-
}
|
|
9205
|
-
case 'target': {
|
|
9206
|
-
var oldPosition = currentLink.targetLabel.position || LINK_TARGET_LABEL_POSITION_FROM_TARGET_PORT;
|
|
9207
|
-
var newPosition = {
|
|
9208
|
-
x: oldPosition.x + offsetX,
|
|
9209
|
-
y: oldPosition.y + offsetY,
|
|
9210
|
-
};
|
|
9211
|
-
currentLink.targetLabel.position = newPosition;
|
|
9212
|
-
break;
|
|
9213
|
-
}
|
|
9239
|
+
var prevLinks = linksRef.current;
|
|
9240
|
+
var newLinks = __spreadArray([], prevLinks, true);
|
|
9241
|
+
var currentLink = newLinks[index];
|
|
9242
|
+
switch (labelType) {
|
|
9243
|
+
case 'middle': {
|
|
9244
|
+
var oldPosition = currentLink.label.position || LINK_LABEL_POSITION_FROM_LINK_MID_POINT;
|
|
9245
|
+
var newPosition = {
|
|
9246
|
+
x: oldPosition.x + offsetX,
|
|
9247
|
+
y: oldPosition.y + offsetY,
|
|
9248
|
+
};
|
|
9249
|
+
currentLink.label.position = newPosition;
|
|
9250
|
+
break;
|
|
9214
9251
|
}
|
|
9215
|
-
|
|
9216
|
-
|
|
9217
|
-
|
|
9252
|
+
case 'source': {
|
|
9253
|
+
var oldPosition = currentLink.sourceLabel.position || LINK_SOURCE_LABEL_POSITION_FROM_SOURCE_PORT;
|
|
9254
|
+
var newPosition = {
|
|
9255
|
+
x: oldPosition.x + offsetX,
|
|
9256
|
+
y: oldPosition.y + offsetY,
|
|
9257
|
+
};
|
|
9258
|
+
currentLink.sourceLabel.position = newPosition;
|
|
9259
|
+
break;
|
|
9260
|
+
}
|
|
9261
|
+
case 'target': {
|
|
9262
|
+
var oldPosition = currentLink.targetLabel.position || LINK_TARGET_LABEL_POSITION_FROM_TARGET_PORT;
|
|
9263
|
+
var newPosition = {
|
|
9264
|
+
x: oldPosition.x + offsetX,
|
|
9265
|
+
y: oldPosition.y + offsetY,
|
|
9266
|
+
};
|
|
9267
|
+
currentLink.targetLabel.position = newPosition;
|
|
9268
|
+
break;
|
|
9269
|
+
}
|
|
9270
|
+
}
|
|
9271
|
+
setLinks(newLinks);
|
|
9272
|
+
if (props.onLinksChanged) {
|
|
9273
|
+
props.onLinksChanged(newLinks);
|
|
9274
|
+
}
|
|
9275
|
+
}, [props.onLinksChanged]);
|
|
9218
9276
|
var handleLinkLabelResized = React.useCallback(function (width, height, index, labelType) {
|
|
9219
|
-
|
|
9220
|
-
|
|
9221
|
-
|
|
9222
|
-
|
|
9223
|
-
|
|
9224
|
-
|
|
9225
|
-
|
|
9226
|
-
|
|
9227
|
-
|
|
9228
|
-
|
|
9229
|
-
|
|
9230
|
-
}
|
|
9231
|
-
case 'source': {
|
|
9232
|
-
var newSize = {
|
|
9233
|
-
width: width,
|
|
9234
|
-
height: height,
|
|
9235
|
-
};
|
|
9236
|
-
currentLink.sourceLabel.size = newSize;
|
|
9237
|
-
break;
|
|
9238
|
-
}
|
|
9239
|
-
case 'target': {
|
|
9240
|
-
var newSize = {
|
|
9241
|
-
width: width,
|
|
9242
|
-
height: height,
|
|
9243
|
-
};
|
|
9244
|
-
currentLink.targetLabel.size = newSize;
|
|
9245
|
-
break;
|
|
9246
|
-
}
|
|
9277
|
+
var prevLinks = linksRef.current;
|
|
9278
|
+
var newLinks = __spreadArray([], prevLinks, true);
|
|
9279
|
+
var currentLink = newLinks[index];
|
|
9280
|
+
switch (labelType) {
|
|
9281
|
+
case 'middle': {
|
|
9282
|
+
var newSize = {
|
|
9283
|
+
width: width,
|
|
9284
|
+
height: height,
|
|
9285
|
+
};
|
|
9286
|
+
currentLink.label.size = newSize;
|
|
9287
|
+
break;
|
|
9247
9288
|
}
|
|
9248
|
-
|
|
9249
|
-
|
|
9250
|
-
|
|
9289
|
+
case 'source': {
|
|
9290
|
+
var newSize = {
|
|
9291
|
+
width: width,
|
|
9292
|
+
height: height,
|
|
9293
|
+
};
|
|
9294
|
+
currentLink.sourceLabel.size = newSize;
|
|
9295
|
+
break;
|
|
9296
|
+
}
|
|
9297
|
+
case 'target': {
|
|
9298
|
+
var newSize = {
|
|
9299
|
+
width: width,
|
|
9300
|
+
height: height,
|
|
9301
|
+
};
|
|
9302
|
+
currentLink.targetLabel.size = newSize;
|
|
9303
|
+
break;
|
|
9304
|
+
}
|
|
9305
|
+
}
|
|
9306
|
+
setLinks(newLinks);
|
|
9307
|
+
if (props.onLinksChanged) {
|
|
9308
|
+
props.onLinksChanged(newLinks);
|
|
9309
|
+
}
|
|
9310
|
+
}, [props.onLinksChanged]);
|
|
9251
9311
|
var handleLinkLabelContentChanged = React.useCallback(function (newValue, index, labelType) {
|
|
9252
|
-
|
|
9253
|
-
|
|
9254
|
-
|
|
9255
|
-
|
|
9256
|
-
|
|
9257
|
-
|
|
9258
|
-
|
|
9259
|
-
}
|
|
9260
|
-
case 'source': {
|
|
9261
|
-
currentLink.sourceLabel.content = newValue;
|
|
9262
|
-
break;
|
|
9263
|
-
}
|
|
9264
|
-
case 'target': {
|
|
9265
|
-
currentLink.targetLabel.content = newValue;
|
|
9266
|
-
break;
|
|
9267
|
-
}
|
|
9312
|
+
var prevLinks = linksRef.current;
|
|
9313
|
+
var newLinks = __spreadArray([], prevLinks, true);
|
|
9314
|
+
var currentLink = newLinks[index];
|
|
9315
|
+
switch (labelType) {
|
|
9316
|
+
case 'middle': {
|
|
9317
|
+
currentLink.label.content = newValue;
|
|
9318
|
+
break;
|
|
9268
9319
|
}
|
|
9269
|
-
|
|
9270
|
-
|
|
9271
|
-
|
|
9320
|
+
case 'source': {
|
|
9321
|
+
currentLink.sourceLabel.content = newValue;
|
|
9322
|
+
break;
|
|
9323
|
+
}
|
|
9324
|
+
case 'target': {
|
|
9325
|
+
currentLink.targetLabel.content = newValue;
|
|
9326
|
+
break;
|
|
9327
|
+
}
|
|
9328
|
+
}
|
|
9329
|
+
setLinks(newLinks);
|
|
9330
|
+
if (props.onLinksChanged) {
|
|
9331
|
+
props.onLinksChanged(newLinks);
|
|
9332
|
+
}
|
|
9333
|
+
}, [props.onLinksChanged]);
|
|
9272
9334
|
var handleSelectLink = function (link, index) {
|
|
9273
9335
|
setSelectedLink(link);
|
|
9274
9336
|
};
|
|
@@ -9279,9 +9341,6 @@ var Paper = function (props) {
|
|
|
9279
9341
|
var updateElementPosition = function (element, movementX, movementY) {
|
|
9280
9342
|
element.position.x += movementX;
|
|
9281
9343
|
element.position.y += movementY;
|
|
9282
|
-
// if (element.childrenElementsInTree && element.childrenElementsInTree.length > 0) {
|
|
9283
|
-
// element.childrenElementsInTree = element.childrenElementsInTree.map(child => updateElementPosition(child, movementX, movementY));
|
|
9284
|
-
// }
|
|
9285
9344
|
return element;
|
|
9286
9345
|
};
|
|
9287
9346
|
//use selection frame
|
|
@@ -9300,10 +9359,6 @@ var Paper = function (props) {
|
|
|
9300
9359
|
return;
|
|
9301
9360
|
var oldPosition = __assign({}, selectedElement.position);
|
|
9302
9361
|
var newElementPosition = updateElementPosition(selectedElement, offsetX, offsetY);
|
|
9303
|
-
// newElementPosition.relativePosition = {
|
|
9304
|
-
// x: newElementPosition.relativePosition!.x + offsetX,
|
|
9305
|
-
// y: newElementPosition.relativePosition!.y + offsetY
|
|
9306
|
-
// }
|
|
9307
9362
|
var indexSelectedElement = elements.findIndex(function (e) { return e.id === selectedElement.id; });
|
|
9308
9363
|
//Set state to re-render UI with new position
|
|
9309
9364
|
setElementsInTree(function (prev) { return __spreadArray([], prev, true); });
|
|
@@ -9320,7 +9375,11 @@ var Paper = function (props) {
|
|
|
9320
9375
|
var oldSize = selectedElement.size;
|
|
9321
9376
|
var newSize = { width: width, height: height };
|
|
9322
9377
|
elements[indexSelectedElement].size = newSize;
|
|
9323
|
-
|
|
9378
|
+
var newElements = __spreadArray([], elements, true);
|
|
9379
|
+
setElements(newElements);
|
|
9380
|
+
if (props.onElementsChanged) {
|
|
9381
|
+
props.onElementsChanged(newElements);
|
|
9382
|
+
}
|
|
9324
9383
|
if (props.onElementResized) {
|
|
9325
9384
|
props.onElementResized(newSize, selectedElement, indexSelectedElement);
|
|
9326
9385
|
}
|
|
@@ -9357,18 +9416,20 @@ var Paper = function (props) {
|
|
|
9357
9416
|
}, [handleLinkLabelContentChanged]);
|
|
9358
9417
|
var handleClickLinkDelete = React.useCallback(function (link, index) {
|
|
9359
9418
|
return function () {
|
|
9360
|
-
|
|
9361
|
-
|
|
9362
|
-
|
|
9363
|
-
|
|
9364
|
-
|
|
9419
|
+
var prevLinks = linksRef.current;
|
|
9420
|
+
var newLinks = __spreadArray([], prevLinks, true);
|
|
9421
|
+
newLinks.splice(index, 1);
|
|
9422
|
+
setLinks(newLinks);
|
|
9423
|
+
if (props.onLinksChanged) {
|
|
9424
|
+
props.onLinksChanged(newLinks);
|
|
9425
|
+
}
|
|
9365
9426
|
};
|
|
9366
|
-
}, []);
|
|
9427
|
+
}, [props.onLinksChanged]);
|
|
9367
9428
|
var handleMouseUpAtLinkedPortPlaceholder = React.useCallback(function (link, position, targetElementId) {
|
|
9368
9429
|
var targetElement = elementsRef.current.find(function (e) { return e.id === targetElementId; });
|
|
9369
9430
|
if (!targetElement)
|
|
9370
9431
|
return;
|
|
9371
|
-
console.
|
|
9432
|
+
console.info("A port could have been created at position ".concat(JSON.stringify(position), " on element ").concat(targetElementId, " by linking from element ").concat(link.sourceElement.id));
|
|
9372
9433
|
if (props.onCreatingPortByLinking) {
|
|
9373
9434
|
var sourcePort = link.sourcePort, sourceElement = link.sourceElement;
|
|
9374
9435
|
//Handle create port via onCreatingPortByLinking prop
|
|
@@ -9377,11 +9438,16 @@ var Paper = function (props) {
|
|
|
9377
9438
|
//Add new port to target element
|
|
9378
9439
|
targetElement.addPort(targetPort);
|
|
9379
9440
|
//Create new link with created port, that is returned.
|
|
9380
|
-
var
|
|
9441
|
+
var newElementLink = createElementLink(sourcePort, sourceElement, targetPort, targetElement);
|
|
9381
9442
|
//Create link and clear some thing, then return
|
|
9382
|
-
if (
|
|
9383
|
-
|
|
9384
|
-
|
|
9443
|
+
if (newElementLink) {
|
|
9444
|
+
var prevLinks = linksRef.current;
|
|
9445
|
+
var newLinks = __spreadArray(__spreadArray([], prevLinks, true), [newElementLink], false);
|
|
9446
|
+
setLinks(newLinks);
|
|
9447
|
+
if (props.onLinksChanged) {
|
|
9448
|
+
props.onLinksChanged(newLinks);
|
|
9449
|
+
}
|
|
9450
|
+
paperEventEmitter.emitElementLinkEnded(newElementLink);
|
|
9385
9451
|
setTempLink(null);
|
|
9386
9452
|
return;
|
|
9387
9453
|
}
|
|
@@ -9390,21 +9456,24 @@ var Paper = function (props) {
|
|
|
9390
9456
|
//Clear tempLink
|
|
9391
9457
|
setTempLink(null);
|
|
9392
9458
|
paperEventEmitter.emitElementLinkEnded();
|
|
9393
|
-
}, [props.onCreatingPortByLinking, createElementLink, paperEventEmitter]);
|
|
9459
|
+
}, [props.onCreatingPortByLinking, createElementLink, paperEventEmitter, props.onLinksChanged]);
|
|
9394
9460
|
var handleElementTextChange = React.useCallback(function (elementId, textId, newContent) {
|
|
9395
|
-
|
|
9396
|
-
|
|
9397
|
-
|
|
9398
|
-
|
|
9399
|
-
|
|
9400
|
-
|
|
9401
|
-
|
|
9402
|
-
}
|
|
9461
|
+
var prevElms = elementsRef.current;
|
|
9462
|
+
var newElements = prevElms.map(function (curEle) {
|
|
9463
|
+
//Find changed text of element to update the content for it.
|
|
9464
|
+
if (curEle.id === elementId && curEle.texts) {
|
|
9465
|
+
var updatedTextId = curEle.texts.findIndex(function (t) { return t.id === textId; });
|
|
9466
|
+
if (updatedTextId !== undefined) {
|
|
9467
|
+
curEle.texts[updatedTextId].content = newContent;
|
|
9403
9468
|
}
|
|
9404
|
-
|
|
9405
|
-
|
|
9469
|
+
}
|
|
9470
|
+
return curEle;
|
|
9406
9471
|
});
|
|
9407
|
-
|
|
9472
|
+
setElements(newElements);
|
|
9473
|
+
if (props.onElementsChanged) {
|
|
9474
|
+
props.onElementsChanged(newElements);
|
|
9475
|
+
}
|
|
9476
|
+
}, [props.onElementsChanged]);
|
|
9408
9477
|
var handleElementClicked = React.useCallback(function (elementId, e, ref) {
|
|
9409
9478
|
e.stopPropagation();
|
|
9410
9479
|
var tempLink = tempLinkRef.current;
|
|
@@ -9461,12 +9530,6 @@ var Paper = function (props) {
|
|
|
9461
9530
|
// portPlaceholderShape={(<Circle x={0} y={0} width={10} height={10} fill='red' positioningAnchor={PositioningAnchor.Center} />)}
|
|
9462
9531
|
onMouseUpAtLinkedPortPlaceholder: handleMouseUpAtLinkedPortPlaceholder, onTextUpdated: handleElementTextChange, onManuallyTriggerRenderPort: props.onManuallyTriggerRenderPort, textsPlaceHolderClassName: element.textsPlaceHolderClassName, textsPlaceHolderFlexStyle: element.textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition: element.textsPlaceHolderFlexboxPosition }, element.childrenElementsInTree && element.childrenElementsInTree.map(renderElementInTree))));
|
|
9463
9532
|
}, [handleElementClicked, handleContextMenu, handlePortMoved, handlePortMouseDown, handlePortMouseUp, handleMouseUpAtLinkedPortPlaceholder, handleElementTextChange, handleMouseUp, handleMouseMove, handleMouseLeave]);
|
|
9464
|
-
React.useEffect(function () {
|
|
9465
|
-
console.log('elementsInTree');
|
|
9466
|
-
}, [elementsInTree]);
|
|
9467
|
-
React.useEffect(function () {
|
|
9468
|
-
console.log('renderElementInTree');
|
|
9469
|
-
}, [renderElementInTree]);
|
|
9470
9533
|
var ElementsInTree = React.useMemo(function () {
|
|
9471
9534
|
return elementsInTree.map(function (element, index) {
|
|
9472
9535
|
return renderElementInTree(element);
|
|
@@ -9524,7 +9587,6 @@ var Editor = function (_a) {
|
|
|
9524
9587
|
var offs = [];
|
|
9525
9588
|
if (editorContext) {
|
|
9526
9589
|
offs.push(editorContext.onEditorContextUpdated(function () {
|
|
9527
|
-
console.log("onEditorContextUpdated");
|
|
9528
9590
|
setEditorStates(editorContext);
|
|
9529
9591
|
}));
|
|
9530
9592
|
}
|
|
@@ -9568,12 +9630,21 @@ var Editor = function (_a) {
|
|
|
9568
9630
|
var handleElementMouseUp = React.useCallback(function (ev, element) {
|
|
9569
9631
|
editorContext.onElementMouseUpHandler(ev, element);
|
|
9570
9632
|
}, [editorContext]);
|
|
9633
|
+
var handleElementsChanged = React.useCallback(function (elements) {
|
|
9634
|
+
editorContext.elements = elements;
|
|
9635
|
+
}, [editorContext]);
|
|
9571
9636
|
var handleLinkSelected = React.useCallback(function (link) {
|
|
9572
9637
|
editorContext.onLinkSelectedHandler(link);
|
|
9573
9638
|
}, [editorContext]);
|
|
9639
|
+
var handleLinksChanged = React.useCallback(function (links) {
|
|
9640
|
+
editorContext.links = links;
|
|
9641
|
+
}, [editorContext]);
|
|
9574
9642
|
var handleTextSelected = React.useCallback(function (text) {
|
|
9575
9643
|
editorContext.onTextSelectedHandler(text);
|
|
9576
9644
|
}, [editorContext]);
|
|
9645
|
+
var handleTextsChanged = React.useCallback(function (texts) {
|
|
9646
|
+
editorContext.texts = texts;
|
|
9647
|
+
}, [editorContext]);
|
|
9577
9648
|
var handleOnCreatingLink = React.useCallback(function (sourcePort, sourceElement, targetPort, targetElement) {
|
|
9578
9649
|
if (editorContext.onCreatingLinkHandler) {
|
|
9579
9650
|
return editorContext.onCreatingLinkHandler(sourcePort, sourceElement, targetPort, targetElement);
|
|
@@ -9595,7 +9666,7 @@ var Editor = function (_a) {
|
|
|
9595
9666
|
var handlePaperMouseUp = React.useCallback(function (position) {
|
|
9596
9667
|
editorContext.onPaperMouseUpHandler(position);
|
|
9597
9668
|
}, [editorContext]);
|
|
9598
|
-
return (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, onElementMouseUp: handleElementMouseUp, onCreatingLink: handleOnCreatingLink, onCreatingPortByLinking: handleOnCreatingPortByLinking, onLinkSelected: handleLinkSelected, onTextSelected: handleTextSelected, onPaperMouseMoved: handlePaperMouseMoved, onPaperMouseUp: handlePaperMouseUp, onPaperMouseDown: handlePaperMouseDown, onManuallyTriggerRenderElement: editorContext.onManuallyTriggerRenderElement.bind(editorContext), onManuallyTriggerRenderPort: editorContext.onManuallyTriggerRenderPort.bind(editorContext) }));
|
|
9669
|
+
return (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, 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) }));
|
|
9599
9670
|
};
|
|
9600
9671
|
|
|
9601
9672
|
exports.CircleRC = Circle;
|