orcasvn-react-diagrams 0.1.13 → 0.1.14

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 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 onPaperClicked = React$1.useContext(paperEventEmitterContext).onPaperClicked;
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 onPaperClicked = React$1.useContext(paperEventEmitterContext).onPaperClicked;
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);
@@ -9009,6 +9055,15 @@ var Element = function (props) {
9009
9055
  portSelectedListener.off();
9010
9056
  };
9011
9057
  }, []);
9058
+ //Listen text is selected
9059
+ React$1.useEffect(function () {
9060
+ var textSelectedListener = _paperEventEmitterContext.onTextSelected(function (text) {
9061
+ setSelectedPort(undefined);
9062
+ });
9063
+ return function () {
9064
+ textSelectedListener.off();
9065
+ };
9066
+ }, []);
9012
9067
  //Listen another element is selected
9013
9068
  React$1.useEffect(function () {
9014
9069
  var portSelectedListener = _paperEventEmitterContext.onElementSelected(function (element) {
@@ -9579,6 +9634,28 @@ var Paper = function (props) {
9579
9634
  var parsedElementsInTree = convertElementsToTree(elements);
9580
9635
  setElementsInTree(parsedElementsInTree);
9581
9636
  };
9637
+ //Listen text is selected
9638
+ React$1.useEffect(function () {
9639
+ var textSelectedListener = paperEventEmitter.onTextSelected(function (text) {
9640
+ setSelectedElement(undefined);
9641
+ setSelectedElementSVG(null);
9642
+ setSelectedLink(undefined);
9643
+ });
9644
+ return function () {
9645
+ textSelectedListener.off();
9646
+ };
9647
+ }, []);
9648
+ //Listen port is selected
9649
+ React$1.useEffect(function () {
9650
+ var portSelectedListener = paperEventEmitter.onPortSelected(function (port) {
9651
+ setSelectedElement(undefined);
9652
+ setSelectedElementSVG(null);
9653
+ setSelectedLink(undefined);
9654
+ });
9655
+ return function () {
9656
+ portSelectedListener.off();
9657
+ };
9658
+ }, []);
9582
9659
  React$1.useEffect(function () {
9583
9660
  //Listen parent of elements changed, then update elements tree
9584
9661
  var parentChangedCancelers = elements.map(function (element) {
@@ -9628,6 +9705,7 @@ var Paper = function (props) {
9628
9705
  setElements(function (prev) { return prev.filter(function (e) { return !deletedElementIds_1.includes(e.id); }); });
9629
9706
  setLinks(function (prevLinks) { return prevLinks.filter(function (l) { return !deletedElementIds_1.includes(l.sourceElement.id) && !deletedElementIds_1.includes(l.targetElement.id); }); });
9630
9707
  setSelectedElement(undefined);
9708
+ setSelectedElementSVG(null);
9631
9709
  }
9632
9710
  });
9633
9711
  return function () {
@@ -10045,10 +10123,17 @@ var Paper = function (props) {
10045
10123
  };
10046
10124
  var handleElementClicked = function (id, e, ref, element) {
10047
10125
  e.stopPropagation();
10048
- setSelectedElementSVG(ref);
10049
- setSelectedElement(elements.find(function (e) { return e.id === id; }));
10126
+ if (tempLink) {
10127
+ //Clear tempLink
10128
+ setTempLink(undefined);
10129
+ paperEventEmitter.emitElementLinkEnded();
10130
+ }
10131
+ else {
10132
+ setSelectedElementSVG(ref);
10133
+ setSelectedElement(element);
10134
+ paperEventEmitter.emitElementSelected(element);
10135
+ }
10050
10136
  setMouseDownedOnPaper(false);
10051
- paperEventEmitter.emitElementSelected(element);
10052
10137
  };
10053
10138
  var renderElementInTree = function (element) {
10054
10139
  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 onPaperClicked = useContext(paperEventEmitterContext).onPaperClicked;
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 onPaperClicked = useContext(paperEventEmitterContext).onPaperClicked;
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);
@@ -9005,6 +9051,15 @@ var Element = function (props) {
9005
9051
  portSelectedListener.off();
9006
9052
  };
9007
9053
  }, []);
9054
+ //Listen text is selected
9055
+ useEffect(function () {
9056
+ var textSelectedListener = _paperEventEmitterContext.onTextSelected(function (text) {
9057
+ setSelectedPort(undefined);
9058
+ });
9059
+ return function () {
9060
+ textSelectedListener.off();
9061
+ };
9062
+ }, []);
9008
9063
  //Listen another element is selected
9009
9064
  useEffect(function () {
9010
9065
  var portSelectedListener = _paperEventEmitterContext.onElementSelected(function (element) {
@@ -9575,6 +9630,28 @@ var Paper = function (props) {
9575
9630
  var parsedElementsInTree = convertElementsToTree(elements);
9576
9631
  setElementsInTree(parsedElementsInTree);
9577
9632
  };
9633
+ //Listen text is selected
9634
+ useEffect(function () {
9635
+ var textSelectedListener = paperEventEmitter.onTextSelected(function (text) {
9636
+ setSelectedElement(undefined);
9637
+ setSelectedElementSVG(null);
9638
+ setSelectedLink(undefined);
9639
+ });
9640
+ return function () {
9641
+ textSelectedListener.off();
9642
+ };
9643
+ }, []);
9644
+ //Listen port is selected
9645
+ useEffect(function () {
9646
+ var portSelectedListener = paperEventEmitter.onPortSelected(function (port) {
9647
+ setSelectedElement(undefined);
9648
+ setSelectedElementSVG(null);
9649
+ setSelectedLink(undefined);
9650
+ });
9651
+ return function () {
9652
+ portSelectedListener.off();
9653
+ };
9654
+ }, []);
9578
9655
  useEffect(function () {
9579
9656
  //Listen parent of elements changed, then update elements tree
9580
9657
  var parentChangedCancelers = elements.map(function (element) {
@@ -9624,6 +9701,7 @@ var Paper = function (props) {
9624
9701
  setElements(function (prev) { return prev.filter(function (e) { return !deletedElementIds_1.includes(e.id); }); });
9625
9702
  setLinks(function (prevLinks) { return prevLinks.filter(function (l) { return !deletedElementIds_1.includes(l.sourceElement.id) && !deletedElementIds_1.includes(l.targetElement.id); }); });
9626
9703
  setSelectedElement(undefined);
9704
+ setSelectedElementSVG(null);
9627
9705
  }
9628
9706
  });
9629
9707
  return function () {
@@ -10041,10 +10119,17 @@ var Paper = function (props) {
10041
10119
  };
10042
10120
  var handleElementClicked = function (id, e, ref, element) {
10043
10121
  e.stopPropagation();
10044
- setSelectedElementSVG(ref);
10045
- setSelectedElement(elements.find(function (e) { return e.id === id; }));
10122
+ if (tempLink) {
10123
+ //Clear tempLink
10124
+ setTempLink(undefined);
10125
+ paperEventEmitter.emitElementLinkEnded();
10126
+ }
10127
+ else {
10128
+ setSelectedElementSVG(ref);
10129
+ setSelectedElement(element);
10130
+ paperEventEmitter.emitElementSelected(element);
10131
+ }
10046
10132
  setMouseDownedOnPaper(false);
10047
- paperEventEmitter.emitElementSelected(element);
10048
10133
  };
10049
10134
  var renderElementInTree = function (element) {
10050
10135
  var _a, _b;