orcasvn-react-diagrams 0.1.57 → 0.1.59

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_MANUALLY_SELECT_ELEMENT = 'manuallySelectElement';
821
+ var EVENT_MANUALLY_TRIGGER_DRAGGING_ELEMENT = 'manuallyTriggerDraggingElement';
820
822
  var EVENT_LINK_SELECTED = 'linkSelected';
821
823
  var EVENT_TEXT_SELECTED = 'textSelected';
822
824
  var EditorContext = /** @class */ (function () {
@@ -1071,6 +1073,18 @@ var EditorContext = /** @class */ (function () {
1071
1073
  EditorContext.prototype.onManuallyTriggerRenderPort = function (callback) {
1072
1074
  return this.addEventListener(EVENT_MANUALLY_RENDER_PORT, callback);
1073
1075
  };
1076
+ EditorContext.prototype.setSelectedElement = function (element) {
1077
+ this._eventEmitter.emit(EVENT_MANUALLY_SELECT_ELEMENT, element);
1078
+ };
1079
+ EditorContext.prototype.onManuallySelectElement = function (callback) {
1080
+ return this.addEventListener(EVENT_MANUALLY_SELECT_ELEMENT, callback);
1081
+ };
1082
+ EditorContext.prototype.triggerDraggingElement = function (element) {
1083
+ this._eventEmitter.emit(EVENT_MANUALLY_TRIGGER_DRAGGING_ELEMENT, element);
1084
+ };
1085
+ EditorContext.prototype.onManuallyTriggerDraggingElement = function (callback) {
1086
+ return this.addEventListener(EVENT_MANUALLY_TRIGGER_DRAGGING_ELEMENT, callback);
1087
+ };
1074
1088
  return EditorContext;
1075
1089
  }());
1076
1090
 
@@ -1215,6 +1229,7 @@ var EVENT_NAME = {
1215
1229
  ELEMENT_DELETED: 'element_deleted',
1216
1230
  ELEMENT_SELECTED: 'element_selected',
1217
1231
  COMMAND_RENDER_ELEMENT: 'command_render_element',
1232
+ START_DRAGGING_ELEMENT: 'start_dragging_element',
1218
1233
  //PORT
1219
1234
  PORT_MOUSE_DOWN: 'port_mouse_down',
1220
1235
  PORT_MOUSE_UP: 'port_mouse_up',
@@ -7599,10 +7614,71 @@ var getRotatedSVGBBox = function (svgElement) {
7599
7614
  }
7600
7615
  };
7601
7616
 
7617
+ //Automatically add points on the link so that the link does not cross elements, default maximum 10 points
7618
+ var automationAddPointsToLink = function (eleLink, elements, limitPoint) {
7619
+ if (limitPoint === void 0) { limitPoint = 10; }
7620
+ if (!eleLink.targetElement || !eleLink.targetPort) {
7621
+ throw new Error("Target element is not found in element link");
7622
+ }
7623
+ var sourceElement = eleLink.sourceElement, sourcePort = eleLink.sourcePort, targetElement = eleLink.targetElement, targetPort = eleLink.targetPort;
7624
+ var absolutePositionOfSourceEle = getAbsolutePosition(sourceElement);
7625
+ var absolutePositionOfTargetEle = getAbsolutePosition(targetElement);
7626
+ var sourcePosition = {
7627
+ x: absolutePositionOfSourceEle.x + sourcePort.position.x,
7628
+ y: absolutePositionOfSourceEle.y + sourcePort.position.y
7629
+ };
7630
+ var targetPosition = {
7631
+ x: absolutePositionOfTargetEle.x + targetPort.position.x,
7632
+ y: absolutePositionOfTargetEle.y + targetPort.position.y
7633
+ };
7634
+ var fourVertexesOfSourceEleBBox = getFourVertexesOfBBoxFromElement(sourceElement);
7635
+ var fourVertexesOfTargetEleBBox = getFourVertexesOfBBoxFromElement(targetElement);
7636
+ var projectedSourcePositionOnBBox = findNearestProjectedPoint(sourcePosition, [
7637
+ [fourVertexesOfSourceEleBBox[0], fourVertexesOfSourceEleBBox[1]],
7638
+ [fourVertexesOfSourceEleBBox[1], fourVertexesOfSourceEleBBox[2]],
7639
+ [fourVertexesOfSourceEleBBox[2], fourVertexesOfSourceEleBBox[3]],
7640
+ [fourVertexesOfSourceEleBBox[3], fourVertexesOfSourceEleBBox[0]],
7641
+ ]);
7642
+ var projectedTargetPositionOnBBox = findNearestProjectedPoint(targetPosition, [
7643
+ [fourVertexesOfTargetEleBBox[0], fourVertexesOfTargetEleBBox[1]],
7644
+ [fourVertexesOfTargetEleBBox[1], fourVertexesOfTargetEleBBox[2]],
7645
+ [fourVertexesOfTargetEleBBox[2], fourVertexesOfTargetEleBBox[3]],
7646
+ [fourVertexesOfTargetEleBBox[3], fourVertexesOfTargetEleBBox[0]],
7647
+ ]);
7648
+ var numberOfPoints = 0;
7649
+ //create points between the start and end points, to create a line segment that passes through the points without intersecting the elements
7650
+ function generatePositions(sourcePosition, targetPosition, elements) {
7651
+ var firstIntersection = getFirstIntersection(sourcePosition, targetPosition, elements);
7652
+ //If there is no intersection point, then the line connecting the two points does not intersect any element.
7653
+ if (!firstIntersection || limitPoint === numberOfPoints)
7654
+ return [];
7655
+ var nearestIntersection = firstIntersection.nearestIntersection; firstIntersection.intersectionPointsList; var intersectedElement = firstIntersection.element;
7656
+ //Calculate to create a replacement point
7657
+ var replacementPosition = generateSubstitutePosition(nearestIntersection, targetPosition, intersectedElement);
7658
+ if (!replacementPosition) {
7659
+ replacementPosition = {
7660
+ x: nearestIntersection.x,
7661
+ y: nearestIntersection.y
7662
+ };
7663
+ }
7664
+ //Increases the number of points found by 1
7665
+ numberOfPoints += 1;
7666
+ //Create points with the starting point being the sourcePosition and the ending point being the newly created point
7667
+ var prependedPoints = generatePositions(sourcePosition, replacementPosition, elements);
7668
+ //Create points with the starting point being the new newly created point and the ending point being the targetPosition
7669
+ var appendedPoints = generatePositions(replacementPosition, targetPosition, elements);
7670
+ return __spreadArray(__spreadArray(__spreadArray([], prependedPoints, true), [replacementPosition], false), appendedPoints, true);
7671
+ }
7672
+ var points = generatePositions(projectedSourcePositionOnBBox, projectedTargetPositionOnBBox, elements);
7673
+ eleLink.points = points;
7674
+ return eleLink;
7675
+ };
7676
+
7677
+ // import { paperEventEmitterContext } from '../../contexts/paperEventEmitterContext';
7602
7678
  var SelectionFrame = function (props) {
7603
7679
  var propTargetSVGElement = props.targetSVGElement, propWidth = props.width, propHeight = props.height, propFramePadding = props.framePadding, objectX = props.objectX, objectY = props.objectY,
7604
7680
  // movingOffsetThreshold: propMovingOffsetThreshold,
7605
- propMovingRate = props.movingRate, propOnMouseDown = props.onMouseDown, propOnMouseUp = props.onMouseUp, propOnMove = props.onMove, propContainer = props.container, propResizability = props.resizability, propOnResize = props.onResize, PropDragDropHandlerElement = props.dragDropHandlerElement, propStrokeWidth = props.strokeWidth, propAnchor = props.anchor, zoom = props.zoom;
7681
+ propMovingRate = props.movingRate, propOnMouseDown = props.onMouseDown, propOnMouseUp = props.onMouseUp, propOnMove = props.onMove, propContainer = props.container, propResizability = props.resizability, propOnResize = props.onResize, draggingByDefault = props.draggingByDefault, PropDragDropHandlerElement = props.dragDropHandlerElement, propStrokeWidth = props.strokeWidth, propAnchor = props.anchor, zoom = props.zoom;
7606
7682
  var bbox = propTargetSVGElement === null || propTargetSVGElement === void 0 ? void 0 : propTargetSVGElement.getBBox();
7607
7683
  var _a = React.useState(propWidth || (bbox === null || bbox === void 0 ? void 0 : bbox.width) || MIN_ELEMENT_SIZE), width = _a[0], setWidth = _a[1];
7608
7684
  var _b = React.useState(propHeight || (bbox === null || bbox === void 0 ? void 0 : bbox.height) || MIN_ELEMENT_SIZE), height = _b[0], setHeight = _b[1];
@@ -7630,13 +7706,22 @@ var SelectionFrame = function (props) {
7630
7706
  }, [objectY]);
7631
7707
  var framePadding = propFramePadding || 0;
7632
7708
  var r = 5;
7633
- var _e = React.useState(false), draggingRect = _e[0], setDraggingRect = _e[1];
7709
+ var _e = React.useState(draggingByDefault || false), draggingRect = _e[0], setDraggingRect = _e[1];
7634
7710
  var _f = React.useState(false), draggingCircle = _f[0], setDraggingCircle = _f[1];
7635
7711
  var _g = React.useState(0), startX = _g[0], setStartX = _g[1];
7636
7712
  var _h = React.useState(0), startY = _h[0], setStartY = _h[1];
7637
7713
  var _j = React.useState(0), xFromMouse = _j[0], setXFromMouse = _j[1];
7638
7714
  var _k = React.useState(0), yFromMouse = _k[0], setYFromMouse = _k[1];
7639
7715
  var _l = React.useState(0), lastMoveTime = _l[0], setLastMoveTime = _l[1];
7716
+ // const { onStartDraggingElement } = useContext(paperEventEmitterContext);
7717
+ // useEffect(() => {
7718
+ // const { off } = onStartDraggingElement((element) => {
7719
+ // setDraggingRect(true);
7720
+ // });
7721
+ // return () => {
7722
+ // off();
7723
+ // }
7724
+ // }, [])
7640
7725
  var getMousePosition = function (event) {
7641
7726
  var position = windowsPositionToPaperPosition({
7642
7727
  x: event.clientX,
@@ -9300,65 +9385,6 @@ function useKeyboardCommands(_a) {
9300
9385
  }, [element]);
9301
9386
  }
9302
9387
 
9303
- //Automatically add points on the link so that the link does not cross elements, default maximum 10 points
9304
- var automationAddPointsToLink = function (eleLink, elements, limitPoint) {
9305
- if (!eleLink.targetElement || !eleLink.targetPort) {
9306
- throw new Error("Target element is not found in element link");
9307
- }
9308
- var sourceElement = eleLink.sourceElement, sourcePort = eleLink.sourcePort, targetElement = eleLink.targetElement, targetPort = eleLink.targetPort;
9309
- var absolutePositionOfSourceEle = getAbsolutePosition(sourceElement);
9310
- var absolutePositionOfTargetEle = getAbsolutePosition(targetElement);
9311
- var sourcePosition = {
9312
- x: absolutePositionOfSourceEle.x + sourcePort.position.x,
9313
- y: absolutePositionOfSourceEle.y + sourcePort.position.y
9314
- };
9315
- var targetPosition = {
9316
- x: absolutePositionOfTargetEle.x + targetPort.position.x,
9317
- y: absolutePositionOfTargetEle.y + targetPort.position.y
9318
- };
9319
- var fourVertexesOfSourceEleBBox = getFourVertexesOfBBoxFromElement(sourceElement);
9320
- var fourVertexesOfTargetEleBBox = getFourVertexesOfBBoxFromElement(targetElement);
9321
- var projectedSourcePositionOnBBox = findNearestProjectedPoint(sourcePosition, [
9322
- [fourVertexesOfSourceEleBBox[0], fourVertexesOfSourceEleBBox[1]],
9323
- [fourVertexesOfSourceEleBBox[1], fourVertexesOfSourceEleBBox[2]],
9324
- [fourVertexesOfSourceEleBBox[2], fourVertexesOfSourceEleBBox[3]],
9325
- [fourVertexesOfSourceEleBBox[3], fourVertexesOfSourceEleBBox[0]],
9326
- ]);
9327
- var projectedTargetPositionOnBBox = findNearestProjectedPoint(targetPosition, [
9328
- [fourVertexesOfTargetEleBBox[0], fourVertexesOfTargetEleBBox[1]],
9329
- [fourVertexesOfTargetEleBBox[1], fourVertexesOfTargetEleBBox[2]],
9330
- [fourVertexesOfTargetEleBBox[2], fourVertexesOfTargetEleBBox[3]],
9331
- [fourVertexesOfTargetEleBBox[3], fourVertexesOfTargetEleBBox[0]],
9332
- ]);
9333
- var numberOfPoints = 0;
9334
- //create points between the start and end points, to create a line segment that passes through the points without intersecting the elements
9335
- function generatePositions(sourcePosition, targetPosition, elements) {
9336
- var firstIntersection = getFirstIntersection(sourcePosition, targetPosition, elements);
9337
- //If there is no intersection point, then the line connecting the two points does not intersect any element.
9338
- if (!firstIntersection || limitPoint === numberOfPoints)
9339
- return [];
9340
- var nearestIntersection = firstIntersection.nearestIntersection; firstIntersection.intersectionPointsList; var intersectedElement = firstIntersection.element;
9341
- //Calculate to create a replacement point
9342
- var replacementPosition = generateSubstitutePosition(nearestIntersection, targetPosition, intersectedElement);
9343
- if (!replacementPosition) {
9344
- replacementPosition = {
9345
- x: nearestIntersection.x,
9346
- y: nearestIntersection.y
9347
- };
9348
- }
9349
- //Increases the number of points found by 1
9350
- numberOfPoints += 1;
9351
- //Create points with the starting point being the sourcePosition and the ending point being the newly created point
9352
- var prependedPoints = generatePositions(sourcePosition, replacementPosition, elements);
9353
- //Create points with the starting point being the new newly created point and the ending point being the targetPosition
9354
- var appendedPoints = generatePositions(replacementPosition, targetPosition, elements);
9355
- return __spreadArray(__spreadArray(__spreadArray([], prependedPoints, true), [replacementPosition], false), appendedPoints, true);
9356
- }
9357
- var points = generatePositions(projectedSourcePositionOnBBox, projectedTargetPositionOnBBox, elements);
9358
- eleLink.points = points;
9359
- return eleLink;
9360
- };
9361
-
9362
9388
  function adjustElementPositionOnParentPortArea(element, toBeAdjustedPosition, isAbsolutePosition) {
9363
9389
  var _a;
9364
9390
  if (isAbsolutePosition === void 0) { isAbsolutePosition = false; }
@@ -9408,13 +9434,14 @@ var Paper = function (props) {
9408
9434
  var _a = React.useState([]), elements = _a[0], setElements = _a[1];
9409
9435
  var _b = React.useState([]), elementsInTree = _b[0], setElementsInTree = _b[1];
9410
9436
  var _c = React.useState(), selectedElement = _c[0], setSelectedElement = _c[1];
9411
- var _d = React.useState([]), links = _d[0], setLinks = _d[1];
9412
- var _e = React.useState(), selectedLink = _e[0], setSelectedLink = _e[1];
9413
- var _f = React.useState(null), tempLink = _f[0], setTempLink = _f[1];
9414
- var _g = React.useState([]), texts = _g[0], setTexts = _g[1];
9415
- var _h = React.useState(), selectedText = _h[0], setSelectedText = _h[1];
9416
- var _j = React.useState(null), selectedElementSVG = _j[0], setSelectedElementSVG = _j[1];
9417
- var _k = React.useState(false), mouseDownedOnPaper = _k[0], setMouseDownedOnPaper = _k[1];
9437
+ var _d = React.useState(false), autoEnabledDraggingSelectedElement = _d[0], setAutoEnabledDraggingSelectedElement = _d[1];
9438
+ var _e = React.useState([]), links = _e[0], setLinks = _e[1];
9439
+ var _f = React.useState(), selectedLink = _f[0], setSelectedLink = _f[1];
9440
+ var _g = React.useState(null), tempLink = _g[0], setTempLink = _g[1];
9441
+ var _h = React.useState([]), texts = _h[0], setTexts = _h[1];
9442
+ var _j = React.useState(), selectedText = _j[0], setSelectedText = _j[1];
9443
+ var _k = React.useState(null), selectedElementSVG = _k[0], setSelectedElementSVG = _k[1];
9444
+ var _l = React.useState(false), mouseDownedOnPaper = _l[0], setMouseDownedOnPaper = _l[1];
9418
9445
  var paperEventEmitter = React.useContext(paperEventEmitterContext);
9419
9446
  var zoom = useZoomContext().zoom;
9420
9447
  var zoomRef = React.useRef(zoom);
@@ -9448,6 +9475,26 @@ var Paper = function (props) {
9448
9475
  off();
9449
9476
  };
9450
9477
  }, [props.onManuallyTriggerRenderElement, props.onElementsChanged, elements, selectedElement]);
9478
+ React.useEffect(function () {
9479
+ var _a, _b;
9480
+ var offs = [];
9481
+ offs.push((_a = props.onManuallySelectElement) === null || _a === void 0 ? void 0 : _a.call(props, function (element) {
9482
+ var _a;
9483
+ setSelectedElement(element || undefined);
9484
+ if (element) {
9485
+ (_a = props.onElementSelected) === null || _a === void 0 ? void 0 : _a.call(props, element);
9486
+ }
9487
+ }));
9488
+ offs.push((_b = props.onManuallyTriggerDraggingElement) === null || _b === void 0 ? void 0 : _b.call(props, function (element) {
9489
+ var _a;
9490
+ setSelectedElement(element);
9491
+ (_a = props.onElementSelected) === null || _a === void 0 ? void 0 : _a.call(props, element);
9492
+ setAutoEnabledDraggingSelectedElement(true);
9493
+ }));
9494
+ return function () {
9495
+ offs.forEach(function (off) { return off(); });
9496
+ };
9497
+ }, [props.onManuallySelectElement, props.onManuallyTriggerDraggingElement, props.onElementSelected]);
9451
9498
  //Cache elements to avoid re-render when elements changed
9452
9499
  React.useEffect(function () {
9453
9500
  elementsRef.current = elements;
@@ -10046,6 +10093,7 @@ var Paper = function (props) {
10046
10093
  setSelectedElementSVG(ref);
10047
10094
  if (element) {
10048
10095
  setSelectedElement(element);
10096
+ setAutoEnabledDraggingSelectedElement(false);
10049
10097
  paperEventEmitter.emitElementSelected(element);
10050
10098
  }
10051
10099
  }
@@ -10121,10 +10169,10 @@ var Paper = function (props) {
10121
10169
  onMouseUpAtLinkedPortPlaceholder: handleMouseUpAtLinkedPortPlaceholder, onTextUpdated: handleElementTextChange, onManuallyTriggerRenderPort: props.onManuallyTriggerRenderPort, textsPlaceHolderClassName: element.textsPlaceHolderClassName, textsPlaceHolderFlexStyle: element.textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition: element.textsPlaceHolderFlexboxPosition, parentAbsolutePosition: element.parentElement ? getAbsolutePosition(element.parentElement) : undefined },
10122
10170
  element.childrenElementsInTree && element.childrenElementsInTree.map(renderElementInTree),
10123
10171
  !!paperContainerRef.current && !!selectedElement && selectedElement.id === element.id &&
10124
- React.createElement(SelectionFrame, { container: paperContainerRef.current, targetSVGElement: selectedElementSVG || undefined, resizability: (selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.resizability) || {
10172
+ React.createElement(SelectionFrame, { key: selectedElement.id, container: paperContainerRef.current, targetSVGElement: selectedElementSVG || undefined, resizability: (selectedElement === null || selectedElement === void 0 ? void 0 : selectedElement.resizability) || {
10125
10173
  enabled: true,
10126
10174
  keepRatio: true
10127
- }, 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,
10175
+ }, 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,
10128
10176
  //movingOffsetThreshold: ELEMENT_MOVING_OFFSET_THRESHOLD,
10129
10177
  onMouseDown: function (ev) {
10130
10178
  var _a;
@@ -10210,12 +10258,12 @@ var Paper = function (props) {
10210
10258
  paperEventEmitter.emitElementResized(selectedElement, oldSize, newSize);
10211
10259
  setMouseDownedOnPaper(false);
10212
10260
  } }))));
10213
- }, [handlePortsChanged, handleElementClicked, handleContextMenu, handlePortMoved, handlePortMouseDown, handlePortMouseUp, handleMouseUpAtLinkedPortPlaceholder, handleElementTextChange, handleMouseUp, handleMouseMove, handleMouseLeave, selectedElement, selectedElementAbsPosition, zoom]);
10261
+ }, [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]);
10214
10262
  var ElementsInTree = React.useMemo(function () {
10215
10263
  return elementsInTree.map(function (element, index) {
10216
10264
  return renderElementInTree(element);
10217
10265
  });
10218
- }, [elementsInTree, renderElementInTree, selectedElement, zoom]);
10266
+ }, [elementsInTree, renderElementInTree]);
10219
10267
  return (React.createElement("div", { style: { position: "relative" } },
10220
10268
  React.createElement(Ruler, { squareSize: 100, border: '1px dashed grey' }),
10221
10269
  React.createElement("svg", { tabIndex: 0, width: size.width, height: size.height, ref: paperContainerRef, id: "paper-container", onMouseMove: handlePaperMouseMove, onMouseDown: handleMouseDownOnPaper, onMouseUp: handleMouseUpOnPaper },
@@ -10359,7 +10407,7 @@ var Editor = function (_a) {
10359
10407
  }, [editorContext]);
10360
10408
  return (React.createElement(EditorConfigurationContextProvider, { value: editorContext.configuration },
10361
10409
  React.createElement(ZoomContextProvider, null,
10362
- 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) }))));
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) }))));
10363
10411
  };
10364
10412
 
10365
10413
  exports.CircleRC = Circle;
@@ -10377,6 +10425,7 @@ exports.ShapeWrapperRC = ShapeWrapper;
10377
10425
  exports.Text = Text$2;
10378
10426
  exports.TextRC = Text$1;
10379
10427
  exports.addPointToList = addPointToList;
10428
+ exports.automationAddPointsToLink = automationAddPointsToLink;
10380
10429
  exports.calculateAngleWithOx = calculateAngleWithOx;
10381
10430
  exports.checkPointContainsPolygon = checkPointContainsPolygon;
10382
10431
  exports.checkPositionOnLine = checkPositionOnLine;
@@ -41,6 +41,8 @@ interface PaperProps {
41
41
  onManuallyTriggerRenderPort: (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
46
  }
45
47
  declare const _default: React.NamedExoticComponent<PaperProps>;
46
48
  export default _default;
@@ -41,6 +41,10 @@ export default interface IEditorContext {
41
41
  getText(textId: string): IPaperText | undefined;
42
42
  addText(text: IPaperText): void;
43
43
  removeText(textId: string): void;
44
+ setSelectedElement: (element: IElement | null) => void;
45
+ onManuallySelectElement: (callback: (element: IElement | null) => void) => (() => void);
46
+ triggerDraggingElement: (element: IElement) => void;
47
+ onManuallyTriggerDraggingElement: (callback: (element: IElement) => void) => (() => void);
44
48
  triggerRenderElement(elementId: string): void;
45
49
  triggerRenderPort(portId: string, elementId: string): void;
46
50
  onManuallyTriggerRenderElement: (callback: (elementId: string) => void) => (() => void);
@@ -20,5 +20,6 @@ interface ISelectionFrameProps {
20
20
  framePadding?: number;
21
21
  strokeWidth?: number;
22
22
  zoom: number;
23
+ draggingByDefault?: boolean;
23
24
  }
24
25
  export default ISelectionFrameProps;
@@ -11,6 +11,7 @@ export type onPortMouseUpHandler = (ev: React.MouseEvent<SVGElement>, port: IPor
11
11
  export type onElementMovedHandler = (element: IElement, oldPosition: IPosition, newPosition: IPosition) => void;
12
12
  export type onElementResizedHandler = (element: IElement, oldSize: ISize, newSize: ISize) => void;
13
13
  export type OnElementSelected = (element: IElement) => void;
14
+ export type OnStartDraggingElement = (element: IElement) => void;
14
15
  export type OnCommandRenderElement = (elementId: string) => void;
15
16
  export type onCommandDeleteSelectedHandler = () => void;
16
17
  export type OnCommandRenderPort = (portId: string, elementId: string) => void;
@@ -56,4 +56,8 @@ export declare class EditorContext implements IEditorContext {
56
56
  onManuallyTriggerRenderElement(callback: (elementId: string) => void): () => void;
57
57
  triggerRenderPort(portId: string, elementId: string): void;
58
58
  onManuallyTriggerRenderPort(callback: (portId: string, elementId: string) => void): () => void;
59
+ setSelectedElement(element: IElement | null): void;
60
+ onManuallySelectElement(callback: (element: IElement | null) => void): () => void;
61
+ triggerDraggingElement(element: IElement): void;
62
+ onManuallyTriggerDraggingElement(callback: (element: IElement) => void): () => void;
59
63
  }
@@ -8,6 +8,7 @@ export declare const EVENT_NAME: {
8
8
  ELEMENT_DELETED: string;
9
9
  ELEMENT_SELECTED: string;
10
10
  COMMAND_RENDER_ELEMENT: string;
11
+ START_DRAGGING_ELEMENT: string;
11
12
  PORT_MOUSE_DOWN: string;
12
13
  PORT_MOUSE_UP: string;
13
14
  PORT_MOVED: string;
@@ -5,4 +5,5 @@ export * from './pathUtil';
5
5
  export * from './portSlideRailSVGUtil';
6
6
  export * from './positionUtil';
7
7
  export * from './svgUtil';
8
+ export * from './elementLinkUtil';
8
9
  export { generateUniqueId };