@openchoreo/cell-diagram 1.2.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/README.md +115 -0
- package/dist/Diagram.esm.js +55 -0
- package/dist/Diagram.esm.js.map +1 -0
- package/dist/components/Cell/CellLink/CellLinkFactory.esm.js +19 -0
- package/dist/components/Cell/CellLink/CellLinkFactory.esm.js.map +1 -0
- package/dist/components/Cell/CellLink/CellLinkModel.esm.js +59 -0
- package/dist/components/Cell/CellLink/CellLinkModel.esm.js.map +1 -0
- package/dist/components/Cell/CellLink/CellLinkWidget.esm.js +217 -0
- package/dist/components/Cell/CellLink/CellLinkWidget.esm.js.map +1 -0
- package/dist/components/Cell/CellNode/CellFactory.esm.js +19 -0
- package/dist/components/Cell/CellNode/CellFactory.esm.js.map +1 -0
- package/dist/components/Cell/CellNode/CellModel.esm.js +73 -0
- package/dist/components/Cell/CellNode/CellModel.esm.js.map +1 -0
- package/dist/components/Cell/CellNode/CellWidget.esm.js +166 -0
- package/dist/components/Cell/CellNode/CellWidget.esm.js.map +1 -0
- package/dist/components/Cell/CellNode/styles.esm.js +149 -0
- package/dist/components/Cell/CellNode/styles.esm.js.map +1 -0
- package/dist/components/Cell/CellPort/CellPortFactory.esm.js +17 -0
- package/dist/components/Cell/CellPort/CellPortFactory.esm.js.map +1 -0
- package/dist/components/Cell/CellPort/CellPortModel.esm.js +18 -0
- package/dist/components/Cell/CellPort/CellPortModel.esm.js.map +1 -0
- package/dist/components/Cell/CellPort/CellPortWidget.esm.js +24 -0
- package/dist/components/Cell/CellPort/CellPortWidget.esm.js.map +1 -0
- package/dist/components/Cell/CellPort/styles.esm.js +13 -0
- package/dist/components/Cell/CellPort/styles.esm.js.map +1 -0
- package/dist/components/Cell/EmptyNode/EmptyFactory.esm.js +20 -0
- package/dist/components/Cell/EmptyNode/EmptyFactory.esm.js.map +1 -0
- package/dist/components/Cell/EmptyNode/EmptyModel.esm.js +25 -0
- package/dist/components/Cell/EmptyNode/EmptyModel.esm.js.map +1 -0
- package/dist/components/Cell/EmptyNode/EmptyWidget.esm.js +52 -0
- package/dist/components/Cell/EmptyNode/EmptyWidget.esm.js.map +1 -0
- package/dist/components/Cell/EmptyNode/styles.esm.js +12 -0
- package/dist/components/Cell/EmptyNode/styles.esm.js.map +1 -0
- package/dist/components/Cell/cell-util.esm.js +110 -0
- package/dist/components/Cell/cell-util.esm.js.map +1 -0
- package/dist/components/Component/ComponentLink/ComponentLinkFactory.esm.js +19 -0
- package/dist/components/Component/ComponentLink/ComponentLinkFactory.esm.js.map +1 -0
- package/dist/components/Component/ComponentLink/ComponentLinkModel.esm.js +20 -0
- package/dist/components/Component/ComponentLink/ComponentLinkModel.esm.js.map +1 -0
- package/dist/components/Component/ComponentLink/ComponentLinkWidget.esm.js +205 -0
- package/dist/components/Component/ComponentLink/ComponentLinkWidget.esm.js.map +1 -0
- package/dist/components/Component/ComponentNode/ComponentFactory.esm.js +20 -0
- package/dist/components/Component/ComponentNode/ComponentFactory.esm.js.map +1 -0
- package/dist/components/Component/ComponentNode/ComponentHead/ComponentHead.esm.js +97 -0
- package/dist/components/Component/ComponentNode/ComponentHead/ComponentHead.esm.js.map +1 -0
- package/dist/components/Component/ComponentNode/ComponentModel.esm.js +26 -0
- package/dist/components/Component/ComponentNode/ComponentModel.esm.js.map +1 -0
- package/dist/components/Component/ComponentNode/ComponentWidget.esm.js +158 -0
- package/dist/components/Component/ComponentNode/ComponentWidget.esm.js.map +1 -0
- package/dist/components/Component/ComponentNode/styles.esm.js +102 -0
- package/dist/components/Component/ComponentNode/styles.esm.js.map +1 -0
- package/dist/components/Component/ComponentPort/ComponentPortFactory.esm.js +17 -0
- package/dist/components/Component/ComponentPort/ComponentPortFactory.esm.js.map +1 -0
- package/dist/components/Component/ComponentPort/ComponentPortModel.esm.js +18 -0
- package/dist/components/Component/ComponentPort/ComponentPortModel.esm.js.map +1 -0
- package/dist/components/Component/ComponentPort/ComponentPortWidget.esm.js +24 -0
- package/dist/components/Component/ComponentPort/ComponentPortWidget.esm.js.map +1 -0
- package/dist/components/Component/ComponentPort/styles.esm.js +16 -0
- package/dist/components/Component/ComponentPort/styles.esm.js.map +1 -0
- package/dist/components/Component/component-node-util.esm.js +15 -0
- package/dist/components/Component/component-node-util.esm.js.map +1 -0
- package/dist/components/Connection/ConnectionNode/ConnectionFactory.esm.js +20 -0
- package/dist/components/Connection/ConnectionNode/ConnectionFactory.esm.js.map +1 -0
- package/dist/components/Connection/ConnectionNode/ConnectionHead/ConnectionHead.esm.js +68 -0
- package/dist/components/Connection/ConnectionNode/ConnectionHead/ConnectionHead.esm.js.map +1 -0
- package/dist/components/Connection/ConnectionNode/ConnectionModel.esm.js +29 -0
- package/dist/components/Connection/ConnectionNode/ConnectionModel.esm.js.map +1 -0
- package/dist/components/Connection/ConnectionNode/ConnectionWidget.esm.js +51 -0
- package/dist/components/Connection/ConnectionNode/ConnectionWidget.esm.js.map +1 -0
- package/dist/components/Connection/ConnectionNode/styles.esm.js +64 -0
- package/dist/components/Connection/ConnectionNode/styles.esm.js.map +1 -0
- package/dist/components/Connection/ConnectionPort/ConnectionPortFactory.esm.js +17 -0
- package/dist/components/Connection/ConnectionPort/ConnectionPortFactory.esm.js.map +1 -0
- package/dist/components/Connection/ConnectionPort/ConnectionPortModel.esm.js +18 -0
- package/dist/components/Connection/ConnectionPort/ConnectionPortModel.esm.js.map +1 -0
- package/dist/components/Connection/ConnectionPort/ConnectionPortWidget.esm.js +24 -0
- package/dist/components/Connection/ConnectionPort/ConnectionPortWidget.esm.js.map +1 -0
- package/dist/components/Connection/ConnectionPort/styles.esm.js +13 -0
- package/dist/components/Connection/ConnectionPort/styles.esm.js.map +1 -0
- package/dist/components/Connection/connection-node-util.esm.js +12 -0
- package/dist/components/Connection/connection-node-util.esm.js.map +1 -0
- package/dist/components/Controls/ControlButtons/ControlButton.esm.js +54 -0
- package/dist/components/Controls/ControlButtons/ControlButton.esm.js.map +1 -0
- package/dist/components/Controls/ControlButtons/style.esm.js +19 -0
- package/dist/components/Controls/ControlButtons/style.esm.js.map +1 -0
- package/dist/components/Controls/DiagramControls.esm.js +88 -0
- package/dist/components/Controls/DiagramControls.esm.js.map +1 -0
- package/dist/components/Controls/DiagramLayers.esm.js +166 -0
- package/dist/components/Controls/DiagramLayers.esm.js.map +1 -0
- package/dist/components/Controls/DiagramLegend.esm.js +242 -0
- package/dist/components/Controls/DiagramLegend.esm.js.map +1 -0
- package/dist/components/Controls/LayerButton.esm.js +96 -0
- package/dist/components/Controls/LayerButton.esm.js.map +1 -0
- package/dist/components/DiagramContext/DiagramContext.esm.js +47 -0
- package/dist/components/DiagramContext/DiagramContext.esm.js.map +1 -0
- package/dist/components/External/ExternalLink/ExternalLinkFactory.esm.js +19 -0
- package/dist/components/External/ExternalLink/ExternalLinkFactory.esm.js.map +1 -0
- package/dist/components/External/ExternalLink/ExternalLinkModel.esm.js +112 -0
- package/dist/components/External/ExternalLink/ExternalLinkModel.esm.js.map +1 -0
- package/dist/components/External/ExternalLink/ExternalLinkWidget.esm.js +68 -0
- package/dist/components/External/ExternalLink/ExternalLinkWidget.esm.js.map +1 -0
- package/dist/components/External/ExternalNode/ExternalFactory.esm.js +20 -0
- package/dist/components/External/ExternalNode/ExternalFactory.esm.js.map +1 -0
- package/dist/components/External/ExternalNode/ExternalModel.esm.js +20 -0
- package/dist/components/External/ExternalNode/ExternalModel.esm.js.map +1 -0
- package/dist/components/External/ExternalNode/ExternalWidget.esm.js +40 -0
- package/dist/components/External/ExternalNode/ExternalWidget.esm.js.map +1 -0
- package/dist/components/External/ExternalNode/styles.esm.js +9 -0
- package/dist/components/External/ExternalNode/styles.esm.js.map +1 -0
- package/dist/components/External/external-node-util.esm.js +12 -0
- package/dist/components/External/external-node-util.esm.js.map +1 -0
- package/dist/components/Header/Header.esm.js +17 -0
- package/dist/components/Header/Header.esm.js.map +1 -0
- package/dist/components/MoreVertMenu/MoreVertMenu.esm.js +81 -0
- package/dist/components/MoreVertMenu/MoreVertMenu.esm.js.map +1 -0
- package/dist/components/ObservationLabel/ObservationLabel.esm.js +102 -0
- package/dist/components/ObservationLabel/ObservationLabel.esm.js.map +1 -0
- package/dist/components/OverlayLoader/OverlayLayerFactory.esm.js +19 -0
- package/dist/components/OverlayLoader/OverlayLayerFactory.esm.js.map +1 -0
- package/dist/components/OverlayLoader/OverlayLayerModel.esm.js +15 -0
- package/dist/components/OverlayLoader/OverlayLayerModel.esm.js.map +1 -0
- package/dist/components/OverlayLoader/OverlayLayerWidget.esm.js +28 -0
- package/dist/components/OverlayLoader/OverlayLayerWidget.esm.js.map +1 -0
- package/dist/components/Project/AdvancedLink/AdvancedLinkFactory.esm.js +69 -0
- package/dist/components/Project/AdvancedLink/AdvancedLinkFactory.esm.js.map +1 -0
- package/dist/components/Project/AdvancedLink/AdvancedLinkModel.esm.js +162 -0
- package/dist/components/Project/AdvancedLink/AdvancedLinkModel.esm.js.map +1 -0
- package/dist/components/Project/AdvancedLink/AdvancedLinkPointWidget.esm.js +45 -0
- package/dist/components/Project/AdvancedLink/AdvancedLinkPointWidget.esm.js.map +1 -0
- package/dist/components/Project/AdvancedLink/AdvancedLinkSegmentWidget.esm.js +46 -0
- package/dist/components/Project/AdvancedLink/AdvancedLinkSegmentWidget.esm.js.map +1 -0
- package/dist/components/Project/AdvancedLink/AdvancedLinkWidget.esm.js +149 -0
- package/dist/components/Project/AdvancedLink/AdvancedLinkWidget.esm.js.map +1 -0
- package/dist/components/Project/ProjectLink/ProjectLinkFactory.esm.js +20 -0
- package/dist/components/Project/ProjectLink/ProjectLinkFactory.esm.js.map +1 -0
- package/dist/components/Project/ProjectLink/ProjectLinkModel.esm.js +20 -0
- package/dist/components/Project/ProjectLink/ProjectLinkModel.esm.js.map +1 -0
- package/dist/components/Project/ProjectLink/ProjectLinkWidget.esm.js +94 -0
- package/dist/components/Project/ProjectLink/ProjectLinkWidget.esm.js.map +1 -0
- package/dist/components/Project/ProjectNode/ProjectFactory.esm.js +20 -0
- package/dist/components/Project/ProjectNode/ProjectFactory.esm.js.map +1 -0
- package/dist/components/Project/ProjectNode/ProjectHeadWidget/ProjectHeadWidget.esm.js +68 -0
- package/dist/components/Project/ProjectNode/ProjectHeadWidget/ProjectHeadWidget.esm.js.map +1 -0
- package/dist/components/Project/ProjectNode/ProjectModel.esm.js +56 -0
- package/dist/components/Project/ProjectNode/ProjectModel.esm.js.map +1 -0
- package/dist/components/Project/ProjectNode/ProjectWidget.esm.js +111 -0
- package/dist/components/Project/ProjectNode/ProjectWidget.esm.js.map +1 -0
- package/dist/components/Project/ProjectNode/styles.esm.js +66 -0
- package/dist/components/Project/ProjectNode/styles.esm.js.map +1 -0
- package/dist/components/Project/ProjectPort/ProjectPortFactory.esm.js +17 -0
- package/dist/components/Project/ProjectPort/ProjectPortFactory.esm.js.map +1 -0
- package/dist/components/Project/ProjectPort/ProjectPortModel.esm.js +18 -0
- package/dist/components/Project/ProjectPort/ProjectPortModel.esm.js.map +1 -0
- package/dist/components/Project/ProjectPort/ProjectPortWidget.esm.js +26 -0
- package/dist/components/Project/ProjectPort/ProjectPortWidget.esm.js.map +1 -0
- package/dist/components/Project/ProjectPort/styles.esm.js +38 -0
- package/dist/components/Project/ProjectPort/styles.esm.js.map +1 -0
- package/dist/components/PromptScreen/PromptScreen.esm.js +30 -0
- package/dist/components/PromptScreen/PromptScreen.esm.js.map +1 -0
- package/dist/components/SharedLink/SharedLink.esm.js +175 -0
- package/dist/components/SharedLink/SharedLink.esm.js.map +1 -0
- package/dist/components/SharedNode/SharedNode.esm.js +44 -0
- package/dist/components/SharedNode/SharedNode.esm.js.map +1 -0
- package/dist/components/TooltipLabel/TooltipLabel.esm.js +22 -0
- package/dist/components/TooltipLabel/TooltipLabel.esm.js.map +1 -0
- package/dist/diagrams/OrgDiagram.esm.js +176 -0
- package/dist/diagrams/OrgDiagram.esm.js.map +1 -0
- package/dist/diagrams/ProjectDiagram.esm.js +251 -0
- package/dist/diagrams/ProjectDiagram.esm.js.map +1 -0
- package/dist/hooks/useActiveLayers.esm.js +27 -0
- package/dist/hooks/useActiveLayers.esm.js.map +1 -0
- package/dist/index.d.ts +407 -0
- package/dist/index.esm.js +4 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/renderDiagram.esm.js +11 -0
- package/dist/renderDiagram.esm.js.map +1 -0
- package/dist/resources/Dagre/DagreEngine.esm.js +178 -0
- package/dist/resources/Dagre/DagreEngine.esm.js.map +1 -0
- package/dist/resources/assets/font/Gilmer-Bold.ttf +0 -0
- package/dist/resources/assets/font/Gilmer-Bold.woff +0 -0
- package/dist/resources/assets/font/Gilmer-Bold.woff2 +0 -0
- package/dist/resources/assets/font/Gilmer-Medium.ttf +0 -0
- package/dist/resources/assets/font/Gilmer-Medium.woff +0 -0
- package/dist/resources/assets/font/Gilmer-Medium.woff2 +0 -0
- package/dist/resources/assets/font/Gilmer-Regular.ttf +0 -0
- package/dist/resources/assets/font/Gilmer-Regular.woff +0 -0
- package/dist/resources/assets/font/Gilmer-Regular.woff2 +0 -0
- package/dist/resources/assets/font/fonts.esm.js +57 -0
- package/dist/resources/assets/font/fonts.esm.js.map +1 -0
- package/dist/resources/assets/icons/AddCheckIcon.esm.js +22 -0
- package/dist/resources/assets/icons/AddCheckIcon.esm.js.map +1 -0
- package/dist/resources/assets/icons/AddIcon.esm.js +16 -0
- package/dist/resources/assets/icons/AddIcon.esm.js.map +1 -0
- package/dist/resources/assets/icons/CodeIcon.esm.js +26 -0
- package/dist/resources/assets/icons/CodeIcon.esm.js.map +1 -0
- package/dist/resources/assets/icons/ConnectionIcon.esm.js +22 -0
- package/dist/resources/assets/icons/ConnectionIcon.esm.js.map +1 -0
- package/dist/resources/assets/icons/DatabaseIcon.esm.js +23 -0
- package/dist/resources/assets/icons/DatabaseIcon.esm.js.map +1 -0
- package/dist/resources/assets/icons/DebugIcon.esm.js +25 -0
- package/dist/resources/assets/icons/DebugIcon.esm.js.map +1 -0
- package/dist/resources/assets/icons/DiagramIcon.esm.js +22 -0
- package/dist/resources/assets/icons/DiagramIcon.esm.js.map +1 -0
- package/dist/resources/assets/icons/DiffIcon.esm.js +22 -0
- package/dist/resources/assets/icons/DiffIcon.esm.js.map +1 -0
- package/dist/resources/assets/icons/EventIcon.esm.js +22 -0
- package/dist/resources/assets/icons/EventIcon.esm.js.map +1 -0
- package/dist/resources/assets/icons/ExternalConsumerIcon.esm.js +36 -0
- package/dist/resources/assets/icons/ExternalConsumerIcon.esm.js.map +1 -0
- package/dist/resources/assets/icons/FitScreenIcon.esm.js +22 -0
- package/dist/resources/assets/icons/FitScreenIcon.esm.js.map +1 -0
- package/dist/resources/assets/icons/FullScreenIcon.esm.js +22 -0
- package/dist/resources/assets/icons/FullScreenIcon.esm.js.map +1 -0
- package/dist/resources/assets/icons/GatewayIcon.esm.js +22 -0
- package/dist/resources/assets/icons/GatewayIcon.esm.js.map +1 -0
- package/dist/resources/assets/icons/InfoIcon.esm.js +22 -0
- package/dist/resources/assets/icons/InfoIcon.esm.js.map +1 -0
- package/dist/resources/assets/icons/LayersIcon.esm.js +28 -0
- package/dist/resources/assets/icons/LayersIcon.esm.js.map +1 -0
- package/dist/resources/assets/icons/ManualTaskIcon.esm.js +22 -0
- package/dist/resources/assets/icons/ManualTaskIcon.esm.js.map +1 -0
- package/dist/resources/assets/icons/MoreVertIcon.esm.js +18 -0
- package/dist/resources/assets/icons/MoreVertIcon.esm.js.map +1 -0
- package/dist/resources/assets/icons/ObservationIcon.esm.js +22 -0
- package/dist/resources/assets/icons/ObservationIcon.esm.js.map +1 -0
- package/dist/resources/assets/icons/ProxyIcon.esm.js +22 -0
- package/dist/resources/assets/icons/ProxyIcon.esm.js.map +1 -0
- package/dist/resources/assets/icons/RefreshIcon.esm.js +22 -0
- package/dist/resources/assets/icons/RefreshIcon.esm.js.map +1 -0
- package/dist/resources/assets/icons/RemoveIcon.esm.js +16 -0
- package/dist/resources/assets/icons/RemoveIcon.esm.js.map +1 -0
- package/dist/resources/assets/icons/ScheduledTaskIcon.esm.js +22 -0
- package/dist/resources/assets/icons/ScheduledTaskIcon.esm.js.map +1 -0
- package/dist/resources/assets/icons/ServiceIcon.esm.js +24 -0
- package/dist/resources/assets/icons/ServiceIcon.esm.js.map +1 -0
- package/dist/resources/assets/icons/SettingsIcon.esm.js +38 -0
- package/dist/resources/assets/icons/SettingsIcon.esm.js.map +1 -0
- package/dist/resources/assets/icons/WarningIcon.esm.js +32 -0
- package/dist/resources/assets/icons/WarningIcon.esm.js.map +1 -0
- package/dist/resources/assets/icons/WebAppIcon.esm.js +45 -0
- package/dist/resources/assets/icons/WebAppIcon.esm.js.map +1 -0
- package/dist/resources/assets/icons/WebhookIcon.esm.js +22 -0
- package/dist/resources/assets/icons/WebhookIcon.esm.js.map +1 -0
- package/dist/resources/assets/icons/index.esm.js +38 -0
- package/dist/resources/assets/icons/index.esm.js.map +1 -0
- package/dist/resources/assets/icons/lang/BallerinaIcon.esm.js +24 -0
- package/dist/resources/assets/icons/lang/BallerinaIcon.esm.js.map +1 -0
- package/dist/resources/assets/icons/lang/DockerIcon.esm.js +24 -0
- package/dist/resources/assets/icons/lang/DockerIcon.esm.js.map +1 -0
- package/dist/resources/assets/icons/lang/GoIcon.esm.js +24 -0
- package/dist/resources/assets/icons/lang/GoIcon.esm.js.map +1 -0
- package/dist/resources/assets/icons/lang/JavaIcon.esm.js +54 -0
- package/dist/resources/assets/icons/lang/JavaIcon.esm.js.map +1 -0
- package/dist/resources/assets/icons/lang/MIIcon.esm.js +75 -0
- package/dist/resources/assets/icons/lang/MIIcon.esm.js.map +1 -0
- package/dist/resources/assets/icons/lang/NodeJsIcon.esm.js +33 -0
- package/dist/resources/assets/icons/lang/NodeJsIcon.esm.js.map +1 -0
- package/dist/resources/assets/icons/lang/PhpIcon.esm.js +74 -0
- package/dist/resources/assets/icons/lang/PhpIcon.esm.js.map +1 -0
- package/dist/resources/assets/icons/lang/PythonIcon.esm.js +67 -0
- package/dist/resources/assets/icons/lang/PythonIcon.esm.js.map +1 -0
- package/dist/resources/assets/icons/lang/RubyIcon.esm.js +26 -0
- package/dist/resources/assets/icons/lang/RubyIcon.esm.js.map +1 -0
- package/dist/resources/assets/icons/lang/RustIcon.esm.js +46 -0
- package/dist/resources/assets/icons/lang/RustIcon.esm.js.map +1 -0
- package/dist/resources/constants.esm.js +44 -0
- package/dist/resources/constants.esm.js.map +1 -0
- package/dist/theme/CellDiagramThemeProvider.esm.js +37 -0
- package/dist/theme/CellDiagramThemeProvider.esm.js.map +1 -0
- package/dist/theme/ThemeContext.esm.js +14 -0
- package/dist/theme/ThemeContext.esm.js.map +1 -0
- package/dist/theme/colors.esm.js +50 -0
- package/dist/theme/colors.esm.js.map +1 -0
- package/dist/types.esm.js +30 -0
- package/dist/types.esm.js.map +1 -0
- package/dist/utils/CanvasStyles.esm.js +67 -0
- package/dist/utils/CanvasStyles.esm.js.map +1 -0
- package/dist/utils/diagramUtils.esm.js +151 -0
- package/dist/utils/diagramUtils.esm.js.map +1 -0
- package/dist/utils/orgUtils.esm.js +119 -0
- package/dist/utils/orgUtils.esm.js.map +1 -0
- package/dist/utils/projectUtils.esm.js +969 -0
- package/dist/utils/projectUtils.esm.js.map +1 -0
- package/package.json +86 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,407 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { BaseModelOptions, DeserializeEvent, BaseEvent } from '@projectstorm/react-canvas-core';
|
|
3
|
+
import { DefaultLinkModel, DiagramEngine, NodeModel, NodeModelGenerics, PortModel, DefaultPortModel, PortModelAlignment } from '@projectstorm/react-diagrams';
|
|
4
|
+
import { LinkModel, PortModel as PortModel$1, PointModel, LabelModel, PointModelGenerics } from '@projectstorm/react-diagrams-core';
|
|
5
|
+
import { DefaultLinkModelGenerics } from '@projectstorm/react-diagrams-defaults';
|
|
6
|
+
|
|
7
|
+
declare class SharedLinkModel extends DefaultLinkModel {
|
|
8
|
+
diagramEngine: DiagramEngine;
|
|
9
|
+
observations: Observations[];
|
|
10
|
+
observationOnly: boolean;
|
|
11
|
+
tooltip: string;
|
|
12
|
+
constructor(id: string, type: string);
|
|
13
|
+
initLinks: (diagramEngine: DiagramEngine) => void;
|
|
14
|
+
fireEventTroughLink: (event: string) => void;
|
|
15
|
+
selectLinkedNodes: () => void;
|
|
16
|
+
resetLinkedNodes: () => void;
|
|
17
|
+
getCurvePath: () => string;
|
|
18
|
+
getArrowHeadPoints: (scale?: number) => string;
|
|
19
|
+
setObservations: (observations: Observations[], observationOnly?: boolean) => void;
|
|
20
|
+
setTooltip: (tooltip: string) => void;
|
|
21
|
+
getMidPoint: () => {
|
|
22
|
+
x: number;
|
|
23
|
+
y: number;
|
|
24
|
+
};
|
|
25
|
+
scaleValueToLinkWidth: (requestCount: number, minRequestCount: number, maxRequestCount: number, maxPossibleRequestCount?: number, minStrokeWidth?: number, maxFullStrokeWidth?: number) => number;
|
|
26
|
+
getLinkArrowId: () => string;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
interface LinkOrigins$2 {
|
|
30
|
+
nodeId: string;
|
|
31
|
+
}
|
|
32
|
+
declare class ComponentLinkModel extends SharedLinkModel {
|
|
33
|
+
sourceNode: LinkOrigins$2;
|
|
34
|
+
targetNode: LinkOrigins$2;
|
|
35
|
+
constructor(id: string);
|
|
36
|
+
setSourceNode(nodeId: string): void;
|
|
37
|
+
setTargetNode(nodeId: string): void;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
declare class SharedNodeModel extends NodeModel<NodeModelGenerics> {
|
|
41
|
+
constructor(type: string, id: string);
|
|
42
|
+
handleHover: (ports: PortModel[], task: string) => void;
|
|
43
|
+
isNodeSelected: (selectedLink: ComponentLinkModel, portIdentifier: string) => boolean;
|
|
44
|
+
getDynamicLineWidth: (zoomLevel: number, minWidth?: number, maxWidth?: number) => number;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
declare class ProjectPortModel extends DefaultPortModel {
|
|
48
|
+
constructor(id: string, portType: PortModelAlignment);
|
|
49
|
+
isLocked(): boolean;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
declare class ProjectModel extends SharedNodeModel {
|
|
53
|
+
readonly project: Project;
|
|
54
|
+
constructor(project: Project);
|
|
55
|
+
getPort(name: string): ProjectPortModel;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
interface AdvancedLinkModelOptions extends BaseModelOptions {
|
|
59
|
+
width?: number;
|
|
60
|
+
color?: string;
|
|
61
|
+
selectedColor?: string;
|
|
62
|
+
curvyness?: number;
|
|
63
|
+
type?: string;
|
|
64
|
+
testName?: string;
|
|
65
|
+
receiver?: string;
|
|
66
|
+
}
|
|
67
|
+
declare class AdvancedLinkModel extends LinkModel<DefaultLinkModelGenerics> {
|
|
68
|
+
linkYOffset: number;
|
|
69
|
+
linkXOffset: number;
|
|
70
|
+
constructor(options?: AdvancedLinkModelOptions);
|
|
71
|
+
calculateControlOffset(port: PortModel$1): [number, number];
|
|
72
|
+
getSVGPath(): string;
|
|
73
|
+
getSVGPathSegment(firstPoint: PointModel, lastPoint: PointModel): string;
|
|
74
|
+
calculateControlOffsetWithPosition(rightTraget: boolean, bottomTarget: boolean): [number, number];
|
|
75
|
+
serialize(): {
|
|
76
|
+
width: number | undefined;
|
|
77
|
+
color: string | undefined;
|
|
78
|
+
curvyness: number | undefined;
|
|
79
|
+
selectedColor: string | undefined;
|
|
80
|
+
source: string;
|
|
81
|
+
sourcePort: string;
|
|
82
|
+
target: string;
|
|
83
|
+
targetPort: string;
|
|
84
|
+
points: {
|
|
85
|
+
x: number;
|
|
86
|
+
y: number;
|
|
87
|
+
type: string;
|
|
88
|
+
selected: boolean;
|
|
89
|
+
extras: any;
|
|
90
|
+
id: string;
|
|
91
|
+
locked: boolean;
|
|
92
|
+
}[];
|
|
93
|
+
labels: {
|
|
94
|
+
offsetX: number;
|
|
95
|
+
offsetY: number;
|
|
96
|
+
type: string;
|
|
97
|
+
selected: boolean;
|
|
98
|
+
extras: any;
|
|
99
|
+
id: string;
|
|
100
|
+
locked: boolean;
|
|
101
|
+
}[];
|
|
102
|
+
type: string;
|
|
103
|
+
selected: boolean;
|
|
104
|
+
extras: any;
|
|
105
|
+
id: string;
|
|
106
|
+
locked: boolean;
|
|
107
|
+
};
|
|
108
|
+
deserialize(event: DeserializeEvent<this>): void;
|
|
109
|
+
addLabel(label: LabelModel | string): void;
|
|
110
|
+
setWidth(width: number): void;
|
|
111
|
+
setColor(color: string): void;
|
|
112
|
+
addPoint<P extends PointModel<PointModelGenerics>>(): P;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
declare class ComponentModel extends SharedNodeModel {
|
|
116
|
+
readonly component: Component;
|
|
117
|
+
constructor(component: Component);
|
|
118
|
+
isExternalConsumer(): boolean;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
declare enum Orientation {
|
|
122
|
+
VERTICAL = "vertical",
|
|
123
|
+
HORIZONTAL = "horizontal"
|
|
124
|
+
}
|
|
125
|
+
declare class ConnectionModel extends SharedNodeModel {
|
|
126
|
+
readonly connection: Connection;
|
|
127
|
+
readonly orientation: Orientation;
|
|
128
|
+
constructor(connection: Connection, orientation?: Orientation);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
declare enum CellBounds {
|
|
132
|
+
NorthBound = "nb",
|
|
133
|
+
SouthBound = "sb",
|
|
134
|
+
EastBound = "eb",
|
|
135
|
+
WestBound = "wb"
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
interface LinkOrigins$1 {
|
|
139
|
+
nodeId: string;
|
|
140
|
+
}
|
|
141
|
+
declare class CellLinkModel extends SharedLinkModel {
|
|
142
|
+
sourceNode: LinkOrigins$1;
|
|
143
|
+
targetNode: LinkOrigins$1;
|
|
144
|
+
isExternalConsumerLink: boolean;
|
|
145
|
+
destinationNode: ComponentModel;
|
|
146
|
+
constructor(id: string);
|
|
147
|
+
setIsExternalConsumerLink(isExternalConsumerLink: boolean): void;
|
|
148
|
+
setDestinationNode(destinationNode: ComponentModel): void;
|
|
149
|
+
setSourceNode(nodeId: string): void;
|
|
150
|
+
setTargetNode(nodeId: string): void;
|
|
151
|
+
getDestinationNode(): ComponentModel;
|
|
152
|
+
getIsExternalConsumerLink(): boolean;
|
|
153
|
+
getArrowHeadPoints: (scale?: number) => string;
|
|
154
|
+
showArrowHead: () => boolean;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
declare class EmptyModel extends SharedNodeModel {
|
|
158
|
+
readonly bound: CellBounds;
|
|
159
|
+
readonly width: number;
|
|
160
|
+
constructor(bound: CellBounds, width?: number, suffix?: string);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
declare class ExternalModel extends SharedNodeModel {
|
|
164
|
+
constructor(id: string);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
interface LinkOrigins {
|
|
168
|
+
nodeId: string;
|
|
169
|
+
}
|
|
170
|
+
declare class ExternalLinkModel extends SharedLinkModel {
|
|
171
|
+
sourceNode: LinkOrigins;
|
|
172
|
+
targetNode: LinkOrigins;
|
|
173
|
+
withRightOffset: boolean;
|
|
174
|
+
constructor(id: string, withRightOffset?: boolean);
|
|
175
|
+
setSourceNode(nodeId: string): void;
|
|
176
|
+
setTargetNode(nodeId: string): void;
|
|
177
|
+
getArrowHeadPoints: () => string;
|
|
178
|
+
getCurvePath: () => string;
|
|
179
|
+
getCurvePathWithOffset: () => string;
|
|
180
|
+
getTwoBendPath: () => string;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
interface Organization {
|
|
184
|
+
id: string;
|
|
185
|
+
name: string;
|
|
186
|
+
projects: Project[];
|
|
187
|
+
configurations?: Connection[];
|
|
188
|
+
modelVersion: string;
|
|
189
|
+
}
|
|
190
|
+
interface Project {
|
|
191
|
+
id: string;
|
|
192
|
+
name: string;
|
|
193
|
+
components: Component[];
|
|
194
|
+
connections?: OrgConnection[];
|
|
195
|
+
configurations?: Connection[];
|
|
196
|
+
modelVersion?: string;
|
|
197
|
+
}
|
|
198
|
+
declare enum ComponentType {
|
|
199
|
+
SERVICE = "service",
|
|
200
|
+
WEB_APP = "web-app",
|
|
201
|
+
SCHEDULED_TASK = "scheduled-task",
|
|
202
|
+
MANUAL_TASK = "manual-task",
|
|
203
|
+
API_PROXY = "api-proxy",
|
|
204
|
+
WEB_HOOK = "web-hook",
|
|
205
|
+
EVENT_HANDLER = "event-handler",
|
|
206
|
+
TEST = "test",
|
|
207
|
+
EXTERNAL_CONSUMER = "external-consumer",
|
|
208
|
+
SYSTEM_COMPONENT = "system"
|
|
209
|
+
}
|
|
210
|
+
type ExternalConsumerLinkSelectEvent = BaseEvent & {
|
|
211
|
+
cellBound: CellBounds;
|
|
212
|
+
};
|
|
213
|
+
interface Component {
|
|
214
|
+
id: string;
|
|
215
|
+
label?: string;
|
|
216
|
+
version: string;
|
|
217
|
+
type: ComponentType;
|
|
218
|
+
buildPack?: string;
|
|
219
|
+
services: Services;
|
|
220
|
+
connections: Connection[];
|
|
221
|
+
disabled?: {
|
|
222
|
+
status: boolean;
|
|
223
|
+
reason?: string;
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
interface Services {
|
|
227
|
+
[key: string]: Service;
|
|
228
|
+
}
|
|
229
|
+
interface Service {
|
|
230
|
+
id: string;
|
|
231
|
+
label?: string;
|
|
232
|
+
type: string;
|
|
233
|
+
dependencyIds: string[];
|
|
234
|
+
deploymentMetadata?: DeploymentMetadata;
|
|
235
|
+
}
|
|
236
|
+
interface Connection {
|
|
237
|
+
id: string;
|
|
238
|
+
label?: string;
|
|
239
|
+
type?: ConnectionType;
|
|
240
|
+
onPlatform?: boolean;
|
|
241
|
+
tooltip?: string;
|
|
242
|
+
observations?: Observations[];
|
|
243
|
+
observationOnly?: boolean;
|
|
244
|
+
}
|
|
245
|
+
declare enum ConnectionType {
|
|
246
|
+
HTTP = "http",
|
|
247
|
+
GRPC = "grpc",
|
|
248
|
+
WebSocket = "web-socket",
|
|
249
|
+
Connector = "connector",
|
|
250
|
+
Datastore = "datastore"
|
|
251
|
+
}
|
|
252
|
+
interface ProjectGateway {
|
|
253
|
+
projectId: string;
|
|
254
|
+
boundary: CellBounds;
|
|
255
|
+
}
|
|
256
|
+
interface OrgConnection {
|
|
257
|
+
id: string;
|
|
258
|
+
label?: string;
|
|
259
|
+
tooltip?: string;
|
|
260
|
+
source: {
|
|
261
|
+
boundary: CellBounds;
|
|
262
|
+
};
|
|
263
|
+
target?: ProjectGateway | Connection;
|
|
264
|
+
}
|
|
265
|
+
interface ComponentMetadata {
|
|
266
|
+
type: ConnectionType;
|
|
267
|
+
organization: string;
|
|
268
|
+
project: string;
|
|
269
|
+
component: string;
|
|
270
|
+
service?: string;
|
|
271
|
+
}
|
|
272
|
+
interface ConnectorMetadata {
|
|
273
|
+
type: ConnectionType.Connector;
|
|
274
|
+
organization: string;
|
|
275
|
+
package: string;
|
|
276
|
+
}
|
|
277
|
+
type ConnectionMetadata = ComponentMetadata | ConnectorMetadata;
|
|
278
|
+
interface DeploymentMetadata {
|
|
279
|
+
gateways: {
|
|
280
|
+
internet: {
|
|
281
|
+
isExposed: boolean;
|
|
282
|
+
tooltip?: string;
|
|
283
|
+
observations?: Observations[];
|
|
284
|
+
observationOnly?: boolean;
|
|
285
|
+
};
|
|
286
|
+
intranet: {
|
|
287
|
+
isExposed: boolean;
|
|
288
|
+
tooltip?: string;
|
|
289
|
+
observations?: Observations[];
|
|
290
|
+
observationOnly?: boolean;
|
|
291
|
+
};
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
interface Observations {
|
|
295
|
+
label?: string;
|
|
296
|
+
componentVersion?: string;
|
|
297
|
+
sourceNodeId: number;
|
|
298
|
+
destinationNodeId: number;
|
|
299
|
+
avgLatency: number;
|
|
300
|
+
errorCount: number;
|
|
301
|
+
p50Latency: number;
|
|
302
|
+
p90Latency: number;
|
|
303
|
+
p99Latency: number;
|
|
304
|
+
requestCount: number;
|
|
305
|
+
}
|
|
306
|
+
type CommonModel = ProjectModel | ComponentModel | ConnectionModel | ExternalModel | EmptyModel;
|
|
307
|
+
interface OrgDiagramData {
|
|
308
|
+
nodes: Nodes;
|
|
309
|
+
links: Links;
|
|
310
|
+
}
|
|
311
|
+
interface ProjectDiagramData {
|
|
312
|
+
nodes: Nodes;
|
|
313
|
+
links: Links;
|
|
314
|
+
gateways: Gateways;
|
|
315
|
+
observationSummary: ObservationSummary;
|
|
316
|
+
}
|
|
317
|
+
interface Gateways {
|
|
318
|
+
internet: boolean;
|
|
319
|
+
intranet: boolean;
|
|
320
|
+
}
|
|
321
|
+
interface ObservationSummary {
|
|
322
|
+
requestCount: {
|
|
323
|
+
min: number;
|
|
324
|
+
max: number;
|
|
325
|
+
};
|
|
326
|
+
}
|
|
327
|
+
interface Nodes {
|
|
328
|
+
[key: string]: Map<string, CommonModel>;
|
|
329
|
+
}
|
|
330
|
+
interface Links {
|
|
331
|
+
[key: string]: Map<string, ComponentLinkModel | ExternalLinkModel | CellLinkModel | AdvancedLinkModel>;
|
|
332
|
+
}
|
|
333
|
+
interface MoreVertMenuItem {
|
|
334
|
+
label: string;
|
|
335
|
+
callback: (id: string, version?: string) => void;
|
|
336
|
+
}
|
|
337
|
+
declare enum DiagramLayer {
|
|
338
|
+
ARCHITECTURE = "architecture",
|
|
339
|
+
OBSERVABILITY = "observability",
|
|
340
|
+
DIFF = "diff"
|
|
341
|
+
}
|
|
342
|
+
interface CustomTooltips {
|
|
343
|
+
diagramLayers: DiagramLayerTooltips;
|
|
344
|
+
}
|
|
345
|
+
interface DiagramLayerTooltips {
|
|
346
|
+
staticLayer?: string;
|
|
347
|
+
runtimeLayer?: string;
|
|
348
|
+
diffLayer?: string;
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
/**
|
|
352
|
+
* The full color vocabulary the cell diagram paints with.
|
|
353
|
+
*
|
|
354
|
+
* The shape mirrors a Material You-style token system. `lightColors` is the
|
|
355
|
+
* historical default and matches the original `Colors` enum byte-for-byte;
|
|
356
|
+
* `darkColors` is the dark-mode counterpart. Host applications can also
|
|
357
|
+
* override individual tokens by passing a `colors` prop to `<CellDiagram>`.
|
|
358
|
+
*/
|
|
359
|
+
type CellDiagramColors = {
|
|
360
|
+
PRIMARY: string;
|
|
361
|
+
ON_PRIMARY: string;
|
|
362
|
+
PRIMARY_CONTAINER: string;
|
|
363
|
+
/** Hover accent for primary-tinted clickable surfaces (e.g. project node title). */
|
|
364
|
+
PRIMARY_HOVER: string;
|
|
365
|
+
SECONDARY: string;
|
|
366
|
+
ON_SECONDARY: string;
|
|
367
|
+
SECONDARY_CONTAINER: string;
|
|
368
|
+
SURFACE_BRIGHT: string;
|
|
369
|
+
SURFACE: string;
|
|
370
|
+
SURFACE_DIM: string;
|
|
371
|
+
SURFACE_CONTAINER: string;
|
|
372
|
+
ON_SURFACE: string;
|
|
373
|
+
ON_SURFACE_VARIANT: string;
|
|
374
|
+
OUTLINE: string;
|
|
375
|
+
OUTLINE_VARIANT: string;
|
|
376
|
+
ERROR: string;
|
|
377
|
+
};
|
|
378
|
+
type CellDiagramThemeMode = 'light' | 'dark';
|
|
379
|
+
|
|
380
|
+
interface CellDiagramProps {
|
|
381
|
+
organization?: Organization;
|
|
382
|
+
project?: Project;
|
|
383
|
+
componentMenu?: MoreVertMenuItem[];
|
|
384
|
+
showControls?: boolean;
|
|
385
|
+
animation?: boolean;
|
|
386
|
+
defaultDiagramLayer?: DiagramLayer;
|
|
387
|
+
customTooltips?: CustomTooltips;
|
|
388
|
+
modelVersion?: string;
|
|
389
|
+
previewMode?: boolean;
|
|
390
|
+
onComponentDoubleClick?: (componentId: string) => void;
|
|
391
|
+
/**
|
|
392
|
+
* Color scheme to render the diagram in. Defaults to `'light'` so
|
|
393
|
+
* existing callers see no visual change.
|
|
394
|
+
*/
|
|
395
|
+
mode?: CellDiagramThemeMode;
|
|
396
|
+
/**
|
|
397
|
+
* Optional per-token overrides merged on top of the `mode` preset. Use
|
|
398
|
+
* this to snap the diagram to a host application's brand palette.
|
|
399
|
+
*/
|
|
400
|
+
colors?: Partial<CellDiagramColors>;
|
|
401
|
+
}
|
|
402
|
+
declare function CellDiagram(props: CellDiagramProps): react_jsx_runtime.JSX.Element;
|
|
403
|
+
|
|
404
|
+
declare function renderDiagram(projectModel: string, target: HTMLDivElement): void;
|
|
405
|
+
|
|
406
|
+
export { CellDiagram, ComponentType, ConnectionType, DiagramLayer, renderDiagram };
|
|
407
|
+
export type { CommonModel, Component, ComponentMetadata, Connection, ConnectionMetadata, ConnectorMetadata, CustomTooltips, DeploymentMetadata, DiagramLayerTooltips, ExternalConsumerLinkSelectEvent, Gateways, Links, MoreVertMenuItem, Nodes, ObservationSummary, Observations, OrgConnection, OrgDiagramData, Organization, Project, ProjectDiagramData, ProjectGateway, Service, Services };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { render } from 'react-dom';
|
|
3
|
+
import { CellDiagram } from './Diagram.esm.js';
|
|
4
|
+
|
|
5
|
+
function renderDiagram(projectModel, target) {
|
|
6
|
+
const project = JSON.parse(JSON.stringify(projectModel));
|
|
7
|
+
render(/* @__PURE__ */ jsx(CellDiagram, { project }), target);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export { renderDiagram };
|
|
11
|
+
//# sourceMappingURL=renderDiagram.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderDiagram.esm.js","sources":["../src/renderDiagram.tsx"],"sourcesContent":["import { render } from 'react-dom';\nimport { CellDiagram } from './Diagram';\nimport { Project } from './types';\n\nexport function renderDiagram(projectModel: string, target: HTMLDivElement) {\n const project: Project = JSON.parse(JSON.stringify(projectModel));\n render(<CellDiagram project={project} />, target);\n}\n"],"names":[],"mappings":";;;;AAIO,SAAS,aAAA,CAAc,cAAsB,MAAA,EAAwB;AAC1E,EAAA,MAAM,UAAmB,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,SAAA,CAAU,YAAY,CAAC,CAAA;AAChE,EAAA,MAAA,iBAAO,GAAA,CAAC,WAAA,EAAA,EAAY,OAAA,EAAkB,CAAA,EAAI,MAAM,CAAA;AAClD;;;;"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { PointModel } from '@projectstorm/react-diagrams-core';
|
|
2
|
+
import * as dagre from 'dagre';
|
|
3
|
+
import * as _ from 'lodash';
|
|
4
|
+
import { Point } from '@projectstorm/geometry';
|
|
5
|
+
import { EMPTY_NODE, MAIN_CELL, COMPONENT_NODE, COMPONENT_CIRCLE_WIDTH, DIAGRAM_END, BORDER_GAP } from '../constants.esm.js';
|
|
6
|
+
|
|
7
|
+
class DagreEngine {
|
|
8
|
+
options;
|
|
9
|
+
constructor(options = {}) {
|
|
10
|
+
this.options = options;
|
|
11
|
+
}
|
|
12
|
+
redistribute(model) {
|
|
13
|
+
const g = new dagre.graphlib.Graph({
|
|
14
|
+
multigraph: true,
|
|
15
|
+
compound: true
|
|
16
|
+
});
|
|
17
|
+
g.setGraph(this.options.graph || {});
|
|
18
|
+
g.setDefaultEdgeLabel(() => {
|
|
19
|
+
return {};
|
|
20
|
+
});
|
|
21
|
+
const ug = new dagre.graphlib.Graph({
|
|
22
|
+
multigraph: true,
|
|
23
|
+
compound: true
|
|
24
|
+
});
|
|
25
|
+
ug.setGraph(this.options.graph || {});
|
|
26
|
+
_.forEach(model.getNodes(), (node) => {
|
|
27
|
+
const ports = {
|
|
28
|
+
top: 0,
|
|
29
|
+
bottom: 0,
|
|
30
|
+
left: 0,
|
|
31
|
+
right: 0
|
|
32
|
+
};
|
|
33
|
+
_.forEach(node.getPorts(), (port) => {
|
|
34
|
+
if (port.getOptions().alignment === "top") {
|
|
35
|
+
ports.top = _.size(port.getLinks());
|
|
36
|
+
} else if (port.getOptions().alignment === "bottom") {
|
|
37
|
+
ports.bottom = _.size(port.getLinks());
|
|
38
|
+
} else if (port.getOptions().alignment === "left") {
|
|
39
|
+
ports.left = _.size(port.getLinks());
|
|
40
|
+
} else if (port.getOptions().alignment === "right") {
|
|
41
|
+
ports.right = _.size(port.getLinks());
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
if (node.getType() === EMPTY_NODE) {
|
|
45
|
+
g.setNode(node.getID(), {
|
|
46
|
+
label: node.getID(),
|
|
47
|
+
width: node.width,
|
|
48
|
+
height: node.height,
|
|
49
|
+
x: node.getX(),
|
|
50
|
+
y: node.getY(),
|
|
51
|
+
fixed: true
|
|
52
|
+
});
|
|
53
|
+
} else if (this.isLinkedNode(ports)) {
|
|
54
|
+
g.setNode(node.getID(), {
|
|
55
|
+
label: node.getID(),
|
|
56
|
+
width: node.width,
|
|
57
|
+
height: node.height,
|
|
58
|
+
ports,
|
|
59
|
+
node
|
|
60
|
+
});
|
|
61
|
+
} else {
|
|
62
|
+
ug.setNode(node.getID(), {
|
|
63
|
+
label: node.getID(),
|
|
64
|
+
width: node.width,
|
|
65
|
+
height: node.height,
|
|
66
|
+
node
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
const mainCell = g.node(MAIN_CELL);
|
|
71
|
+
if (mainCell) {
|
|
72
|
+
_.forEach(model.getNodes(), (node) => {
|
|
73
|
+
if (node.getType() === COMPONENT_NODE) {
|
|
74
|
+
g.setParent(node.getID(), MAIN_CELL);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
_.forEach(model.getLinks(), (link) => {
|
|
79
|
+
if (link.getSourcePort() && link.getTargetPort()) {
|
|
80
|
+
g.setEdge({
|
|
81
|
+
v: link.getSourcePort().getNode().getID(),
|
|
82
|
+
w: link.getTargetPort().getNode().getID(),
|
|
83
|
+
name: link.getID()
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
const space = BORDER_GAP * 2;
|
|
88
|
+
dagre.layout(g);
|
|
89
|
+
this.angleLayout(g, space);
|
|
90
|
+
const { x, y } = this.getRightTopConnerOfGraph(g);
|
|
91
|
+
this.arrangeInGridLayout(ug.nodes(), ug, space, x, y);
|
|
92
|
+
ug.nodes().forEach((v) => {
|
|
93
|
+
g.setNode(v, ug.node(v));
|
|
94
|
+
});
|
|
95
|
+
g.nodes().forEach((v) => {
|
|
96
|
+
const node = g.node(v);
|
|
97
|
+
if (model.getNode(v).getType() !== EMPTY_NODE) {
|
|
98
|
+
model.getNode(v).setPosition(node.x - node.width / 2, node.y - node.height / 2);
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
if (this.options.includeLinks) {
|
|
102
|
+
g.edges().forEach((e) => {
|
|
103
|
+
const edge = g.edge(e);
|
|
104
|
+
const link = model.getLink(e.name);
|
|
105
|
+
const points = [link.getFirstPoint()];
|
|
106
|
+
for (let i = 1; i < edge.points.length - 1; i++) {
|
|
107
|
+
points.push(
|
|
108
|
+
new PointModel({
|
|
109
|
+
link,
|
|
110
|
+
position: new Point(edge.points[i].x, edge.points[i].y)
|
|
111
|
+
})
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
link.setPoints(points.concat(link.getLastPoint()));
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
gridLayout(g, spacing) {
|
|
119
|
+
const nodes = g.nodes();
|
|
120
|
+
this.arrangeInGridLayout(nodes, g, spacing);
|
|
121
|
+
}
|
|
122
|
+
// nodes are all layout in vertical line. this method will add horizontal spacing between nodes to align nodes in angle line
|
|
123
|
+
angleLayout(g, spacing) {
|
|
124
|
+
const nodes = g.nodes();
|
|
125
|
+
let lastX = 0;
|
|
126
|
+
nodes.forEach((v) => {
|
|
127
|
+
const node = g.node(v);
|
|
128
|
+
if (node.ports && node.ports.top > 0 && node.ports.bottom === 0 && node.ports.left >= 0 && node.ports.right === 0) {
|
|
129
|
+
if (lastX === 0) {
|
|
130
|
+
lastX = node.x;
|
|
131
|
+
} else {
|
|
132
|
+
lastX += node.width + spacing;
|
|
133
|
+
node.x = lastX;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
isLinkedNode(ports) {
|
|
139
|
+
return ports.top > 0 || ports.bottom > 0 || ports.left > 0 || ports.right > 0;
|
|
140
|
+
}
|
|
141
|
+
arrangeInGridLayout(nodes, g, spacing, startX = 0, startY = 0) {
|
|
142
|
+
const gridSize = Math.ceil(Math.sqrt(nodes.length));
|
|
143
|
+
const minWidth = COMPONENT_CIRCLE_WIDTH + BORDER_GAP;
|
|
144
|
+
let x = 0;
|
|
145
|
+
let y = 0;
|
|
146
|
+
nodes.forEach((v) => {
|
|
147
|
+
const node = g.node(v);
|
|
148
|
+
const space = minWidth + spacing;
|
|
149
|
+
node.x = startX + x * space + (space - minWidth) / 2;
|
|
150
|
+
node.y = startY + y * space;
|
|
151
|
+
x++;
|
|
152
|
+
if (x >= gridSize) {
|
|
153
|
+
x = 0;
|
|
154
|
+
y++;
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
getRightTopConnerOfGraph(g) {
|
|
159
|
+
let maxX = 0;
|
|
160
|
+
let minY = DIAGRAM_END;
|
|
161
|
+
g.nodes().forEach((v) => {
|
|
162
|
+
const node = g.node(v);
|
|
163
|
+
if (node.x > maxX) {
|
|
164
|
+
maxX = node.x;
|
|
165
|
+
}
|
|
166
|
+
if (node.y < minY) {
|
|
167
|
+
minY = node.y;
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
if (maxX !== 0) {
|
|
171
|
+
maxX += COMPONENT_CIRCLE_WIDTH * 2;
|
|
172
|
+
}
|
|
173
|
+
return { x: maxX, y: minY };
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
export { DagreEngine };
|
|
178
|
+
//# sourceMappingURL=DagreEngine.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DagreEngine.esm.js","sources":["../../../src/resources/Dagre/DagreEngine.ts"],"sourcesContent":["import { DiagramModel, PointModel } from '@projectstorm/react-diagrams-core';\nimport * as dagre from 'dagre';\nimport * as _ from 'lodash';\nimport { GraphLabel } from 'dagre';\nimport { Point } from '@projectstorm/geometry';\nimport {\n BORDER_GAP,\n COMPONENT_CIRCLE_WIDTH,\n COMPONENT_NODE,\n DIAGRAM_END,\n EMPTY_NODE,\n MAIN_CELL,\n} from '../constants';\n\nexport interface DagreEngineOptions {\n graph?: GraphLabel;\n /**\n * Will also layout links\n */\n includeLinks?: boolean;\n}\n\nexport class DagreEngine {\n options: DagreEngineOptions;\n\n constructor(options: DagreEngineOptions = {}) {\n this.options = options;\n }\n\n redistribute(model: DiagramModel) {\n // Create a new directed graph\n const g = new dagre.graphlib.Graph({\n multigraph: true,\n compound: true,\n });\n g.setGraph(this.options.graph || {});\n g.setDefaultEdgeLabel(() => {\n return {};\n });\n // Create a new unlinked node paths\n const ug = new dagre.graphlib.Graph({\n multigraph: true,\n compound: true,\n });\n ug.setGraph(this.options.graph || {});\n\n // set nodes\n _.forEach(model.getNodes(), node => {\n const ports = {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n };\n // Count the number of links on each side of the node\n _.forEach(node.getPorts(), port => {\n if (port.getOptions().alignment === 'top') {\n ports.top = _.size(port.getLinks());\n } else if (port.getOptions().alignment === 'bottom') {\n ports.bottom = _.size(port.getLinks());\n } else if (port.getOptions().alignment === 'left') {\n ports.left = _.size(port.getLinks());\n } else if (port.getOptions().alignment === 'right') {\n ports.right = _.size(port.getLinks());\n }\n });\n\n // Check if the node is of type EMPTY_NODE\n if (node.getType() === EMPTY_NODE) {\n // If it's an EMPTY_NODE, set its position as fixed\n g.setNode(node.getID(), {\n label: node.getID(),\n width: node.width,\n height: node.height,\n x: node.getX(),\n y: node.getY(),\n fixed: true,\n });\n } else if (this.isLinkedNode(ports)) {\n // For other nodes, set the default position\n g.setNode(node.getID(), {\n label: node.getID(),\n width: node.width,\n height: node.height,\n ports,\n node,\n });\n } else {\n // For nodes without any links, set their position in the unlinked graph\n ug.setNode(node.getID(), {\n label: node.getID(),\n width: node.width,\n height: node.height,\n node,\n });\n }\n });\n\n // set node parents\n const mainCell = g.node(MAIN_CELL);\n if (mainCell) {\n _.forEach(model.getNodes(), node => {\n if (node.getType() === COMPONENT_NODE) {\n g.setParent(node.getID(), MAIN_CELL);\n }\n });\n }\n\n _.forEach(model.getLinks(), link => {\n // set edges\n if (link.getSourcePort() && link.getTargetPort()) {\n g.setEdge({\n v: link.getSourcePort().getNode().getID(),\n w: link.getTargetPort().getNode().getID(),\n name: link.getID(),\n });\n }\n });\n\n const space = BORDER_GAP * 2;\n dagre.layout(g);\n this.angleLayout(g, space);\n // get layout edge\n const { x, y } = this.getRightTopConnerOfGraph(g);\n this.arrangeInGridLayout(ug.nodes(), ug, space, x, y);\n // merge two graphs\n ug.nodes().forEach(v => {\n g.setNode(v, ug.node(v));\n });\n\n g.nodes().forEach(v => {\n const node = g.node(v);\n // Only update positions for non-EMPTY_NODE type nodes\n if (model.getNode(v).getType() !== EMPTY_NODE) {\n model\n .getNode(v)\n .setPosition(node.x - node.width / 2, node.y - node.height / 2);\n }\n });\n\n // also include links?\n if (this.options.includeLinks) {\n g.edges().forEach(e => {\n const edge = g.edge(e);\n const link = model.getLink(e.name as string);\n\n const points = [link.getFirstPoint()];\n for (let i = 1; i < edge.points.length - 1; i++) {\n points.push(\n new PointModel({\n link: link,\n position: new Point(edge.points[i].x, edge.points[i].y),\n }),\n );\n }\n link.setPoints(points.concat(link.getLastPoint()));\n });\n }\n }\n\n gridLayout(g: dagre.graphlib.Graph, spacing: number) {\n const nodes = g.nodes();\n this.arrangeInGridLayout(nodes, g, spacing);\n }\n\n // nodes are all layout in vertical line. this method will add horizontal spacing between nodes to align nodes in angle line\n angleLayout(g: dagre.graphlib.Graph, spacing: number) {\n const nodes = g.nodes();\n let lastX = 0;\n\n nodes.forEach((v: string) => {\n const node = g.node(v) as dagre.Node & {\n ports?: { top: number; bottom: number; left: number; right: number };\n };\n // node only has top connection will be arranged\n if (\n node.ports &&\n node.ports.top > 0 &&\n node.ports.bottom === 0 &&\n node.ports.left >= 0 &&\n node.ports.right === 0\n ) {\n if (lastX === 0) {\n lastX = node.x;\n } else {\n lastX += node.width + spacing;\n node.x = lastX;\n }\n }\n });\n }\n\n isLinkedNode(ports: {\n top: number;\n bottom: number;\n left: number;\n right: number;\n }) {\n return (\n ports.top > 0 || ports.bottom > 0 || ports.left > 0 || ports.right > 0\n );\n }\n\n arrangeInGridLayout(\n nodes: string[],\n g: dagre.graphlib.Graph,\n spacing: number,\n startX = 0,\n startY = 0,\n ) {\n const gridSize = Math.ceil(Math.sqrt(nodes.length));\n const minWidth = COMPONENT_CIRCLE_WIDTH + BORDER_GAP;\n let x = 0;\n let y = 0;\n\n nodes.forEach(v => {\n const node = g.node(v);\n const space = minWidth + spacing;\n node.x = startX + x * space + (space - minWidth) / 2;\n node.y = startY + y * space;\n x++;\n if (x >= gridSize) {\n x = 0;\n y++;\n }\n });\n }\n\n getRightTopConnerOfGraph(g: dagre.graphlib.Graph) {\n let maxX = 0;\n let minY = DIAGRAM_END;\n g.nodes().forEach((v: string) => {\n const node = g.node(v);\n if (node.x > maxX) {\n maxX = node.x;\n }\n if (node.y < minY) {\n minY = node.y;\n }\n });\n if (maxX !== 0) {\n maxX += COMPONENT_CIRCLE_WIDTH * 2;\n }\n return { x: maxX, y: minY };\n }\n}\n"],"names":[],"mappings":"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"}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|