orcasvn-react-diagrams 0.1.59 → 0.1.60

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
@@ -821,6 +821,7 @@ var EVENT_MANUALLY_SELECT_ELEMENT = 'manuallySelectElement';
821
821
  var EVENT_MANUALLY_TRIGGER_DRAGGING_ELEMENT = 'manuallyTriggerDraggingElement';
822
822
  var EVENT_LINK_SELECTED = 'linkSelected';
823
823
  var EVENT_TEXT_SELECTED = 'textSelected';
824
+ var EVENT_MANUALLY_TRIGGER_STARTED_LINKING = 'manuallyTriggerStartedLinking';
824
825
  var EditorContext = /** @class */ (function () {
825
826
  function EditorContext(elements, links, texts, configuration) {
826
827
  var _this = this;
@@ -1064,27 +1065,38 @@ var EditorContext = /** @class */ (function () {
1064
1065
  EditorContext.prototype.triggerRenderElement = function (elementId) {
1065
1066
  this._eventEmitter.emit(EVENT_MANUALLY_RENDER_ELEMENT, elementId);
1066
1067
  };
1067
- EditorContext.prototype.onManuallyTriggerRenderElement = function (callback) {
1068
+ /** @internal */
1069
+ EditorContext.prototype.manuallyTriggerRenderElementHandler = function (callback) {
1068
1070
  return this.addEventListener(EVENT_MANUALLY_RENDER_ELEMENT, callback);
1069
1071
  };
1070
1072
  EditorContext.prototype.triggerRenderPort = function (portId, elementId) {
1071
1073
  this._eventEmitter.emit(EVENT_MANUALLY_RENDER_PORT, portId, elementId);
1072
1074
  };
1073
- EditorContext.prototype.onManuallyTriggerRenderPort = function (callback) {
1075
+ /** @internal */
1076
+ EditorContext.prototype.manuallyTriggerRenderPortHandler = function (callback) {
1074
1077
  return this.addEventListener(EVENT_MANUALLY_RENDER_PORT, callback);
1075
1078
  };
1076
1079
  EditorContext.prototype.setSelectedElement = function (element) {
1077
1080
  this._eventEmitter.emit(EVENT_MANUALLY_SELECT_ELEMENT, element);
1078
1081
  };
1079
- EditorContext.prototype.onManuallySelectElement = function (callback) {
1082
+ /** @internal */
1083
+ EditorContext.prototype.manuallySelectElementHandler = function (callback) {
1080
1084
  return this.addEventListener(EVENT_MANUALLY_SELECT_ELEMENT, callback);
1081
1085
  };
1082
1086
  EditorContext.prototype.triggerDraggingElement = function (element) {
1083
1087
  this._eventEmitter.emit(EVENT_MANUALLY_TRIGGER_DRAGGING_ELEMENT, element);
1084
1088
  };
1085
- EditorContext.prototype.onManuallyTriggerDraggingElement = function (callback) {
1089
+ /** @internal */
1090
+ EditorContext.prototype.manuallyTriggerDraggingElementHandler = function (callback) {
1086
1091
  return this.addEventListener(EVENT_MANUALLY_TRIGGER_DRAGGING_ELEMENT, callback);
1087
1092
  };
1093
+ EditorContext.prototype.triggerStartedLinking = function (sourceElement, sourcePort) {
1094
+ this._eventEmitter.emit(EVENT_MANUALLY_TRIGGER_STARTED_LINKING, sourceElement, sourcePort);
1095
+ };
1096
+ /** @internal */
1097
+ EditorContext.prototype.manuallyTriggerStartedLinkingHandler = function (callback) {
1098
+ return this.addEventListener(EVENT_MANUALLY_TRIGGER_STARTED_LINKING, callback);
1099
+ };
1088
1100
  return EditorContext;
1089
1101
  }());
1090
1102
 
@@ -8437,12 +8449,11 @@ var IElementLink = function (_a) {
8437
8449
  var _g = React.useState(path), pathStr = _g[0], setPathStr = _g[1];
8438
8450
  var _h = React.useState(pointsProp !== null && pointsProp !== void 0 ? pointsProp : []), points = _h[0], setPoints = _h[1];
8439
8451
  var _j = React.useState(false), isDragging = _j[0], setIsDragging = _j[1];
8440
- var _k = React.useState(), draggingPointIndex = _k[0], setDraggingPointIndex = _k[1];
8441
- var _l = React.useState({
8452
+ var _k = React.useState({
8442
8453
  current: null,
8443
- }), selectedLabelRef = _l[0], setSelectedLabelRef = _l[1];
8444
- var _m = React.useState(false), isSelectedLink = _m[0], setIsSelectedLink = _m[1];
8445
- var _o = React.useContext(paperEventEmitterContext), onPaperClicked = _o.onPaperClicked, onElementSelected = _o.onElementSelected;
8454
+ }), selectedLabelRef = _k[0], setSelectedLabelRef = _k[1];
8455
+ var _l = React.useState(false), isSelectedLink = _l[0], setIsSelectedLink = _l[1];
8456
+ var _m = React.useContext(paperEventEmitterContext), onPaperClicked = _m.onPaperClicked, onElementSelected = _m.onElementSelected;
8446
8457
  var zoom = useZoomContext().zoom;
8447
8458
  var pathRef = React.useRef(null);
8448
8459
  var labelRef = React.useRef(null);
@@ -8450,27 +8461,18 @@ var IElementLink = function (_a) {
8450
8461
  var targetLabelRef = React.useRef(null);
8451
8462
  var isFirstRender = React.useRef(true);
8452
8463
  var onPointsChangedRef = React.useRef();
8453
- var lastUpdatedPoints = React.useRef(Date.now());
8464
+ var draggingPointIndexRef = React.useRef(); // Ref to store the index of the point being dragged. No need to store it in state, as it is only used during the drag operation.
8454
8465
  var angleMarkerStart = '0';
8455
8466
  var angleMarkerEnd = '0';
8456
8467
  var markerStartPosition;
8457
8468
  var markerEndPosition;
8458
8469
  var centerPathPosition = undefined;
8459
- // Throttle pointsProp updates to avoid excessive renders
8470
+ // Initialize points from props
8460
8471
  React.useEffect(function () {
8461
- var delay = 100; // 100ms delay
8462
- var timeoutId = setTimeout(function () {
8463
- var now = Date.now();
8464
- if (now - lastUpdatedPoints.current >= delay) {
8465
- setPoints(pointsProp || []);
8466
- lastUpdatedPoints.current = now;
8467
- }
8468
- }, delay - (Date.now() - lastUpdatedPoints.current));
8469
- return function () {
8470
- clearTimeout(timeoutId);
8471
- };
8472
+ setPoints(pointsProp || []);
8472
8473
  // Use JSON.stringify for deep comparison
8473
8474
  }, [JSON.stringify(pointsProp)]);
8475
+ // Reset selected label when paper is clicked
8474
8476
  React.useEffect(function () {
8475
8477
  var paperClickListener = onPaperClicked(function () {
8476
8478
  setSelectedLabelRef({
@@ -8483,6 +8485,7 @@ var IElementLink = function (_a) {
8483
8485
  paperClickListener.off();
8484
8486
  };
8485
8487
  }, []);
8488
+ // Reset selected label when an element is selected
8486
8489
  React.useEffect(function () {
8487
8490
  var elementSelectedListener = onElementSelected(function () {
8488
8491
  setSelectedLabelRef({
@@ -8499,6 +8502,7 @@ var IElementLink = function (_a) {
8499
8502
  React.useEffect(function () {
8500
8503
  onPointsChangedRef.current = onPointsChanged;
8501
8504
  }, [onPointsChanged]);
8505
+ // Notify parent component when points change
8502
8506
  React.useEffect(function () {
8503
8507
  var _a;
8504
8508
  if (isFirstRender.current) {
@@ -8506,7 +8510,7 @@ var IElementLink = function (_a) {
8506
8510
  return;
8507
8511
  }
8508
8512
  (_a = onPointsChangedRef.current) === null || _a === void 0 ? void 0 : _a.call(onPointsChangedRef, points, id);
8509
- }, [points]);
8513
+ }, [JSON.stringify(points)]);
8510
8514
  React.useLayoutEffect(function () {
8511
8515
  var pointsList = __spreadArray(__spreadArray([sourcePosition], points, true), [targetPosition], false);
8512
8516
  var _pathStr = createSmoothPathString(pointsList, undefined, false);
@@ -8517,42 +8521,9 @@ var IElementLink = function (_a) {
8517
8521
  return;
8518
8522
  onPathChanged === null || onPathChanged === void 0 ? void 0 : onPathChanged(pathStr, id);
8519
8523
  }, [pathStr, id]);
8520
- React.useLayoutEffect(function () {
8521
- //handle when creating and moving point
8522
- var handleMouseMove = function (ev) {
8523
- var mouseEvent = ev;
8524
- if (isDragging && draggingPointIndex !== undefined && container) {
8525
- var paperPosition_1 = windowsPositionToPaperPosition({
8526
- x: mouseEvent.clientX,
8527
- y: mouseEvent.clientY
8528
- }, container, zoom);
8529
- setPoints(function (prev) {
8530
- var temp = __spreadArray([], prev, true);
8531
- temp[draggingPointIndex] = paperPosition_1;
8532
- return temp;
8533
- });
8534
- }
8535
- };
8536
- var mouseUp = function () {
8537
- setDraggingPointIndex(undefined);
8538
- setIsDragging(false);
8539
- };
8540
- container === null || container === void 0 ? void 0 : container.addEventListener('mousemove', handleMouseMove);
8541
- container === null || container === void 0 ? void 0 : container.addEventListener('mouseup', mouseUp);
8542
- return function () {
8543
- container === null || container === void 0 ? void 0 : container.removeEventListener('mousemove', handleMouseMove);
8544
- container === null || container === void 0 ? void 0 : container.removeEventListener('mouseup', mouseUp);
8545
- };
8546
- }, [container, isDragging, draggingPointIndex, zoom]);
8547
- var handleMouseDownOnPath = function (ev) {
8548
- ev.preventDefault();
8549
- //add point if click on path
8550
- setIsDragging(true);
8524
+ var addMovingPoint = function (mouseDownedOnPaperPos, points) {
8551
8525
  //Position of the new point on the path
8552
- var paperPosition = windowsPositionToPaperPosition({
8553
- x: ev.clientX,
8554
- y: ev.clientY
8555
- }, container, zoom);
8526
+ var paperPosition = mouseDownedOnPaperPos;
8556
8527
  var newPoints = addPointToList(paperPosition, __spreadArray(__spreadArray([sourcePosition], points, true), [targetPosition], false), pathRef.current);
8557
8528
  var pointsWithoutStartEndPoint = newPoints.slice(1, newPoints.length - 1);
8558
8529
  var addedIndex = pointsWithoutStartEndPoint.findIndex(function (p) { return p.x === paperPosition.x && p.y === paperPosition.y; });
@@ -8595,8 +8566,49 @@ var IElementLink = function (_a) {
8595
8566
  }
8596
8567
  //Find new index of added point
8597
8568
  _draggingPointIndex = pointsWithoutStartEndPoint.findIndex(function (p) { return p.x === paperPosition.x && p.y === paperPosition.y; });
8598
- setDraggingPointIndex(_draggingPointIndex);
8599
- setPoints(pointsWithoutStartEndPoint);
8569
+ return {
8570
+ draggingPointIndex: _draggingPointIndex,
8571
+ points: pointsWithoutStartEndPoint,
8572
+ };
8573
+ };
8574
+ React.useEffect(function () {
8575
+ //handle when creating and moving point
8576
+ var handleMouseMove = function (ev) {
8577
+ var mouseEvent = ev;
8578
+ if (isDragging && container) {
8579
+ var paperPosition_1 = windowsPositionToPaperPosition({
8580
+ x: mouseEvent.clientX,
8581
+ y: mouseEvent.clientY
8582
+ }, container, zoom);
8583
+ if (draggingPointIndexRef.current !== undefined) { // If dragging a point
8584
+ setPoints(function (prev) {
8585
+ var temp = __spreadArray([], prev, true);
8586
+ temp[draggingPointIndexRef.current] = paperPosition_1;
8587
+ return temp;
8588
+ });
8589
+ }
8590
+ else { // If adding a new point
8591
+ var _a = addMovingPoint(paperPosition_1, points), newDraggingPointIndex = _a.draggingPointIndex, newPoints = _a.points;
8592
+ draggingPointIndexRef.current = newDraggingPointIndex;
8593
+ setPoints(newPoints);
8594
+ }
8595
+ }
8596
+ };
8597
+ var mouseUp = function () {
8598
+ draggingPointIndexRef.current = undefined;
8599
+ setIsDragging(false);
8600
+ };
8601
+ container === null || container === void 0 ? void 0 : container.addEventListener('mousemove', handleMouseMove);
8602
+ container === null || container === void 0 ? void 0 : container.addEventListener('mouseup', mouseUp);
8603
+ return function () {
8604
+ container === null || container === void 0 ? void 0 : container.removeEventListener('mousemove', handleMouseMove);
8605
+ container === null || container === void 0 ? void 0 : container.removeEventListener('mouseup', mouseUp);
8606
+ };
8607
+ }, [container, isDragging, zoom, points]);
8608
+ var handleMouseDownOnPath = function (ev) {
8609
+ ev.preventDefault();
8610
+ //add point if click on path
8611
+ setIsDragging(true);
8600
8612
  };
8601
8613
  var handleLabelMoved = function (newX, newY) {
8602
8614
  if (!onLabelMoved)
@@ -8826,6 +8838,17 @@ var Element = React.forwardRef(function (props, forwardedRef) {
8826
8838
  })) !== null && _b !== void 0 ? _b : [];
8827
8839
  });
8828
8840
  }, [props.ports]);
8841
+ //Normalize port position when element is resized
8842
+ React.useEffect(function () {
8843
+ var newPorts = portsRef.current.map(function (port) {
8844
+ var newPosition = normalizePortPosition(port.position);
8845
+ onPortMoved === null || onPortMoved === void 0 ? void 0 : onPortMoved(port, id, port.position, newPosition);
8846
+ _paperEventEmitterContext.emitPortMoved(port, id, port.position, newPosition);
8847
+ port.position = newPosition;
8848
+ return port;
8849
+ });
8850
+ setPorts(newPorts);
8851
+ }, [width, height]);
8829
8852
  //Listen trigger of Delete key, handle delete port is selected
8830
8853
  React.useEffect(function () {
8831
8854
  var listener = _paperEventEmitterContext.onCommandDeleteSelectedPort(function () {
@@ -9465,27 +9488,28 @@ var Paper = function (props) {
9465
9488
  setTexts(props.texts);
9466
9489
  }, [props.texts]);
9467
9490
  React.useEffect(function () {
9468
- var off = props.onManuallyTriggerRenderElement(function (elementId) {
9469
- setElements(__spreadArray([], elements, true));
9491
+ var off = props.manuallyTriggerRenderElementHandler(function (elementId) {
9492
+ var newElements = __spreadArray([], elements, true);
9493
+ setElements(newElements);
9470
9494
  if (props.onElementsChanged) {
9471
- props.onElementsChanged(__spreadArray([], elements, true));
9495
+ props.onElementsChanged(newElements);
9472
9496
  }
9473
9497
  });
9474
9498
  return function () {
9475
9499
  off();
9476
9500
  };
9477
- }, [props.onManuallyTriggerRenderElement, props.onElementsChanged, elements, selectedElement]);
9501
+ }, [props.manuallyTriggerRenderElementHandler, props.onElementsChanged, elements, selectedElement]);
9478
9502
  React.useEffect(function () {
9479
9503
  var _a, _b;
9480
9504
  var offs = [];
9481
- offs.push((_a = props.onManuallySelectElement) === null || _a === void 0 ? void 0 : _a.call(props, function (element) {
9505
+ offs.push((_a = props.manuallySelectElementHandler) === null || _a === void 0 ? void 0 : _a.call(props, function (element) {
9482
9506
  var _a;
9483
9507
  setSelectedElement(element || undefined);
9484
9508
  if (element) {
9485
9509
  (_a = props.onElementSelected) === null || _a === void 0 ? void 0 : _a.call(props, element);
9486
9510
  }
9487
9511
  }));
9488
- offs.push((_b = props.onManuallyTriggerDraggingElement) === null || _b === void 0 ? void 0 : _b.call(props, function (element) {
9512
+ offs.push((_b = props.manuallyTriggerDraggingElementHandler) === null || _b === void 0 ? void 0 : _b.call(props, function (element) {
9489
9513
  var _a;
9490
9514
  setSelectedElement(element);
9491
9515
  (_a = props.onElementSelected) === null || _a === void 0 ? void 0 : _a.call(props, element);
@@ -9494,7 +9518,24 @@ var Paper = function (props) {
9494
9518
  return function () {
9495
9519
  offs.forEach(function (off) { return off(); });
9496
9520
  };
9497
- }, [props.onManuallySelectElement, props.onManuallyTriggerDraggingElement, props.onElementSelected]);
9521
+ }, [props.manuallySelectElementHandler, props.manuallyTriggerDraggingElementHandler, props.onElementSelected]);
9522
+ React.useEffect(function () {
9523
+ if (props.manuallyTriggerStartedLinkingHandler) {
9524
+ var off_1 = props.manuallyTriggerStartedLinkingHandler(function (sourceElement, sourcePort) {
9525
+ var newLink = {
9526
+ id: generateUniqueId(),
9527
+ points: [],
9528
+ sourceElement: sourceElement,
9529
+ sourcePort: sourcePort,
9530
+ };
9531
+ setTempLink(newLink);
9532
+ paperEventEmitter.emitElementLinkStarted(newLink);
9533
+ });
9534
+ return function () {
9535
+ off_1();
9536
+ };
9537
+ }
9538
+ }, [props.manuallyTriggerStartedLinkingHandler]);
9498
9539
  //Cache elements to avoid re-render when elements changed
9499
9540
  React.useEffect(function () {
9500
9541
  elementsRef.current = elements;
@@ -10166,7 +10207,7 @@ var Paper = function (props) {
10166
10207
  return (React.createElement("g", { id: "group-of-element-".concat(element.id), key: element.id },
10167
10208
  React.createElement(ReactElement, { key: "element-".concat(element.id), id: element.id, ref: function (refDOM) { return element.DOM = refDOM; }, height: element.size.height, width: element.size.width, x: element.positionAnchor === exports.PositioningAnchor.Center ? element.position.x - element.size.width / 2 : element.position.x, y: element.positionAnchor === exports.PositioningAnchor.Center ? element.position.y - element.size.height / 2 : element.position.y, onClick: handleElementClicked, onContextMenu: handleContextMenu, onMouseUp: handleMouseUp, onMouseDown: handleMouseDown, onMouseMove: handleMouseMove, onMouseLeave: handleMouseLeave, container: paperContainerRef.current, renderShape: element.renderShape, cssClass: element.cssClass, texts: element.texts, ports: element.ports, portMoveableAreas: element.portMoveableAreas, portSlideRailSVGClassName: element.portSlideRailSVGClassName, portDirection: element.portDirection, defaultPortSize: element.defaultPortSize, onPortMoved: handlePortMoved, onPortMouseDown: handlePortMouseDown, onPortMouseUp: handlePortMouseUp, onPortsChanged: handlePortsChanged, onPortContextMenu: handlePortContextMenu,
10168
10209
  // portPlaceholderShape={(<Circle x={0} y={0} width={10} height={10} fill='red' positioningAnchor={PositioningAnchor.Center} />)}
10169
- onMouseUpAtLinkedPortPlaceholder: handleMouseUpAtLinkedPortPlaceholder, onTextUpdated: handleElementTextChange, onManuallyTriggerRenderPort: props.onManuallyTriggerRenderPort, textsPlaceHolderClassName: element.textsPlaceHolderClassName, textsPlaceHolderFlexStyle: element.textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition: element.textsPlaceHolderFlexboxPosition, parentAbsolutePosition: element.parentElement ? getAbsolutePosition(element.parentElement) : undefined },
10210
+ onMouseUpAtLinkedPortPlaceholder: handleMouseUpAtLinkedPortPlaceholder, onTextUpdated: handleElementTextChange, onManuallyTriggerRenderPort: props.manuallyTriggerRenderPortHandler, textsPlaceHolderClassName: element.textsPlaceHolderClassName, textsPlaceHolderFlexStyle: element.textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition: element.textsPlaceHolderFlexboxPosition, parentAbsolutePosition: element.parentElement ? getAbsolutePosition(element.parentElement) : undefined },
10170
10211
  element.childrenElementsInTree && element.childrenElementsInTree.map(renderElementInTree),
10171
10212
  !!paperContainerRef.current && !!selectedElement && selectedElement.id === element.id &&
10172
10213
  React.createElement(SelectionFrame, { key: selectedElement.id, container: paperContainerRef.current, targetSVGElement: selectedElementSVG || undefined, resizability: (selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.resizability) || {
@@ -10198,18 +10239,18 @@ var Paper = function (props) {
10198
10239
  return;
10199
10240
  var oldPosition = __assign({}, selectedElement.position);
10200
10241
  // Relative position to the paper container
10201
- var newPosition = {
10242
+ var paperPosition = {
10202
10243
  x: newX,
10203
10244
  y: newY
10204
10245
  };
10205
- logger.info("Element ".concat(selectedElement.id, " is dragging to position ").concat(JSON.stringify(newPosition)));
10246
+ logger.info("Element ".concat(selectedElement.id, " is dragging to position ").concat(JSON.stringify(paperPosition)));
10206
10247
  //Adjust position of element if it should move as a port on parent port area
10207
10248
  if (selectedElement.moveAsPortOnParent && selectedElement.parentElement) {
10208
- newPosition = adjustElementPositionOnParentPortArea(selectedElement, newPosition, true);
10209
- updateElementPosition(selectedElement, newPosition.x, newPosition.y, true);
10249
+ paperPosition = adjustElementPositionOnParentPortArea(selectedElement, paperPosition, true);
10250
+ updateElementPosition(selectedElement, paperPosition.x, paperPosition.y, true);
10210
10251
  }
10211
10252
  else {
10212
- updateElementPosition(selectedElement, newPosition.x, newPosition.y, false);
10253
+ updateElementPosition(selectedElement, paperPosition.x, paperPosition.y, false);
10213
10254
  }
10214
10255
  //let newElementPosition = updateElementPosition(selectedElement, newPosition.x, newPosition.y, true)
10215
10256
  var indexSelectedElement = elements.findIndex(function (e) { return e.id === selectedElement.id; });
@@ -10217,8 +10258,8 @@ var Paper = function (props) {
10217
10258
  // Start updating the position of links connected to the selected element
10218
10259
  var childElements = getChildOfElement(selectedElement);
10219
10260
  var elementIds = __spreadArray(__spreadArray([], childElements.map(function (e) { return e.id; }), true), [selectedElement.id], false);
10220
- var offsetX = newPosition.x - oldPosition.x;
10221
- var offsetY = newPosition.y - oldPosition.y;
10261
+ var offsetX = selectedElement.position.x - oldPosition.x;
10262
+ var offsetY = selectedElement.position.y - oldPosition.y;
10222
10263
  // Update position of all points of links that are connected to the selected element
10223
10264
  var newLinks = linksRef.current.map(function (link) {
10224
10265
  var isUpdate = elementIds.includes(link.sourceElement.id) && elementIds.includes(link.targetElement.id);
@@ -10235,8 +10276,8 @@ var Paper = function (props) {
10235
10276
  //Set state to re-render UI with new position
10236
10277
  setElementsInTree(function (prev) { return __spreadArray([], prev, true); });
10237
10278
  if (props.onElementMoved) {
10238
- console.log('onElementMoved', selectedElement.position, newPosition);
10239
- props.onElementMoved(selectedElement.position, selectedElement, indexSelectedElement, newPosition);
10279
+ console.log('onElementMoved', selectedElement.position, paperPosition);
10280
+ props.onElementMoved(selectedElement.position, selectedElement, indexSelectedElement, paperPosition);
10240
10281
  }
10241
10282
  paperEventEmitter.emitElementMoved(selectedElement, oldPosition, selectedElement.position);
10242
10283
  setMouseDownedOnPaper(false);
@@ -10407,7 +10448,7 @@ var Editor = function (_a) {
10407
10448
  }, [editorContext]);
10408
10449
  return (React.createElement(EditorConfigurationContextProvider, { value: editorContext.configuration },
10409
10450
  React.createElement(ZoomContextProvider, null,
10410
- 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, onManuallyTriggerRenderElement: editorContext.onManuallyTriggerRenderElement.bind(editorContext), onManuallyTriggerRenderPort: editorContext.onManuallyTriggerRenderPort.bind(editorContext), onManuallySelectElement: editorContext.onManuallySelectElement.bind(editorContext), onManuallyTriggerDraggingElement: editorContext.onManuallyTriggerDraggingElement.bind(editorContext) }))));
10451
+ 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) }))));
10411
10452
  };
10412
10453
 
10413
10454
  exports.CircleRC = Circle;
@@ -37,12 +37,13 @@ interface PaperProps {
37
37
  onLinksChanged?: (links: IElementLink[]) => void;
38
38
  onTextSelected?: (text: IText) => void;
39
39
  onTextsChanged?: (texts: IPaperText[]) => void;
40
- onManuallyTriggerRenderElement: (callback: (elementId: string) => void) => () => void;
41
- onManuallyTriggerRenderPort: (callback: (portId: string, elementId: string) => void) => () => void;
40
+ manuallyTriggerRenderElementHandler: (callback: (elementId: string) => void) => () => void;
41
+ manuallyTriggerRenderPortHandler: (callback: (portId: string, elementId: string) => void) => () => void;
42
42
  onCreatingPortByLinking?: (sourceElement: IElement, sourcePort: IPort, targetElement: IElement, position: IPosition) => IPort | null;
43
43
  onCreatingLink?: (sourcePort: IPort, sourceElement: IElement, targetPort: IPort, targetElement: IElement) => IElementLink | null;
44
- onManuallySelectElement?: (callback: (element: IElement | null) => void) => (() => void);
45
- onManuallyTriggerDraggingElement?: (callback: (element: IElement) => void) => (() => void);
44
+ manuallySelectElementHandler?: (callback: (element: IElement | null) => void) => (() => void);
45
+ manuallyTriggerDraggingElementHandler?: (callback: (element: IElement) => void) => (() => void);
46
+ manuallyTriggerStartedLinkingHandler?: (callback: (sourceElement: IElement, sourcePort: IPort) => void) => (() => void);
46
47
  }
47
48
  declare const _default: React.NamedExoticComponent<PaperProps>;
48
49
  export default _default;
@@ -0,0 +1,2 @@
1
+ import { EditorContext } from "../models/implementations/EditorContext";
2
+ export declare const editorContext: EditorContext;
@@ -42,11 +42,8 @@ export default interface IEditorContext {
42
42
  addText(text: IPaperText): void;
43
43
  removeText(textId: string): void;
44
44
  setSelectedElement: (element: IElement | null) => void;
45
- onManuallySelectElement: (callback: (element: IElement | null) => void) => (() => void);
46
45
  triggerDraggingElement: (element: IElement) => void;
47
- onManuallyTriggerDraggingElement: (callback: (element: IElement) => void) => (() => void);
48
46
  triggerRenderElement(elementId: string): void;
49
47
  triggerRenderPort(portId: string, elementId: string): void;
50
- onManuallyTriggerRenderElement: (callback: (elementId: string) => void) => (() => void);
51
- onManuallyTriggerRenderPort: (callback: (portId: string, elementId: string) => void) => (() => void);
48
+ triggerStartedLinking(sourceElement: IElement, sourcePort: IPort): void;
52
49
  }
@@ -53,11 +53,8 @@ export declare class EditorContext implements IEditorContext {
53
53
  onLinkSelected(callback: (link: IElementLink) => void): () => void;
54
54
  onTextSelected(callback: (text: IText) => void): () => void;
55
55
  triggerRenderElement(elementId: string): void;
56
- onManuallyTriggerRenderElement(callback: (elementId: string) => void): () => void;
57
56
  triggerRenderPort(portId: string, elementId: string): void;
58
- onManuallyTriggerRenderPort(callback: (portId: string, elementId: string) => void): () => void;
59
57
  setSelectedElement(element: IElement | null): void;
60
- onManuallySelectElement(callback: (element: IElement | null) => void): () => void;
61
58
  triggerDraggingElement(element: IElement): void;
62
- onManuallyTriggerDraggingElement(callback: (element: IElement) => void): () => void;
59
+ triggerStartedLinking(sourceElement: IElement, sourcePort: IPort): void;
63
60
  }