orcasvn-react-diagrams 0.1.12 → 0.1.13

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
@@ -7647,11 +7647,21 @@ var Ruler = function (_a) {
7647
7647
  };
7648
7648
 
7649
7649
  var ElementWrapper = React$1.forwardRef(function (_a, ref) {
7650
- var x = _a.x, y = _a.y, children = _a.children; _a.portPlaceholders; _a.ports; var onClick = _a.onClick, onMouseMove = _a.onMouseMove, onMouseLeave = _a.onMouseLeave, onMouseUp = _a.onMouseUp;
7650
+ var x = _a.x, y = _a.y, children = _a.children; _a.portPlaceholders; _a.ports; var onClick = _a.onClick, onContextMenu = _a.onContextMenu, onMouseMove = _a.onMouseMove, onMouseLeave = _a.onMouseLeave, onMouseUp = _a.onMouseUp;
7651
7651
  var handleMouseDown = function (ev) {
7652
7652
  ev.stopPropagation();
7653
7653
  };
7654
- return (React$1.createElement("svg", { x: x, y: y, onClick: onClick, onMouseDown: handleMouseDown, ref: ref, style: { overflow: "visible" }, onMouseMove: onMouseMove, onMouseLeave: onMouseLeave, onMouseUp: onMouseUp }, children));
7654
+ var handleClick = function (ev) {
7655
+ if (ev.type === 'click') {
7656
+ if (onClick)
7657
+ onClick(ev);
7658
+ }
7659
+ else if (ev.type === 'contextmenu') {
7660
+ if (onContextMenu)
7661
+ onContextMenu(ev);
7662
+ }
7663
+ };
7664
+ return (React$1.createElement("svg", { x: x, y: y, onClick: handleClick, onContextMenu: handleClick, onMouseDown: handleMouseDown, ref: ref, style: { overflow: "visible" }, onMouseMove: onMouseMove, onMouseLeave: onMouseLeave, onMouseUp: onMouseUp }, children));
7655
7665
  });
7656
7666
 
7657
7667
  // Calculate the position of the 4 vertices of a rectangle relative to its parent svg
@@ -8921,7 +8931,7 @@ var Flexbox$1 = /*@__PURE__*/getDefaultExportFromCjs(bundleExports);
8921
8931
 
8922
8932
  var Element = function (props) {
8923
8933
  var _a, _b;
8924
- var id = props.id, x = props.x, y = props.y, width = props.width, height = props.height, portPlaceholderShape = props.portPlaceholderShape, children = props.children, container = props.container, textsPlaceHolderFlexStyle = props.textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition = props.textsPlaceHolderFlexboxPosition, textsPlaceHolderClassName = props.textsPlaceHolderClassName, texts = props.texts, portSlideRailSVGClassName = props.portSlideRailSVGClassName, portMoveableAreas = props.portMoveableAreas, portDirection = props.portDirection, defaultPortSize = props.defaultPortSize, onClick = props.onClick, renderShape = props.renderShape; props.onMoved; var onPortMoved = props.onPortMoved; props.onResized; var onPortMouseDown = props.onPortMouseDown, onPortMouseUp = props.onPortMouseUp; props.onMouseMove; props.onMouseLeave; props.onMouseUp; var onMouseUpAtLinkedPortPlaceholder = props.onMouseUpAtLinkedPortPlaceholder, onTextUpdated = props.onTextUpdated;
8934
+ var id = props.id, x = props.x, y = props.y, width = props.width, height = props.height, portPlaceholderShape = props.portPlaceholderShape, children = props.children, container = props.container, textsPlaceHolderFlexStyle = props.textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition = props.textsPlaceHolderFlexboxPosition, textsPlaceHolderClassName = props.textsPlaceHolderClassName, texts = props.texts, portSlideRailSVGClassName = props.portSlideRailSVGClassName, portMoveableAreas = props.portMoveableAreas, portDirection = props.portDirection, defaultPortSize = props.defaultPortSize, onClick = props.onClick, onContextMenu = props.onContextMenu, renderShape = props.renderShape; props.onMoved; var onPortMoved = props.onPortMoved; props.onResized; var onPortMouseDown = props.onPortMouseDown, onPortMouseUp = props.onPortMouseUp; props.onMouseMove; props.onMouseLeave; props.onMouseUp; var onMouseUpAtLinkedPortPlaceholder = props.onMouseUpAtLinkedPortPlaceholder, onTextUpdated = props.onTextUpdated;
8925
8935
  var _c = React$1.useState(), selectedPort = _c[0], setSelectedPort = _c[1];
8926
8936
  var _d = React$1.useState((_b = (_a = props.ports) === null || _a === void 0 ? void 0 : _a.map(function (p) {
8927
8937
  return __assign(__assign({}, p), { id: p.id, ref: React$1.createRef() });
@@ -9303,7 +9313,7 @@ var Element = function (props) {
9303
9313
  movingOffsetThreshold: PORT_MOVING_OFFSET_THRESHOLD,
9304
9314
  onMove: handlePortMove
9305
9315
  });
9306
- return (React$1.createElement(ElementWrapper, { ref: elementRef, x: x, y: y, onClick: function (e) { return onClick ? onClick(id, e, elementRef.current) : true; }, onMouseMove: handleElementMouseMove, onMouseLeave: handleElementMouseLeave, onMouseUp: handleElementMouseUp },
9316
+ return (React$1.createElement(ElementWrapper, { ref: elementRef, x: x, y: y, onClick: function (e) { return onClick ? onClick(id, e, elementRef.current) : true; }, onMouseMove: handleElementMouseMove, onMouseLeave: handleElementMouseLeave, onMouseUp: handleElementMouseUp, onContextMenu: function (e) { return onContextMenu ? onContextMenu(id, e, elementRef.current) : true; } },
9307
9317
  renderedShape,
9308
9318
  potentialPortPosition && (portPlaceholderShape
9309
9319
  ? React$1.createElement("svg", { x: potentialPortPosition.x, y: potentialPortPosition.y }, portPlaceholderShape)
@@ -10033,16 +10043,23 @@ var Paper = function (props) {
10033
10043
  });
10034
10044
  });
10035
10045
  };
10046
+ var handleElementClicked = function (id, e, ref, element) {
10047
+ e.stopPropagation();
10048
+ setSelectedElementSVG(ref);
10049
+ setSelectedElement(elements.find(function (e) { return e.id === id; }));
10050
+ setMouseDownedOnPaper(false);
10051
+ paperEventEmitter.emitElementSelected(element);
10052
+ };
10036
10053
  var renderElementInTree = function (element) {
10037
10054
  var _a, _b;
10038
10055
  //use the defined react element or the default Element component
10039
10056
  var ReactElement = element.reactElement || Element;
10040
10057
  return (React$1.createElement("g", { key: element.id }, React$1.createElement(ReactElement, { key: "element-".concat(element.id), id: element.id, height: element.size.height, width: element.size.width, x: (_a = element.relativePosition) === null || _a === void 0 ? void 0 : _a.x, y: (_b = element.relativePosition) === null || _b === void 0 ? void 0 : _b.y, onClick: function (id, e, ref) {
10041
- e.stopPropagation();
10042
- setSelectedElementSVG(ref);
10043
- setSelectedElement(element);
10044
- setMouseDownedOnPaper(false);
10045
- paperEventEmitter.emitElementSelected(element);
10058
+ handleElementClicked(id, e, ref, element);
10059
+ }, onContextMenu: function (id, e, ref) {
10060
+ var _a;
10061
+ handleElementClicked(id, e, ref, element);
10062
+ (_a = props.onElementContextMenu) === null || _a === void 0 ? void 0 : _a.call(props, element, e);
10046
10063
  }, 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,
10047
10064
  // portPlaceholderShape={(<Circle x={0} y={0} width={10} height={10} fill='red' positioningAnchor={PositioningAnchor.Center} />)}
10048
10065
  onMouseUpAtLinkedPortPlaceholder: function (elementLink, position) { return handleMouseUpAtLinkedPortPlaceholder(elementLink, position, element); }, onTextUpdated: function (textId, newContent) { return handleElementTextChange(element, textId, newContent); }, textsPlaceHolderClassName: element.textsPlaceHolderClassName, textsPlaceHolderFlexStyle: element.textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition: element.textsPlaceHolderFlexboxPosition }, element.childrenElements && element.childrenElements.map(renderElementInTree))));
@@ -10077,7 +10094,7 @@ var Paper = function (props) {
10077
10094
  function Editor(_a) {
10078
10095
  var editorContext = _a.editorContext;
10079
10096
  return (React$1.createElement(React$1.Fragment, null,
10080
- React$1.createElement(Paper, { size: { width: 3000, height: 3000 }, elements: editorContext.elements, links: editorContext.links, texts: editorContext.texts, onPaperClicked: editorContext.onPaperClicked, onPortMoved: editorContext.onPortMoved, onElementMoved: editorContext.onElementMoved, onElementResized: editorContext.onElementResized, onLinkValidation: editorContext.validateLink, onCreatingLink: editorContext.onCreatingLink, onCreatingPortByLinking: editorContext.onCreatingPortByLinking })));
10097
+ React$1.createElement(Paper, { size: { width: 3000, height: 3000 }, elements: editorContext.elements, links: editorContext.links, texts: editorContext.texts, onPaperClicked: editorContext.onPaperClicked, onPortMoved: editorContext.onPortMoved, onElementContextMenu: editorContext.onElementContextMenu, onElementMoved: editorContext.onElementMoved, onElementResized: editorContext.onElementResized, onLinkValidation: editorContext.validateLink, onCreatingLink: editorContext.onCreatingLink, onCreatingPortByLinking: editorContext.onCreatingPortByLinking })));
10081
10098
  }
10082
10099
 
10083
10100
  exports.CircleRC = Circle;
@@ -4,6 +4,7 @@ interface IElementWrapper {
4
4
  x?: number;
5
5
  y?: number;
6
6
  onClick?: (e: React.MouseEvent<SVGElement>) => void;
7
+ onContextMenu?: (e: React.MouseEvent<SVGElement>) => void;
7
8
  children: React.ReactNode;
8
9
  portPlaceholders?: SVGElement[];
9
10
  ports?: IPort[];
@@ -15,6 +15,7 @@ interface PaperProps {
15
15
  texts: IPaperText[];
16
16
  onPaperClicked?: () => void;
17
17
  onPortMoved?: (position: IPosition, port: IPort, element: IElement) => void;
18
+ onElementContextMenu?: (element: IElement, mouseEvent: React.MouseEvent<SVGElement>) => void;
18
19
  onElementMoved?: (position: IPosition, element: IElement, index: number) => void;
19
20
  onElementResized?: (size: ISize, element: IElement, index: number) => void;
20
21
  onLinkValidation?: (sourcePort: IPort, sourceElement: IElement, targetPort: IPort, targetElement: IElement) => boolean;
@@ -22,6 +22,7 @@ interface IElementProps {
22
22
  portDirection?: SubObjectDirection;
23
23
  defaultPortSize?: number;
24
24
  onClick?: (elementId: string, e: React.MouseEvent<SVGElement>, ref: SVGSVGElement | null) => void;
25
+ onContextMenu?: (elementId: string, e: React.MouseEvent<SVGElement>, ref: SVGSVGElement | null) => void;
25
26
  container: Element;
26
27
  onResized?: onElementResizedHandler;
27
28
  onMoved?: onElementMovedHandler;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import IElement from "../IElement";
2
3
  import IElementLink from "../IElementLink";
3
4
  import { IPaperText } from "../IText";
@@ -10,6 +11,7 @@ export declare class EditorContext {
10
11
  private _texts;
11
12
  onPaperClicked?: () => void;
12
13
  onPortMoved?: (position: IPosition, port: IPort, element: IElement) => void;
14
+ onElementContextMenu?: (element: IElement, mouseEvent: React.MouseEvent<SVGElement>) => void;
13
15
  onElementMoved?: (position: IPosition, element: IElement, index: number) => void;
14
16
  onElementResized?: (size: ISize, element: IElement, index: number) => void;
15
17
  validateLink?: (sourcePort: IPort, sourceElement: IElement, targetPort: IPort, targetElement: IElement) => boolean;
package/dist/esm/index.js CHANGED
@@ -7643,11 +7643,21 @@ var Ruler = function (_a) {
7643
7643
  };
7644
7644
 
7645
7645
  var ElementWrapper = forwardRef(function (_a, ref) {
7646
- var x = _a.x, y = _a.y, children = _a.children; _a.portPlaceholders; _a.ports; var onClick = _a.onClick, onMouseMove = _a.onMouseMove, onMouseLeave = _a.onMouseLeave, onMouseUp = _a.onMouseUp;
7646
+ var x = _a.x, y = _a.y, children = _a.children; _a.portPlaceholders; _a.ports; var onClick = _a.onClick, onContextMenu = _a.onContextMenu, onMouseMove = _a.onMouseMove, onMouseLeave = _a.onMouseLeave, onMouseUp = _a.onMouseUp;
7647
7647
  var handleMouseDown = function (ev) {
7648
7648
  ev.stopPropagation();
7649
7649
  };
7650
- return (React$1.createElement("svg", { x: x, y: y, onClick: onClick, onMouseDown: handleMouseDown, ref: ref, style: { overflow: "visible" }, onMouseMove: onMouseMove, onMouseLeave: onMouseLeave, onMouseUp: onMouseUp }, children));
7650
+ var handleClick = function (ev) {
7651
+ if (ev.type === 'click') {
7652
+ if (onClick)
7653
+ onClick(ev);
7654
+ }
7655
+ else if (ev.type === 'contextmenu') {
7656
+ if (onContextMenu)
7657
+ onContextMenu(ev);
7658
+ }
7659
+ };
7660
+ return (React$1.createElement("svg", { x: x, y: y, onClick: handleClick, onContextMenu: handleClick, onMouseDown: handleMouseDown, ref: ref, style: { overflow: "visible" }, onMouseMove: onMouseMove, onMouseLeave: onMouseLeave, onMouseUp: onMouseUp }, children));
7651
7661
  });
7652
7662
 
7653
7663
  // Calculate the position of the 4 vertices of a rectangle relative to its parent svg
@@ -8917,7 +8927,7 @@ var Flexbox$1 = /*@__PURE__*/getDefaultExportFromCjs(bundleExports);
8917
8927
 
8918
8928
  var Element = function (props) {
8919
8929
  var _a, _b;
8920
- var id = props.id, x = props.x, y = props.y, width = props.width, height = props.height, portPlaceholderShape = props.portPlaceholderShape, children = props.children, container = props.container, textsPlaceHolderFlexStyle = props.textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition = props.textsPlaceHolderFlexboxPosition, textsPlaceHolderClassName = props.textsPlaceHolderClassName, texts = props.texts, portSlideRailSVGClassName = props.portSlideRailSVGClassName, portMoveableAreas = props.portMoveableAreas, portDirection = props.portDirection, defaultPortSize = props.defaultPortSize, onClick = props.onClick, renderShape = props.renderShape; props.onMoved; var onPortMoved = props.onPortMoved; props.onResized; var onPortMouseDown = props.onPortMouseDown, onPortMouseUp = props.onPortMouseUp; props.onMouseMove; props.onMouseLeave; props.onMouseUp; var onMouseUpAtLinkedPortPlaceholder = props.onMouseUpAtLinkedPortPlaceholder, onTextUpdated = props.onTextUpdated;
8930
+ var id = props.id, x = props.x, y = props.y, width = props.width, height = props.height, portPlaceholderShape = props.portPlaceholderShape, children = props.children, container = props.container, textsPlaceHolderFlexStyle = props.textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition = props.textsPlaceHolderFlexboxPosition, textsPlaceHolderClassName = props.textsPlaceHolderClassName, texts = props.texts, portSlideRailSVGClassName = props.portSlideRailSVGClassName, portMoveableAreas = props.portMoveableAreas, portDirection = props.portDirection, defaultPortSize = props.defaultPortSize, onClick = props.onClick, onContextMenu = props.onContextMenu, renderShape = props.renderShape; props.onMoved; var onPortMoved = props.onPortMoved; props.onResized; var onPortMouseDown = props.onPortMouseDown, onPortMouseUp = props.onPortMouseUp; props.onMouseMove; props.onMouseLeave; props.onMouseUp; var onMouseUpAtLinkedPortPlaceholder = props.onMouseUpAtLinkedPortPlaceholder, onTextUpdated = props.onTextUpdated;
8921
8931
  var _c = useState(), selectedPort = _c[0], setSelectedPort = _c[1];
8922
8932
  var _d = useState((_b = (_a = props.ports) === null || _a === void 0 ? void 0 : _a.map(function (p) {
8923
8933
  return __assign(__assign({}, p), { id: p.id, ref: React$1.createRef() });
@@ -9299,7 +9309,7 @@ var Element = function (props) {
9299
9309
  movingOffsetThreshold: PORT_MOVING_OFFSET_THRESHOLD,
9300
9310
  onMove: handlePortMove
9301
9311
  });
9302
- return (React$1.createElement(ElementWrapper, { ref: elementRef, x: x, y: y, onClick: function (e) { return onClick ? onClick(id, e, elementRef.current) : true; }, onMouseMove: handleElementMouseMove, onMouseLeave: handleElementMouseLeave, onMouseUp: handleElementMouseUp },
9312
+ return (React$1.createElement(ElementWrapper, { ref: elementRef, x: x, y: y, onClick: function (e) { return onClick ? onClick(id, e, elementRef.current) : true; }, onMouseMove: handleElementMouseMove, onMouseLeave: handleElementMouseLeave, onMouseUp: handleElementMouseUp, onContextMenu: function (e) { return onContextMenu ? onContextMenu(id, e, elementRef.current) : true; } },
9303
9313
  renderedShape,
9304
9314
  potentialPortPosition && (portPlaceholderShape
9305
9315
  ? React$1.createElement("svg", { x: potentialPortPosition.x, y: potentialPortPosition.y }, portPlaceholderShape)
@@ -10029,16 +10039,23 @@ var Paper = function (props) {
10029
10039
  });
10030
10040
  });
10031
10041
  };
10042
+ var handleElementClicked = function (id, e, ref, element) {
10043
+ e.stopPropagation();
10044
+ setSelectedElementSVG(ref);
10045
+ setSelectedElement(elements.find(function (e) { return e.id === id; }));
10046
+ setMouseDownedOnPaper(false);
10047
+ paperEventEmitter.emitElementSelected(element);
10048
+ };
10032
10049
  var renderElementInTree = function (element) {
10033
10050
  var _a, _b;
10034
10051
  //use the defined react element or the default Element component
10035
10052
  var ReactElement = element.reactElement || Element;
10036
10053
  return (React$1.createElement("g", { key: element.id }, React$1.createElement(ReactElement, { key: "element-".concat(element.id), id: element.id, height: element.size.height, width: element.size.width, x: (_a = element.relativePosition) === null || _a === void 0 ? void 0 : _a.x, y: (_b = element.relativePosition) === null || _b === void 0 ? void 0 : _b.y, onClick: function (id, e, ref) {
10037
- e.stopPropagation();
10038
- setSelectedElementSVG(ref);
10039
- setSelectedElement(element);
10040
- setMouseDownedOnPaper(false);
10041
- paperEventEmitter.emitElementSelected(element);
10054
+ handleElementClicked(id, e, ref, element);
10055
+ }, onContextMenu: function (id, e, ref) {
10056
+ var _a;
10057
+ handleElementClicked(id, e, ref, element);
10058
+ (_a = props.onElementContextMenu) === null || _a === void 0 ? void 0 : _a.call(props, element, e);
10042
10059
  }, 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,
10043
10060
  // portPlaceholderShape={(<Circle x={0} y={0} width={10} height={10} fill='red' positioningAnchor={PositioningAnchor.Center} />)}
10044
10061
  onMouseUpAtLinkedPortPlaceholder: function (elementLink, position) { return handleMouseUpAtLinkedPortPlaceholder(elementLink, position, element); }, onTextUpdated: function (textId, newContent) { return handleElementTextChange(element, textId, newContent); }, textsPlaceHolderClassName: element.textsPlaceHolderClassName, textsPlaceHolderFlexStyle: element.textsPlaceHolderFlexStyle, textsPlaceHolderFlexboxPosition: element.textsPlaceHolderFlexboxPosition }, element.childrenElements && element.childrenElements.map(renderElementInTree))));
@@ -10073,7 +10090,7 @@ var Paper = function (props) {
10073
10090
  function Editor(_a) {
10074
10091
  var editorContext = _a.editorContext;
10075
10092
  return (React$1.createElement(React$1.Fragment, null,
10076
- React$1.createElement(Paper, { size: { width: 3000, height: 3000 }, elements: editorContext.elements, links: editorContext.links, texts: editorContext.texts, onPaperClicked: editorContext.onPaperClicked, onPortMoved: editorContext.onPortMoved, onElementMoved: editorContext.onElementMoved, onElementResized: editorContext.onElementResized, onLinkValidation: editorContext.validateLink, onCreatingLink: editorContext.onCreatingLink, onCreatingPortByLinking: editorContext.onCreatingPortByLinking })));
10093
+ React$1.createElement(Paper, { size: { width: 3000, height: 3000 }, elements: editorContext.elements, links: editorContext.links, texts: editorContext.texts, onPaperClicked: editorContext.onPaperClicked, onPortMoved: editorContext.onPortMoved, onElementContextMenu: editorContext.onElementContextMenu, onElementMoved: editorContext.onElementMoved, onElementResized: editorContext.onElementResized, onLinkValidation: editorContext.validateLink, onCreatingLink: editorContext.onCreatingLink, onCreatingPortByLinking: editorContext.onCreatingPortByLinking })));
10077
10094
  }
10078
10095
 
10079
10096
  export { Circle as CircleRC, Crescent as CrescentRC, CustomPortFromJSXElement, CustomPortFromShape, CustomShape as CustomShapeRC, EditorContext, Element$1 as Element, ElementLink$1 as ElementLink, ElementLink as ElementLinkRC, Port$1 as Port, Port as PortRC, PositioningAnchor, Rectangle as RectangleRC, RectangularFrame as RectangularFrameRC, ResizingDirection, ShapeWrapper as ShapeWrapperRC, SubObjectDirection, Text$2 as Text, TextAlign, Text$1 as TextRC, Editor as default };