@projectstorm/react-diagrams-core
Advanced tools
Comparing version 6.1.1 to 6.2.0
@@ -1,2 +0,1 @@ | ||
/// <reference types="react" /> | ||
import { AbstractReactFactory, GenerateModelEvent, GenerateWidgetEvent } from '@projectstorm/react-canvas-core'; | ||
@@ -3,0 +2,0 @@ import { DiagramEngine } from '../../DiagramEngine'; |
@@ -1,2 +0,1 @@ | ||
/// <reference types="react" /> | ||
import { AbstractReactFactory, GenerateModelEvent, GenerateWidgetEvent } from '@projectstorm/react-canvas-core'; | ||
@@ -3,0 +2,0 @@ import { DiagramEngine } from '../../DiagramEngine'; |
import { AbstractDisplacementState, AbstractDisplacementStateEvent } from '@projectstorm/react-canvas-core'; | ||
import { PortModel } from '../entities/port/PortModel'; | ||
import { MouseEvent } from 'react'; | ||
import { LinkModel } from '../entities/link/LinkModel'; | ||
@@ -23,7 +22,2 @@ import { DiagramEngine } from '../DiagramEngine'; | ||
/** | ||
* Checks whether the mouse event appears to happen in proximity of the link's source port | ||
* @param event | ||
*/ | ||
isNearbySourcePort({ clientX, clientY }: MouseEvent): boolean; | ||
/** | ||
* Calculates the link's far-end point position on mouse move. | ||
@@ -30,0 +24,0 @@ * In order to be as precise as possible the mouse initialXRelative & initialYRelative are taken into account as well |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.DiagramEngine = void 0; | ||
const NodeModel_1 = require("./entities/node/NodeModel"); | ||
@@ -20,6 +21,6 @@ const geometry_1 = require("@projectstorm/geometry"); | ||
factory.registerListener({ | ||
factoryAdded: event => { | ||
factoryAdded: (event) => { | ||
event.factory.setDiagramEngine(this); | ||
}, | ||
factoryRemoved: event => { | ||
factoryRemoved: (event) => { | ||
event.factory.setDiagramEngine(null); | ||
@@ -172,3 +173,3 @@ } | ||
} | ||
let boundingBox = geometry_1.Polygon.boundingBoxFromPolygons(nodes.map(node => node.getBoundingBox())); | ||
let boundingBox = geometry_1.Polygon.boundingBoxFromPolygons(nodes.map((node) => node.getBoundingBox())); | ||
if (margin) { | ||
@@ -184,4 +185,4 @@ return new geometry_1.Rectangle(boundingBox.getTopLeft().x - margin, boundingBox.getTopLeft().y - margin, boundingBox.getWidth() + 2 * margin, boundingBox.getHeight() + 2 * margin); | ||
.getSelectedEntities() | ||
.filter(entity => entity instanceof NodeModel_1.NodeModel) | ||
.map(node => node); | ||
.filter((entity) => entity instanceof NodeModel_1.NodeModel) | ||
.map((node) => node); | ||
// no node selected | ||
@@ -191,4 +192,4 @@ if (selectedNodes.length == 0) { | ||
.getSelectionEntities() | ||
.filter(entity => entity instanceof NodeModel_1.NodeModel) | ||
.map(node => node); | ||
.filter((entity) => entity instanceof NodeModel_1.NodeModel) | ||
.map((node) => node); | ||
// get nodes bounding box with margin | ||
@@ -195,0 +196,0 @@ nodesRect = this.getBoundingNodesRect(allNodes, margin); |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.LabelModel = void 0; | ||
const react_canvas_core_1 = require("@projectstorm/react-canvas-core"); | ||
@@ -4,0 +5,0 @@ class LabelModel extends react_canvas_core_1.BaseModel { |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.LabelWidget = void 0; | ||
const React = require("react"); | ||
@@ -22,3 +23,3 @@ const styled_1 = require("@emotion/styled"); | ||
const link = this.props.label.getParent(); | ||
const lengths = link.getRenderedPath().map(path => path.getTotalLength()); | ||
const lengths = link.getRenderedPath().map((path) => path.getTotalLength()); | ||
// calculate the point where we want to display the label | ||
@@ -25,0 +26,0 @@ let labelPosition = lengths.reduce((previousValue, currentValue) => previousValue + currentValue, 0) * |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.LinkLayerFactory = void 0; | ||
const React = require("react"); | ||
@@ -4,0 +5,0 @@ const react_canvas_core_1 = require("@projectstorm/react-canvas-core"); |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.LinkLayerModel = void 0; | ||
const react_canvas_core_1 = require("@projectstorm/react-canvas-core"); | ||
@@ -4,0 +5,0 @@ const LinkModel_1 = require("../link/LinkModel"); |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.LinkLayerWidget = void 0; | ||
const React = require("react"); | ||
@@ -13,4 +14,5 @@ const styled_1 = require("@emotion/styled"); | ||
render() { | ||
return (React.createElement(React.Fragment, null, //only perform these actions when we have a diagram | ||
_.map(this.props.layer.getLinks(), link => { | ||
return (React.createElement(React.Fragment, null, | ||
//only perform these actions when we have a diagram | ||
_.map(this.props.layer.getLinks(), (link) => { | ||
return React.createElement(LinkWidget_1.LinkWidget, { key: link.getID(), link: link, diagramEngine: this.props.engine }); | ||
@@ -17,0 +19,0 @@ }))); |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.LinkModel = void 0; | ||
const PointModel_1 = require("./PointModel"); | ||
@@ -44,3 +45,3 @@ const _ = require("lodash"); | ||
super.deserialize(event); | ||
this.points = _.map(event.data.points || [], point => { | ||
this.points = _.map(event.data.points || [], (point) => { | ||
var p = new PointModel_1.PointModel({ | ||
@@ -79,5 +80,5 @@ link: this, | ||
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: _.map(this.points, point => { | ||
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: _.map(this.points, (point) => { | ||
return point.serialize(); | ||
}), labels: _.map(this.labels, label => { | ||
}), labels: _.map(this.labels, (label) => { | ||
return label.serialize(); | ||
@@ -193,3 +194,3 @@ }) }); | ||
setPoints(points) { | ||
_.forEach(points, point => { | ||
_.forEach(points, (point) => { | ||
point.setParent(this); | ||
@@ -196,0 +197,0 @@ }); |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.LinkWidget = void 0; | ||
const React = require("react"); | ||
@@ -4,0 +5,0 @@ const _ = require("lodash"); |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.PointModel = void 0; | ||
const react_canvas_core_1 = require("@projectstorm/react-canvas-core"); | ||
@@ -4,0 +5,0 @@ class PointModel extends react_canvas_core_1.BasePositionModel { |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.NodeLayerFactory = void 0; | ||
const React = require("react"); | ||
@@ -4,0 +5,0 @@ const react_canvas_core_1 = require("@projectstorm/react-canvas-core"); |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.NodeLayerModel = void 0; | ||
const react_canvas_core_1 = require("@projectstorm/react-canvas-core"); | ||
@@ -4,0 +5,0 @@ const NodeModel_1 = require("../node/NodeModel"); |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.NodeLayerWidget = void 0; | ||
const React = require("react"); | ||
@@ -4,0 +5,0 @@ const styled_1 = require("@emotion/styled"); |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.NodeModel = void 0; | ||
const _ = require("lodash"); | ||
@@ -20,3 +21,3 @@ const geometry_1 = require("@projectstorm/geometry"); | ||
//also update the port co-ordinates (for make glorious speed) | ||
_.forEach(this.ports, port => { | ||
_.forEach(this.ports, (port) => { | ||
port.setPosition(port.getX() + x - old.x, port.getY() + y - old.y); | ||
@@ -37,3 +38,3 @@ }); | ||
serialize() { | ||
return Object.assign(Object.assign({}, super.serialize()), { ports: _.map(this.ports, port => { | ||
return Object.assign(Object.assign({}, super.serialize()), { ports: _.map(this.ports, (port) => { | ||
return port.serialize(); | ||
@@ -45,3 +46,3 @@ }) }); | ||
clone.ports = {}; | ||
_.forEach(this.ports, port => { | ||
_.forEach(this.ports, (port) => { | ||
clone.addPort(port.clone(lookupTable)); | ||
@@ -52,4 +53,4 @@ }); | ||
super.remove(); | ||
_.forEach(this.ports, port => { | ||
_.forEach(port.getLinks(), link => { | ||
_.forEach(this.ports, (port) => { | ||
_.forEach(port.getLinks(), (link) => { | ||
link.remove(); | ||
@@ -56,0 +57,0 @@ }); |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.NodeWidget = void 0; | ||
const React = require("react"); | ||
@@ -45,7 +46,7 @@ const _ = require("lodash"); | ||
// @ts-ignore | ||
this.ob = new resize_observer_polyfill_1.default(entities => { | ||
this.ob = new resize_observer_polyfill_1.default((entities) => { | ||
const bounds = entities[0].contentRect; | ||
this.props.node.updateDimensions({ width: bounds.width, height: bounds.height }); | ||
//now mark the links as dirty | ||
_.forEach(this.props.node.getPorts(), port => { | ||
_.forEach(this.props.node.getPorts(), (port) => { | ||
port.updateCoords(this.props.diagramEngine.getPortCoords(port)); | ||
@@ -52,0 +53,0 @@ }); |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.PortModel = exports.PortModelAlignment = void 0; | ||
const _ = require("lodash"); | ||
@@ -26,3 +27,3 @@ const geometry_1 = require("@projectstorm/geometry"); | ||
serialize() { | ||
return Object.assign(Object.assign({}, super.serialize()), { name: this.options.name, alignment: this.options.alignment, parentNode: this.parent.getID(), links: _.map(this.links, link => { | ||
return Object.assign(Object.assign({}, super.serialize()), { name: this.options.name, alignment: this.options.alignment, parentNode: this.parent.getID(), links: _.map(this.links, (link) => { | ||
return link.getID(); | ||
@@ -34,3 +35,3 @@ }) }); | ||
super.setPosition(x, y); | ||
_.forEach(this.getLinks(), link => { | ||
_.forEach(this.getLinks(), (link) => { | ||
let point = link.getPointForPort(this); | ||
@@ -78,3 +79,3 @@ point.setPosition(point.getX() + x - old.x, point.getY() + y - old.y); | ||
reportPosition() { | ||
_.forEach(this.getLinks(), link => { | ||
_.forEach(this.getLinks(), (link) => { | ||
link.getPointForPort(this).setPosition(this.getCenter()); | ||
@@ -81,0 +82,0 @@ }); |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.PortWidget = void 0; | ||
const React = require("react"); | ||
@@ -4,0 +5,0 @@ const _ = require("lodash"); |
"use strict"; | ||
function __export(m) { | ||
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; | ||
} | ||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||
if (k2 === undefined) k2 = k; | ||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); | ||
}) : (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" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p); | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
__export(require("./models/DiagramModel")); | ||
__export(require("./entities/label/LabelModel")); | ||
__export(require("./entities/link/LinkModel")); | ||
__export(require("./entities/link/PointModel")); | ||
__export(require("./entities/link/LinkWidget")); | ||
__export(require("./entities/link-layer/LinkLayerModel")); | ||
__export(require("./entities/link-layer/LinkLayerWidget")); | ||
__export(require("./entities/link-layer/LinkLayerFactory")); | ||
__export(require("./entities/node-layer/NodeLayerModel")); | ||
__export(require("./entities/node-layer/NodeLayerWidget")); | ||
__export(require("./entities/node-layer/NodeLayerFactory")); | ||
__export(require("./entities/node/NodeModel")); | ||
__export(require("./entities/node/NodeWidget")); | ||
__export(require("./entities/port/PortModel")); | ||
__export(require("./entities/port/PortWidget")); | ||
__export(require("./states/DefaultDiagramState")); | ||
__export(require("./states/DragDiagramItemsState")); | ||
__export(require("./states/DragNewLinkState")); | ||
__export(require("./DiagramEngine")); | ||
__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); | ||
//# sourceMappingURL=index.js.map |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.DiagramModel = void 0; | ||
const _ = require("lodash"); | ||
@@ -29,3 +30,3 @@ const LinkModel_1 = require("../entities/link/LinkModel"); | ||
getLinkLayers() { | ||
return _.filter(this.layers, layer => { | ||
return _.filter(this.layers, (layer) => { | ||
return layer instanceof LinkLayerModel_1.LinkLayerModel; | ||
@@ -35,3 +36,3 @@ }); | ||
getNodeLayers() { | ||
return _.filter(this.layers, layer => { | ||
return _.filter(this.layers, (layer) => { | ||
return layer instanceof NodeLayerModel_1.NodeLayerModel; | ||
@@ -81,3 +82,3 @@ }); | ||
addAll(...models) { | ||
_.forEach(models, model => { | ||
_.forEach(models, (model) => { | ||
if (model instanceof LinkModel_1.LinkModel) { | ||
@@ -106,3 +107,3 @@ this.addLink(model); | ||
removeLink(link) { | ||
const removed = _.some(this.getLinkLayers(), layer => { | ||
const removed = _.some(this.getLinkLayers(), (layer) => { | ||
return layer.removeModel(link); | ||
@@ -115,3 +116,3 @@ }); | ||
removeNode(node) { | ||
const removed = _.some(this.getNodeLayers(), layer => { | ||
const removed = _.some(this.getNodeLayers(), (layer) => { | ||
return layer.removeModel(node); | ||
@@ -124,3 +125,3 @@ }); | ||
getLinks() { | ||
return _.flatMap(this.getLinkLayers(), layer => { | ||
return _.flatMap(this.getLinkLayers(), (layer) => { | ||
return _.values(layer.getModels()); | ||
@@ -130,3 +131,3 @@ }); | ||
getNodes() { | ||
return _.flatMap(this.getNodeLayers(), layer => { | ||
return _.flatMap(this.getNodeLayers(), (layer) => { | ||
return _.values(layer.getModels()); | ||
@@ -133,0 +134,0 @@ }); |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.DefaultDiagramState = void 0; | ||
const react_canvas_core_1 = require("@projectstorm/react-canvas-core"); | ||
@@ -4,0 +5,0 @@ const PortModel_1 = require("../entities/port/PortModel"); |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.DragDiagramItemsState = void 0; | ||
const react_canvas_core_1 = require("@projectstorm/react-canvas-core"); | ||
@@ -15,3 +16,3 @@ const _ = require("lodash"); | ||
if (item instanceof PortModel_1.PortModel) { | ||
_.forEach(this.initialPositions, position => { | ||
_.forEach(this.initialPositions, (position) => { | ||
if (position.item instanceof PointModel_1.PointModel) { | ||
@@ -18,0 +19,0 @@ const link = position.item.getParent(); |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.DragNewLinkState = void 0; | ||
const react_canvas_core_1 = require("@projectstorm/react-canvas-core"); | ||
@@ -41,4 +42,9 @@ const PortModel_1 = require("../entities/port/PortModel"); | ||
} | ||
else { | ||
this.link.remove(); | ||
this.engine.repaintCanvas(); | ||
return; | ||
} | ||
} | ||
if (this.isNearbySourcePort(event.event) || !this.config.allowLooseLinks) { | ||
if (!this.config.allowLooseLinks) { | ||
this.link.remove(); | ||
@@ -51,13 +57,2 @@ this.engine.repaintCanvas(); | ||
/** | ||
* Checks whether the mouse event appears to happen in proximity of the link's source port | ||
* @param event | ||
*/ | ||
isNearbySourcePort({ clientX, clientY }) { | ||
const sourcePort = this.link.getSourcePort(); | ||
const sourcePortPosition = this.link.getSourcePort().getPosition(); | ||
return (clientX >= sourcePortPosition.x && | ||
clientX <= sourcePortPosition.x + sourcePort.width && | ||
(clientY >= sourcePortPosition.y && clientY <= sourcePortPosition.y + sourcePort.height)); | ||
} | ||
/** | ||
* Calculates the link's far-end point position on mouse move. | ||
@@ -64,0 +59,0 @@ * In order to be as precise as possible the mouse initialXRelative & initialYRelative are taken into account as well |
/*! For license information please see index.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()}(window,(function(){return function(e){var t={};function i(s){if(t[s])return t[s].exports;var r=t[s]={i:s,l:!1,exports:{}};return e[s].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,s){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:s})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var s=Object.create(null);if(i.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(s,r,function(t){return e[t]}.bind(null,r));return s},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=17)}([function(e,t){e.exports=require("@projectstorm/react-canvas-core")},function(e,t){e.exports=require("lodash")},function(e,t){e.exports=require("react")},function(e,t){e.exports=require("@projectstorm/geometry")},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i(1),r=i(3),o=i(0);class n extends o.BasePositionModel{constructor(e){super(e),this.ports={},this.width=0,this.height=0}getBoundingBox(){return new r.Rectangle(this.getPosition(),this.width,this.height)}setPosition(e,t){let i=this.position;super.setPosition(e,t),s.forEach(this.ports,s=>{s.setPosition(s.getX()+e-i.x,s.getY()+t-i.y)})}deserialize(e){super.deserialize(e),s.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:s.map(this.ports,e=>e.serialize())})}doClone(e={},t){t.ports={},s.forEach(this.ports,i=>{t.addPort(i.clone(e))})}remove(){super.remove(),s.forEach(this.ports,e=>{s.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 s.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},function(e,t){e.exports=require("@emotion/styled")},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i(1),r=i(3),o=i(0);!function(e){e.TOP="top",e.LEFT="left",e.BOTTOM="bottom",e.RIGHT="right"}(t.PortModelAlignment||(t.PortModelAlignment={}));class n extends o.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:s.map(this.links,e=>e.getID())})}setPosition(e,t){let i=this.position;super.setPosition(e,t),s.forEach(this.getLinks(),s=>{let r=s.getPointForPort(this);r.setPosition(r.getX()+e-i.x,r.getY()+t-i.y)})}doClone(e={},t){t.links={},t.parentNode=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(s.isFinite(this.options.maximumLinks)){var e=s.size(this.links);if(1===this.options.maximumLinks&&e>=1)return s.values(this.links)[0];if(e>=this.options.maximumLinks)return null}return null}reportPosition(){s.forEach(this.getLinks(),e=>{e.getPointForPort(this).setPosition(this.getCenter())}),this.fireEvent({entity:this},"reportInitialPosition")}getCenter(){return new r.Point(this.getX()+this.width/2,this.getY()+this.height/2)}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},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i(8),r=i(1),o=i(3),n=i(0);class a extends n.BaseModel{constructor(e){super(e),this.points=[new s.PointModel({link:this}),new s.PointModel({link:this})],this.sourcePort=null,this.targetPort=null,this.renderedPaths=[],this.labels=[]}getBoundingBox(){return o.Polygon.boundingBoxFromPoints(r.map(this.points,e=>e.getPosition()))}getSelectionEntities(){return this.getTargetPort()&&this.getSourcePort()?super.getSelectionEntities().concat(r.slice(this.points,1,this.points.length-1)):this.getSourcePort()?this.getTargetPort()?super.getSelectionEntities().concat(this.points):super.getSelectionEntities().concat(r.slice(this.points,1,this.points.length)):super.getSelectionEntities().concat(r.slice(this.points,0,this.points.length-1))}deserialize(e){super.deserialize(e),this.points=r.map(e.data.points||[],t=>{var i=new s.PointModel({link:this,position:new o.Point(t.x,t.y)});return i.deserialize(Object.assign(Object.assign({},e),{data:t})),i}),r.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:r.map(this.points,e=>e.serialize()),labels:r.map(this.labels,e=>e.serialize())})}doClone(e={},t){t.setPoints(r.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),this.targetPort&&this.targetPort.removeLink(this),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")}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")}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){r.forEach(e,e=>{e.setParent(this)}),this.points=e}removePoint(e){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(0,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 s.PointModel({link:this,position:new o.Point(e,t)})}}t.LinkModel=a},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i(0);class r extends s.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=r},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i(0),r=i(4);class o extends s.LayerModel{constructor(){super({type:"diagram-nodes",isSvg:!1,transformed:!0})}addModel(e){if(!(e instanceof r.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=o},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i(0),r=i(7);class o extends s.LayerModel{constructor(){super({type:"diagram-links",isSvg:!0,transformed:!0})}addModel(e){if(!(e instanceof r.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=o},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i(2),r=i(1),o=i(20),n=i(0);class a extends s.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:s.createElement(n.PeformanceWidget,{model:this.props.link,serialized:this.props.link.serialize()},()=>s.createElement("g",{"data-linkid":this.props.link.getID()},this.props.diagramEngine.generateWidgetForLink(e),r.map(this.props.link.getLabels(),(e,t)=>s.createElement(o.LabelWidget,{key:e.getID(),engine:this.props.diagramEngine,label:e,index:t}))))}}t.LinkWidget=a},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i(2),r=i(5),o=i(1),n=i(11);var a;!function(e){e.Container=r.default.div``}(a||(a={}));class l extends s.Component{render(){return s.createElement(s.Fragment,null,o.map(this.props.layer.getLinks(),e=>s.createElement(n.LinkWidget,{key:e.getID(),link:e,diagramEngine:this.props.engine})))}}t.LinkLayerWidget=l},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i(2),r=i(5),o=i(1),n=i(14);var a;!function(e){e.Container=r.default.div``}(a||(a={}));class l extends s.Component{render(){return s.createElement(s.Fragment,null,o.map(this.props.layer.getNodes(),e=>s.createElement(n.NodeWidget,{key:e.getID(),diagramEngine:this.props.engine,node:e})))}}t.NodeLayerWidget=l},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i(2),r=i(1),o=i(0),n=i(5),a=i(22);var l;!function(e){e.Node=n.default.div` | ||
!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()}(window,(function(){return function(e){var t={};function i(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=e,i.c=t,i.d=function(e,t,o){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(i.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(o,r,function(t){return e[t]}.bind(null,r));return o},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=17)}([function(e,t){e.exports=require("@projectstorm/react-canvas-core")},function(e,t){e.exports=require("lodash")},function(e,t){e.exports=require("react")},function(e,t){e.exports=require("@projectstorm/geometry")},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeModel=void 0;const o=i(1),r=i(3),s=i(0);class n extends s.BasePositionModel{constructor(e){super(e),this.ports={},this.width=0,this.height=0}getBoundingBox(){return new r.Rectangle(this.getPosition(),this.width,this.height)}setPosition(e,t){let i=this.position;super.setPosition(e,t),o.forEach(this.ports,o=>{o.setPosition(o.getX()+e-i.x,o.getY()+t-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},function(e,t){e.exports=require("@emotion/styled")},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PortModel=t.PortModelAlignment=void 0;const o=i(1),r=i(3),s=i(0);!function(e){e.TOP="top",e.LEFT="left",e.BOTTOM="bottom",e.RIGHT="right"}(t.PortModelAlignment||(t.PortModelAlignment={}));class n extends s.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 r=o.getPointForPort(this);r.setPosition(r.getX()+e-i.x,r.getY()+t-i.y)})}doClone(e={},t){t.links={},t.parentNode=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 r.Point(this.getX()+this.width/2,this.getY()+this.height/2)}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},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LinkModel=void 0;const o=i(8),r=i(1),s=i(3),n=i(0);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 s.Polygon.boundingBoxFromPoints(r.map(this.points,e=>e.getPosition()))}getSelectionEntities(){return this.getTargetPort()&&this.getSourcePort()?super.getSelectionEntities().concat(r.slice(this.points,1,this.points.length-1)):this.getSourcePort()?this.getTargetPort()?super.getSelectionEntities().concat(this.points):super.getSelectionEntities().concat(r.slice(this.points,1,this.points.length)):super.getSelectionEntities().concat(r.slice(this.points,0,this.points.length-1))}deserialize(e){super.deserialize(e),this.points=r.map(e.data.points||[],t=>{var i=new o.PointModel({link:this,position:new s.Point(t.x,t.y)});return i.deserialize(Object.assign(Object.assign({},e),{data:t})),i}),r.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:r.map(this.points,e=>e.serialize()),labels:r.map(this.labels,e=>e.serialize())})}doClone(e={},t){t.setPoints(r.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),this.targetPort&&this.targetPort.removeLink(this),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")}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")}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){r.forEach(e,e=>{e.setParent(this)}),this.points=e}removePoint(e){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(0,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 s.Point(e,t)})}}t.LinkModel=a},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PointModel=void 0;const o=i(0);class r 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=r},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeLayerModel=void 0;const o=i(0),r=i(4);class s extends o.LayerModel{constructor(){super({type:"diagram-nodes",isSvg:!1,transformed:!0})}addModel(e){if(!(e instanceof r.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=s},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LinkLayerModel=void 0;const o=i(0),r=i(7);class s extends o.LayerModel{constructor(){super({type:"diagram-links",isSvg:!0,transformed:!0})}addModel(e){if(!(e instanceof r.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=s},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LinkWidget=void 0;const o=i(2),r=i(1),s=i(20),n=i(0);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),r.map(this.props.link.getLabels(),(e,t)=>o.createElement(s.LabelWidget,{key:e.getID(),engine:this.props.diagramEngine,label:e,index:t}))))}}t.LinkWidget=a},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LinkLayerWidget=void 0;const o=i(2),r=i(5),s=i(1),n=i(11);var a;!function(e){e.Container=r.default.div``}(a||(a={}));class d extends o.Component{render(){return o.createElement(o.Fragment,null,s.map(this.props.layer.getLinks(),e=>o.createElement(n.LinkWidget,{key:e.getID(),link:e,diagramEngine:this.props.engine})))}}t.LinkLayerWidget=d},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeLayerWidget=void 0;const o=i(2),r=i(5),s=i(1),n=i(14);var a;!function(e){e.Container=r.default.div``}(a||(a={}));class d extends o.Component{render(){return o.createElement(o.Fragment,null,s.map(this.props.layer.getNodes(),e=>o.createElement(n.NodeWidget,{key:e.getID(),diagramEngine:this.props.engine,node:e})))}}t.NodeLayerWidget=d},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeWidget=void 0;const o=i(2),r=i(1),s=i(0),n=i(5),a=i(22);var d;!function(e){e.Node=n.default.div` | ||
position: absolute; | ||
@@ -9,3 +9,3 @@ -webkit-touch-callout: none; /* iOS Safari */ | ||
pointer-events: all; | ||
`}(l||(l={}));class d extends s.Component{constructor(e){super(e),this.ref=s.createRef()}componentWillUnmount(){this.ob.disconnect(),this.ob=null,this.listener.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()}})}componentDidMount(){this.ob=new a.default(e=>{const t=e[0].contentRect;this.props.node.updateDimensions({width:t.width,height:t.height}),r.forEach(this.props.node.getPorts(),e=>{e.updateCoords(this.props.diagramEngine.getPortCoords(e))})}),this.ob.observe(this.ref.current),this.installSelectionListener()}render(){return s.createElement(o.PeformanceWidget,{model:this.props.node,serialized:this.props.node.serialize()},()=>s.createElement(l.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=d},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i(0),r=i(6);class o extends s.AbstractDisplacementState{constructor(e={}){super({name:"drag-new-link"}),this.config=Object.assign({allowLooseLinks:!0,allowLinksFromLockedPorts:!1},e),this.registerAction(new s.Action({type:s.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 s.Action({type:s.InputType.MOUSE_UP,fire:e=>{const t=this.engine.getMouseElement(e.event);if(t instanceof r.PortModel&&this.port.canLinkToPort(t))return this.link.setTargetPort(t),t.reportPosition(),void this.engine.repaintCanvas();!this.isNearbySourcePort(e.event)&&this.config.allowLooseLinks||(this.link.remove(),this.engine.repaintCanvas())}}))}isNearbySourcePort({clientX:e,clientY:t}){const i=this.link.getSourcePort(),s=this.link.getSourcePort().getPosition();return e>=s.x&&e<=s.x+i.width&&t>=s.y&&t<=s.y+i.height}fireMouseMoved(e){const t=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=t.x-s+(o-t.x)+e.virtualDisplacementX,l=t.y-r+(n-t.y)+e.virtualDisplacementY;this.link.getLastPoint().setPosition(a,l),this.engine.repaintCanvas()}}t.DragNewLinkState=o},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i(0),r=i(1),o=i(8),n=i(6);class a extends s.MoveItemsState{constructor(){super(),this.registerAction(new s.Action({type:s.InputType.MOUSE_UP,fire:e=>{const t=this.engine.getMouseElement(e.event);t instanceof n.PortModel&&r.forEach(this.initialPositions,e=>{if(e.item instanceof o.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},function(e,t,i){"use strict";function s(e){for(var i in e)t.hasOwnProperty(i)||(t[i]=e[i])}Object.defineProperty(t,"__esModule",{value:!0}),s(i(18)),s(i(19)),s(i(7)),s(i(8)),s(i(11)),s(i(10)),s(i(12)),s(i(21)),s(i(9)),s(i(13)),s(i(23)),s(i(4)),s(i(14)),s(i(6)),s(i(24)),s(i(25)),s(i(16)),s(i(15)),s(i(26))},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i(1),r=i(7),o=i(4),n=i(0),a=i(9),l=i(10);class d extends n.CanvasModel{constructor(e={}){super(e),this.addLayer(new l.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 l.LinkLayerModel&&(this.activeLinkLayer=e)}getLinkLayers(){return s.filter(this.layers,e=>e instanceof l.LinkLayerModel)}getNodeLayers(){return s.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 a.NodeLayerModel):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 s.forEach(e,e=>{e instanceof r.LinkModel?this.addLink(e):e instanceof o.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){s.some(this.getLinkLayers(),t=>t.removeModel(e))&&this.fireEvent({link:e,isCreated:!1},"linksUpdated")}removeNode(e){s.some(this.getNodeLayers(),t=>t.removeModel(e))&&this.fireEvent({node:e,isCreated:!1},"nodesUpdated")}getLinks(){return s.flatMap(this.getLinkLayers(),e=>s.values(e.getModels()))}getNodes(){return s.flatMap(this.getNodeLayers(),e=>s.values(e.getModels()))}}t.DiagramModel=d},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i(0);class r extends s.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=r},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i(2),r=i(5);var o;!function(e){e.Label=r.default.div` | ||
`}(d||(d={}));class l extends o.Component{constructor(e){super(e),this.ref=o.createRef()}componentWillUnmount(){this.ob.disconnect(),this.ob=null,this.listener.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()}})}componentDidMount(){this.ob=new a.default(e=>{const t=e[0].contentRect;this.props.node.updateDimensions({width:t.width,height:t.height}),r.forEach(this.props.node.getPorts(),e=>{e.updateCoords(this.props.diagramEngine.getPortCoords(e))})}),this.ob.observe(this.ref.current),this.installSelectionListener()}render(){return o.createElement(s.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},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DragNewLinkState=void 0;const o=i(0),r=i(6);class s 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 r.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,r=this.engine.getModel().getOffsetY()/i,s=this.initialXRelative/i,n=this.initialYRelative/i,a=t.x-o+(s-t.x)+e.virtualDisplacementX,d=t.y-r+(n-t.y)+e.virtualDisplacementY;this.link.getLastPoint().setPosition(a,d),this.engine.repaintCanvas()}}t.DragNewLinkState=s},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DragDiagramItemsState=void 0;const o=i(0),r=i(1),s=i(8),n=i(6);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&&r.forEach(this.initialPositions,e=>{if(e.item instanceof s.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},function(e,t,i){"use strict";var o=this&&this.__createBinding||(Object.create?function(e,t,i,o){void 0===o&&(o=i),Object.defineProperty(e,o,{enumerable:!0,get:function(){return t[i]}})}:function(e,t,i,o){void 0===o&&(o=i),e[o]=t[i]}),r=this&&this.__exportStar||function(e,t){for(var i in e)"default"===i||t.hasOwnProperty(i)||o(t,e,i)};Object.defineProperty(t,"__esModule",{value:!0}),r(i(18),t),r(i(19),t),r(i(7),t),r(i(8),t),r(i(11),t),r(i(10),t),r(i(12),t),r(i(21),t),r(i(9),t),r(i(13),t),r(i(23),t),r(i(4),t),r(i(14),t),r(i(6),t),r(i(24),t),r(i(25),t),r(i(16),t),r(i(15),t),r(i(26),t)},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DiagramModel=void 0;const o=i(1),r=i(7),s=i(4),n=i(0),a=i(9),d=i(10);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 a.NodeLayerModel):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 r.LinkModel?this.addLink(e):e instanceof s.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},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LabelModel=void 0;const o=i(0);class r 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=r},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LabelWidget=void 0;const o=i(2),r=i(5);var s;!function(e){e.Label=r.default.div` | ||
display: inline-block; | ||
@@ -16,3 +16,3 @@ position: absolute; | ||
overflow: visible; | ||
`}(o||(o={}));class n extends s.Component{constructor(e){super(e),this.findPathAndRelativePositionToRenderLabel=e=>{const t=this.props.label.getParent(),i=t.getRenderedPath().map(e=>e.getTotalLength());let s=i.reduce((e,t)=>e+t,0)*(e/(t.getLabels().length+1)),r=0;for(;r<t.getRenderedPath().length;){if(s-i[r]<0)return{path:t.getRenderedPath()[r],position:s};s-=i[r],r++}},this.calculateLabelPosition=()=>{const e=this.findPathAndRelativePositionToRenderLabel(this.props.index+1);if(!e)return;const{path:t,position:i}=e,s=this.ref.current.offsetWidth,r=this.ref.current.offsetHeight,o=t.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=s.createRef()}componentDidUpdate(){window.requestAnimationFrame(this.calculateLabelPosition)}componentDidMount(){window.requestAnimationFrame(this.calculateLabelPosition)}render(){const e=this.props.engine.getCanvas();return s.createElement(o.Foreign,{key:this.props.label.getID(),width:e.offsetWidth,height:e.offsetHeight},s.createElement(o.Label,{ref:this.ref},this.props.engine.getFactoryForLabel(this.props.label).generateReactWidget({model:this.props.label})))}}t.LabelWidget=n},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i(2),r=i(0),o=i(10),n=i(12);class a extends r.AbstractReactFactory{constructor(){super("diagram-links")}generateModel(e){return new o.LinkLayerModel}generateReactWidget(e){return s.createElement(n.LinkLayerWidget,{layer:e.model,engine:this.engine})}}t.LinkLayerFactory=a},function(e,t){e.exports=require("resize-observer-polyfill")},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i(2),r=i(0),o=i(9),n=i(13);class a extends r.AbstractReactFactory{constructor(){super("diagram-nodes")}generateModel(e){return new o.NodeLayerModel}generateReactWidget(e){return s.createElement(n.NodeLayerWidget,{layer:e.model,engine:this.engine})}}t.NodeLayerFactory=a},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i(2),r=i(1),o=i(0);class n extends s.Component{constructor(e){super(e),this.ref=s.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(o.Toolkit.TESTING){return{"data-links":r.keys(this.props.port.getNode().getPort(this.props.port.getName()).links).join(",")}}return{}}render(){return s.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},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i(0),r=i(6),o=i(15),n=i(16);class a extends s.State{constructor(){super({name:"default-diagrams"}),this.childStates=[new s.SelectingState],this.dragCanvas=new s.DragCanvasState,this.dragNewLink=new o.DragNewLinkState,this.dragItems=new n.DragDiagramItemsState,this.registerAction(new s.Action({type:s.InputType.MOUSE_DOWN,fire:e=>{const t=this.engine.getActionEventBus().getModelForEvent(e);t?t instanceof r.PortModel?this.transitionWithEvent(this.dragNewLink,e):this.transitionWithEvent(this.dragItems,e):this.transitionWithEvent(this.dragCanvas,e)}}))}}t.DefaultDiagramState=a},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0});const s=i(4),r=i(3),o=i(0);class n extends o.CanvasEngine{constructor(e={}){super(e),this.maxNumberPointsPerLink=1e3,this.nodeFactories=new o.FactoryBank,this.linkFactories=new o.FactoryBank,this.portFactories=new o.FactoryBank,this.labelFactories=new o.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,s=o.Toolkit.closest(t,".port[data-name]");if(s){var r=o.Toolkit.closest(t,".node[data-nodeid]");return i.getNode(r.getAttribute("data-nodeid")).getPort(s.getAttribute("data-name"))}return(s=o.Toolkit.closest(t,".point[data-id]"))?i.getLink(s.getAttribute("data-linkid")).getPointModel(s.getAttribute("data-id")):(s=o.Toolkit.closest(t,"[data-linkid]"))?i.getLink(s.getAttribute("data-linkid")):(s=o.Toolkit.closest(t,".node[data-nodeid]"))?i.getNode(s.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(),s=this.getRelativeMousePoint({clientX:i.left,clientY:i.top}),o=this.model.getZoomLevel()/100;return new r.Rectangle(s.x,s.y,i.width/o,i.height/o)}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,t){if(e){if(0===e.length)return new r.Rectangle(0,0,0,0);let i=r.Polygon.boundingBoxFromPolygons(e.map(e=>e.getBoundingBox()));return t?new r.Rectangle(i.getTopLeft().x-t,i.getTopLeft().y-t,i.getWidth()+2*t,i.getHeight()+2*t):i}}zoomToFitNodes(e){let t,i=this.model.getSelectedEntities().filter(e=>e instanceof s.NodeModel).map(e=>e);if(0==i.length){let i=this.model.getSelectionEntities().filter(e=>e instanceof s.NodeModel).map(e=>e);t=this.getBoundingNodesRect(i,e)}else t=this.getBoundingNodesRect(i,e);if(t){let e=this.canvas.getBoundingClientRect(),i={x:e.left,y:e.top},s={x:i.x+this.getModel().getOffsetX(),y:i.y+this.getModel().getOffsetY()};const r=this.canvas.clientWidth/t.getWidth(),o=this.canvas.clientHeight/t.getHeight(),n=r<o?r:o;this.model.setZoomLevel(100*n);let a={x:s.x+t.getTopLeft().x*n,y:s.y+t.getTopLeft().y*n};this.model.setOffset(this.model.getOffsetX()+i.x-a.x,this.model.getOffsetY()+i.y-a.y),this.repaintCanvas()}}getMaxNumberPointsPerLink(){return this.maxNumberPointsPerLink}setMaxNumberPointsPerLink(e){this.maxNumberPointsPerLink=e}}t.DiagramEngine=n}])})); | ||
`}(s||(s={}));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)),r=0;for(;r<t.getRenderedPath().length;){if(o-i[r]<0)return{path:t.getRenderedPath()[r],position:o};o-=i[r],r++}},this.calculateLabelPosition=()=>{const e=this.findPathAndRelativePositionToRenderLabel(this.props.index+1);if(!e)return;const{path:t,position:i}=e,o=this.ref.current.offsetWidth,r=this.ref.current.offsetHeight,s=t.getPointAtLength(i),n=s.x-o/2+this.props.label.getOptions().offsetX,a=s.y-r/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(s.Foreign,{key:this.props.label.getID(),width:e.offsetWidth,height:e.offsetHeight},o.createElement(s.Label,{ref:this.ref},this.props.engine.getFactoryForLabel(this.props.label).generateReactWidget({model:this.props.label})))}}t.LabelWidget=n},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.LinkLayerFactory=void 0;const o=i(2),r=i(0),s=i(10),n=i(12);class a extends r.AbstractReactFactory{constructor(){super("diagram-links")}generateModel(e){return new s.LinkLayerModel}generateReactWidget(e){return o.createElement(n.LinkLayerWidget,{layer:e.model,engine:this.engine})}}t.LinkLayerFactory=a},function(e,t){e.exports=require("resize-observer-polyfill")},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NodeLayerFactory=void 0;const o=i(2),r=i(0),s=i(9),n=i(13);class a extends r.AbstractReactFactory{constructor(){super("diagram-nodes")}generateModel(e){return new s.NodeLayerModel}generateReactWidget(e){return o.createElement(n.NodeLayerWidget,{layer:e.model,engine:this.engine})}}t.NodeLayerFactory=a},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PortWidget=void 0;const o=i(2),r=i(1),s=i(0);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(s.Toolkit.TESTING){return{"data-links":r.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},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DefaultDiagramState=void 0;const o=i(0),r=i(6),s=i(15),n=i(16);class a extends o.State{constructor(){super({name:"default-diagrams"}),this.childStates=[new o.SelectingState],this.dragCanvas=new o.DragCanvasState,this.dragNewLink=new s.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 r.PortModel?this.transitionWithEvent(this.dragNewLink,e):this.transitionWithEvent(this.dragItems,e):this.transitionWithEvent(this.dragCanvas,e)}}))}}t.DefaultDiagramState=a},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DiagramEngine=void 0;const o=i(4),r=i(3),s=i(0);class n extends s.CanvasEngine{constructor(e={}){super(e),this.maxNumberPointsPerLink=1e3,this.nodeFactories=new s.FactoryBank,this.linkFactories=new s.FactoryBank,this.portFactories=new s.FactoryBank,this.labelFactories=new s.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=s.Toolkit.closest(t,".port[data-name]");if(o){var r=s.Toolkit.closest(t,".node[data-nodeid]");return i.getNode(r.getAttribute("data-nodeid")).getPort(o.getAttribute("data-name"))}return(o=s.Toolkit.closest(t,".point[data-id]"))?i.getLink(o.getAttribute("data-linkid")).getPointModel(o.getAttribute("data-id")):(o=s.Toolkit.closest(t,"[data-linkid]"))?i.getLink(o.getAttribute("data-linkid")):(o=s.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}),s=this.model.getZoomLevel()/100;return new r.Rectangle(o.x,o.y,i.width/s,i.height/s)}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,t){if(e){if(0===e.length)return new r.Rectangle(0,0,0,0);let i=r.Polygon.boundingBoxFromPolygons(e.map(e=>e.getBoundingBox()));return t?new r.Rectangle(i.getTopLeft().x-t,i.getTopLeft().y-t,i.getWidth()+2*t,i.getHeight()+2*t):i}}zoomToFitNodes(e){let t,i=this.model.getSelectedEntities().filter(e=>e instanceof o.NodeModel).map(e=>e);if(0==i.length){let i=this.model.getSelectionEntities().filter(e=>e instanceof o.NodeModel).map(e=>e);t=this.getBoundingNodesRect(i,e)}else t=this.getBoundingNodesRect(i,e);if(t){let e=this.canvas.getBoundingClientRect(),i={x:e.left,y:e.top},o={x:i.x+this.getModel().getOffsetX(),y:i.y+this.getModel().getOffsetY()};const r=this.canvas.clientWidth/t.getWidth(),s=this.canvas.clientHeight/t.getHeight(),n=r<s?r:s;this.model.setZoomLevel(100*n);let a={x:o.x+t.getTopLeft().x*n,y:o.y+t.getTopLeft().y*n};this.model.setOffset(this.model.getOffsetX()+i.x-a.x,this.model.getOffsetY()+i.y-a.y),this.repaintCanvas()}}getMaxNumberPointsPerLink(){return this.maxNumberPointsPerLink}setMaxNumberPointsPerLink(e){this.maxNumberPointsPerLink=e}}t.DiagramEngine=n}])})); | ||
//# sourceMappingURL=index.js.map |
{ | ||
"name": "@projectstorm/react-diagrams-core", | ||
"version": "6.1.1", | ||
"version": "6.2.0", | ||
"author": "dylanvorster", | ||
@@ -34,4 +34,4 @@ "license": "MIT", | ||
"dependencies": { | ||
"@projectstorm/geometry": "^6.1.1", | ||
"@projectstorm/react-canvas-core": "^6.1.1" | ||
"@projectstorm/geometry": "^6.2.0", | ||
"@projectstorm/react-canvas-core": "^6.2.0" | ||
}, | ||
@@ -44,3 +44,3 @@ "peerDependencies": { | ||
}, | ||
"gitHead": "ef822f554008bd18e0e6225ff2f72fd483675574" | ||
"gitHead": "c5b24f6e7b0fce76e221b348d3f027e6144ef5cb" | ||
} |
@@ -41,6 +41,6 @@ import { NodeModel } from './entities/node/NodeModel'; | ||
factory.registerListener({ | ||
factoryAdded: event => { | ||
factoryAdded: (event) => { | ||
event.factory.setDiagramEngine(this); | ||
}, | ||
factoryRemoved: event => { | ||
factoryRemoved: (event) => { | ||
event.factory.setDiagramEngine(null); | ||
@@ -224,3 +224,3 @@ } | ||
let boundingBox = Polygon.boundingBoxFromPolygons(nodes.map(node => node.getBoundingBox())); | ||
let boundingBox = Polygon.boundingBoxFromPolygons(nodes.map((node) => node.getBoundingBox())); | ||
if (margin) { | ||
@@ -242,4 +242,4 @@ return new Rectangle( | ||
.getSelectedEntities() | ||
.filter(entity => entity instanceof NodeModel) | ||
.map(node => node) as NodeModel[]; | ||
.filter((entity) => entity instanceof NodeModel) | ||
.map((node) => node) as NodeModel[]; | ||
@@ -250,4 +250,4 @@ // no node selected | ||
.getSelectionEntities() | ||
.filter(entity => entity instanceof NodeModel) | ||
.map(node => node) as NodeModel[]; | ||
.filter((entity) => entity instanceof NodeModel) | ||
.map((node) => node) as NodeModel[]; | ||
@@ -254,0 +254,0 @@ // get nodes bounding box with margin |
@@ -79,3 +79,3 @@ import { PortModel } from '../port/PortModel'; | ||
super.deserialize(event); | ||
this.points = _.map(event.data.points || [], point => { | ||
this.points = _.map(event.data.points || [], (point) => { | ||
var p = new PointModel({ | ||
@@ -131,6 +131,6 @@ link: this, | ||
targetPort: this.targetPort ? this.targetPort.getID() : null, | ||
points: _.map(this.points, point => { | ||
points: _.map(this.points, (point) => { | ||
return point.serialize(); | ||
}), | ||
labels: _.map(this.labels, label => { | ||
labels: _.map(this.labels, (label) => { | ||
return label.serialize(); | ||
@@ -267,3 +267,3 @@ }) | ||
setPoints(points: PointModel[]) { | ||
_.forEach(points, point => { | ||
_.forEach(points, (point) => { | ||
point.setParent(this); | ||
@@ -270,0 +270,0 @@ }); |
@@ -49,3 +49,3 @@ import * as _ from 'lodash'; | ||
//also update the port co-ordinates (for make glorious speed) | ||
_.forEach(this.ports, port => { | ||
_.forEach(this.ports, (port) => { | ||
port.setPosition(port.getX() + x - old.x, port.getY() + y - old.y); | ||
@@ -74,3 +74,3 @@ }); | ||
...super.serialize(), | ||
ports: _.map(this.ports, port => { | ||
ports: _.map(this.ports, (port) => { | ||
return port.serialize(); | ||
@@ -84,3 +84,3 @@ }) | ||
clone.ports = {}; | ||
_.forEach(this.ports, port => { | ||
_.forEach(this.ports, (port) => { | ||
clone.addPort(port.clone(lookupTable)); | ||
@@ -92,4 +92,4 @@ }); | ||
super.remove(); | ||
_.forEach(this.ports, port => { | ||
_.forEach(port.getLinks(), link => { | ||
_.forEach(this.ports, (port) => { | ||
_.forEach(port.getLinks(), (link) => { | ||
link.remove(); | ||
@@ -96,0 +96,0 @@ }); |
@@ -67,3 +67,3 @@ import { NodeModel } from '../node/NodeModel'; | ||
parentNode: this.parent.getID(), | ||
links: _.map(this.links, link => { | ||
links: _.map(this.links, (link) => { | ||
return link.getID(); | ||
@@ -79,3 +79,3 @@ }) | ||
super.setPosition(x, y); | ||
_.forEach(this.getLinks(), link => { | ||
_.forEach(this.getLinks(), (link) => { | ||
let point = link.getPointForPort(this); | ||
@@ -132,3 +132,3 @@ point.setPosition(point.getX() + x - old.x, point.getY() + y - old.y); | ||
reportPosition() { | ||
_.forEach(this.getLinks(), link => { | ||
_.forEach(this.getLinks(), (link) => { | ||
link.getPointForPort(this).setPosition(this.getCenter()); | ||
@@ -135,0 +135,0 @@ }); |
@@ -52,3 +52,3 @@ import * as _ from 'lodash'; | ||
getLinkLayers(): LinkLayerModel[] { | ||
return _.filter(this.layers, layer => { | ||
return _.filter(this.layers, (layer) => { | ||
return layer instanceof LinkLayerModel; | ||
@@ -59,3 +59,3 @@ }) as LinkLayerModel[]; | ||
getNodeLayers(): NodeLayerModel[] { | ||
return _.filter(this.layers, layer => { | ||
return _.filter(this.layers, (layer) => { | ||
return layer instanceof NodeLayerModel; | ||
@@ -108,3 +108,3 @@ }) as NodeLayerModel[]; | ||
addAll(...models: BaseModel[]): BaseModel[] { | ||
_.forEach(models, model => { | ||
_.forEach(models, (model) => { | ||
if (model instanceof LinkModel) { | ||
@@ -138,3 +138,3 @@ this.addLink(model); | ||
removeLink(link: LinkModel) { | ||
const removed = _.some(this.getLinkLayers(), layer => { | ||
const removed = _.some(this.getLinkLayers(), (layer) => { | ||
return layer.removeModel(link); | ||
@@ -148,3 +148,3 @@ }); | ||
removeNode(node: NodeModel) { | ||
const removed = _.some(this.getNodeLayers(), layer => { | ||
const removed = _.some(this.getNodeLayers(), (layer) => { | ||
return layer.removeModel(node); | ||
@@ -158,3 +158,3 @@ }); | ||
getLinks(): LinkModel[] { | ||
return _.flatMap(this.getLinkLayers(), layer => { | ||
return _.flatMap(this.getLinkLayers(), (layer) => { | ||
return _.values(layer.getModels()); | ||
@@ -165,3 +165,3 @@ }); | ||
getNodes(): NodeModel[] { | ||
return _.flatMap(this.getNodeLayers(), layer => { | ||
return _.flatMap(this.getNodeLayers(), (layer) => { | ||
return _.values(layer.getModels()); | ||
@@ -168,0 +168,0 @@ }); |
@@ -18,3 +18,3 @@ import { Action, ActionEvent, InputType, MoveItemsState } from '@projectstorm/react-canvas-core'; | ||
if (item instanceof PortModel) { | ||
_.forEach(this.initialPositions, position => { | ||
_.forEach(this.initialPositions, (position) => { | ||
if (position.item instanceof PointModel) { | ||
@@ -21,0 +21,0 @@ const link = position.item.getParent() as LinkModel; |
@@ -68,3 +68,2 @@ import { | ||
const model = this.engine.getMouseElement(event.event); | ||
// check to see if we connected to a new port | ||
@@ -77,6 +76,10 @@ if (model instanceof PortModel) { | ||
return; | ||
} else { | ||
this.link.remove(); | ||
this.engine.repaintCanvas(); | ||
return; | ||
} | ||
} | ||
if (this.isNearbySourcePort(event.event) || !this.config.allowLooseLinks) { | ||
if (!this.config.allowLooseLinks) { | ||
this.link.remove(); | ||
@@ -91,17 +94,2 @@ this.engine.repaintCanvas(); | ||
/** | ||
* Checks whether the mouse event appears to happen in proximity of the link's source port | ||
* @param event | ||
*/ | ||
isNearbySourcePort({ clientX, clientY }: MouseEvent): boolean { | ||
const sourcePort = this.link.getSourcePort(); | ||
const sourcePortPosition = this.link.getSourcePort().getPosition(); | ||
return ( | ||
clientX >= sourcePortPosition.x && | ||
clientX <= sourcePortPosition.x + sourcePort.width && | ||
(clientY >= sourcePortPosition.y && clientY <= sourcePortPosition.y + sourcePort.height) | ||
); | ||
} | ||
/** | ||
* Calculates the link's far-end point position on mouse move. | ||
@@ -108,0 +96,0 @@ * In order to be as precise as possible the mouse initialXRelative & initialYRelative are taken into account as well |
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
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
296115
3792