orcasvn-react-diagrams 0.1.62 → 0.1.65

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
@@ -817,6 +817,8 @@ var EVENT_ELEMENT_MOUSE_MOVE = 'elementMouseMove';
817
817
  var EVENT_ELEMENT_MOUSE_LEAVE = 'elementMouseLeave';
818
818
  var EVENT_ELEMENT_MOUSE_UP = 'elementMouseUp';
819
819
  var EVENT_ELEMENT_MOUSE_DOWN = 'elementMouseDown';
820
+ var EVENT_ELEMENT_ADDED = 'elementAdded';
821
+ var EVENT_ELEMENT_REMOVED = 'elementRemoved';
820
822
  var EVENT_MANUALLY_SELECT_ELEMENT = 'manuallySelectElement';
821
823
  var EVENT_MANUALLY_TRIGGER_DRAGGING_ELEMENT = 'manuallyTriggerDraggingElement';
822
824
  var EVENT_LINK_SELECTED = 'linkSelected';
@@ -894,10 +896,12 @@ var EditorContext = /** @class */ (function () {
894
896
  }
895
897
  this._elements = __spreadArray(__spreadArray([], this._elements, true), [element], false);
896
898
  this._eventEmitter.emit(EVENT_EDITOR_CONTEXT_UPDATED);
899
+ this.onElementAddedHandler(element);
897
900
  };
898
901
  EditorContext.prototype.removeElement = function (elementId) {
899
902
  this._elements = this._elements.filter(function (e) { return e.id !== elementId; });
900
903
  this._eventEmitter.emit(EVENT_EDITOR_CONTEXT_UPDATED);
904
+ this.onElementRemovedHandler(elementId);
901
905
  };
902
906
  EditorContext.prototype.getLink = function (linkId) {
903
907
  return this._links.find(function (l) { return l.id === linkId; });
@@ -1048,6 +1052,20 @@ var EditorContext = /** @class */ (function () {
1048
1052
  EditorContext.prototype.onElementMouseDownHandler = function (ev, element, paperPosition) {
1049
1053
  this._eventEmitter.emit(EVENT_ELEMENT_MOUSE_DOWN, ev, element, paperPosition);
1050
1054
  };
1055
+ EditorContext.prototype.onElementAdded = function (callback) {
1056
+ return this.addEventListener(EVENT_ELEMENT_ADDED, callback);
1057
+ };
1058
+ /** @internal */
1059
+ EditorContext.prototype.onElementAddedHandler = function (element) {
1060
+ this._eventEmitter.emit(EVENT_ELEMENT_ADDED, element);
1061
+ };
1062
+ EditorContext.prototype.onElementRemoved = function (callback) {
1063
+ return this.addEventListener(EVENT_ELEMENT_REMOVED, callback);
1064
+ };
1065
+ /** @internal */
1066
+ EditorContext.prototype.onElementRemovedHandler = function (elementId) {
1067
+ this._eventEmitter.emit(EVENT_ELEMENT_REMOVED, elementId);
1068
+ };
1051
1069
  EditorContext.prototype.onLinkSelected = function (callback) {
1052
1070
  return this.addEventListener(EVENT_LINK_SELECTED, callback);
1053
1071
  };
@@ -7734,13 +7752,13 @@ var SelectionFrame = function (props) {
7734
7752
  // off();
7735
7753
  // }
7736
7754
  // }, [])
7737
- var getMousePosition = function (event) {
7755
+ var getMousePosition = React.useCallback(function (event) {
7738
7756
  var position = windowsPositionToPaperPosition({
7739
7757
  x: event.clientX,
7740
7758
  y: event.clientY
7741
7759
  }, propContainer, zoom);
7742
7760
  return position;
7743
- };
7761
+ }, [propContainer, zoom]);
7744
7762
  var addRectHandleMouseDown = function (event) {
7745
7763
  event.stopPropagation();
7746
7764
  if (!draggingCircle) {
@@ -7776,7 +7794,7 @@ var SelectionFrame = function (props) {
7776
7794
  setStartY(mouseEvent.clientY);
7777
7795
  }
7778
7796
  }
7779
- }, [draggingRect, propOnMove, propMovingRate, startX, startY, lastMoveTime, xFromMouse, yFromMouse, zoom]);
7797
+ }, [draggingRect, propOnMove, getMousePosition, propMovingRate, lastMoveTime, xFromMouse, yFromMouse]);
7780
7798
  React.useEffect(function () {
7781
7799
  var addRectHandleMouseUp = function () {
7782
7800
  setDraggingRect(false);
@@ -7862,7 +7880,7 @@ var SelectionFrame = function (props) {
7862
7880
  //logging the end of the circle handle mouse move
7863
7881
  logger.debug('SelectionFrame: circleHandleMouseMove ended', container);
7864
7882
  };
7865
- }, [draggingCircle, width, height, curX, curY, lastMoveTime, propContainer, propMovingRate, propOnResize, propResizability, startX, startY]);
7883
+ }, [draggingCircle, width, height, curX, curY, lastMoveTime, propContainer, getMousePosition, propMovingRate, propOnResize, propResizability, startX, startY]);
7866
7884
  var rectangleSize = Math.max(width, height);
7867
7885
  var leftX = framePadding;
7868
7886
  var topY = framePadding;
@@ -9478,18 +9496,18 @@ var Paper = function (props) {
9478
9496
  var textsRef = React.useRef(texts); //Cache texts to avoid re-render when texts changed
9479
9497
  var size = props.size;
9480
9498
  var selectedElementAbsPosition = React.useMemo(function () { return selectedElement ? getAbsolutePosition(selectedElement) : null; }, [selectedElement, selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.position, selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.size]);
9481
- var onPortMoved = props.onPortMoved, onPortSelected = props.onPortSelected, onPortMouseDown = props.onPortMouseDown, onPortMouseUp = props.onPortMouseUp, onPortsChanged = props.onPortsChanged, onPortContextMenu = props.onPortContextMenu, onElementSelected = props.onElementSelected, onElementsChanged = props.onElementsChanged, onElementContextMenu = props.onElementContextMenu, onElementMouseUp = props.onElementMouseUp, onElementMouseDown = props.onElementMouseDown, onElementMouseMove = props.onElementMouseMove, onElementMouseLeave = props.onElementMouseLeave, onLinksChanged = props.onLinksChanged, onLinkSelected = props.onLinkSelected, onTextSelected = props.onTextSelected, onTextsChanged = props.onTextsChanged, manuallyTriggerRenderElementHandler = props.manuallyTriggerRenderElementHandler, manuallyTriggerRenderPortHandler = props.manuallyTriggerRenderPortHandler, onCreatingPortByLinking = props.onCreatingPortByLinking, onCreatingLink = props.onCreatingLink, manuallySelectElementHandler = props.manuallySelectElementHandler, manuallyTriggerDraggingElementHandler = props.manuallyTriggerDraggingElementHandler, manuallyTriggerStartedLinkingHandler = props.manuallyTriggerStartedLinkingHandler;
9499
+ var onPortMoved = props.onPortMoved, onPortSelected = props.onPortSelected, onPortMouseDown = props.onPortMouseDown, onPortMouseUp = props.onPortMouseUp, onPortsChanged = props.onPortsChanged, onPortContextMenu = props.onPortContextMenu, onElementSelected = props.onElementSelected, onElementsChanged = props.onElementsChanged, onElementResized = props.onElementResized, onElementContextMenu = props.onElementContextMenu, onElementMouseUp = props.onElementMouseUp, onElementMouseDown = props.onElementMouseDown, onElementMouseMove = props.onElementMouseMove, onElementMoved = props.onElementMoved, onElementMouseLeave = props.onElementMouseLeave, onElementDeleted = props.onElementDeleted, onLinksChanged = props.onLinksChanged, onLinkSelected = props.onLinkSelected, onTextSelected = props.onTextSelected, onTextsChanged = props.onTextsChanged, manuallyTriggerRenderElementHandler = props.manuallyTriggerRenderElementHandler, manuallyTriggerRenderPortHandler = props.manuallyTriggerRenderPortHandler, onCreatingPortByLinking = props.onCreatingPortByLinking, onCreatingLink = props.onCreatingLink, manuallySelectElementHandler = props.manuallySelectElementHandler, manuallyTriggerDraggingElementHandler = props.manuallyTriggerDraggingElementHandler, manuallyTriggerStartedLinkingHandler = props.manuallyTriggerStartedLinkingHandler;
9482
9500
  React.useEffect(function () {
9483
9501
  zoomRef.current = zoom;
9484
9502
  }, [zoom]);
9485
9503
  React.useEffect(function () {
9486
- setElements(props.elements);
9504
+ setElements(__spreadArray([], props.elements, true));
9487
9505
  }, [props.elements]);
9488
9506
  React.useEffect(function () {
9489
- setLinks(props.links || []);
9507
+ setLinks(__spreadArray([], props.links || [], true));
9490
9508
  }, [props.links]);
9491
9509
  React.useEffect(function () {
9492
- setTexts(props.texts);
9510
+ setTexts(__spreadArray([], props.texts, true));
9493
9511
  }, [props.texts]);
9494
9512
  React.useEffect(function () {
9495
9513
  var off = manuallyTriggerRenderElementHandler(function (elementId) {
@@ -9537,10 +9555,15 @@ var Paper = function (props) {
9537
9555
  };
9538
9556
  }
9539
9557
  }, [manuallyTriggerStartedLinkingHandler, paperEventEmitter]);
9558
+ var updateElementsTree = React.useCallback(function () {
9559
+ var parsedElementsInTree = convertElementsToTree(elements);
9560
+ setElementsInTree(parsedElementsInTree);
9561
+ }, [elements]);
9540
9562
  //Cache elements to avoid re-render when elements changed
9541
9563
  React.useEffect(function () {
9542
9564
  elementsRef.current = elements;
9543
- }, [elements]);
9565
+ updateElementsTree();
9566
+ }, [elements, updateElementsTree]);
9544
9567
  //Cache links to avoid re-render when links changed
9545
9568
  React.useEffect(function () {
9546
9569
  linksRef.current = links;
@@ -9552,10 +9575,6 @@ var Paper = function (props) {
9552
9575
  useKeyboardCommands({
9553
9576
  element: paperContainerRef.current
9554
9577
  });
9555
- var updateElementsTree = React.useCallback(function () {
9556
- var parsedElementsInTree = convertElementsToTree(elements);
9557
- setElementsInTree(parsedElementsInTree);
9558
- }, [elements]);
9559
9578
  //Cache tempLink to avoid re-render when tempLink changed
9560
9579
  React.useEffect(function () {
9561
9580
  tempLinkRef.current = tempLink;
@@ -9563,17 +9582,16 @@ var Paper = function (props) {
9563
9582
  //Listen text is selected
9564
9583
  React.useEffect(function () {
9565
9584
  var textSelectedListener = paperEventEmitter.onTextSelected(function (text) {
9566
- var _a;
9567
9585
  setSelectedElement(undefined);
9568
9586
  setSelectedElementSVG(null);
9569
9587
  setSelectedLink(undefined);
9570
9588
  //broadcast selected text to parent component
9571
- (_a = props.onTextSelected) === null || _a === void 0 ? void 0 : _a.call(props, text);
9589
+ onTextSelected === null || onTextSelected === void 0 ? void 0 : onTextSelected(text);
9572
9590
  });
9573
9591
  return function () {
9574
9592
  textSelectedListener.off();
9575
9593
  };
9576
- }, []);
9594
+ }, [paperEventEmitter, onTextSelected]);
9577
9595
  //Listen port is selected
9578
9596
  React.useEffect(function () {
9579
9597
  var portSelectedListener = paperEventEmitter.onPortSelected(function (port, elementId) {
@@ -9622,11 +9640,11 @@ var Paper = function (props) {
9622
9640
  parentChangedCancelers.forEach(function (canceller) { return canceller === null || canceller === void 0 ? void 0 : canceller(); });
9623
9641
  addedPortCancelers.forEach(function (canceller) { return canceller(); });
9624
9642
  };
9625
- }, [elements, updateElementsTree, onElementsChanged]);
9626
- //Update elements tree when length of elements change
9627
- React.useEffect(function () {
9628
- updateElementsTree();
9629
- }, [elements, updateElementsTree]);
9643
+ }, [updateElementsTree, onElementsChanged]);
9644
+ // //Update elements tree when length of elements change
9645
+ // useEffect(() => {
9646
+ // updateElementsTree();
9647
+ // }, [elements, updateElementsTree])
9630
9648
  //Get all child elements of the deleted element
9631
9649
  var getChildOfElement = React.useCallback(function (element) {
9632
9650
  if (!element.childrenElementsInTree)
@@ -9646,6 +9664,7 @@ var Paper = function (props) {
9646
9664
  var deletedElementIds_1 = __spreadArray(__spreadArray([], deletedChildElements, true), [selectedElement], false).map(function (e) { return e.id; });
9647
9665
  var prevElements = elementsRef.current;
9648
9666
  var newElements = prevElements.filter(function (e) { return !deletedElementIds_1.includes(e.id); });
9667
+ onElementDeleted === null || onElementDeleted === void 0 ? void 0 : onElementDeleted(selectedElement);
9649
9668
  //Set state to re-render component
9650
9669
  setElements(newElements);
9651
9670
  if (onElementsChanged) {
@@ -9669,7 +9688,7 @@ var Paper = function (props) {
9669
9688
  return function () {
9670
9689
  listener.off();
9671
9690
  };
9672
- }, [selectedElement, onElementSelected, onElementsChanged, onLinksChanged, getChildOfElement, paperEventEmitter]);
9691
+ }, [selectedElement, onElementSelected, onElementsChanged, onLinksChanged, getChildOfElement, paperEventEmitter, onElementDeleted]);
9673
9692
  //Listen command delete selected for link
9674
9693
  React.useEffect(function () {
9675
9694
  var listener = paperEventEmitter.onCommandDeleteSelectedLink(function () {
@@ -9804,7 +9823,6 @@ var Paper = function (props) {
9804
9823
  }
9805
9824
  }, [onLinksChanged]);
9806
9825
  var handlePortMoved = React.useCallback(function (port, elementId, oldPosition, newPosition) {
9807
- var _a;
9808
9826
  var element = elementsRef.current.find(function (e) { return e.id === elementId; });
9809
9827
  if (element) {
9810
9828
  //set links equals a clone links to re-render links with new position
@@ -9819,21 +9837,44 @@ var Paper = function (props) {
9819
9837
  }
9820
9838
  return link;
9821
9839
  });
9822
- setLinks(newLinks);
9840
+ setLinks(function (prev) {
9841
+ return prev.map(function (link) {
9842
+ var _a, _b;
9843
+ if (link.sourceElement.id === elementId && link.sourcePort.id === port.id) {
9844
+ link.sourcePort.position = newPosition;
9845
+ }
9846
+ if (((_a = link.targetElement) === null || _a === void 0 ? void 0 : _a.id) === elementId && ((_b = link.targetPort) === null || _b === void 0 ? void 0 : _b.id) === port.id) {
9847
+ link.targetPort.position = newPosition;
9848
+ }
9849
+ return link;
9850
+ });
9851
+ });
9823
9852
  if (onLinksChanged) {
9824
9853
  onLinksChanged(newLinks);
9825
9854
  }
9826
9855
  var newElements = elementsRef.current;
9827
- var updatedElementIndex = newElements.findIndex(function (e) { return e.id === elementId; });
9828
- newElements[updatedElementIndex].ports = (_a = newElements[updatedElementIndex].ports) === null || _a === void 0 ? void 0 : _a.map(function (p) {
9829
- if (p.id === port.id) {
9830
- p.position = newPosition;
9831
- }
9832
- return p;
9833
- });
9856
+ // newElements[updatedElementIndex].ports = newElements[updatedElementIndex].ports?.map(p => {
9857
+ // if (p.id === port.id) {
9858
+ // p.position = newPosition
9859
+ // }
9860
+ // return p
9861
+ // })
9834
9862
  //Update port position in element, not re-render
9835
9863
  //To avoid re-render
9836
- setElements(newElements);
9864
+ setElements(function (prev) {
9865
+ var _a;
9866
+ var newElements = __spreadArray([], prev, true);
9867
+ var updatedElement = newElements.find(function (e) { return e.id === elementId; });
9868
+ if (updatedElement) {
9869
+ updatedElement.ports = (_a = updatedElement.ports) === null || _a === void 0 ? void 0 : _a.map(function (p) {
9870
+ if (p.id === port.id) {
9871
+ p.position = newPosition;
9872
+ }
9873
+ return p;
9874
+ });
9875
+ }
9876
+ return newElements;
9877
+ });
9837
9878
  if (onElementsChanged) {
9838
9879
  onElementsChanged(newElements);
9839
9880
  }
@@ -10191,6 +10232,7 @@ var Paper = function (props) {
10191
10232
  }
10192
10233
  }, [onElementMouseLeave]);
10193
10234
  var renderElementInTree = React.useCallback(function (element) {
10235
+ logger.info("Rendering element tree for element ".concat(element.id));
10194
10236
  //use the defined react element or the default Element component
10195
10237
  var ReactElement = element.reactElement || Element$1;
10196
10238
  return (React.createElement("g", { id: "group-of-element-".concat(element.id), key: element.id },
@@ -10205,25 +10247,22 @@ var Paper = function (props) {
10205
10247
  }, objectX: selectedElementAbsPosition === null || selectedElementAbsPosition === void 0 ? void 0 : selectedElementAbsPosition.x, objectY: selectedElementAbsPosition === null || selectedElementAbsPosition === void 0 ? void 0 : selectedElementAbsPosition.y, width: selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.size.width, height: selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.size.height, zoom: zoom, draggingByDefault: autoEnabledDraggingSelectedElement,
10206
10248
  //movingOffsetThreshold: ELEMENT_MOVING_OFFSET_THRESHOLD,
10207
10249
  onMouseDown: function (ev) {
10208
- var _a;
10209
10250
  if (selectedElement) {
10210
10251
  var paperPosition = windowsPositionToPaperPosition({
10211
10252
  x: ev.clientX,
10212
10253
  y: ev.clientY
10213
10254
  }, paperContainerRef.current, zoomRef.current);
10214
- (_a = props.onElementMouseDown) === null || _a === void 0 ? void 0 : _a.call(props, ev, selectedElement, paperPosition);
10255
+ onElementMouseDown === null || onElementMouseDown === void 0 ? void 0 : onElementMouseDown(ev, selectedElement, paperPosition);
10215
10256
  }
10216
10257
  }, onMouseUp: function (ev) {
10217
- var _a;
10218
10258
  if (selectedElement) {
10219
10259
  var paperPosition = windowsPositionToPaperPosition({
10220
10260
  x: ev.clientX,
10221
10261
  y: ev.clientY
10222
10262
  }, paperContainerRef.current, zoomRef.current);
10223
- (_a = props.onElementMouseUp) === null || _a === void 0 ? void 0 : _a.call(props, ev, selectedElement, paperPosition);
10263
+ onElementMouseUp === null || onElementMouseUp === void 0 ? void 0 : onElementMouseUp(ev, selectedElement, paperPosition);
10224
10264
  }
10225
10265
  }, onMove: function (newX, newY) {
10226
- var _a;
10227
10266
  if (!selectedElement)
10228
10267
  return;
10229
10268
  var oldPosition = __assign({}, selectedElement.position);
@@ -10260,13 +10299,13 @@ var Paper = function (props) {
10260
10299
  }
10261
10300
  return link;
10262
10301
  });
10263
- (_a = props.onLinksChanged) === null || _a === void 0 ? void 0 : _a.call(props, newLinks);
10302
+ onLinksChanged === null || onLinksChanged === void 0 ? void 0 : onLinksChanged(newLinks);
10264
10303
  // End updating the position of links connected to the selected element
10265
10304
  //Set state to re-render UI with new position
10266
10305
  setElementsInTree(function (prev) { return __spreadArray([], prev, true); });
10267
- if (props.onElementMoved) {
10306
+ if (onElementMoved) {
10268
10307
  console.log('onElementMoved', selectedElement.position, paperPosition);
10269
- props.onElementMoved(selectedElement.position, selectedElement, indexSelectedElement, paperPosition);
10308
+ onElementMoved(selectedElement.position, selectedElement, indexSelectedElement, paperPosition);
10270
10309
  }
10271
10310
  paperEventEmitter.emitElementMoved(selectedElement, oldPosition, selectedElement.position);
10272
10311
  setMouseDownedOnPaper(false);
@@ -10279,16 +10318,16 @@ var Paper = function (props) {
10279
10318
  elements[indexSelectedElement].size = newSize;
10280
10319
  var newElements = __spreadArray([], elements, true);
10281
10320
  setElements(newElements);
10282
- if (props.onElementsChanged) {
10283
- props.onElementsChanged(newElements);
10321
+ if (onElementsChanged) {
10322
+ onElementsChanged(newElements);
10284
10323
  }
10285
- if (props.onElementResized) {
10286
- props.onElementResized(newSize, selectedElement, indexSelectedElement);
10324
+ if (onElementResized) {
10325
+ onElementResized(newSize, selectedElement, indexSelectedElement);
10287
10326
  }
10288
10327
  paperEventEmitter.emitElementResized(selectedElement, oldSize, newSize);
10289
10328
  setMouseDownedOnPaper(false);
10290
10329
  } }))));
10291
- }, [manuallyTriggerRenderPortHandler, handleElementClicked, handleContextMenu, handleMouseUp, handleMouseDown, handleMouseMove, handleMouseLeave, handlePortMoved, handlePortMouseDown, handlePortMouseUp, handlePortsChanged, handlePortContextMenu, handleMouseUpAtLinkedPortPlaceholder, handleElementTextChange, props, selectedElement, selectedElementSVG, selectedElementAbsPosition === null || selectedElementAbsPosition === void 0 ? void 0 : selectedElementAbsPosition.x, selectedElementAbsPosition === null || selectedElementAbsPosition === void 0 ? void 0 : selectedElementAbsPosition.y, zoom, autoEnabledDraggingSelectedElement, elements, getChildOfElement, paperEventEmitter]);
10330
+ }, [manuallyTriggerRenderPortHandler, handleElementClicked, handleContextMenu, handleMouseUp, handleMouseDown, handleMouseMove, handleMouseLeave, handlePortMoved, handlePortMouseDown, handlePortMouseUp, handlePortsChanged, handlePortContextMenu, handleMouseUpAtLinkedPortPlaceholder, handleElementTextChange, selectedElement, selectedElementSVG, selectedElementAbsPosition === null || selectedElementAbsPosition === void 0 ? void 0 : selectedElementAbsPosition.x, selectedElementAbsPosition === null || selectedElementAbsPosition === void 0 ? void 0 : selectedElementAbsPosition.y, zoom, autoEnabledDraggingSelectedElement, elements, getChildOfElement, paperEventEmitter, onElementResized, onElementsChanged, onElementMoved, onElementMouseDown, onElementMouseUp, onLinksChanged]);
10292
10331
  var ElementsInTree = React.useMemo(function () {
10293
10332
  return elementsInTree.map(function (element, index) {
10294
10333
  return renderElementInTree(element);
@@ -10371,7 +10410,7 @@ var Editor = function (_a) {
10371
10410
  }, [editorContext]);
10372
10411
  var handlePortsChanged = React.useCallback(function (ports, element) {
10373
10412
  element.ports = ports;
10374
- }, [editorContext]);
10413
+ }, []);
10375
10414
  var handlePortContextMenu = React.useCallback(function (port, element, event) {
10376
10415
  editorContext.onPortContextMenuHandler(port, element, event);
10377
10416
  }, [editorContext]);
@@ -10435,9 +10474,12 @@ var Editor = function (_a) {
10435
10474
  var handlePaperMouseUp = React.useCallback(function (position) {
10436
10475
  editorContext.onPaperMouseUpHandler(position);
10437
10476
  }, [editorContext]);
10477
+ var handleElementRemoved = React.useCallback(function (element) {
10478
+ editorContext.onElementRemovedHandler(element.id);
10479
+ }, [editorContext]);
10438
10480
  return (React.createElement(EditorConfigurationContextProvider, { value: editorContext.configuration },
10439
10481
  React.createElement(ZoomContextProvider, null,
10440
- 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, onPortContextMenu: handlePortContextMenu, 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, manuallyTriggerRenderElementHandler: editorContext.manuallyTriggerRenderElementHandler.bind(editorContext), manuallyTriggerRenderPortHandler: editorContext.manuallyTriggerRenderPortHandler.bind(editorContext), manuallySelectElementHandler: editorContext.manuallySelectElementHandler.bind(editorContext), manuallyTriggerDraggingElementHandler: editorContext.manuallyTriggerDraggingElementHandler.bind(editorContext), manuallyTriggerStartedLinkingHandler: editorContext.manuallyTriggerStartedLinkingHandler.bind(editorContext) }))));
10482
+ 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, onPortContextMenu: handlePortContextMenu, onElementContextMenu: handleElementContextMenu, onElementMoved: handleElementMoved, onElementResized: handleElementResized, onElementSelected: handleElementSelected, onElementMouseLeave: handleElementMouseLeave, onElementMouseMove: handleElementMouseMove, onElementMouseDown: handleElementMouseDown, onElementMouseUp: handleElementMouseUp, onElementDeleted: handleElementRemoved, onElementsChanged: handleElementsChanged, onCreatingLink: handleOnCreatingLink, onCreatingPortByLinking: handleOnCreatingPortByLinking, onLinkSelected: handleLinkSelected, onLinksChanged: handleLinksChanged, onTextSelected: handleTextSelected, onTextsChanged: handleTextsChanged, onPaperMouseMoved: handlePaperMouseMoved, onPaperMouseUp: handlePaperMouseUp, onPaperMouseDown: handlePaperMouseDown, manuallyTriggerRenderElementHandler: editorContext.manuallyTriggerRenderElementHandler.bind(editorContext), manuallyTriggerRenderPortHandler: editorContext.manuallyTriggerRenderPortHandler.bind(editorContext), manuallySelectElementHandler: editorContext.manuallySelectElementHandler.bind(editorContext), manuallyTriggerDraggingElementHandler: editorContext.manuallyTriggerDraggingElementHandler.bind(editorContext), manuallyTriggerStartedLinkingHandler: editorContext.manuallyTriggerStartedLinkingHandler.bind(editorContext) }))));
10441
10483
  };
10442
10484
 
10443
10485
  exports.CircleRC = Circle;
@@ -30,6 +30,8 @@ export default interface IEditorContext {
30
30
  onElementMouseMove: (callback: (ev: React.MouseEvent, element: IElement, paperPosition: IPosition) => void) => (() => void);
31
31
  onElementMouseUp: (callback: (ev: React.MouseEvent, element: IElement, paperPosition: IPosition) => void) => (() => void);
32
32
  onElementMouseDown: (callback: (ev: React.MouseEvent, element: IElement, paperPosition: IPosition) => void) => (() => void);
33
+ onElementAdded: (callback: (element: IElement) => void) => (() => void);
34
+ onElementRemoved: (callback: (elementId: string) => void) => (() => void);
33
35
  onLinkSelected: (callback: (link: IElementLink) => void) => (() => void);
34
36
  onTextSelected: (callback: (text: IText) => void) => (() => void);
35
37
  getElement(elementId: string): IElement | undefined;
@@ -50,6 +50,8 @@ export declare class EditorContext implements IEditorContext {
50
50
  onElementMouseLeave(callback: (ev: React.MouseEvent, element: IElement, paperPosition: IPosition) => void): () => void;
51
51
  onElementMouseUp(callback: (ev: React.MouseEvent, element: IElement, paperPosition: IPosition) => void): () => void;
52
52
  onElementMouseDown(callback: (ev: React.MouseEvent, element: IElement, paperPosition: IPosition) => void): () => void;
53
+ onElementAdded(callback: (element: IElement) => void): () => void;
54
+ onElementRemoved(callback: (elementId: string) => void): () => void;
53
55
  onLinkSelected(callback: (link: IElementLink) => void): () => void;
54
56
  onTextSelected(callback: (text: IText) => void): () => void;
55
57
  triggerRenderElement(elementId: string): void;