orcasvn-react-diagrams 0.1.13 → 0.1.15
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 +124 -16
- package/dist/cjs/types/contexts/paperEventEmitterContext.d.ts +3 -1
- package/dist/cjs/types/models/callbackTypes.d.ts +2 -0
- package/dist/cjs/types/utils/constants.d.ts +1 -0
- package/dist/esm/index.js +124 -16
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/contexts/paperEventEmitterContext.d.ts +3 -1
- package/dist/esm/types/models/callbackTypes.d.ts +2 -0
- package/dist/esm/types/utils/constants.d.ts +1 -0
- package/dist/index.d.ts +3 -2
- package/package.json +1 -1
package/dist/cjs/index.js
CHANGED
|
@@ -954,6 +954,8 @@ var EVENT_NAME = {
|
|
|
954
954
|
//ELEMENT LINK
|
|
955
955
|
ELEMENT_LINK_STARTED: 'element_link_started',
|
|
956
956
|
ELEMENT_LINK_ENDED: 'element_link_ended',
|
|
957
|
+
//TEXT
|
|
958
|
+
TEXT_SELECTED: 'text_selected',
|
|
957
959
|
};
|
|
958
960
|
//ELEMENT
|
|
959
961
|
//export const ELEMENT_MOVING_OFFSET_THRESHOLD = 10;
|
|
@@ -1304,6 +1306,18 @@ var onPortSelected = function (callback) {
|
|
|
1304
1306
|
off: off
|
|
1305
1307
|
};
|
|
1306
1308
|
};
|
|
1309
|
+
var emitTextSelected = function (text) {
|
|
1310
|
+
eventEmitter.emit(EVENT_NAME.TEXT_SELECTED, text);
|
|
1311
|
+
};
|
|
1312
|
+
var onTextSelected = function (callback) {
|
|
1313
|
+
eventEmitter.on(EVENT_NAME.TEXT_SELECTED, callback);
|
|
1314
|
+
var off = function () {
|
|
1315
|
+
eventEmitter.off(EVENT_NAME.TEXT_SELECTED, callback);
|
|
1316
|
+
};
|
|
1317
|
+
return {
|
|
1318
|
+
off: off
|
|
1319
|
+
};
|
|
1320
|
+
};
|
|
1307
1321
|
var paperEventEmitterContext = React$1.createContext({
|
|
1308
1322
|
emitter: eventEmitter,
|
|
1309
1323
|
emitPaperClicked: emitPaperClicked,
|
|
@@ -1334,6 +1348,8 @@ var paperEventEmitterContext = React$1.createContext({
|
|
|
1334
1348
|
onElementLinkStarted: onElementLinkStarted,
|
|
1335
1349
|
emitElementLinkEnded: emitElementLinkEnded,
|
|
1336
1350
|
onElementLinkEnded: onElementLinkEnded,
|
|
1351
|
+
emitTextSelected: emitTextSelected,
|
|
1352
|
+
onTextSelected: onTextSelected,
|
|
1337
1353
|
});
|
|
1338
1354
|
|
|
1339
1355
|
var Text = React$1.forwardRef(function (_a, ref) {
|
|
@@ -1341,7 +1357,7 @@ var Text = React$1.forwardRef(function (_a, ref) {
|
|
|
1341
1357
|
var _c = React$1.useState(false), isSelected = _c[0], setIsSelected = _c[1];
|
|
1342
1358
|
var _d = React$1.useState(false), isEditing = _d[0], setIsEditing = _d[1];
|
|
1343
1359
|
var svgRef = React$1.useRef();
|
|
1344
|
-
var
|
|
1360
|
+
var _e = React$1.useContext(paperEventEmitterContext), onPaperClicked = _e.onPaperClicked, emitTextSelected = _e.emitTextSelected, onPortSelected = _e.onPortSelected, onElementSelected = _e.onElementSelected, onTextSelected = _e.onTextSelected;
|
|
1345
1361
|
React$1.useEffect(function () {
|
|
1346
1362
|
var paperClickListener = onPaperClicked(function (ev) {
|
|
1347
1363
|
var _a;
|
|
@@ -1351,8 +1367,25 @@ var Text = React$1.forwardRef(function (_a, ref) {
|
|
|
1351
1367
|
setIsEditing(false);
|
|
1352
1368
|
}
|
|
1353
1369
|
});
|
|
1370
|
+
var portSelectedListener = onPortSelected(function (port) {
|
|
1371
|
+
setIsSelected(false);
|
|
1372
|
+
setIsEditing(false);
|
|
1373
|
+
});
|
|
1374
|
+
var elementSelectedListener = onElementSelected(function (element) {
|
|
1375
|
+
setIsSelected(false);
|
|
1376
|
+
setIsEditing(false);
|
|
1377
|
+
});
|
|
1378
|
+
var textSelectedListener = onTextSelected(function (text) {
|
|
1379
|
+
if (text.id !== id) {
|
|
1380
|
+
setIsSelected(false);
|
|
1381
|
+
setIsEditing(false);
|
|
1382
|
+
}
|
|
1383
|
+
});
|
|
1354
1384
|
return function () {
|
|
1355
1385
|
paperClickListener.off();
|
|
1386
|
+
portSelectedListener.off();
|
|
1387
|
+
elementSelectedListener.off();
|
|
1388
|
+
textSelectedListener.off();
|
|
1356
1389
|
};
|
|
1357
1390
|
}, []);
|
|
1358
1391
|
//Handle click on svg element
|
|
@@ -1373,6 +1406,7 @@ var Text = React$1.forwardRef(function (_a, ref) {
|
|
|
1373
1406
|
};
|
|
1374
1407
|
setIsSelected(true);
|
|
1375
1408
|
onSelected && onSelected(text);
|
|
1409
|
+
emitTextSelected(text);
|
|
1376
1410
|
};
|
|
1377
1411
|
var handleChangeText = function (ev) {
|
|
1378
1412
|
onContentChanged === null || onContentChanged === void 0 ? void 0 : onContentChanged(ev, ev.target.value);
|
|
@@ -7409,7 +7443,7 @@ var IElementLink = function (_a) {
|
|
|
7409
7443
|
current: null,
|
|
7410
7444
|
}), selectedLabelRef = _o[0], setSelectedLabelRef = _o[1];
|
|
7411
7445
|
var _p = React$1.useState(false), isSelectedLink = _p[0], setIsSelectedLink = _p[1];
|
|
7412
|
-
var
|
|
7446
|
+
var _q = React$1.useContext(paperEventEmitterContext), onPaperClicked = _q.onPaperClicked, onElementSelected = _q.onElementSelected;
|
|
7413
7447
|
var pathRef = React$1.useRef(null);
|
|
7414
7448
|
var labelRef = React$1.useRef(null);
|
|
7415
7449
|
var sourceLabelRef = React$1.useRef(null);
|
|
@@ -7426,6 +7460,18 @@ var IElementLink = function (_a) {
|
|
|
7426
7460
|
paperClickListener.off();
|
|
7427
7461
|
};
|
|
7428
7462
|
}, []);
|
|
7463
|
+
React$1.useEffect(function () {
|
|
7464
|
+
var elementSelectedListener = onElementSelected(function () {
|
|
7465
|
+
setSelectedLabelRef({
|
|
7466
|
+
current: null,
|
|
7467
|
+
});
|
|
7468
|
+
setIsSelectedLink(false);
|
|
7469
|
+
onDeselected === null || onDeselected === void 0 ? void 0 : onDeselected();
|
|
7470
|
+
});
|
|
7471
|
+
return function () {
|
|
7472
|
+
elementSelectedListener.off();
|
|
7473
|
+
};
|
|
7474
|
+
}, []);
|
|
7429
7475
|
React$1.useLayoutEffect(function () {
|
|
7430
7476
|
var pointsList = __spreadArray(__spreadArray([sourcePosition], points, true), [targetPosition], false);
|
|
7431
7477
|
var _pathStr = createSmoothPathString(pointsList, undefined);
|
|
@@ -8930,24 +8976,34 @@ var bundleExports = bundle.exports;
|
|
|
8930
8976
|
var Flexbox$1 = /*@__PURE__*/getDefaultExportFromCjs(bundleExports);
|
|
8931
8977
|
|
|
8932
8978
|
var Element = function (props) {
|
|
8933
|
-
var _a, _b;
|
|
8979
|
+
var _a, _b, _c;
|
|
8934
8980
|
var id = props.id, x = props.x, y = props.y, width = props.width, height = props.height, portPlaceholderShape = props.portPlaceholderShape, children = props.children, container = props.container, textsPlaceHolderFlexStyle = props.textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition = props.textsPlaceHolderFlexboxPosition, textsPlaceHolderClassName = props.textsPlaceHolderClassName, texts = props.texts, portSlideRailSVGClassName = props.portSlideRailSVGClassName, portMoveableAreas = props.portMoveableAreas, portDirection = props.portDirection, defaultPortSize = props.defaultPortSize, onClick = props.onClick, onContextMenu = props.onContextMenu, renderShape = props.renderShape; props.onMoved; var onPortMoved = props.onPortMoved; props.onResized; var onPortMouseDown = props.onPortMouseDown, onPortMouseUp = props.onPortMouseUp; props.onMouseMove; props.onMouseLeave; props.onMouseUp; var onMouseUpAtLinkedPortPlaceholder = props.onMouseUpAtLinkedPortPlaceholder, onTextUpdated = props.onTextUpdated;
|
|
8935
|
-
var
|
|
8936
|
-
var
|
|
8981
|
+
var _d = React$1.useState(), selectedPort = _d[0], setSelectedPort = _d[1];
|
|
8982
|
+
var _e = React$1.useState((_b = (_a = props.ports) === null || _a === void 0 ? void 0 : _a.map(function (p) {
|
|
8937
8983
|
return __assign(__assign({}, p), { id: p.id, ref: React$1.createRef() });
|
|
8938
|
-
})) !== null && _b !== void 0 ? _b : []), ports =
|
|
8939
|
-
var
|
|
8940
|
-
var
|
|
8984
|
+
})) !== null && _b !== void 0 ? _b : []), ports = _e[0], setPorts = _e[1];
|
|
8985
|
+
var _f = React$1.useState(false), someElementLinkStarted = _f[0], setSomeElementLinkStarted = _f[1];
|
|
8986
|
+
var _g = React$1.useState(), potentialPortPosition = _g[0], setPotentialPortPosition = _g[1];
|
|
8941
8987
|
var _paperEventEmitterContext = React$1.useContext(paperEventEmitterContext);
|
|
8942
8988
|
var elementRef = React$1.useRef(null);
|
|
8943
8989
|
var elementLinkStarted = React$1.useRef();
|
|
8944
8990
|
//Listen a new port is created, after add new port to ports state
|
|
8945
8991
|
React$1.useEffect(function () {
|
|
8946
|
-
|
|
8947
|
-
|
|
8948
|
-
return
|
|
8949
|
-
|
|
8950
|
-
|
|
8992
|
+
setPorts(function (prev) {
|
|
8993
|
+
var _a, _b;
|
|
8994
|
+
return (_b = (_a = props.ports) === null || _a === void 0 ? void 0 : _a.map(function (p, index) {
|
|
8995
|
+
var _a, _b;
|
|
8996
|
+
var position = p.position;
|
|
8997
|
+
//Handle the case when the port is created.
|
|
8998
|
+
if (!((_a = prev[index]) === null || _a === void 0 ? void 0 : _a.ref)) {
|
|
8999
|
+
position = normalizePortPosition(position);
|
|
9000
|
+
onPortMoved === null || onPortMoved === void 0 ? void 0 : onPortMoved(p, id, p.position, position);
|
|
9001
|
+
_paperEventEmitterContext.emitPortMoved(p, id, p.position, position);
|
|
9002
|
+
}
|
|
9003
|
+
return __assign(__assign({}, p), { position: position, id: p.id, ref: ((_b = prev[index]) === null || _b === void 0 ? void 0 : _b.ref) || React$1.createRef() });
|
|
9004
|
+
})) !== null && _b !== void 0 ? _b : [];
|
|
9005
|
+
});
|
|
9006
|
+
}, [(_c = props.ports) === null || _c === void 0 ? void 0 : _c.length]);
|
|
8951
9007
|
//Listen trigger of Delete key, handle delete port is selected
|
|
8952
9008
|
React$1.useEffect(function () {
|
|
8953
9009
|
var listener = _paperEventEmitterContext.onCommandDeleteSelectedPort(function () {
|
|
@@ -8972,6 +9028,7 @@ var Element = function (props) {
|
|
|
8972
9028
|
//Check port moved
|
|
8973
9029
|
if (port.position.x !== newPosition.x || port.position.y !== newPosition.y) {
|
|
8974
9030
|
onPortMoved === null || onPortMoved === void 0 ? void 0 : onPortMoved(port, id, port.position, newPosition);
|
|
9031
|
+
_paperEventEmitterContext.emitPortMoved(port, id, port.position, newPosition);
|
|
8975
9032
|
}
|
|
8976
9033
|
return __assign(__assign({}, port), { position: newPosition });
|
|
8977
9034
|
});
|
|
@@ -9009,6 +9066,15 @@ var Element = function (props) {
|
|
|
9009
9066
|
portSelectedListener.off();
|
|
9010
9067
|
};
|
|
9011
9068
|
}, []);
|
|
9069
|
+
//Listen text is selected
|
|
9070
|
+
React$1.useEffect(function () {
|
|
9071
|
+
var textSelectedListener = _paperEventEmitterContext.onTextSelected(function (text) {
|
|
9072
|
+
setSelectedPort(undefined);
|
|
9073
|
+
});
|
|
9074
|
+
return function () {
|
|
9075
|
+
textSelectedListener.off();
|
|
9076
|
+
};
|
|
9077
|
+
}, []);
|
|
9012
9078
|
//Listen another element is selected
|
|
9013
9079
|
React$1.useEffect(function () {
|
|
9014
9080
|
var portSelectedListener = _paperEventEmitterContext.onElementSelected(function (element) {
|
|
@@ -9579,6 +9645,28 @@ var Paper = function (props) {
|
|
|
9579
9645
|
var parsedElementsInTree = convertElementsToTree(elements);
|
|
9580
9646
|
setElementsInTree(parsedElementsInTree);
|
|
9581
9647
|
};
|
|
9648
|
+
//Listen text is selected
|
|
9649
|
+
React$1.useEffect(function () {
|
|
9650
|
+
var textSelectedListener = paperEventEmitter.onTextSelected(function (text) {
|
|
9651
|
+
setSelectedElement(undefined);
|
|
9652
|
+
setSelectedElementSVG(null);
|
|
9653
|
+
setSelectedLink(undefined);
|
|
9654
|
+
});
|
|
9655
|
+
return function () {
|
|
9656
|
+
textSelectedListener.off();
|
|
9657
|
+
};
|
|
9658
|
+
}, []);
|
|
9659
|
+
//Listen port is selected
|
|
9660
|
+
React$1.useEffect(function () {
|
|
9661
|
+
var portSelectedListener = paperEventEmitter.onPortSelected(function (port) {
|
|
9662
|
+
setSelectedElement(undefined);
|
|
9663
|
+
setSelectedElementSVG(null);
|
|
9664
|
+
setSelectedLink(undefined);
|
|
9665
|
+
});
|
|
9666
|
+
return function () {
|
|
9667
|
+
portSelectedListener.off();
|
|
9668
|
+
};
|
|
9669
|
+
}, []);
|
|
9582
9670
|
React$1.useEffect(function () {
|
|
9583
9671
|
//Listen parent of elements changed, then update elements tree
|
|
9584
9672
|
var parentChangedCancelers = elements.map(function (element) {
|
|
@@ -9628,6 +9716,7 @@ var Paper = function (props) {
|
|
|
9628
9716
|
setElements(function (prev) { return prev.filter(function (e) { return !deletedElementIds_1.includes(e.id); }); });
|
|
9629
9717
|
setLinks(function (prevLinks) { return prevLinks.filter(function (l) { return !deletedElementIds_1.includes(l.sourceElement.id) && !deletedElementIds_1.includes(l.targetElement.id); }); });
|
|
9630
9718
|
setSelectedElement(undefined);
|
|
9719
|
+
setSelectedElementSVG(null);
|
|
9631
9720
|
}
|
|
9632
9721
|
});
|
|
9633
9722
|
return function () {
|
|
@@ -9757,6 +9846,18 @@ var Paper = function (props) {
|
|
|
9757
9846
|
}
|
|
9758
9847
|
return link;
|
|
9759
9848
|
}); });
|
|
9849
|
+
//Update port position in element, not re-render
|
|
9850
|
+
setElements(function (prevElements) {
|
|
9851
|
+
var _a;
|
|
9852
|
+
var updatedElementIndex = prevElements.findIndex(function (e) { return e.id === elementId; });
|
|
9853
|
+
prevElements[updatedElementIndex].ports = (_a = prevElements[updatedElementIndex].ports) === null || _a === void 0 ? void 0 : _a.map(function (p) {
|
|
9854
|
+
if (p.id === port.id) {
|
|
9855
|
+
p.position = newPosition;
|
|
9856
|
+
}
|
|
9857
|
+
return p;
|
|
9858
|
+
});
|
|
9859
|
+
return prevElements;
|
|
9860
|
+
});
|
|
9760
9861
|
};
|
|
9761
9862
|
//Handle creating a new element link
|
|
9762
9863
|
var handlePortMouseDown = function (ev, port, elementId) {
|
|
@@ -10045,10 +10146,17 @@ var Paper = function (props) {
|
|
|
10045
10146
|
};
|
|
10046
10147
|
var handleElementClicked = function (id, e, ref, element) {
|
|
10047
10148
|
e.stopPropagation();
|
|
10048
|
-
|
|
10049
|
-
|
|
10149
|
+
if (tempLink) {
|
|
10150
|
+
//Clear tempLink
|
|
10151
|
+
setTempLink(undefined);
|
|
10152
|
+
paperEventEmitter.emitElementLinkEnded();
|
|
10153
|
+
}
|
|
10154
|
+
else {
|
|
10155
|
+
setSelectedElementSVG(ref);
|
|
10156
|
+
setSelectedElement(element);
|
|
10157
|
+
paperEventEmitter.emitElementSelected(element);
|
|
10158
|
+
}
|
|
10050
10159
|
setMouseDownedOnPaper(false);
|
|
10051
|
-
paperEventEmitter.emitElementSelected(element);
|
|
10052
10160
|
};
|
|
10053
10161
|
var renderElementInTree = function (element) {
|
|
10054
10162
|
var _a, _b;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import EventEmitter from "eventemitter3";
|
|
3
|
-
import { onCommandDeleteSelectedHandler, OnElementLinkEnded, OnElementLinkStarted, onElementMovedHandler, onElementResizedHandler, OnElementSelected, onPortMouseDownHandler, onPortMouseUpHandler, onPortMovedHandler, OnPortSelected } from "../models/callbackTypes";
|
|
3
|
+
import { onCommandDeleteSelectedHandler, OnElementLinkEnded, OnElementLinkStarted, onElementMovedHandler, onElementResizedHandler, OnElementSelected, onPortMouseDownHandler, onPortMouseUpHandler, onPortMovedHandler, OnPortSelected, OnTextSelected } from "../models/callbackTypes";
|
|
4
4
|
interface IEventListenerReturn {
|
|
5
5
|
off: () => void;
|
|
6
6
|
}
|
|
@@ -34,6 +34,8 @@ interface IPaperEventContext {
|
|
|
34
34
|
onElementLinkStarted: (callback: OnElementLinkStarted) => IEventListenerReturn;
|
|
35
35
|
emitElementLinkEnded: OnElementLinkEnded;
|
|
36
36
|
onElementLinkEnded: (callback: OnElementLinkEnded) => IEventListenerReturn;
|
|
37
|
+
emitTextSelected: OnTextSelected;
|
|
38
|
+
onTextSelected: (callback: OnTextSelected) => IEventListenerReturn;
|
|
37
39
|
}
|
|
38
40
|
export declare const paperEventEmitterContext: React.Context<IPaperEventContext>;
|
|
39
41
|
export {};
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import IElement from "./IElement";
|
|
3
3
|
import IElementLink from "./IElementLink";
|
|
4
4
|
import IPort from "./IPort";
|
|
5
|
+
import IText from "./IText";
|
|
5
6
|
import IPosition from "./position";
|
|
6
7
|
import ISize from "./size";
|
|
7
8
|
export type onPortMovedHandler = (port: IPort, elementId: string, oldPosition: IPosition, newPosition: IPosition) => void;
|
|
@@ -14,3 +15,4 @@ export type onCommandDeleteSelectedHandler = () => void;
|
|
|
14
15
|
export type OnElementLinkStarted = (elementLink: IElementLink) => void;
|
|
15
16
|
export type OnElementLinkEnded = (elementLink?: IElementLink) => void;
|
|
16
17
|
export type OnPortSelected = (port: IPort, elementId: string) => void;
|
|
18
|
+
export type OnTextSelected = (text: IText) => void;
|
|
@@ -17,6 +17,7 @@ export declare const EVENT_NAME: {
|
|
|
17
17
|
COMMAND_DELETE_SELECTED_TEXT: string;
|
|
18
18
|
ELEMENT_LINK_STARTED: string;
|
|
19
19
|
ELEMENT_LINK_ENDED: string;
|
|
20
|
+
TEXT_SELECTED: string;
|
|
20
21
|
};
|
|
21
22
|
export declare const MIN_DISTANCE_BETWEEN_KNOTS_ON_LINK = 30;
|
|
22
23
|
export declare const MAX_LINK_KNOT_COUNT = 10;
|
package/dist/esm/index.js
CHANGED
|
@@ -950,6 +950,8 @@ var EVENT_NAME = {
|
|
|
950
950
|
//ELEMENT LINK
|
|
951
951
|
ELEMENT_LINK_STARTED: 'element_link_started',
|
|
952
952
|
ELEMENT_LINK_ENDED: 'element_link_ended',
|
|
953
|
+
//TEXT
|
|
954
|
+
TEXT_SELECTED: 'text_selected',
|
|
953
955
|
};
|
|
954
956
|
//ELEMENT
|
|
955
957
|
//export const ELEMENT_MOVING_OFFSET_THRESHOLD = 10;
|
|
@@ -1300,6 +1302,18 @@ var onPortSelected = function (callback) {
|
|
|
1300
1302
|
off: off
|
|
1301
1303
|
};
|
|
1302
1304
|
};
|
|
1305
|
+
var emitTextSelected = function (text) {
|
|
1306
|
+
eventEmitter.emit(EVENT_NAME.TEXT_SELECTED, text);
|
|
1307
|
+
};
|
|
1308
|
+
var onTextSelected = function (callback) {
|
|
1309
|
+
eventEmitter.on(EVENT_NAME.TEXT_SELECTED, callback);
|
|
1310
|
+
var off = function () {
|
|
1311
|
+
eventEmitter.off(EVENT_NAME.TEXT_SELECTED, callback);
|
|
1312
|
+
};
|
|
1313
|
+
return {
|
|
1314
|
+
off: off
|
|
1315
|
+
};
|
|
1316
|
+
};
|
|
1303
1317
|
var paperEventEmitterContext = createContext({
|
|
1304
1318
|
emitter: eventEmitter,
|
|
1305
1319
|
emitPaperClicked: emitPaperClicked,
|
|
@@ -1330,6 +1344,8 @@ var paperEventEmitterContext = createContext({
|
|
|
1330
1344
|
onElementLinkStarted: onElementLinkStarted,
|
|
1331
1345
|
emitElementLinkEnded: emitElementLinkEnded,
|
|
1332
1346
|
onElementLinkEnded: onElementLinkEnded,
|
|
1347
|
+
emitTextSelected: emitTextSelected,
|
|
1348
|
+
onTextSelected: onTextSelected,
|
|
1333
1349
|
});
|
|
1334
1350
|
|
|
1335
1351
|
var Text = forwardRef(function (_a, ref) {
|
|
@@ -1337,7 +1353,7 @@ var Text = forwardRef(function (_a, ref) {
|
|
|
1337
1353
|
var _c = useState(false), isSelected = _c[0], setIsSelected = _c[1];
|
|
1338
1354
|
var _d = useState(false), isEditing = _d[0], setIsEditing = _d[1];
|
|
1339
1355
|
var svgRef = useRef();
|
|
1340
|
-
var
|
|
1356
|
+
var _e = useContext(paperEventEmitterContext), onPaperClicked = _e.onPaperClicked, emitTextSelected = _e.emitTextSelected, onPortSelected = _e.onPortSelected, onElementSelected = _e.onElementSelected, onTextSelected = _e.onTextSelected;
|
|
1341
1357
|
useEffect(function () {
|
|
1342
1358
|
var paperClickListener = onPaperClicked(function (ev) {
|
|
1343
1359
|
var _a;
|
|
@@ -1347,8 +1363,25 @@ var Text = forwardRef(function (_a, ref) {
|
|
|
1347
1363
|
setIsEditing(false);
|
|
1348
1364
|
}
|
|
1349
1365
|
});
|
|
1366
|
+
var portSelectedListener = onPortSelected(function (port) {
|
|
1367
|
+
setIsSelected(false);
|
|
1368
|
+
setIsEditing(false);
|
|
1369
|
+
});
|
|
1370
|
+
var elementSelectedListener = onElementSelected(function (element) {
|
|
1371
|
+
setIsSelected(false);
|
|
1372
|
+
setIsEditing(false);
|
|
1373
|
+
});
|
|
1374
|
+
var textSelectedListener = onTextSelected(function (text) {
|
|
1375
|
+
if (text.id !== id) {
|
|
1376
|
+
setIsSelected(false);
|
|
1377
|
+
setIsEditing(false);
|
|
1378
|
+
}
|
|
1379
|
+
});
|
|
1350
1380
|
return function () {
|
|
1351
1381
|
paperClickListener.off();
|
|
1382
|
+
portSelectedListener.off();
|
|
1383
|
+
elementSelectedListener.off();
|
|
1384
|
+
textSelectedListener.off();
|
|
1352
1385
|
};
|
|
1353
1386
|
}, []);
|
|
1354
1387
|
//Handle click on svg element
|
|
@@ -1369,6 +1402,7 @@ var Text = forwardRef(function (_a, ref) {
|
|
|
1369
1402
|
};
|
|
1370
1403
|
setIsSelected(true);
|
|
1371
1404
|
onSelected && onSelected(text);
|
|
1405
|
+
emitTextSelected(text);
|
|
1372
1406
|
};
|
|
1373
1407
|
var handleChangeText = function (ev) {
|
|
1374
1408
|
onContentChanged === null || onContentChanged === void 0 ? void 0 : onContentChanged(ev, ev.target.value);
|
|
@@ -7405,7 +7439,7 @@ var IElementLink = function (_a) {
|
|
|
7405
7439
|
current: null,
|
|
7406
7440
|
}), selectedLabelRef = _o[0], setSelectedLabelRef = _o[1];
|
|
7407
7441
|
var _p = useState(false), isSelectedLink = _p[0], setIsSelectedLink = _p[1];
|
|
7408
|
-
var
|
|
7442
|
+
var _q = useContext(paperEventEmitterContext), onPaperClicked = _q.onPaperClicked, onElementSelected = _q.onElementSelected;
|
|
7409
7443
|
var pathRef = useRef(null);
|
|
7410
7444
|
var labelRef = useRef(null);
|
|
7411
7445
|
var sourceLabelRef = useRef(null);
|
|
@@ -7422,6 +7456,18 @@ var IElementLink = function (_a) {
|
|
|
7422
7456
|
paperClickListener.off();
|
|
7423
7457
|
};
|
|
7424
7458
|
}, []);
|
|
7459
|
+
useEffect(function () {
|
|
7460
|
+
var elementSelectedListener = onElementSelected(function () {
|
|
7461
|
+
setSelectedLabelRef({
|
|
7462
|
+
current: null,
|
|
7463
|
+
});
|
|
7464
|
+
setIsSelectedLink(false);
|
|
7465
|
+
onDeselected === null || onDeselected === void 0 ? void 0 : onDeselected();
|
|
7466
|
+
});
|
|
7467
|
+
return function () {
|
|
7468
|
+
elementSelectedListener.off();
|
|
7469
|
+
};
|
|
7470
|
+
}, []);
|
|
7425
7471
|
useLayoutEffect(function () {
|
|
7426
7472
|
var pointsList = __spreadArray(__spreadArray([sourcePosition], points, true), [targetPosition], false);
|
|
7427
7473
|
var _pathStr = createSmoothPathString(pointsList, undefined);
|
|
@@ -8926,24 +8972,34 @@ var bundleExports = bundle.exports;
|
|
|
8926
8972
|
var Flexbox$1 = /*@__PURE__*/getDefaultExportFromCjs(bundleExports);
|
|
8927
8973
|
|
|
8928
8974
|
var Element = function (props) {
|
|
8929
|
-
var _a, _b;
|
|
8975
|
+
var _a, _b, _c;
|
|
8930
8976
|
var id = props.id, x = props.x, y = props.y, width = props.width, height = props.height, portPlaceholderShape = props.portPlaceholderShape, children = props.children, container = props.container, textsPlaceHolderFlexStyle = props.textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition = props.textsPlaceHolderFlexboxPosition, textsPlaceHolderClassName = props.textsPlaceHolderClassName, texts = props.texts, portSlideRailSVGClassName = props.portSlideRailSVGClassName, portMoveableAreas = props.portMoveableAreas, portDirection = props.portDirection, defaultPortSize = props.defaultPortSize, onClick = props.onClick, onContextMenu = props.onContextMenu, renderShape = props.renderShape; props.onMoved; var onPortMoved = props.onPortMoved; props.onResized; var onPortMouseDown = props.onPortMouseDown, onPortMouseUp = props.onPortMouseUp; props.onMouseMove; props.onMouseLeave; props.onMouseUp; var onMouseUpAtLinkedPortPlaceholder = props.onMouseUpAtLinkedPortPlaceholder, onTextUpdated = props.onTextUpdated;
|
|
8931
|
-
var
|
|
8932
|
-
var
|
|
8977
|
+
var _d = useState(), selectedPort = _d[0], setSelectedPort = _d[1];
|
|
8978
|
+
var _e = useState((_b = (_a = props.ports) === null || _a === void 0 ? void 0 : _a.map(function (p) {
|
|
8933
8979
|
return __assign(__assign({}, p), { id: p.id, ref: React$1.createRef() });
|
|
8934
|
-
})) !== null && _b !== void 0 ? _b : []), ports =
|
|
8935
|
-
var
|
|
8936
|
-
var
|
|
8980
|
+
})) !== null && _b !== void 0 ? _b : []), ports = _e[0], setPorts = _e[1];
|
|
8981
|
+
var _f = useState(false), someElementLinkStarted = _f[0], setSomeElementLinkStarted = _f[1];
|
|
8982
|
+
var _g = useState(), potentialPortPosition = _g[0], setPotentialPortPosition = _g[1];
|
|
8937
8983
|
var _paperEventEmitterContext = useContext(paperEventEmitterContext);
|
|
8938
8984
|
var elementRef = useRef(null);
|
|
8939
8985
|
var elementLinkStarted = useRef();
|
|
8940
8986
|
//Listen a new port is created, after add new port to ports state
|
|
8941
8987
|
useEffect(function () {
|
|
8942
|
-
|
|
8943
|
-
|
|
8944
|
-
return
|
|
8945
|
-
|
|
8946
|
-
|
|
8988
|
+
setPorts(function (prev) {
|
|
8989
|
+
var _a, _b;
|
|
8990
|
+
return (_b = (_a = props.ports) === null || _a === void 0 ? void 0 : _a.map(function (p, index) {
|
|
8991
|
+
var _a, _b;
|
|
8992
|
+
var position = p.position;
|
|
8993
|
+
//Handle the case when the port is created.
|
|
8994
|
+
if (!((_a = prev[index]) === null || _a === void 0 ? void 0 : _a.ref)) {
|
|
8995
|
+
position = normalizePortPosition(position);
|
|
8996
|
+
onPortMoved === null || onPortMoved === void 0 ? void 0 : onPortMoved(p, id, p.position, position);
|
|
8997
|
+
_paperEventEmitterContext.emitPortMoved(p, id, p.position, position);
|
|
8998
|
+
}
|
|
8999
|
+
return __assign(__assign({}, p), { position: position, id: p.id, ref: ((_b = prev[index]) === null || _b === void 0 ? void 0 : _b.ref) || React$1.createRef() });
|
|
9000
|
+
})) !== null && _b !== void 0 ? _b : [];
|
|
9001
|
+
});
|
|
9002
|
+
}, [(_c = props.ports) === null || _c === void 0 ? void 0 : _c.length]);
|
|
8947
9003
|
//Listen trigger of Delete key, handle delete port is selected
|
|
8948
9004
|
useEffect(function () {
|
|
8949
9005
|
var listener = _paperEventEmitterContext.onCommandDeleteSelectedPort(function () {
|
|
@@ -8968,6 +9024,7 @@ var Element = function (props) {
|
|
|
8968
9024
|
//Check port moved
|
|
8969
9025
|
if (port.position.x !== newPosition.x || port.position.y !== newPosition.y) {
|
|
8970
9026
|
onPortMoved === null || onPortMoved === void 0 ? void 0 : onPortMoved(port, id, port.position, newPosition);
|
|
9027
|
+
_paperEventEmitterContext.emitPortMoved(port, id, port.position, newPosition);
|
|
8971
9028
|
}
|
|
8972
9029
|
return __assign(__assign({}, port), { position: newPosition });
|
|
8973
9030
|
});
|
|
@@ -9005,6 +9062,15 @@ var Element = function (props) {
|
|
|
9005
9062
|
portSelectedListener.off();
|
|
9006
9063
|
};
|
|
9007
9064
|
}, []);
|
|
9065
|
+
//Listen text is selected
|
|
9066
|
+
useEffect(function () {
|
|
9067
|
+
var textSelectedListener = _paperEventEmitterContext.onTextSelected(function (text) {
|
|
9068
|
+
setSelectedPort(undefined);
|
|
9069
|
+
});
|
|
9070
|
+
return function () {
|
|
9071
|
+
textSelectedListener.off();
|
|
9072
|
+
};
|
|
9073
|
+
}, []);
|
|
9008
9074
|
//Listen another element is selected
|
|
9009
9075
|
useEffect(function () {
|
|
9010
9076
|
var portSelectedListener = _paperEventEmitterContext.onElementSelected(function (element) {
|
|
@@ -9575,6 +9641,28 @@ var Paper = function (props) {
|
|
|
9575
9641
|
var parsedElementsInTree = convertElementsToTree(elements);
|
|
9576
9642
|
setElementsInTree(parsedElementsInTree);
|
|
9577
9643
|
};
|
|
9644
|
+
//Listen text is selected
|
|
9645
|
+
useEffect(function () {
|
|
9646
|
+
var textSelectedListener = paperEventEmitter.onTextSelected(function (text) {
|
|
9647
|
+
setSelectedElement(undefined);
|
|
9648
|
+
setSelectedElementSVG(null);
|
|
9649
|
+
setSelectedLink(undefined);
|
|
9650
|
+
});
|
|
9651
|
+
return function () {
|
|
9652
|
+
textSelectedListener.off();
|
|
9653
|
+
};
|
|
9654
|
+
}, []);
|
|
9655
|
+
//Listen port is selected
|
|
9656
|
+
useEffect(function () {
|
|
9657
|
+
var portSelectedListener = paperEventEmitter.onPortSelected(function (port) {
|
|
9658
|
+
setSelectedElement(undefined);
|
|
9659
|
+
setSelectedElementSVG(null);
|
|
9660
|
+
setSelectedLink(undefined);
|
|
9661
|
+
});
|
|
9662
|
+
return function () {
|
|
9663
|
+
portSelectedListener.off();
|
|
9664
|
+
};
|
|
9665
|
+
}, []);
|
|
9578
9666
|
useEffect(function () {
|
|
9579
9667
|
//Listen parent of elements changed, then update elements tree
|
|
9580
9668
|
var parentChangedCancelers = elements.map(function (element) {
|
|
@@ -9624,6 +9712,7 @@ var Paper = function (props) {
|
|
|
9624
9712
|
setElements(function (prev) { return prev.filter(function (e) { return !deletedElementIds_1.includes(e.id); }); });
|
|
9625
9713
|
setLinks(function (prevLinks) { return prevLinks.filter(function (l) { return !deletedElementIds_1.includes(l.sourceElement.id) && !deletedElementIds_1.includes(l.targetElement.id); }); });
|
|
9626
9714
|
setSelectedElement(undefined);
|
|
9715
|
+
setSelectedElementSVG(null);
|
|
9627
9716
|
}
|
|
9628
9717
|
});
|
|
9629
9718
|
return function () {
|
|
@@ -9753,6 +9842,18 @@ var Paper = function (props) {
|
|
|
9753
9842
|
}
|
|
9754
9843
|
return link;
|
|
9755
9844
|
}); });
|
|
9845
|
+
//Update port position in element, not re-render
|
|
9846
|
+
setElements(function (prevElements) {
|
|
9847
|
+
var _a;
|
|
9848
|
+
var updatedElementIndex = prevElements.findIndex(function (e) { return e.id === elementId; });
|
|
9849
|
+
prevElements[updatedElementIndex].ports = (_a = prevElements[updatedElementIndex].ports) === null || _a === void 0 ? void 0 : _a.map(function (p) {
|
|
9850
|
+
if (p.id === port.id) {
|
|
9851
|
+
p.position = newPosition;
|
|
9852
|
+
}
|
|
9853
|
+
return p;
|
|
9854
|
+
});
|
|
9855
|
+
return prevElements;
|
|
9856
|
+
});
|
|
9756
9857
|
};
|
|
9757
9858
|
//Handle creating a new element link
|
|
9758
9859
|
var handlePortMouseDown = function (ev, port, elementId) {
|
|
@@ -10041,10 +10142,17 @@ var Paper = function (props) {
|
|
|
10041
10142
|
};
|
|
10042
10143
|
var handleElementClicked = function (id, e, ref, element) {
|
|
10043
10144
|
e.stopPropagation();
|
|
10044
|
-
|
|
10045
|
-
|
|
10145
|
+
if (tempLink) {
|
|
10146
|
+
//Clear tempLink
|
|
10147
|
+
setTempLink(undefined);
|
|
10148
|
+
paperEventEmitter.emitElementLinkEnded();
|
|
10149
|
+
}
|
|
10150
|
+
else {
|
|
10151
|
+
setSelectedElementSVG(ref);
|
|
10152
|
+
setSelectedElement(element);
|
|
10153
|
+
paperEventEmitter.emitElementSelected(element);
|
|
10154
|
+
}
|
|
10046
10155
|
setMouseDownedOnPaper(false);
|
|
10047
|
-
paperEventEmitter.emitElementSelected(element);
|
|
10048
10156
|
};
|
|
10049
10157
|
var renderElementInTree = function (element) {
|
|
10050
10158
|
var _a, _b;
|