New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@projectstorm/react-diagrams-core

Package Overview
Dependencies
Maintainers
1
Versions
32
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@projectstorm/react-diagrams-core - npm Package Compare versions

Comparing version 6.7.4 to 7.0.0

2

dist/@types/DiagramEngine.d.ts

@@ -7,3 +7,3 @@ import { NodeModel } from './entities/node/NodeModel';

import { MouseEvent } from 'react';
import { AbstractModelFactory, AbstractReactFactory, BaseModel, CanvasEngine, FactoryBank, CanvasEngineListener, CanvasEngineOptions } from '@projectstorm/react-canvas-core';
import { AbstractModelFactory, AbstractReactFactory, BaseModel, CanvasEngine, CanvasEngineListener, CanvasEngineOptions, FactoryBank } from '@projectstorm/react-canvas-core';
import { DiagramModel } from './models/DiagramModel';

@@ -10,0 +10,0 @@ /**

@@ -0,1 +1,2 @@

/// <reference types="react" />
import { AbstractReactFactory, GenerateModelEvent, GenerateWidgetEvent } from '@projectstorm/react-canvas-core';

@@ -2,0 +3,0 @@ import { DiagramEngine } from '../../DiagramEngine';

@@ -0,1 +1,2 @@

/// <reference types="react" />
import { AbstractReactFactory, GenerateModelEvent, GenerateWidgetEvent } from '@projectstorm/react-canvas-core';

@@ -2,0 +3,0 @@ import { DiagramEngine } from '../../DiagramEngine';

@@ -1,11 +0,8 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.DiagramEngine = void 0;
const NodeModel_1 = require("./entities/node/NodeModel");
const geometry_1 = require("@projectstorm/geometry");
const react_canvas_core_1 = require("@projectstorm/react-canvas-core");
import { NodeModel } from './entities/node/NodeModel';
import { boundingBoxFromPolygons, Rectangle } from '@projectstorm/geometry';
import { CanvasEngine, FactoryBank, Toolkit } from '@projectstorm/react-canvas-core';
/**
* Passed as a parameter to the DiagramWidget
*/
class DiagramEngine extends react_canvas_core_1.CanvasEngine {
export class DiagramEngine extends CanvasEngine {
constructor(options = {}) {

@@ -15,6 +12,6 @@ super(options);

// create banks for the different factory types
this.nodeFactories = new react_canvas_core_1.FactoryBank();
this.linkFactories = new react_canvas_core_1.FactoryBank();
this.portFactories = new react_canvas_core_1.FactoryBank();
this.labelFactories = new react_canvas_core_1.FactoryBank();
this.nodeFactories = new FactoryBank();
this.linkFactories = new FactoryBank();
this.portFactories = new FactoryBank();
this.labelFactories = new FactoryBank();
const setup = (factory) => {

@@ -42,9 +39,9 @@ factory.registerListener({

//is it a port
var element = react_canvas_core_1.Toolkit.closest(target, '.port[data-name]');
var element = Toolkit.closest(target, '.port[data-name]');
if (element) {
var nodeElement = react_canvas_core_1.Toolkit.closest(target, '.node[data-nodeid]');
var nodeElement = Toolkit.closest(target, '.node[data-nodeid]');
return diagramModel.getNode(nodeElement.getAttribute('data-nodeid')).getPort(element.getAttribute('data-name'));
}
//look for a point
element = react_canvas_core_1.Toolkit.closest(target, '.point[data-id]');
element = Toolkit.closest(target, '.point[data-id]');
if (element) {

@@ -54,3 +51,3 @@ return diagramModel.getLink(element.getAttribute('data-linkid')).getPointModel(element.getAttribute('data-id'));

//look for a link
element = react_canvas_core_1.Toolkit.closest(target, '[data-linkid]');
element = Toolkit.closest(target, '[data-linkid]');
if (element) {

@@ -60,3 +57,3 @@ return diagramModel.getLink(element.getAttribute('data-linkid'));

//look for a node
element = react_canvas_core_1.Toolkit.closest(target, '.node[data-nodeid]');
element = Toolkit.closest(target, '.node[data-nodeid]');
if (element) {

@@ -147,3 +144,3 @@ return diagramModel.getNode(element.getAttribute('data-nodeid'));

const zoom = this.model.getZoomLevel() / 100.0;
return new geometry_1.Rectangle(point.x, point.y, sourceRect.width / zoom, sourceRect.height / zoom);
return Rectangle.fromPointAndSize(point, sourceRect.width / zoom, sourceRect.height / zoom);
}

@@ -171,5 +168,5 @@ /**

if (nodes.length === 0) {
return new geometry_1.Rectangle(0, 0, 0, 0);
return new Rectangle();
}
return geometry_1.Polygon.boundingBoxFromPolygons(nodes.map((node) => node.getBoundingBox()));
return new Rectangle(boundingBoxFromPolygons(nodes.map((node) => node.getBoundingBox())));
}

@@ -180,3 +177,3 @@ }

.getSelectedEntities()
.filter((entity) => entity instanceof NodeModel_1.NodeModel);
.filter((entity) => entity instanceof NodeModel);
this.zoomToFitNodes({

@@ -242,3 +239,2 @@ margin: options.margin,

}
exports.DiagramEngine = DiagramEngine;
//# sourceMappingURL=DiagramEngine.js.map

@@ -1,6 +0,3 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.LabelModel = void 0;
const react_canvas_core_1 = require("@projectstorm/react-canvas-core");
class LabelModel extends react_canvas_core_1.BaseModel {
import { BaseModel } from '@projectstorm/react-canvas-core';
export class LabelModel extends BaseModel {
constructor(options) {

@@ -18,3 +15,2 @@ super(Object.assign(Object.assign({}, options), { offsetX: options.offsetX || 0, offsetY: options.offsetY || 0 }));

}
exports.LabelModel = LabelModel;
//# sourceMappingURL=LabelModel.js.map

@@ -1,13 +0,10 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.LabelWidget = void 0;
const React = require("react");
const styled_1 = require("@emotion/styled");
import * as React from 'react';
import styled from '@emotion/styled';
var S;
(function (S) {
S.Label = styled_1.default.div `
S.Label = styled.div `
display: inline-block;
position: absolute;
`;
S.Foreign = styled_1.default.foreignObject `
S.Foreign = styled.foreignObject `
pointer-events: none;

@@ -17,3 +14,3 @@ overflow: visible;

})(S || (S = {}));
class LabelWidget extends React.Component {
export class LabelWidget extends React.Component {
constructor(props) {

@@ -73,3 +70,2 @@ super(props);

}
exports.LabelWidget = LabelWidget;
//# sourceMappingURL=LabelWidget.js.map

@@ -1,9 +0,6 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.LinkLayerFactory = void 0;
const React = require("react");
const react_canvas_core_1 = require("@projectstorm/react-canvas-core");
const LinkLayerModel_1 = require("./LinkLayerModel");
const LinkLayerWidget_1 = require("./LinkLayerWidget");
class LinkLayerFactory extends react_canvas_core_1.AbstractReactFactory {
import * as React from 'react';
import { AbstractReactFactory } from '@projectstorm/react-canvas-core';
import { LinkLayerModel } from './LinkLayerModel';
import { LinkLayerWidget } from './LinkLayerWidget';
export class LinkLayerFactory extends AbstractReactFactory {
constructor() {

@@ -13,9 +10,8 @@ super('diagram-links');

generateModel(event) {
return new LinkLayerModel_1.LinkLayerModel();
return new LinkLayerModel();
}
generateReactWidget(event) {
return React.createElement(LinkLayerWidget_1.LinkLayerWidget, { layer: event.model, engine: this.engine });
return React.createElement(LinkLayerWidget, { layer: event.model, engine: this.engine });
}
}
exports.LinkLayerFactory = LinkLayerFactory;
//# sourceMappingURL=LinkLayerFactory.js.map

@@ -1,7 +0,4 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.LinkLayerModel = void 0;
const react_canvas_core_1 = require("@projectstorm/react-canvas-core");
const LinkModel_1 = require("../link/LinkModel");
class LinkLayerModel extends react_canvas_core_1.LayerModel {
import { LayerModel } from '@projectstorm/react-canvas-core';
import { LinkModel } from '../link/LinkModel';
export class LinkLayerModel extends LayerModel {
constructor() {

@@ -15,3 +12,3 @@ super({

addModel(model) {
if (!(model instanceof LinkModel_1.LinkModel)) {
if (!(model instanceof LinkModel)) {
throw new Error('Can only add links to this layer');

@@ -33,3 +30,2 @@ }

}
exports.LinkLayerModel = LinkLayerModel;
//# sourceMappingURL=LinkLayerModel.js.map

@@ -1,13 +0,10 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.LinkLayerWidget = void 0;
const React = require("react");
const styled_1 = require("@emotion/styled");
const _ = require("lodash");
const LinkWidget_1 = require("../link/LinkWidget");
import * as React from 'react';
import styled from '@emotion/styled';
import * as _ from 'lodash';
import { LinkWidget } from '../link/LinkWidget';
var S;
(function (S) {
S.Container = styled_1.default.div ``;
S.Container = styled.div ``;
})(S || (S = {}));
class LinkLayerWidget extends React.Component {
export class LinkLayerWidget extends React.Component {
render() {

@@ -17,7 +14,6 @@ return (React.createElement(React.Fragment, null,

_.map(this.props.layer.getLinks(), (link) => {
return React.createElement(LinkWidget_1.LinkWidget, { key: link.getID(), link: link, diagramEngine: this.props.engine });
return React.createElement(LinkWidget, { key: link.getID(), link: link, diagramEngine: this.props.engine });
})));
}
}
exports.LinkLayerWidget = LinkLayerWidget;
//# sourceMappingURL=LinkLayerWidget.js.map

@@ -1,16 +0,13 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.LinkModel = void 0;
const PointModel_1 = require("./PointModel");
const _ = require("lodash");
const geometry_1 = require("@projectstorm/geometry");
const react_canvas_core_1 = require("@projectstorm/react-canvas-core");
class LinkModel extends react_canvas_core_1.BaseModel {
import { PointModel } from './PointModel';
import * as _ from 'lodash';
import { boundingBoxFromPoints, Point, Rectangle } from '@projectstorm/geometry';
import { BaseModel } from '@projectstorm/react-canvas-core';
export class LinkModel extends BaseModel {
constructor(options) {
super(options);
this.points = [
new PointModel_1.PointModel({
new PointModel({
link: this
}),
new PointModel_1.PointModel({
new PointModel({
link: this

@@ -25,5 +22,5 @@ })

getBoundingBox() {
return geometry_1.Polygon.boundingBoxFromPoints(_.map(this.points, (point) => {
return new Rectangle(boundingBoxFromPoints(_.map(this.points, (point) => {
return point.getPosition();
}));
})));
}

@@ -47,5 +44,5 @@ getSelectionEntities() {

this.points = _.map(event.data.points || [], (point) => {
var p = new PointModel_1.PointModel({
var p = new PointModel({
link: this,
position: new geometry_1.Point(point.x, point.y)
position: new Point(point.x, point.y)
});

@@ -229,9 +226,8 @@ p.deserialize(Object.assign(Object.assign({}, event), { data: point }));

generatePoint(x = 0, y = 0) {
return new PointModel_1.PointModel({
return new PointModel({
link: this,
position: new geometry_1.Point(x, y)
position: new Point(x, y)
});
}
}
exports.LinkModel = LinkModel;
//# sourceMappingURL=LinkModel.js.map

@@ -1,9 +0,6 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.LinkWidget = void 0;
const React = require("react");
const _ = require("lodash");
const LabelWidget_1 = require("../label/LabelWidget");
const react_canvas_core_1 = require("@projectstorm/react-canvas-core");
class LinkWidget extends React.Component {
import * as React from 'react';
import * as _ from 'lodash';
import { LabelWidget } from '../label/LabelWidget';
import { PeformanceWidget } from '@projectstorm/react-canvas-core';
export class LinkWidget extends React.Component {
constructor(props) {

@@ -79,7 +76,7 @@ super(props);

//generate links
return (React.createElement(react_canvas_core_1.PeformanceWidget, { model: this.props.link, serialized: this.props.link.serialize() }, () => {
return (React.createElement(PeformanceWidget, { model: this.props.link, serialized: this.props.link.serialize() }, () => {
return (React.createElement("g", { "data-linkid": this.props.link.getID() },
this.props.diagramEngine.generateWidgetForLink(link),
_.map(this.props.link.getLabels(), (labelModel, index) => {
return (React.createElement(LabelWidget_1.LabelWidget, { key: labelModel.getID(), engine: this.props.diagramEngine, label: labelModel, index: index }));
return (React.createElement(LabelWidget, { key: labelModel.getID(), engine: this.props.diagramEngine, label: labelModel, index: index }));
})));

@@ -89,3 +86,2 @@ }));

}
exports.LinkWidget = LinkWidget;
//# sourceMappingURL=LinkWidget.js.map

@@ -1,6 +0,3 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.PointModel = void 0;
const react_canvas_core_1 = require("@projectstorm/react-canvas-core");
class PointModel extends react_canvas_core_1.BasePositionModel {
import { BasePositionModel } from '@projectstorm/react-canvas-core';
export class PointModel extends BasePositionModel {
constructor(options) {

@@ -27,3 +24,2 @@ super(Object.assign(Object.assign({}, options), { type: 'point' }));

}
exports.PointModel = PointModel;
//# sourceMappingURL=PointModel.js.map

@@ -1,9 +0,6 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.NodeLayerFactory = void 0;
const React = require("react");
const react_canvas_core_1 = require("@projectstorm/react-canvas-core");
const NodeLayerModel_1 = require("./NodeLayerModel");
const NodeLayerWidget_1 = require("./NodeLayerWidget");
class NodeLayerFactory extends react_canvas_core_1.AbstractReactFactory {
import * as React from 'react';
import { AbstractReactFactory } from '@projectstorm/react-canvas-core';
import { NodeLayerModel } from './NodeLayerModel';
import { NodeLayerWidget } from './NodeLayerWidget';
export class NodeLayerFactory extends AbstractReactFactory {
constructor() {

@@ -13,9 +10,8 @@ super('diagram-nodes');

generateModel(event) {
return new NodeLayerModel_1.NodeLayerModel();
return new NodeLayerModel();
}
generateReactWidget(event) {
return React.createElement(NodeLayerWidget_1.NodeLayerWidget, { layer: event.model, engine: this.engine });
return React.createElement(NodeLayerWidget, { layer: event.model, engine: this.engine });
}
}
exports.NodeLayerFactory = NodeLayerFactory;
//# sourceMappingURL=NodeLayerFactory.js.map

@@ -1,7 +0,4 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.NodeLayerModel = void 0;
const react_canvas_core_1 = require("@projectstorm/react-canvas-core");
const NodeModel_1 = require("../node/NodeModel");
class NodeLayerModel extends react_canvas_core_1.LayerModel {
import { LayerModel } from '@projectstorm/react-canvas-core';
import { NodeModel } from '../node/NodeModel';
export class NodeLayerModel extends LayerModel {
constructor() {

@@ -15,3 +12,3 @@ super({

addModel(model) {
if (!(model instanceof NodeModel_1.NodeModel)) {
if (!(model instanceof NodeModel)) {
throw new Error('Can only add nodes to this layer');

@@ -33,3 +30,2 @@ }

}
exports.NodeLayerModel = NodeLayerModel;
//# sourceMappingURL=NodeLayerModel.js.map

@@ -1,20 +0,11 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.NodeLayerWidget = void 0;
const React = require("react");
const styled_1 = require("@emotion/styled");
const _ = require("lodash");
const NodeWidget_1 = require("../node/NodeWidget");
var S;
(function (S) {
S.Container = styled_1.default.div ``;
})(S || (S = {}));
class NodeLayerWidget extends React.Component {
import * as React from 'react';
import * as _ from 'lodash';
import { NodeWidget } from '../node/NodeWidget';
export class NodeLayerWidget extends React.Component {
render() {
return (React.createElement(React.Fragment, null, _.map(this.props.layer.getNodes(), (node) => {
return React.createElement(NodeWidget_1.NodeWidget, { key: node.getID(), diagramEngine: this.props.engine, node: node });
return React.createElement(NodeWidget, { key: node.getID(), diagramEngine: this.props.engine, node: node });
})));
}
}
exports.NodeLayerWidget = NodeLayerWidget;
//# sourceMappingURL=NodeLayerWidget.js.map

@@ -1,8 +0,5 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.NodeModel = void 0;
const _ = require("lodash");
const geometry_1 = require("@projectstorm/geometry");
const react_canvas_core_1 = require("@projectstorm/react-canvas-core");
class NodeModel extends react_canvas_core_1.BasePositionModel {
import * as _ from 'lodash';
import { Point, Rectangle } from '@projectstorm/geometry';
import { BasePositionModel } from '@projectstorm/react-canvas-core';
export class NodeModel extends BasePositionModel {
constructor(options) {

@@ -15,7 +12,7 @@ super(options);

getBoundingBox() {
return new geometry_1.Rectangle(this.getPosition(), this.width, this.height);
return Rectangle.fromPointAndSize(this.getPosition(), this.width, this.height);
}
setPosition(x, y) {
const old = this.position;
if (x instanceof geometry_1.Point) {
if (x instanceof Point) {
super.setPosition(x);

@@ -105,3 +102,2 @@ }

}
exports.NodeModel = NodeModel;
//# sourceMappingURL=NodeModel.js.map

@@ -1,12 +0,9 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.NodeWidget = void 0;
const React = require("react");
const _ = require("lodash");
const react_canvas_core_1 = require("@projectstorm/react-canvas-core");
const styled_1 = require("@emotion/styled");
const resize_observer_polyfill_1 = require("resize-observer-polyfill");
import * as React from 'react';
import * as _ from 'lodash';
import { PeformanceWidget } from '@projectstorm/react-canvas-core';
import styled from '@emotion/styled';
import ResizeObserver from 'resize-observer-polyfill';
var S;
(function (S) {
S.Node = styled_1.default.div `
S.Node = styled.div `
position: absolute;

@@ -20,3 +17,3 @@ -webkit-touch-callout: none; /* iOS Safari */

})(S || (S = {}));
class NodeWidget extends React.Component {
export class NodeWidget extends React.Component {
constructor(props) {

@@ -58,3 +55,3 @@ super(props);

// @ts-ignore
this.ob = new resize_observer_polyfill_1.default((entities) => {
this.ob = new ResizeObserver((entities) => {
const bounds = entities[0].contentRect;

@@ -69,3 +66,3 @@ this.updateSize(bounds.width, bounds.height);

render() {
return (React.createElement(react_canvas_core_1.PeformanceWidget, { model: this.props.node, serialized: this.props.node.serialize() }, () => {
return (React.createElement(PeformanceWidget, { model: this.props.node, serialized: this.props.node.serialize() }, () => {
return (React.createElement(S.Node, { className: "node", ref: this.ref, "data-nodeid": this.props.node.getID(), style: {

@@ -78,3 +75,2 @@ top: this.props.node.getY(),

}
exports.NodeWidget = NodeWidget;
//# sourceMappingURL=NodeWidget.js.map

@@ -1,8 +0,5 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.PortModel = exports.PortModelAlignment = void 0;
const _ = require("lodash");
const geometry_1 = require("@projectstorm/geometry");
const react_canvas_core_1 = require("@projectstorm/react-canvas-core");
var PortModelAlignment;
import * as _ from 'lodash';
import { Point, Rectangle } from '@projectstorm/geometry';
import { BasePositionModel } from '@projectstorm/react-canvas-core';
export var PortModelAlignment;
(function (PortModelAlignment) {

@@ -13,4 +10,4 @@ PortModelAlignment["TOP"] = "top";

PortModelAlignment["RIGHT"] = "right";
})(PortModelAlignment = exports.PortModelAlignment || (exports.PortModelAlignment = {}));
class PortModel extends react_canvas_core_1.BasePositionModel {
})(PortModelAlignment || (PortModelAlignment = {}));
export class PortModel extends BasePositionModel {
constructor(options) {

@@ -86,6 +83,6 @@ super(options);

getCenter() {
return new geometry_1.Point(this.getX() + this.width / 2, this.getY() + this.height / 2);
return new Point(this.getX() + this.width / 2, this.getY() + this.height / 2);
}
getBoundingBox() {
return new geometry_1.Rectangle(this.position, this.width, this.height);
return Rectangle.fromPointAndSize(this.position, this.width, this.height);
}

@@ -106,3 +103,2 @@ updateCoords(coords) {

}
exports.PortModel = PortModel;
//# sourceMappingURL=PortModel.js.map

@@ -1,8 +0,5 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.PortWidget = void 0;
const React = require("react");
const _ = require("lodash");
const react_canvas_core_1 = require("@projectstorm/react-canvas-core");
class PortWidget extends React.Component {
import * as React from 'react';
import * as _ from 'lodash';
import { Toolkit } from '@projectstorm/react-canvas-core';
export class PortWidget extends React.Component {
constructor(props) {

@@ -34,3 +31,3 @@ super(props);

getExtraProps() {
if (react_canvas_core_1.Toolkit.TESTING) {
if (Toolkit.TESTING) {
const links = _.keys(this.props.port.getNode().getPort(this.props.port.getName()).links).join(',');

@@ -47,3 +44,2 @@ return {

}
exports.PortWidget = PortWidget;
//# sourceMappingURL=PortWidget.js.map

@@ -1,36 +0,20 @@

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
__exportStar(require("./models/DiagramModel"), exports);
__exportStar(require("./entities/label/LabelModel"), exports);
__exportStar(require("./entities/link/LinkModel"), exports);
__exportStar(require("./entities/link/PointModel"), exports);
__exportStar(require("./entities/link/LinkWidget"), exports);
__exportStar(require("./entities/link-layer/LinkLayerModel"), exports);
__exportStar(require("./entities/link-layer/LinkLayerWidget"), exports);
__exportStar(require("./entities/link-layer/LinkLayerFactory"), exports);
__exportStar(require("./entities/node-layer/NodeLayerModel"), exports);
__exportStar(require("./entities/node-layer/NodeLayerWidget"), exports);
__exportStar(require("./entities/node-layer/NodeLayerFactory"), exports);
__exportStar(require("./entities/node/NodeModel"), exports);
__exportStar(require("./entities/node/NodeWidget"), exports);
__exportStar(require("./entities/port/PortModel"), exports);
__exportStar(require("./entities/port/PortWidget"), exports);
__exportStar(require("./states/DefaultDiagramState"), exports);
__exportStar(require("./states/DragDiagramItemsState"), exports);
__exportStar(require("./states/DragNewLinkState"), exports);
__exportStar(require("./DiagramEngine"), exports);
export * from './models/DiagramModel';
export * from './entities/label/LabelModel';
export * from './entities/link/LinkModel';
export * from './entities/link/PointModel';
export * from './entities/link/LinkWidget';
export * from './entities/link-layer/LinkLayerModel';
export * from './entities/link-layer/LinkLayerWidget';
export * from './entities/link-layer/LinkLayerFactory';
export * from './entities/node-layer/NodeLayerModel';
export * from './entities/node-layer/NodeLayerWidget';
export * from './entities/node-layer/NodeLayerFactory';
export * from './entities/node/NodeModel';
export * from './entities/node/NodeWidget';
export * from './entities/port/PortModel';
export * from './entities/port/PortWidget';
export * from './states/DefaultDiagramState';
export * from './states/DragDiagramItemsState';
export * from './states/DragNewLinkState';
export * from './DiagramEngine';
//# sourceMappingURL=index.js.map
/*! For license information please see index.umd.js.LICENSE.txt */
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["projectstorm/react-canvas-core"]=t():e["projectstorm/react-canvas-core"]=t()}(self,(()=>(()=>{"use strict";var e={634:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DiagramEngine=void 0;const o=i(80),s=i(270),r=i(702);class n extends r.CanvasEngine{constructor(e={}){super(e),this.maxNumberPointsPerLink=1e3,this.nodeFactories=new r.FactoryBank,this.linkFactories=new r.FactoryBank,this.portFactories=new r.FactoryBank,this.labelFactories=new r.FactoryBank;const t=e=>{e.registerListener({factoryAdded:e=>{e.factory.setDiagramEngine(this)},factoryRemoved:e=>{e.factory.setDiagramEngine(null)}})};t(this.nodeFactories),t(this.linkFactories),t(this.portFactories),t(this.labelFactories)}getMouseElement(e){var t=e.target,i=this.model,o=r.Toolkit.closest(t,".port[data-name]");if(o){var s=r.Toolkit.closest(t,".node[data-nodeid]");return i.getNode(s.getAttribute("data-nodeid")).getPort(o.getAttribute("data-name"))}return(o=r.Toolkit.closest(t,".point[data-id]"))?i.getLink(o.getAttribute("data-linkid")).getPointModel(o.getAttribute("data-id")):(o=r.Toolkit.closest(t,"[data-linkid]"))?i.getLink(o.getAttribute("data-linkid")):(o=r.Toolkit.closest(t,".node[data-nodeid]"))?i.getNode(o.getAttribute("data-nodeid")):null}getNodeFactories(){return this.nodeFactories}getLinkFactories(){return this.linkFactories}getLabelFactories(){return this.labelFactories}getPortFactories(){return this.portFactories}getFactoryForNode(e){return"string"==typeof e?this.nodeFactories.getFactory(e):this.nodeFactories.getFactory(e.getType())}getFactoryForLink(e){return"string"==typeof e?this.linkFactories.getFactory(e):this.linkFactories.getFactory(e.getType())}getFactoryForLabel(e){return"string"==typeof e?this.labelFactories.getFactory(e):this.labelFactories.getFactory(e.getType())}getFactoryForPort(e){return"string"==typeof e?this.portFactories.getFactory(e):this.portFactories.getFactory(e.getType())}generateWidgetForLink(e){return this.getFactoryForLink(e).generateReactWidget({model:e})}generateWidgetForNode(e){return this.getFactoryForNode(e).generateReactWidget({model:e})}getNodeElement(e){const t=this.canvas.querySelector(`.node[data-nodeid="${e.getID()}"]`);if(null===t)throw new Error("Cannot find Node element with nodeID: ["+e.getID()+"]");return t}getNodePortElement(e){var t=this.canvas.querySelector(`.port[data-name="${e.getName()}"][data-nodeid="${e.getParent().getID()}"]`);if(null===t)throw new Error("Cannot find Node Port element with nodeID: ["+e.getParent().getID()+"] and name: ["+e.getName()+"]");return t}getPortCenter(e){return this.getPortCoords(e).getOrigin()}getPortCoords(e,t){if(!this.canvas)throw new Error("Canvas needs to be set first");t||(t=this.getNodePortElement(e));const i=t.getBoundingClientRect(),o=this.getRelativeMousePoint({clientX:i.left,clientY:i.top}),r=this.model.getZoomLevel()/100;return new s.Rectangle(o.x,o.y,i.width/r,i.height/r)}getNodeDimensions(e){if(!this.canvas)return{width:0,height:0};const t=this.getNodeElement(e).getBoundingClientRect();return{width:t.width,height:t.height}}getBoundingNodesRect(e){if(e)return 0===e.length?new s.Rectangle(0,0,0,0):s.Polygon.boundingBoxFromPolygons(e.map((e=>e.getBoundingBox())))}zoomToFitSelectedNodes(e){const t=this.model.getSelectedEntities().filter((e=>e instanceof o.NodeModel));this.zoomToFitNodes({margin:e.margin,maxZoom:e.maxZoom,nodes:t.length>0?t:null})}zoomToFitNodes(e){let t=e||0,i=[],o=null;e&&"object"==typeof e&&(t=e.margin||0,i=e.nodes||[],o=e.maxZoom||null),0===i.length&&(i=this.model.getNodes());const s=this.getBoundingNodesRect(i);if(s){let e=this.canvas.getBoundingClientRect();const i=(t=0)=>{const i=this.canvas.clientWidth/(s.getWidth()+2*t),r=this.canvas.clientHeight/(s.getHeight()+2*t);let n=i<r?i:r;return o&&n>o&&(n=o),{zoom:n,x:e.width/2-((s.getWidth()+2*t)/2+s.getTopLeft().x)*n+t,y:e.height/2-((s.getHeight()+2*t)/2+s.getTopLeft().y)*n+t}};let r=i(0);t&&(r.x<t||r.y<t)&&(r=i(t)),this.model.setZoomLevel(100*r.zoom),this.model.setOffset(r.x,r.y),this.repaintCanvas()}}getMaxNumberPointsPerLink(){return this.maxNumberPointsPerLink}setMaxNumberPointsPerLink(e){this.maxNumberPointsPerLink=e}}t.DiagramEngine=n},848:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.LabelModel=void 0;const o=i(702);class s extends o.BaseModel{constructor(e){super(Object.assign(Object.assign({},e),{offsetX:e.offsetX||0,offsetY:e.offsetY||0}))}deserialize(e){super.deserialize(e),this.options.offsetX=e.data.offsetX,this.options.offsetY=e.data.offsetY}serialize(){return Object.assign(Object.assign({},super.serialize()),{offsetX:this.options.offsetX,offsetY:this.options.offsetY})}}t.LabelModel=s},868:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.LabelWidget=void 0;const o=i(689),s=i(480);var r;!function(e){e.Label=s.default.div`
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports["projectstorm/react-canvas-core"]=e():t["projectstorm/react-canvas-core"]=e()}(self,(()=>(()=>{"use strict";var t={n:e=>{var i=e&&e.__esModule?()=>e.default:()=>e;return t.d(i,{a:i}),i},d:(e,i)=>{for(var s in i)t.o(i,s)&&!t.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:i[s]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{DefaultDiagramState:()=>C,DiagramEngine:()=>I,DiagramModel:()=>g,DragDiagramItemsState:()=>T,DragNewLinkState:()=>D,LabelModel:()=>d,LinkLayerFactory:()=>y,LinkLayerModel:()=>l,LinkLayerWidget:()=>k,LinkModel:()=>n,LinkWidget:()=>L,NodeLayerFactory:()=>N,NodeLayerModel:()=>h,NodeLayerWidget:()=>w,NodeModel:()=>a,NodeWidget:()=>E,PointModel:()=>r,PortModel:()=>x,PortModelAlignment:()=>F,PortWidget:()=>S});const i=require("lodash"),s=require("@projectstorm/react-canvas-core");class r extends s.BasePositionModel{constructor(t){super(Object.assign(Object.assign({},t),{type:"point"})),this.parent=t.link}isConnectedToPort(){return null!==this.parent.getPortForPoint(this)}getLink(){return this.getParent()}remove(){this.parent&&this.parent.removePoint(this),super.remove()}isLocked(){return super.isLocked()||this.getParent().isLocked()}}const o=require("@projectstorm/geometry");class n extends s.BaseModel{constructor(t){super(t),this.points=[new r({link:this}),new r({link:this})],this.sourcePort=null,this.targetPort=null,this.renderedPaths=[],this.labels=[]}getBoundingBox(){return new o.Rectangle((0,o.boundingBoxFromPoints)(i.map(this.points,(t=>t.getPosition()))))}getSelectionEntities(){return this.getTargetPort()&&this.getSourcePort()?super.getSelectionEntities().concat(i.slice(this.points,1,this.points.length-1)):this.getSourcePort()?this.getTargetPort()?super.getSelectionEntities().concat(this.points):super.getSelectionEntities().concat(i.slice(this.points,1,this.points.length)):super.getSelectionEntities().concat(i.slice(this.points,0,this.points.length-1))}deserialize(t){super.deserialize(t),this.points=i.map(t.data.points||[],(e=>{var i=new r({link:this,position:new o.Point(e.x,e.y)});return i.deserialize(Object.assign(Object.assign({},t),{data:e})),i})),i.forEach(t.data.labels||[],(e=>{let i=t.engine.getFactoryForLabel(e.type).generateModel({});i.deserialize(Object.assign(Object.assign({},t),{data:e})),this.addLabel(i)})),t.data.target&&t.getModel(t.data.targetPort).then((t=>{this.setTargetPort(t)})),t.data.source&&t.getModel(t.data.sourcePort).then((t=>{this.setSourcePort(t)}))}getRenderedPath(){return this.renderedPaths}setRenderedPaths(t){this.renderedPaths=t}serialize(){return Object.assign(Object.assign({},super.serialize()),{source:this.sourcePort?this.sourcePort.getParent().getID():null,sourcePort:this.sourcePort?this.sourcePort.getID():null,target:this.targetPort?this.targetPort.getParent().getID():null,targetPort:this.targetPort?this.targetPort.getID():null,points:i.map(this.points,(t=>t.serialize())),labels:i.map(this.labels,(t=>t.serialize()))})}doClone(t={},e){e.setPoints(i.map(this.getPoints(),(e=>e.clone(t)))),this.sourcePort&&e.setSourcePort(this.sourcePort.clone(t)),this.targetPort&&e.setTargetPort(this.targetPort.clone(t))}clearPort(t){this.sourcePort===t?this.setSourcePort(null):this.targetPort===t&&this.setTargetPort(null)}remove(){this.sourcePort&&(this.sourcePort.removeLink(this),delete this.sourcePort),this.targetPort&&(this.targetPort.removeLink(this),delete this.targetPort),super.remove()}isLastPoint(t){return this.getPointIndex(t)===this.points.length-1}getPointIndex(t){return this.points.indexOf(t)}getPointModel(t){for(var e=0;e<this.points.length;e++)if(this.points[e].getID()===t)return this.points[e];return null}getPortForPoint(t){return null!==this.sourcePort&&this.getFirstPoint().getID()===t.getID()?this.sourcePort:null!==this.targetPort&&this.getLastPoint().getID()===t.getID()?this.targetPort:null}getPointForPort(t){return null!==this.sourcePort&&this.sourcePort.getID()===t.getID()?this.getFirstPoint():null!==this.targetPort&&this.targetPort.getID()===t.getID()?this.getLastPoint():null}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}setSourcePort(t){null!==t&&t.addLink(this),null!==this.sourcePort&&this.sourcePort.removeLink(this),this.sourcePort=t,this.fireEvent({port:t},"sourcePortChanged"),(null==t?void 0:t.reportedPosition)&&this.getPointForPort(t).setPosition(t.getCenter())}getSourcePort(){return this.sourcePort}getTargetPort(){return this.targetPort}setTargetPort(t){null!==t&&t.addLink(this),null!==this.targetPort&&this.targetPort.removeLink(this),this.targetPort=t,this.fireEvent({port:t},"targetPortChanged"),(null==t?void 0:t.reportedPosition)&&this.getPointForPort(t).setPosition(t.getCenter())}point(t,e,i=1){return this.addPoint(this.generatePoint(t,e),i)}addLabel(t){t.setParent(this),this.labels.push(t)}getPoints(){return this.points}getLabels(){return this.labels}setPoints(t){i.forEach(t,(t=>{t.setParent(this)})),this.points=t}removePoint(t){this.isLastPoint(t)&&this.remove(),this.points.splice(this.getPointIndex(t),1)}removePointsBefore(t){this.points.splice(0,this.getPointIndex(t))}removePointsAfter(t){this.points.splice(this.getPointIndex(t)+1)}removeMiddlePoints(){this.points.length>2&&this.points.splice(1,this.points.length-2)}addPoint(t,e=1){return t.setParent(this),this.points.splice(e,0,t),t}generatePoint(t=0,e=0){return new r({link:this,position:new o.Point(t,e)})}}class a extends s.BasePositionModel{constructor(t){super(t),this.ports={},this.width=0,this.height=0}getBoundingBox(){return o.Rectangle.fromPointAndSize(this.getPosition(),this.width,this.height)}setPosition(t,e){const s=this.position;t instanceof o.Point?super.setPosition(t):super.setPosition(t,e),i.forEach(this.ports,(t=>{t.setPosition(t.getX()+this.position.x-s.x,t.getY()+this.position.y-s.y)}))}deserialize(t){super.deserialize(t),i.forEach(t.data.ports,(e=>{let i=t.engine.getFactoryForPort(e.type).generateModel({});i.deserialize(Object.assign(Object.assign({},t),{data:e})),t.registerModel(i),this.addPort(i)}))}serialize(){return Object.assign(Object.assign({},super.serialize()),{ports:i.map(this.ports,(t=>t.serialize()))})}doClone(t={},e){e.ports={},i.forEach(this.ports,(i=>{e.addPort(i.clone(t))}))}remove(){super.remove(),i.forEach(this.ports,(t=>{i.forEach(t.getLinks(),(t=>{t.remove()}))}))}getPortFromID(t){for(var e in this.ports)if(this.ports[e].getID()===t)return this.ports[e];return null}getLink(t){for(let e in this.ports){const i=this.ports[e].getLinks();if(i[t])return i[t]}}getPort(t){return this.ports[t]}getPorts(){return this.ports}removePort(t){for(let e of i.values(t.getLinks()))e.clearPort(t);this.ports[t.getName()]&&(this.ports[t.getName()].setParent(null),delete this.ports[t.getName()])}addPort(t){return t.setParent(this),this.ports[t.getName()]=t,t}updateDimensions({width:t,height:e}){this.width=t,this.height=e}}class h extends s.LayerModel{constructor(){super({type:"diagram-nodes",isSvg:!1,transformed:!0})}addModel(t){if(!(t instanceof a))throw new Error("Can only add nodes to this layer");t.registerListener({entityRemoved:()=>{this.getParent().removeNode(t)}}),super.addModel(t)}getChildModelFactoryBank(t){return t.getNodeFactories()}getNodes(){return this.getModels()}}class l extends s.LayerModel{constructor(){super({type:"diagram-links",isSvg:!0,transformed:!0})}addModel(t){if(!(t instanceof n))throw new Error("Can only add links to this layer");t.registerListener({entityRemoved:()=>{this.getParent().removeLink(t)}}),super.addModel(t)}getLinks(){return this.getModels()}getChildModelFactoryBank(t){return t.getLinkFactories()}}class g extends s.CanvasModel{constructor(t={}){super(t),this.addLayer(new l),this.addLayer(new h)}deserialize(t){this.layers=[],super.deserialize(t)}addLayer(t){super.addLayer(t),t instanceof h&&(this.activeNodeLayer=t),t instanceof l&&(this.activeLinkLayer=t)}getLinkLayers(){return i.filter(this.layers,(t=>t instanceof l))}getNodeLayers(){return i.filter(this.layers,(t=>t instanceof h))}getActiveNodeLayer(){if(!this.activeNodeLayer){const t=this.getNodeLayers();0===t.length?this.addLayer(new h):this.activeNodeLayer=t[0]}return this.activeNodeLayer}getActiveLinkLayer(){if(!this.activeLinkLayer){const t=this.getLinkLayers();0===t.length?this.addLayer(new l):this.activeLinkLayer=t[0]}return this.activeLinkLayer}getNode(t){for(const e of this.getNodeLayers()){const i=e.getModel(t);if(i)return i}}getLink(t){for(const e of this.getLinkLayers()){const i=e.getModel(t);if(i)return i}}addAll(...t){return i.forEach(t,(t=>{t instanceof n?this.addLink(t):t instanceof a&&this.addNode(t)})),t}addLink(t){return this.getActiveLinkLayer().addModel(t),this.fireEvent({link:t,isCreated:!0},"linksUpdated"),t}addNode(t){return this.getActiveNodeLayer().addModel(t),this.fireEvent({node:t,isCreated:!0},"nodesUpdated"),t}removeLink(t){i.some(this.getLinkLayers(),(e=>e.removeModel(t)))&&this.fireEvent({link:t,isCreated:!1},"linksUpdated")}removeNode(t){i.some(this.getNodeLayers(),(e=>e.removeModel(t)))&&this.fireEvent({node:t,isCreated:!1},"nodesUpdated")}getLinks(){return i.flatMap(this.getLinkLayers(),(t=>i.values(t.getModels())))}getNodes(){return i.flatMap(this.getNodeLayers(),(t=>i.values(t.getModels())))}}class d extends s.BaseModel{constructor(t){super(Object.assign(Object.assign({},t),{offsetX:t.offsetX||0,offsetY:t.offsetY||0}))}deserialize(t){super.deserialize(t),this.options.offsetX=t.data.offsetX,this.options.offsetY=t.data.offsetY}serialize(){return Object.assign(Object.assign({},super.serialize()),{offsetX:this.options.offsetX,offsetY:this.options.offsetY})}}const c=require("react"),p=require("@emotion/styled");var u,P,m=t.n(p);!function(t){t.Label=m().div`
display: inline-block;
position: absolute;
`,e.Foreign=s.default.foreignObject`
`,t.Foreign=m().foreignObject`
pointer-events: none;
overflow: visible;
`}(r||(r={}));class n extends o.Component{constructor(e){super(e),this.findPathAndRelativePositionToRenderLabel=e=>{const t=this.props.label.getParent(),i=t.getRenderedPath().map((e=>e.getTotalLength()));let o=i.reduce(((e,t)=>e+t),0)*(e/(t.getLabels().length+1)),s=0;for(;s<t.getRenderedPath().length;){if(o-i[s]<0)return{path:t.getRenderedPath()[s],position:o};o-=i[s],s++}},this.calculateLabelPosition=()=>{const e=this.findPathAndRelativePositionToRenderLabel(this.props.index+1);if(!e)return;const{path:t,position:i}=e,o=this.ref.current.offsetWidth,s=this.ref.current.offsetHeight,r=t.getPointAtLength(i),n=r.x-o/2+this.props.label.getOptions().offsetX,a=r.y-s/2+this.props.label.getOptions().offsetY;this.ref.current.style.transform=`translate(${n}px, ${a}px)`},this.ref=o.createRef()}componentDidUpdate(){window.requestAnimationFrame(this.calculateLabelPosition)}componentDidMount(){window.requestAnimationFrame(this.calculateLabelPosition)}render(){const e=this.props.engine.getCanvas();return o.createElement(r.Foreign,{key:this.props.label.getID(),width:null==e?void 0:e.offsetWidth,height:null==e?void 0:e.offsetHeight},o.createElement(r.Label,{ref:this.ref},this.props.engine.getFactoryForLabel(this.props.label).generateReactWidget({model:this.props.label})))}}t.LabelWidget=n},597:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.LinkLayerFactory=void 0;const o=i(689),s=i(702),r=i(513),n=i(949);class a extends s.AbstractReactFactory{constructor(){super("diagram-links")}generateModel(e){return new r.LinkLayerModel}generateReactWidget(e){return o.createElement(n.LinkLayerWidget,{layer:e.model,engine:this.engine})}}t.LinkLayerFactory=a},513:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.LinkLayerModel=void 0;const o=i(702),s=i(126);class r extends o.LayerModel{constructor(){super({type:"diagram-links",isSvg:!0,transformed:!0})}addModel(e){if(!(e instanceof s.LinkModel))throw new Error("Can only add links to this layer");e.registerListener({entityRemoved:()=>{this.getParent().removeLink(e)}}),super.addModel(e)}getLinks(){return this.getModels()}getChildModelFactoryBank(e){return e.getLinkFactories()}}t.LinkLayerModel=r},949:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.LinkLayerWidget=void 0;const o=i(689),s=i(480),r=i(517),n=i(370);var a;!function(e){e.Container=s.default.div``}(a||(a={}));class d extends o.Component{render(){return o.createElement(o.Fragment,null,r.map(this.props.layer.getLinks(),(e=>o.createElement(n.LinkWidget,{key:e.getID(),link:e,diagramEngine:this.props.engine}))))}}t.LinkLayerWidget=d},126:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.LinkModel=void 0;const o=i(19),s=i(517),r=i(270),n=i(702);class a extends n.BaseModel{constructor(e){super(e),this.points=[new o.PointModel({link:this}),new o.PointModel({link:this})],this.sourcePort=null,this.targetPort=null,this.renderedPaths=[],this.labels=[]}getBoundingBox(){return r.Polygon.boundingBoxFromPoints(s.map(this.points,(e=>e.getPosition())))}getSelectionEntities(){return this.getTargetPort()&&this.getSourcePort()?super.getSelectionEntities().concat(s.slice(this.points,1,this.points.length-1)):this.getSourcePort()?this.getTargetPort()?super.getSelectionEntities().concat(this.points):super.getSelectionEntities().concat(s.slice(this.points,1,this.points.length)):super.getSelectionEntities().concat(s.slice(this.points,0,this.points.length-1))}deserialize(e){super.deserialize(e),this.points=s.map(e.data.points||[],(t=>{var i=new o.PointModel({link:this,position:new r.Point(t.x,t.y)});return i.deserialize(Object.assign(Object.assign({},e),{data:t})),i})),s.forEach(e.data.labels||[],(t=>{let i=e.engine.getFactoryForLabel(t.type).generateModel({});i.deserialize(Object.assign(Object.assign({},e),{data:t})),this.addLabel(i)})),e.data.target&&e.getModel(e.data.targetPort).then((e=>{this.setTargetPort(e)})),e.data.source&&e.getModel(e.data.sourcePort).then((e=>{this.setSourcePort(e)}))}getRenderedPath(){return this.renderedPaths}setRenderedPaths(e){this.renderedPaths=e}serialize(){return Object.assign(Object.assign({},super.serialize()),{source:this.sourcePort?this.sourcePort.getParent().getID():null,sourcePort:this.sourcePort?this.sourcePort.getID():null,target:this.targetPort?this.targetPort.getParent().getID():null,targetPort:this.targetPort?this.targetPort.getID():null,points:s.map(this.points,(e=>e.serialize())),labels:s.map(this.labels,(e=>e.serialize()))})}doClone(e={},t){t.setPoints(s.map(this.getPoints(),(t=>t.clone(e)))),this.sourcePort&&t.setSourcePort(this.sourcePort.clone(e)),this.targetPort&&t.setTargetPort(this.targetPort.clone(e))}clearPort(e){this.sourcePort===e?this.setSourcePort(null):this.targetPort===e&&this.setTargetPort(null)}remove(){this.sourcePort&&(this.sourcePort.removeLink(this),delete this.sourcePort),this.targetPort&&(this.targetPort.removeLink(this),delete this.targetPort),super.remove()}isLastPoint(e){return this.getPointIndex(e)===this.points.length-1}getPointIndex(e){return this.points.indexOf(e)}getPointModel(e){for(var t=0;t<this.points.length;t++)if(this.points[t].getID()===e)return this.points[t];return null}getPortForPoint(e){return null!==this.sourcePort&&this.getFirstPoint().getID()===e.getID()?this.sourcePort:null!==this.targetPort&&this.getLastPoint().getID()===e.getID()?this.targetPort:null}getPointForPort(e){return null!==this.sourcePort&&this.sourcePort.getID()===e.getID()?this.getFirstPoint():null!==this.targetPort&&this.targetPort.getID()===e.getID()?this.getLastPoint():null}getFirstPoint(){return this.points[0]}getLastPoint(){return this.points[this.points.length-1]}setSourcePort(e){null!==e&&e.addLink(this),null!==this.sourcePort&&this.sourcePort.removeLink(this),this.sourcePort=e,this.fireEvent({port:e},"sourcePortChanged"),(null==e?void 0:e.reportedPosition)&&this.getPointForPort(e).setPosition(e.getCenter())}getSourcePort(){return this.sourcePort}getTargetPort(){return this.targetPort}setTargetPort(e){null!==e&&e.addLink(this),null!==this.targetPort&&this.targetPort.removeLink(this),this.targetPort=e,this.fireEvent({port:e},"targetPortChanged"),(null==e?void 0:e.reportedPosition)&&this.getPointForPort(e).setPosition(e.getCenter())}point(e,t,i=1){return this.addPoint(this.generatePoint(e,t),i)}addLabel(e){e.setParent(this),this.labels.push(e)}getPoints(){return this.points}getLabels(){return this.labels}setPoints(e){s.forEach(e,(e=>{e.setParent(this)})),this.points=e}removePoint(e){this.isLastPoint(e)&&this.remove(),this.points.splice(this.getPointIndex(e),1)}removePointsBefore(e){this.points.splice(0,this.getPointIndex(e))}removePointsAfter(e){this.points.splice(this.getPointIndex(e)+1)}removeMiddlePoints(){this.points.length>2&&this.points.splice(1,this.points.length-2)}addPoint(e,t=1){return e.setParent(this),this.points.splice(t,0,e),e}generatePoint(e=0,t=0){return new o.PointModel({link:this,position:new r.Point(e,t)})}}t.LinkModel=a},370:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.LinkWidget=void 0;const o=i(689),s=i(517),r=i(868),n=i(702);class a extends o.Component{constructor(e){super(e),this.state={sourcePort:null,targetPort:null}}componentWillUnmount(){this.sourceListener&&this.sourceListener.deregister(),this.targetListener&&this.targetListener.deregister()}static getDerivedStateFromProps(e,t){return{sourcePort:e.link.getSourcePort(),targetPort:e.link.getTargetPort()}}installTarget(){this.targetListener&&this.targetListener.deregister(),this.props.link.getTargetPort()&&(this.targetListener=this.props.link.getTargetPort().registerListener({reportInitialPosition:e=>{this.forceUpdate()}}))}installSource(){this.sourceListener&&this.sourceListener.deregister(),this.props.link.getSourcePort()&&(this.sourceListener=this.props.link.getSourcePort().registerListener({reportInitialPosition:e=>{this.forceUpdate()}}))}componentDidUpdate(e,t,i){t.sourcePort!==this.state.sourcePort&&this.installSource(),t.targetPort!==this.state.targetPort&&this.installTarget()}static generateLinePath(e,t){return`M${e.getX()},${e.getY()} L ${t.getX()},${t.getY()}`}componentDidMount(){this.props.link.getSourcePort()&&this.installSource(),this.props.link.getTargetPort()&&this.installTarget()}render(){const{link:e}=this.props;return e.getSourcePort()&&!e.getSourcePort().reportedPosition||e.getTargetPort()&&!e.getTargetPort().reportedPosition?null:o.createElement(n.PeformanceWidget,{model:this.props.link,serialized:this.props.link.serialize()},(()=>o.createElement("g",{"data-linkid":this.props.link.getID()},this.props.diagramEngine.generateWidgetForLink(e),s.map(this.props.link.getLabels(),((e,t)=>o.createElement(r.LabelWidget,{key:e.getID(),engine:this.props.diagramEngine,label:e,index:t}))))))}}t.LinkWidget=a},19:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PointModel=void 0;const o=i(702);class s extends o.BasePositionModel{constructor(e){super(Object.assign(Object.assign({},e),{type:"point"})),this.parent=e.link}isConnectedToPort(){return null!==this.parent.getPortForPoint(this)}getLink(){return this.getParent()}remove(){this.parent&&this.parent.removePoint(this),super.remove()}isLocked(){return super.isLocked()||this.getParent().isLocked()}}t.PointModel=s},167:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NodeLayerFactory=void 0;const o=i(689),s=i(702),r=i(210),n=i(518);class a extends s.AbstractReactFactory{constructor(){super("diagram-nodes")}generateModel(e){return new r.NodeLayerModel}generateReactWidget(e){return o.createElement(n.NodeLayerWidget,{layer:e.model,engine:this.engine})}}t.NodeLayerFactory=a},210:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NodeLayerModel=void 0;const o=i(702),s=i(80);class r extends o.LayerModel{constructor(){super({type:"diagram-nodes",isSvg:!1,transformed:!0})}addModel(e){if(!(e instanceof s.NodeModel))throw new Error("Can only add nodes to this layer");e.registerListener({entityRemoved:()=>{this.getParent().removeNode(e)}}),super.addModel(e)}getChildModelFactoryBank(e){return e.getNodeFactories()}getNodes(){return this.getModels()}}t.NodeLayerModel=r},518:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NodeLayerWidget=void 0;const o=i(689),s=i(480),r=i(517),n=i(556);var a;!function(e){e.Container=s.default.div``}(a||(a={}));class d extends o.Component{render(){return o.createElement(o.Fragment,null,r.map(this.props.layer.getNodes(),(e=>o.createElement(n.NodeWidget,{key:e.getID(),diagramEngine:this.props.engine,node:e}))))}}t.NodeLayerWidget=d},80:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NodeModel=void 0;const o=i(517),s=i(270),r=i(702);class n extends r.BasePositionModel{constructor(e){super(e),this.ports={},this.width=0,this.height=0}getBoundingBox(){return new s.Rectangle(this.getPosition(),this.width,this.height)}setPosition(e,t){const i=this.position;e instanceof s.Point?super.setPosition(e):super.setPosition(e,t),o.forEach(this.ports,(e=>{e.setPosition(e.getX()+this.position.x-i.x,e.getY()+this.position.y-i.y)}))}deserialize(e){super.deserialize(e),o.forEach(e.data.ports,(t=>{let i=e.engine.getFactoryForPort(t.type).generateModel({});i.deserialize(Object.assign(Object.assign({},e),{data:t})),e.registerModel(i),this.addPort(i)}))}serialize(){return Object.assign(Object.assign({},super.serialize()),{ports:o.map(this.ports,(e=>e.serialize()))})}doClone(e={},t){t.ports={},o.forEach(this.ports,(i=>{t.addPort(i.clone(e))}))}remove(){super.remove(),o.forEach(this.ports,(e=>{o.forEach(e.getLinks(),(e=>{e.remove()}))}))}getPortFromID(e){for(var t in this.ports)if(this.ports[t].getID()===e)return this.ports[t];return null}getLink(e){for(let t in this.ports){const i=this.ports[t].getLinks();if(i[e])return i[e]}}getPort(e){return this.ports[e]}getPorts(){return this.ports}removePort(e){for(let t of o.values(e.getLinks()))t.clearPort(e);this.ports[e.getName()]&&(this.ports[e.getName()].setParent(null),delete this.ports[e.getName()])}addPort(e){return e.setParent(this),this.ports[e.getName()]=e,e}updateDimensions({width:e,height:t}){this.width=e,this.height=t}}t.NodeModel=n},556:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.NodeWidget=void 0;const o=i(689),s=i(517),r=i(702),n=i(480),a=i(827);var d;!function(e){e.Node=n.default.div`
`}(u||(u={}));class f extends c.Component{constructor(t){super(t),this.findPathAndRelativePositionToRenderLabel=t=>{const e=this.props.label.getParent(),i=e.getRenderedPath().map((t=>t.getTotalLength()));let s=i.reduce(((t,e)=>t+e),0)*(t/(e.getLabels().length+1)),r=0;for(;r<e.getRenderedPath().length;){if(s-i[r]<0)return{path:e.getRenderedPath()[r],position:s};s-=i[r],r++}},this.calculateLabelPosition=()=>{const t=this.findPathAndRelativePositionToRenderLabel(this.props.index+1);if(!t)return;const{path:e,position:i}=t,s=this.ref.current.offsetWidth,r=this.ref.current.offsetHeight,o=e.getPointAtLength(i),n=o.x-s/2+this.props.label.getOptions().offsetX,a=o.y-r/2+this.props.label.getOptions().offsetY;this.ref.current.style.transform=`translate(${n}px, ${a}px)`},this.ref=c.createRef()}componentDidUpdate(){window.requestAnimationFrame(this.calculateLabelPosition)}componentDidMount(){window.requestAnimationFrame(this.calculateLabelPosition)}render(){const t=this.props.engine.getCanvas();return c.createElement(u.Foreign,{key:this.props.label.getID(),width:null==t?void 0:t.offsetWidth,height:null==t?void 0:t.offsetHeight},c.createElement(u.Label,{ref:this.ref},this.props.engine.getFactoryForLabel(this.props.label).generateReactWidget({model:this.props.label})))}}class L extends c.Component{constructor(t){super(t),this.state={sourcePort:null,targetPort:null}}componentWillUnmount(){this.sourceListener&&this.sourceListener.deregister(),this.targetListener&&this.targetListener.deregister()}static getDerivedStateFromProps(t,e){return{sourcePort:t.link.getSourcePort(),targetPort:t.link.getTargetPort()}}installTarget(){this.targetListener&&this.targetListener.deregister(),this.props.link.getTargetPort()&&(this.targetListener=this.props.link.getTargetPort().registerListener({reportInitialPosition:t=>{this.forceUpdate()}}))}installSource(){this.sourceListener&&this.sourceListener.deregister(),this.props.link.getSourcePort()&&(this.sourceListener=this.props.link.getSourcePort().registerListener({reportInitialPosition:t=>{this.forceUpdate()}}))}componentDidUpdate(t,e,i){e.sourcePort!==this.state.sourcePort&&this.installSource(),e.targetPort!==this.state.targetPort&&this.installTarget()}static generateLinePath(t,e){return`M${t.getX()},${t.getY()} L ${e.getX()},${e.getY()}`}componentDidMount(){this.props.link.getSourcePort()&&this.installSource(),this.props.link.getTargetPort()&&this.installTarget()}render(){const{link:t}=this.props;return t.getSourcePort()&&!t.getSourcePort().reportedPosition||t.getTargetPort()&&!t.getTargetPort().reportedPosition?null:c.createElement(s.PeformanceWidget,{model:this.props.link,serialized:this.props.link.serialize()},(()=>c.createElement("g",{"data-linkid":this.props.link.getID()},this.props.diagramEngine.generateWidgetForLink(t),i.map(this.props.link.getLabels(),((t,e)=>c.createElement(f,{key:t.getID(),engine:this.props.diagramEngine,label:t,index:e}))))))}}!function(t){t.Container=m().div``}(P||(P={}));class k extends c.Component{render(){return c.createElement(c.Fragment,null,i.map(this.props.layer.getLinks(),(t=>c.createElement(L,{key:t.getID(),link:t,diagramEngine:this.props.engine}))))}}class y extends s.AbstractReactFactory{constructor(){super("diagram-links")}generateModel(t){return new l}generateReactWidget(t){return c.createElement(k,{layer:t.model,engine:this.engine})}}const v=require("resize-observer-polyfill");var b,F,M=t.n(v);!function(t){t.Node=m().div`
position: absolute;

@@ -15,3 +15,3 @@ -webkit-touch-callout: none; /* iOS Safari */

pointer-events: all;
`}(d||(d={}));class l extends o.Component{constructor(e){super(e),this.ref=o.createRef()}componentWillUnmount(){var e;this.ob.disconnect(),this.ob=null,null===(e=this.listener)||void 0===e||e.deregister(),this.listener=null}componentDidUpdate(e,t,i){this.listener&&this.props.node!==e.node&&(this.listener.deregister(),this.installSelectionListener())}installSelectionListener(){this.listener=this.props.node.registerListener({selectionChanged:e=>{this.forceUpdate()}})}updateSize(e,t){this.props.node.updateDimensions({width:e,height:t});try{s.forEach(this.props.node.getPorts(),(e=>{e.updateCoords(this.props.diagramEngine.getPortCoords(e))}))}catch(e){}}componentDidMount(){this.ob=new a.default((e=>{const t=e[0].contentRect;this.updateSize(t.width,t.height)}));const e=this.ref.current.getBoundingClientRect();this.updateSize(e.width,e.height),this.ob.observe(this.ref.current),this.installSelectionListener()}render(){return o.createElement(r.PeformanceWidget,{model:this.props.node,serialized:this.props.node.serialize()},(()=>o.createElement(d.Node,{className:"node",ref:this.ref,"data-nodeid":this.props.node.getID(),style:{top:this.props.node.getY(),left:this.props.node.getX()}},this.props.diagramEngine.generateWidgetForNode(this.props.node))))}}t.NodeWidget=l},531:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PortModel=t.PortModelAlignment=void 0;const o=i(517),s=i(270),r=i(702);!function(e){e.TOP="top",e.LEFT="left",e.BOTTOM="bottom",e.RIGHT="right"}(t.PortModelAlignment||(t.PortModelAlignment={}));class n extends r.BasePositionModel{constructor(e){super(e),this.links={},this.reportedPosition=!1}deserialize(e){super.deserialize(e),this.reportedPosition=!1,this.options.name=e.data.name,this.options.alignment=e.data.alignment}serialize(){return Object.assign(Object.assign({},super.serialize()),{name:this.options.name,alignment:this.options.alignment,parentNode:this.parent.getID(),links:o.map(this.links,(e=>e.getID()))})}setPosition(e,t){let i=this.position;super.setPosition(e,t),o.forEach(this.getLinks(),(o=>{let s=o.getPointForPort(this);s.setPosition(s.getX()+e-i.x,s.getY()+t-i.y)}))}doClone(e={},t){t.links={},t.parent=this.getParent().clone(e)}getNode(){return this.getParent()}getName(){return this.options.name}getMaximumLinks(){return this.options.maximumLinks}setMaximumLinks(e){this.options.maximumLinks=e}removeLink(e){delete this.links[e.getID()]}addLink(e){this.links[e.getID()]=e}getLinks(){return this.links}createLinkModel(){if(o.isFinite(this.options.maximumLinks)){var e=o.size(this.links);if(1===this.options.maximumLinks&&e>=1)return o.values(this.links)[0];if(e>=this.options.maximumLinks)return null}return null}reportPosition(){o.forEach(this.getLinks(),(e=>{e.getPointForPort(this).setPosition(this.getCenter())})),this.fireEvent({entity:this},"reportInitialPosition")}getCenter(){return new s.Point(this.getX()+this.width/2,this.getY()+this.height/2)}getBoundingBox(){return new s.Rectangle(this.position,this.width,this.height)}updateCoords(e){this.width=e.getWidth(),this.height=e.getHeight(),this.setPosition(e.getTopLeft()),this.reportedPosition=!0,this.reportPosition()}canLinkToPort(e){return!0}isLocked(){return super.isLocked()||this.getParent().isLocked()}}t.PortModel=n},302:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.PortWidget=void 0;const o=i(689),s=i(517),r=i(702);class n extends o.Component{constructor(e){super(e),this.ref=o.createRef()}report(){this.props.port.updateCoords(this.props.engine.getPortCoords(this.props.port,this.ref.current))}componentWillUnmount(){this.engineListenerHandle&&this.engineListenerHandle.deregister()}componentDidUpdate(e,t,i){this.props.port.reportedPosition||this.report()}componentDidMount(){this.engineListenerHandle=this.props.engine.registerListener({canvasReady:()=>{this.report()}}),this.props.engine.getCanvas()&&this.report()}getExtraProps(){if(r.Toolkit.TESTING){return{"data-links":s.keys(this.props.port.getNode().getPort(this.props.port.getName()).links).join(",")}}return{}}render(){return o.createElement("div",Object.assign({style:this.props.style,ref:this.ref,className:`port ${this.props.className||""}`,"data-name":this.props.port.getName(),"data-nodeid":this.props.port.getNode().getID()},this.getExtraProps()),this.props.children)}}t.PortWidget=n},418:function(e,t,i){var o=this&&this.__createBinding||(Object.create?function(e,t,i,o){void 0===o&&(o=i);var s=Object.getOwnPropertyDescriptor(t,i);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,o,s)}:function(e,t,i,o){void 0===o&&(o=i),e[o]=t[i]}),s=this&&this.__exportStar||function(e,t){for(var i in e)"default"===i||Object.prototype.hasOwnProperty.call(t,i)||o(t,e,i)};Object.defineProperty(t,"__esModule",{value:!0}),s(i(389),t),s(i(848),t),s(i(126),t),s(i(19),t),s(i(370),t),s(i(513),t),s(i(949),t),s(i(597),t),s(i(210),t),s(i(518),t),s(i(167),t),s(i(80),t),s(i(556),t),s(i(531),t),s(i(302),t),s(i(876),t),s(i(930),t),s(i(132),t),s(i(634),t)},389:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DiagramModel=void 0;const o=i(517),s=i(126),r=i(80),n=i(702),a=i(210),d=i(513);class l extends n.CanvasModel{constructor(e={}){super(e),this.addLayer(new d.LinkLayerModel),this.addLayer(new a.NodeLayerModel)}deserialize(e){this.layers=[],super.deserialize(e)}addLayer(e){super.addLayer(e),e instanceof a.NodeLayerModel&&(this.activeNodeLayer=e),e instanceof d.LinkLayerModel&&(this.activeLinkLayer=e)}getLinkLayers(){return o.filter(this.layers,(e=>e instanceof d.LinkLayerModel))}getNodeLayers(){return o.filter(this.layers,(e=>e instanceof a.NodeLayerModel))}getActiveNodeLayer(){if(!this.activeNodeLayer){const e=this.getNodeLayers();0===e.length?this.addLayer(new a.NodeLayerModel):this.activeNodeLayer=e[0]}return this.activeNodeLayer}getActiveLinkLayer(){if(!this.activeLinkLayer){const e=this.getLinkLayers();0===e.length?this.addLayer(new d.LinkLayerModel):this.activeLinkLayer=e[0]}return this.activeLinkLayer}getNode(e){for(const t of this.getNodeLayers()){const i=t.getModel(e);if(i)return i}}getLink(e){for(const t of this.getLinkLayers()){const i=t.getModel(e);if(i)return i}}addAll(...e){return o.forEach(e,(e=>{e instanceof s.LinkModel?this.addLink(e):e instanceof r.NodeModel&&this.addNode(e)})),e}addLink(e){return this.getActiveLinkLayer().addModel(e),this.fireEvent({link:e,isCreated:!0},"linksUpdated"),e}addNode(e){return this.getActiveNodeLayer().addModel(e),this.fireEvent({node:e,isCreated:!0},"nodesUpdated"),e}removeLink(e){o.some(this.getLinkLayers(),(t=>t.removeModel(e)))&&this.fireEvent({link:e,isCreated:!1},"linksUpdated")}removeNode(e){o.some(this.getNodeLayers(),(t=>t.removeModel(e)))&&this.fireEvent({node:e,isCreated:!1},"nodesUpdated")}getLinks(){return o.flatMap(this.getLinkLayers(),(e=>o.values(e.getModels())))}getNodes(){return o.flatMap(this.getNodeLayers(),(e=>o.values(e.getModels())))}}t.DiagramModel=l},876:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DefaultDiagramState=void 0;const o=i(702),s=i(531),r=i(132),n=i(930);class a extends o.State{constructor(){super({name:"default-diagrams"}),this.childStates=[new o.SelectingState],this.dragCanvas=new o.DragCanvasState,this.dragNewLink=new r.DragNewLinkState,this.dragItems=new n.DragDiagramItemsState,this.registerAction(new o.Action({type:o.InputType.MOUSE_DOWN,fire:e=>{const t=this.engine.getActionEventBus().getModelForEvent(e);t?t instanceof s.PortModel?this.transitionWithEvent(this.dragNewLink,e):this.transitionWithEvent(this.dragItems,e):this.transitionWithEvent(this.dragCanvas,e)}})),this.registerAction(new o.Action({type:o.InputType.TOUCH_START,fire:e=>{this.transitionWithEvent(this.dragCanvas,e)}}))}}t.DefaultDiagramState=a},930:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DragDiagramItemsState=void 0;const o=i(702),s=i(517),r=i(19),n=i(531);class a extends o.MoveItemsState{constructor(){super(),this.registerAction(new o.Action({type:o.InputType.MOUSE_UP,fire:e=>{const t=this.engine.getMouseElement(e.event);t instanceof n.PortModel&&s.forEach(this.initialPositions,(e=>{if(e.item instanceof r.PointModel){const i=e.item.getParent();if(i.getLastPoint()!==e.item)return;i.getSourcePort().canLinkToPort(t)&&(i.setTargetPort(t),t.reportPosition(),this.engine.repaintCanvas())}}))}}))}}t.DragDiagramItemsState=a},132:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.DragNewLinkState=void 0;const o=i(702),s=i(531);class r extends o.AbstractDisplacementState{constructor(e={}){super({name:"drag-new-link"}),this.config=Object.assign({allowLooseLinks:!0,allowLinksFromLockedPorts:!1},e),this.registerAction(new o.Action({type:o.InputType.MOUSE_DOWN,fire:e=>{this.port=this.engine.getMouseElement(e.event),this.config.allowLinksFromLockedPorts||!this.port.isLocked()?(this.link=this.port.createLinkModel(),this.link?(this.link.setSelected(!0),this.link.setSourcePort(this.port),this.engine.getModel().addLink(this.link),this.port.reportPosition()):this.eject()):this.eject()}})),this.registerAction(new o.Action({type:o.InputType.MOUSE_UP,fire:e=>{const t=this.engine.getMouseElement(e.event);if(t instanceof s.PortModel)return this.port.canLinkToPort(t)?(this.link.setTargetPort(t),t.reportPosition(),void this.engine.repaintCanvas()):(this.link.remove(),void this.engine.repaintCanvas());this.config.allowLooseLinks||(this.link.remove(),this.engine.repaintCanvas())}}))}fireMouseMoved(e){const t=this.port.getPosition(),i=this.engine.getModel().getZoomLevel()/100,o=this.engine.getModel().getOffsetX()/i,s=this.engine.getModel().getOffsetY()/i,r=this.initialXRelative/i,n=this.initialYRelative/i,a=t.x-o+(r-t.x)+e.virtualDisplacementX,d=t.y-s+(n-t.y)+e.virtualDisplacementY;this.link.getLastPoint().setPosition(a,d),this.engine.repaintCanvas()}}t.DragNewLinkState=r},480:e=>{e.exports=require("@emotion/styled")},270:e=>{e.exports=require("@projectstorm/geometry")},702:e=>{e.exports=require("@projectstorm/react-canvas-core")},517:e=>{e.exports=require("lodash")},689:e=>{e.exports=require("react")},827:e=>{e.exports=require("resize-observer-polyfill")}},t={};var i=function i(o){var s=t[o];if(void 0!==s)return s.exports;var r=t[o]={exports:{}};return e[o].call(r.exports,r,r.exports,i),r.exports}(418);return i})()));
`}(b||(b={}));class E extends c.Component{constructor(t){super(t),this.ref=c.createRef()}componentWillUnmount(){var t;this.ob.disconnect(),this.ob=null,null===(t=this.listener)||void 0===t||t.deregister(),this.listener=null}componentDidUpdate(t,e,i){this.listener&&this.props.node!==t.node&&(this.listener.deregister(),this.installSelectionListener())}installSelectionListener(){this.listener=this.props.node.registerListener({selectionChanged:t=>{this.forceUpdate()}})}updateSize(t,e){this.props.node.updateDimensions({width:t,height:e});try{i.forEach(this.props.node.getPorts(),(t=>{t.updateCoords(this.props.diagramEngine.getPortCoords(t))}))}catch(t){}}componentDidMount(){this.ob=new(M())((t=>{const e=t[0].contentRect;this.updateSize(e.width,e.height)}));const t=this.ref.current.getBoundingClientRect();this.updateSize(t.width,t.height),this.ob.observe(this.ref.current),this.installSelectionListener()}render(){return c.createElement(s.PeformanceWidget,{model:this.props.node,serialized:this.props.node.serialize()},(()=>c.createElement(b.Node,{className:"node",ref:this.ref,"data-nodeid":this.props.node.getID(),style:{top:this.props.node.getY(),left:this.props.node.getX()}},this.props.diagramEngine.generateWidgetForNode(this.props.node))))}}class w extends c.Component{render(){return c.createElement(c.Fragment,null,i.map(this.props.layer.getNodes(),(t=>c.createElement(E,{key:t.getID(),diagramEngine:this.props.engine,node:t}))))}}class N extends s.AbstractReactFactory{constructor(){super("diagram-nodes")}generateModel(t){return new h}generateReactWidget(t){return c.createElement(w,{layer:t.model,engine:this.engine})}}!function(t){t.TOP="top",t.LEFT="left",t.BOTTOM="bottom",t.RIGHT="right"}(F||(F={}));class x extends s.BasePositionModel{constructor(t){super(t),this.links={},this.reportedPosition=!1}deserialize(t){super.deserialize(t),this.reportedPosition=!1,this.options.name=t.data.name,this.options.alignment=t.data.alignment}serialize(){return Object.assign(Object.assign({},super.serialize()),{name:this.options.name,alignment:this.options.alignment,parentNode:this.parent.getID(),links:i.map(this.links,(t=>t.getID()))})}setPosition(t,e){let s=this.position;super.setPosition(t,e),i.forEach(this.getLinks(),(i=>{let r=i.getPointForPort(this);r.setPosition(r.getX()+t-s.x,r.getY()+e-s.y)}))}doClone(t={},e){e.links={},e.parent=this.getParent().clone(t)}getNode(){return this.getParent()}getName(){return this.options.name}getMaximumLinks(){return this.options.maximumLinks}setMaximumLinks(t){this.options.maximumLinks=t}removeLink(t){delete this.links[t.getID()]}addLink(t){this.links[t.getID()]=t}getLinks(){return this.links}createLinkModel(){if(i.isFinite(this.options.maximumLinks)){var t=i.size(this.links);if(1===this.options.maximumLinks&&t>=1)return i.values(this.links)[0];if(t>=this.options.maximumLinks)return null}return null}reportPosition(){i.forEach(this.getLinks(),(t=>{t.getPointForPort(this).setPosition(this.getCenter())})),this.fireEvent({entity:this},"reportInitialPosition")}getCenter(){return new o.Point(this.getX()+this.width/2,this.getY()+this.height/2)}getBoundingBox(){return o.Rectangle.fromPointAndSize(this.position,this.width,this.height)}updateCoords(t){this.width=t.getWidth(),this.height=t.getHeight(),this.setPosition(t.getTopLeft()),this.reportedPosition=!0,this.reportPosition()}canLinkToPort(t){return!0}isLocked(){return super.isLocked()||this.getParent().isLocked()}}class S extends c.Component{constructor(t){super(t),this.ref=c.createRef()}report(){this.props.port.updateCoords(this.props.engine.getPortCoords(this.props.port,this.ref.current))}componentWillUnmount(){this.engineListenerHandle&&this.engineListenerHandle.deregister()}componentDidUpdate(t,e,i){this.props.port.reportedPosition||this.report()}componentDidMount(){this.engineListenerHandle=this.props.engine.registerListener({canvasReady:()=>{this.report()}}),this.props.engine.getCanvas()&&this.report()}getExtraProps(){if(s.Toolkit.TESTING){return{"data-links":i.keys(this.props.port.getNode().getPort(this.props.port.getName()).links).join(",")}}return{}}render(){return c.createElement("div",Object.assign({style:this.props.style,ref:this.ref,className:`port ${this.props.className||""}`,"data-name":this.props.port.getName(),"data-nodeid":this.props.port.getNode().getID()},this.getExtraProps()),this.props.children)}}class D extends s.AbstractDisplacementState{constructor(t={}){super({name:"drag-new-link"}),this.config=Object.assign({allowLooseLinks:!0,allowLinksFromLockedPorts:!1},t),this.registerAction(new s.Action({type:s.InputType.MOUSE_DOWN,fire:t=>{this.port=this.engine.getMouseElement(t.event),this.config.allowLinksFromLockedPorts||!this.port.isLocked()?(this.link=this.port.createLinkModel(),this.link?(this.link.setSelected(!0),this.link.setSourcePort(this.port),this.engine.getModel().addLink(this.link),this.port.reportPosition()):this.eject()):this.eject()}})),this.registerAction(new s.Action({type:s.InputType.MOUSE_UP,fire:t=>{const e=this.engine.getMouseElement(t.event);if(e instanceof x)return this.port.canLinkToPort(e)?(this.link.setTargetPort(e),e.reportPosition(),void this.engine.repaintCanvas()):(this.link.remove(),void this.engine.repaintCanvas());this.config.allowLooseLinks||(this.link.remove(),this.engine.repaintCanvas())}}))}fireMouseMoved(t){const e=this.port.getPosition(),i=this.engine.getModel().getZoomLevel()/100,s=this.engine.getModel().getOffsetX()/i,r=this.engine.getModel().getOffsetY()/i,o=this.initialXRelative/i,n=this.initialYRelative/i,a=e.x-s+(o-e.x)+t.virtualDisplacementX,h=e.y-r+(n-e.y)+t.virtualDisplacementY;this.link.getLastPoint().setPosition(a,h),this.engine.repaintCanvas()}}class T extends s.MoveItemsState{constructor(){super(),this.registerAction(new s.Action({type:s.InputType.MOUSE_UP,fire:t=>{const e=this.engine.getMouseElement(t.event);e instanceof x&&i.forEach(this.initialPositions,(t=>{if(t.item instanceof r){const i=t.item.getParent();if(i.getLastPoint()!==t.item)return;i.getSourcePort().canLinkToPort(e)&&(i.setTargetPort(e),e.reportPosition(),this.engine.repaintCanvas())}}))}}))}}class C extends s.State{constructor(){super({name:"default-diagrams"}),this.childStates=[new s.SelectingState],this.dragCanvas=new s.DragCanvasState,this.dragNewLink=new D,this.dragItems=new T,this.registerAction(new s.Action({type:s.InputType.MOUSE_DOWN,fire:t=>{const e=this.engine.getActionEventBus().getModelForEvent(t);e?e instanceof x?this.transitionWithEvent(this.dragNewLink,t):this.transitionWithEvent(this.dragItems,t):this.transitionWithEvent(this.dragCanvas,t)}})),this.registerAction(new s.Action({type:s.InputType.TOUCH_START,fire:t=>{this.transitionWithEvent(this.dragCanvas,t)}}))}}class I extends s.CanvasEngine{constructor(t={}){super(t),this.maxNumberPointsPerLink=1e3,this.nodeFactories=new s.FactoryBank,this.linkFactories=new s.FactoryBank,this.portFactories=new s.FactoryBank,this.labelFactories=new s.FactoryBank;const e=t=>{t.registerListener({factoryAdded:t=>{t.factory.setDiagramEngine(this)},factoryRemoved:t=>{t.factory.setDiagramEngine(null)}})};e(this.nodeFactories),e(this.linkFactories),e(this.portFactories),e(this.labelFactories)}getMouseElement(t){var e=t.target,i=this.model,r=s.Toolkit.closest(e,".port[data-name]");if(r){var o=s.Toolkit.closest(e,".node[data-nodeid]");return i.getNode(o.getAttribute("data-nodeid")).getPort(r.getAttribute("data-name"))}return(r=s.Toolkit.closest(e,".point[data-id]"))?i.getLink(r.getAttribute("data-linkid")).getPointModel(r.getAttribute("data-id")):(r=s.Toolkit.closest(e,"[data-linkid]"))?i.getLink(r.getAttribute("data-linkid")):(r=s.Toolkit.closest(e,".node[data-nodeid]"))?i.getNode(r.getAttribute("data-nodeid")):null}getNodeFactories(){return this.nodeFactories}getLinkFactories(){return this.linkFactories}getLabelFactories(){return this.labelFactories}getPortFactories(){return this.portFactories}getFactoryForNode(t){return"string"==typeof t?this.nodeFactories.getFactory(t):this.nodeFactories.getFactory(t.getType())}getFactoryForLink(t){return"string"==typeof t?this.linkFactories.getFactory(t):this.linkFactories.getFactory(t.getType())}getFactoryForLabel(t){return"string"==typeof t?this.labelFactories.getFactory(t):this.labelFactories.getFactory(t.getType())}getFactoryForPort(t){return"string"==typeof t?this.portFactories.getFactory(t):this.portFactories.getFactory(t.getType())}generateWidgetForLink(t){return this.getFactoryForLink(t).generateReactWidget({model:t})}generateWidgetForNode(t){return this.getFactoryForNode(t).generateReactWidget({model:t})}getNodeElement(t){const e=this.canvas.querySelector(`.node[data-nodeid="${t.getID()}"]`);if(null===e)throw new Error("Cannot find Node element with nodeID: ["+t.getID()+"]");return e}getNodePortElement(t){var e=this.canvas.querySelector(`.port[data-name="${t.getName()}"][data-nodeid="${t.getParent().getID()}"]`);if(null===e)throw new Error("Cannot find Node Port element with nodeID: ["+t.getParent().getID()+"] and name: ["+t.getName()+"]");return e}getPortCenter(t){return this.getPortCoords(t).getOrigin()}getPortCoords(t,e){if(!this.canvas)throw new Error("Canvas needs to be set first");e||(e=this.getNodePortElement(t));const i=e.getBoundingClientRect(),s=this.getRelativeMousePoint({clientX:i.left,clientY:i.top}),r=this.model.getZoomLevel()/100;return o.Rectangle.fromPointAndSize(s,i.width/r,i.height/r)}getNodeDimensions(t){if(!this.canvas)return{width:0,height:0};const e=this.getNodeElement(t).getBoundingClientRect();return{width:e.width,height:e.height}}getBoundingNodesRect(t){if(t)return 0===t.length?new o.Rectangle:new o.Rectangle((0,o.boundingBoxFromPolygons)(t.map((t=>t.getBoundingBox()))))}zoomToFitSelectedNodes(t){const e=this.model.getSelectedEntities().filter((t=>t instanceof a));this.zoomToFitNodes({margin:t.margin,maxZoom:t.maxZoom,nodes:e.length>0?e:null})}zoomToFitNodes(t){let e=t||0,i=[],s=null;t&&"object"==typeof t&&(e=t.margin||0,i=t.nodes||[],s=t.maxZoom||null),0===i.length&&(i=this.model.getNodes());const r=this.getBoundingNodesRect(i);if(r){let t=this.canvas.getBoundingClientRect();const i=(e=0)=>{const i=this.canvas.clientWidth/(r.getWidth()+2*e),o=this.canvas.clientHeight/(r.getHeight()+2*e);let n=i<o?i:o;return s&&n>s&&(n=s),{zoom:n,x:t.width/2-((r.getWidth()+2*e)/2+r.getTopLeft().x)*n+e,y:t.height/2-((r.getHeight()+2*e)/2+r.getTopLeft().y)*n+e}};let o=i(0);e&&(o.x<e||o.y<e)&&(o=i(e)),this.model.setZoomLevel(100*o.zoom),this.model.setOffset(o.x,o.y),this.repaintCanvas()}}getMaxNumberPointsPerLink(){return this.maxNumberPointsPerLink}setMaxNumberPointsPerLink(t){this.maxNumberPointsPerLink=t}}return e})()));
//# sourceMappingURL=index.umd.js.map

@@ -1,15 +0,12 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.DiagramModel = void 0;
const _ = require("lodash");
const LinkModel_1 = require("../entities/link/LinkModel");
const NodeModel_1 = require("../entities/node/NodeModel");
const react_canvas_core_1 = require("@projectstorm/react-canvas-core");
const NodeLayerModel_1 = require("../entities/node-layer/NodeLayerModel");
const LinkLayerModel_1 = require("../entities/link-layer/LinkLayerModel");
class DiagramModel extends react_canvas_core_1.CanvasModel {
import * as _ from 'lodash';
import { LinkModel } from '../entities/link/LinkModel';
import { NodeModel } from '../entities/node/NodeModel';
import { CanvasModel } from '@projectstorm/react-canvas-core';
import { NodeLayerModel } from '../entities/node-layer/NodeLayerModel';
import { LinkLayerModel } from '../entities/link-layer/LinkLayerModel';
export class DiagramModel extends CanvasModel {
constructor(options = {}) {
super(options);
this.addLayer(new LinkLayerModel_1.LinkLayerModel());
this.addLayer(new NodeLayerModel_1.NodeLayerModel());
this.addLayer(new LinkLayerModel());
this.addLayer(new NodeLayerModel());
}

@@ -22,6 +19,6 @@ deserialize(event) {

super.addLayer(layer);
if (layer instanceof NodeLayerModel_1.NodeLayerModel) {
if (layer instanceof NodeLayerModel) {
this.activeNodeLayer = layer;
}
if (layer instanceof LinkLayerModel_1.LinkLayerModel) {
if (layer instanceof LinkLayerModel) {
this.activeLinkLayer = layer;

@@ -32,3 +29,3 @@ }

return _.filter(this.layers, (layer) => {
return layer instanceof LinkLayerModel_1.LinkLayerModel;
return layer instanceof LinkLayerModel;
});

@@ -38,3 +35,3 @@ }

return _.filter(this.layers, (layer) => {
return layer instanceof NodeLayerModel_1.NodeLayerModel;
return layer instanceof NodeLayerModel;
});

@@ -46,3 +43,3 @@ }

if (layers.length === 0) {
this.addLayer(new NodeLayerModel_1.NodeLayerModel());
this.addLayer(new NodeLayerModel());
}

@@ -59,3 +56,3 @@ else {

if (layers.length === 0) {
this.addLayer(new LinkLayerModel_1.LinkLayerModel());
this.addLayer(new LinkLayerModel());
}

@@ -86,6 +83,6 @@ else {

_.forEach(models, (model) => {
if (model instanceof LinkModel_1.LinkModel) {
if (model instanceof LinkModel) {
this.addLink(model);
}
else if (model instanceof NodeModel_1.NodeModel) {
else if (model instanceof NodeModel) {
this.addNode(model);

@@ -136,3 +133,2 @@ }

}
exports.DiagramModel = DiagramModel;
//# sourceMappingURL=DiagramModel.js.map

@@ -1,9 +0,6 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.DefaultDiagramState = void 0;
const react_canvas_core_1 = require("@projectstorm/react-canvas-core");
const PortModel_1 = require("../entities/port/PortModel");
const DragNewLinkState_1 = require("./DragNewLinkState");
const DragDiagramItemsState_1 = require("./DragDiagramItemsState");
class DefaultDiagramState extends react_canvas_core_1.State {
import { SelectingState, State, Action, InputType, DragCanvasState } from '@projectstorm/react-canvas-core';
import { PortModel } from '../entities/port/PortModel';
import { DragNewLinkState } from './DragNewLinkState';
import { DragDiagramItemsState } from './DragDiagramItemsState';
export class DefaultDiagramState extends State {
constructor() {

@@ -13,9 +10,9 @@ super({

});
this.childStates = [new react_canvas_core_1.SelectingState()];
this.dragCanvas = new react_canvas_core_1.DragCanvasState();
this.dragNewLink = new DragNewLinkState_1.DragNewLinkState();
this.dragItems = new DragDiagramItemsState_1.DragDiagramItemsState();
this.childStates = [new SelectingState()];
this.dragCanvas = new DragCanvasState();
this.dragNewLink = new DragNewLinkState();
this.dragItems = new DragDiagramItemsState();
// determine what was clicked on
this.registerAction(new react_canvas_core_1.Action({
type: react_canvas_core_1.InputType.MOUSE_DOWN,
this.registerAction(new Action({
type: InputType.MOUSE_DOWN,
fire: (event) => {

@@ -28,3 +25,3 @@ const element = this.engine.getActionEventBus().getModelForEvent(event);

// initiate dragging a new link
else if (element instanceof PortModel_1.PortModel) {
else if (element instanceof PortModel) {
this.transitionWithEvent(this.dragNewLink, event);

@@ -39,4 +36,4 @@ }

// touch drags the canvas
this.registerAction(new react_canvas_core_1.Action({
type: react_canvas_core_1.InputType.TOUCH_START,
this.registerAction(new Action({
type: InputType.TOUCH_START,
fire: (event) => {

@@ -48,3 +45,2 @@ this.transitionWithEvent(this.dragCanvas, event);

}
exports.DefaultDiagramState = DefaultDiagramState;
//# sourceMappingURL=DefaultDiagramState.js.map

@@ -1,18 +0,15 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.DragDiagramItemsState = void 0;
const react_canvas_core_1 = require("@projectstorm/react-canvas-core");
const _ = require("lodash");
const PointModel_1 = require("../entities/link/PointModel");
const PortModel_1 = require("../entities/port/PortModel");
class DragDiagramItemsState extends react_canvas_core_1.MoveItemsState {
import { Action, InputType, MoveItemsState } from '@projectstorm/react-canvas-core';
import * as _ from 'lodash';
import { PointModel } from '../entities/link/PointModel';
import { PortModel } from '../entities/port/PortModel';
export class DragDiagramItemsState extends MoveItemsState {
constructor() {
super();
this.registerAction(new react_canvas_core_1.Action({
type: react_canvas_core_1.InputType.MOUSE_UP,
this.registerAction(new Action({
type: InputType.MOUSE_UP,
fire: (event) => {
const item = this.engine.getMouseElement(event.event);
if (item instanceof PortModel_1.PortModel) {
if (item instanceof PortModel) {
_.forEach(this.initialPositions, (position) => {
if (position.item instanceof PointModel_1.PointModel) {
if (position.item instanceof PointModel) {
const link = position.item.getParent();

@@ -35,3 +32,2 @@ // only care about the last links

}
exports.DragDiagramItemsState = DragDiagramItemsState;
//# sourceMappingURL=DragDiagramItemsState.js.map

@@ -1,12 +0,9 @@

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.DragNewLinkState = void 0;
const react_canvas_core_1 = require("@projectstorm/react-canvas-core");
const PortModel_1 = require("../entities/port/PortModel");
class DragNewLinkState extends react_canvas_core_1.AbstractDisplacementState {
import { AbstractDisplacementState, Action, InputType } from '@projectstorm/react-canvas-core';
import { PortModel } from '../entities/port/PortModel';
export class DragNewLinkState extends AbstractDisplacementState {
constructor(options = {}) {
super({ name: 'drag-new-link' });
this.config = Object.assign({ allowLooseLinks: true, allowLinksFromLockedPorts: false }, options);
this.registerAction(new react_canvas_core_1.Action({
type: react_canvas_core_1.InputType.MOUSE_DOWN,
this.registerAction(new Action({
type: InputType.MOUSE_DOWN,
fire: (event) => {

@@ -30,8 +27,8 @@ this.port = this.engine.getMouseElement(event.event);

}));
this.registerAction(new react_canvas_core_1.Action({
type: react_canvas_core_1.InputType.MOUSE_UP,
this.registerAction(new Action({
type: InputType.MOUSE_UP,
fire: (event) => {
const model = this.engine.getMouseElement(event.event);
// check to see if we connected to a new port
if (model instanceof PortModel_1.PortModel) {
if (model instanceof PortModel) {
if (this.port.canLinkToPort(model)) {

@@ -74,3 +71,2 @@ this.link.setTargetPort(model);

}
exports.DragNewLinkState = DragNewLinkState;
//# sourceMappingURL=DragNewLinkState.js.map
{
"name": "@projectstorm/react-diagrams-core",
"version": "6.7.4",
"author": "dylanvorster",
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/projectstorm/react-diagrams.git"
},
"scripts": {
"clean": "rimraf ./dist",
"build": "../../node_modules/.bin/webpack",
"build:es": "../../node_modules/.bin/tsc",
"build:prod": "NODE_ENV=production ../../node_modules/.bin/webpack && NODE_ENV=production ../../node_modules/.bin/tsc"
},
"publishConfig": {
"access": "public"
},
"keywords": [
"web",
"diagram",
"diagrams",
"react",
"typescript",
"flowchart",
"simple",
"links",
"nodes"
],
"main": "./dist/index.umd.js",
"module": "./dist/index.js",
"typings": "./dist/@types/index",
"dependencies": {
"@projectstorm/geometry": "^6.7.4",
"@projectstorm/react-canvas-core": "^6.7.4"
},
"peerDependencies": {
"lodash": "4.*",
"react": "18.*",
"resize-observer-polyfill": "^1.5.1"
},
"gitHead": "dfcf82e69259b6bda0daecd330538b3bd4f043df"
}
"name": "@projectstorm/react-diagrams-core",
"version": "7.0.0",
"author": "dylanvorster",
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/projectstorm/react-diagrams.git"
},
"publishConfig": {
"access": "public"
},
"keywords": [
"web",
"diagram",
"diagrams",
"react",
"typescript",
"flowchart",
"simple",
"links",
"nodes"
],
"main": "./dist/index.umd.js",
"module": "./dist/index.js",
"typings": "./dist/@types/index",
"dependencies": {
"@emotion/styled": "^11.10.5",
"lodash": "^4.17.21",
"react": "^18.2.0",
"resize-observer-polyfill": "^1.5.1",
"@projectstorm/geometry": "7.0.0",
"@projectstorm/react-canvas-core": "7.0.0"
},
"devDependencies": {
"@types/react": "^18.0.27",
"@types/lodash": "^4.14.191"
},
"scripts": {
"clean": "rimraf ./dist",
"build": "../../node_modules/.bin/webpack",
"build:es": "../../node_modules/.bin/tsc",
"build:prod": "NODE_ENV=production ../../node_modules/.bin/webpack && NODE_ENV=production ../../node_modules/.bin/tsc"
}
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc