@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
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useContext, useRef, useEffect } from 'react';
|
|
3
|
+
import styled from '@emotion/styled';
|
|
4
|
+
import gsap from 'gsap';
|
|
5
|
+
import { DiagramContext } from '../DiagramContext/DiagramContext.esm.js';
|
|
6
|
+
import { DiagramLayer } from '../../types.esm.js';
|
|
7
|
+
import { useColors } from '../../theme/ThemeContext.esm.js';
|
|
8
|
+
import '../../theme/CellDiagramThemeProvider.esm.js';
|
|
9
|
+
|
|
10
|
+
const DiagramLegendPanel = styled.div`
|
|
11
|
+
position: absolute;
|
|
12
|
+
top: 15px;
|
|
13
|
+
right: 15px;
|
|
14
|
+
|
|
15
|
+
display: flex;
|
|
16
|
+
flex-direction: column;
|
|
17
|
+
justify-content: space-between;
|
|
18
|
+
align-items: start;
|
|
19
|
+
gap: 4px;
|
|
20
|
+
|
|
21
|
+
padding: 8px;
|
|
22
|
+
|
|
23
|
+
background-color: ${({ theme }) => theme.colors.SURFACE};
|
|
24
|
+
border: 1px solid ${({ theme }) => theme.colors.SURFACE_DIM};
|
|
25
|
+
`;
|
|
26
|
+
const LegendRow = styled.div`
|
|
27
|
+
display: flex;
|
|
28
|
+
align-items: center;
|
|
29
|
+
font-size: 12px;
|
|
30
|
+
gap: 8px;
|
|
31
|
+
`;
|
|
32
|
+
const Text = styled.div`
|
|
33
|
+
font-size: 12px;
|
|
34
|
+
user-select: none;
|
|
35
|
+
color: ${({ theme }) => theme.colors.ON_SURFACE_VARIANT};
|
|
36
|
+
`;
|
|
37
|
+
function DiagramLegend(props) {
|
|
38
|
+
const { animation = true } = props;
|
|
39
|
+
const colors = useColors();
|
|
40
|
+
const {
|
|
41
|
+
diagramLayers: { hasLayer }
|
|
42
|
+
} = useContext(DiagramContext);
|
|
43
|
+
const controlPanelRef = useRef(null);
|
|
44
|
+
const hasArchitectureLayer = hasLayer(DiagramLayer.ARCHITECTURE);
|
|
45
|
+
const hasObservabilityLayer = hasLayer(DiagramLayer.OBSERVABILITY);
|
|
46
|
+
const hasDiffLayer = hasLayer(DiagramLayer.DIFF);
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
if (animation) {
|
|
49
|
+
gsap.fromTo(
|
|
50
|
+
controlPanelRef.current,
|
|
51
|
+
{ scale: 0 },
|
|
52
|
+
{
|
|
53
|
+
scale: 1,
|
|
54
|
+
duration: 1,
|
|
55
|
+
ease: "power3.out",
|
|
56
|
+
delay: 1
|
|
57
|
+
}
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
}, []);
|
|
61
|
+
return /* @__PURE__ */ jsxs(DiagramLegendPanel, { ref: controlPanelRef, children: [
|
|
62
|
+
(hasObservabilityLayer || hasDiffLayer) && /* @__PURE__ */ jsxs(LegendRow, { children: [
|
|
63
|
+
/* @__PURE__ */ jsxs(
|
|
64
|
+
"svg",
|
|
65
|
+
{
|
|
66
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
67
|
+
viewBox: "0 0 200 50",
|
|
68
|
+
width: 50,
|
|
69
|
+
height: 10,
|
|
70
|
+
children: [
|
|
71
|
+
/* @__PURE__ */ jsx("g", { strokeWidth: "10", stroke: "hsl(0, 0%, 30%)", fill: "none", children: /* @__PURE__ */ jsx(
|
|
72
|
+
"line",
|
|
73
|
+
{
|
|
74
|
+
x1: "0",
|
|
75
|
+
y1: "25",
|
|
76
|
+
x2: "200",
|
|
77
|
+
y2: "25",
|
|
78
|
+
markerEnd: hasObservabilityLayer ? "" : "url(#solidLinkArrow)",
|
|
79
|
+
stroke: hasObservabilityLayer ? colors.PRIMARY : colors.ON_SURFACE_VARIANT
|
|
80
|
+
}
|
|
81
|
+
) }),
|
|
82
|
+
/* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsx(
|
|
83
|
+
"marker",
|
|
84
|
+
{
|
|
85
|
+
id: "solidLinkArrow",
|
|
86
|
+
markerWidth: "5",
|
|
87
|
+
markerHeight: "5",
|
|
88
|
+
markerUnits: "strokeWidth",
|
|
89
|
+
refX: "4",
|
|
90
|
+
refY: "3",
|
|
91
|
+
viewBox: "0 0 6 6",
|
|
92
|
+
orient: "auto",
|
|
93
|
+
children: /* @__PURE__ */ jsx(
|
|
94
|
+
"polygon",
|
|
95
|
+
{
|
|
96
|
+
points: "0,6 0,0 5,3",
|
|
97
|
+
fill: hasObservabilityLayer ? colors.PRIMARY : colors.ON_SURFACE_VARIANT
|
|
98
|
+
}
|
|
99
|
+
)
|
|
100
|
+
}
|
|
101
|
+
) })
|
|
102
|
+
]
|
|
103
|
+
}
|
|
104
|
+
),
|
|
105
|
+
hasObservabilityLayer && !hasDiffLayer && /* @__PURE__ */ jsx(Text, { children: "Only runtime dependency" }),
|
|
106
|
+
hasObservabilityLayer && hasDiffLayer && /* @__PURE__ */ jsx(Text, { children: "Both static and runtime dependency" }),
|
|
107
|
+
!hasObservabilityLayer && hasDiffLayer && /* @__PURE__ */ jsx(Text, { children: "Both static and runtime dependency" })
|
|
108
|
+
] }),
|
|
109
|
+
hasArchitectureLayer && !hasDiffLayer && /* @__PURE__ */ jsxs(LegendRow, { children: [
|
|
110
|
+
/* @__PURE__ */ jsxs(
|
|
111
|
+
"svg",
|
|
112
|
+
{
|
|
113
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
114
|
+
viewBox: "0 0 200 50",
|
|
115
|
+
width: 50,
|
|
116
|
+
height: 10,
|
|
117
|
+
children: [
|
|
118
|
+
/* @__PURE__ */ jsx("g", { strokeWidth: "10", stroke: "hsl(0, 0%, 30%)", fill: "none", children: /* @__PURE__ */ jsx(
|
|
119
|
+
"line",
|
|
120
|
+
{
|
|
121
|
+
x1: "0",
|
|
122
|
+
y1: "25",
|
|
123
|
+
x2: "200",
|
|
124
|
+
y2: "25",
|
|
125
|
+
markerEnd: hasObservabilityLayer ? "" : "url(#solidLinkArrow)",
|
|
126
|
+
stroke: colors.ON_SURFACE_VARIANT
|
|
127
|
+
}
|
|
128
|
+
) }),
|
|
129
|
+
/* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsx(
|
|
130
|
+
"marker",
|
|
131
|
+
{
|
|
132
|
+
id: "solidLinkArrow",
|
|
133
|
+
markerWidth: "5",
|
|
134
|
+
markerHeight: "5",
|
|
135
|
+
markerUnits: "strokeWidth",
|
|
136
|
+
refX: "4",
|
|
137
|
+
refY: "3",
|
|
138
|
+
viewBox: "0 0 6 6",
|
|
139
|
+
orient: "auto",
|
|
140
|
+
children: /* @__PURE__ */ jsx(
|
|
141
|
+
"polygon",
|
|
142
|
+
{
|
|
143
|
+
points: "0,6 0,0 5,3",
|
|
144
|
+
fill: colors.ON_SURFACE_VARIANT
|
|
145
|
+
}
|
|
146
|
+
)
|
|
147
|
+
}
|
|
148
|
+
) })
|
|
149
|
+
]
|
|
150
|
+
}
|
|
151
|
+
),
|
|
152
|
+
/* @__PURE__ */ jsx(Text, { children: "Only static dependency" })
|
|
153
|
+
] }),
|
|
154
|
+
hasDiffLayer && /* @__PURE__ */ jsxs(LegendRow, { children: [
|
|
155
|
+
/* @__PURE__ */ jsxs(
|
|
156
|
+
"svg",
|
|
157
|
+
{
|
|
158
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
159
|
+
viewBox: "0 0 200 50",
|
|
160
|
+
width: 50,
|
|
161
|
+
height: 10,
|
|
162
|
+
children: [
|
|
163
|
+
/* @__PURE__ */ jsx("g", { strokeWidth: 10, stroke: "hsl(0, 0%, 30%)", fill: "none", children: /* @__PURE__ */ jsx(
|
|
164
|
+
"line",
|
|
165
|
+
{
|
|
166
|
+
x1: 0,
|
|
167
|
+
y1: 25,
|
|
168
|
+
x2: 200,
|
|
169
|
+
y2: 25,
|
|
170
|
+
markerEnd: hasObservabilityLayer ? "" : "url(#redLinkArrow)",
|
|
171
|
+
stroke: colors.ERROR
|
|
172
|
+
}
|
|
173
|
+
) }),
|
|
174
|
+
/* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsx(
|
|
175
|
+
"marker",
|
|
176
|
+
{
|
|
177
|
+
id: "redLinkArrow",
|
|
178
|
+
markerWidth: "5",
|
|
179
|
+
markerHeight: "5",
|
|
180
|
+
markerUnits: "strokeWidth",
|
|
181
|
+
refX: "4",
|
|
182
|
+
refY: "3",
|
|
183
|
+
viewBox: "0 0 6 6",
|
|
184
|
+
orient: "auto",
|
|
185
|
+
children: /* @__PURE__ */ jsx("polygon", { points: "0,6 0,0 5,3", fill: colors.ERROR })
|
|
186
|
+
}
|
|
187
|
+
) })
|
|
188
|
+
]
|
|
189
|
+
}
|
|
190
|
+
),
|
|
191
|
+
/* @__PURE__ */ jsx(Text, { children: "Only runtime dependency" })
|
|
192
|
+
] }),
|
|
193
|
+
hasDiffLayer && /* @__PURE__ */ jsxs(LegendRow, { children: [
|
|
194
|
+
/* @__PURE__ */ jsxs(
|
|
195
|
+
"svg",
|
|
196
|
+
{
|
|
197
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
198
|
+
viewBox: "0 0 200 50",
|
|
199
|
+
width: 50,
|
|
200
|
+
height: 10,
|
|
201
|
+
children: [
|
|
202
|
+
/* @__PURE__ */ jsx("g", { strokeWidth: "10", stroke: "hsl(0, 0%, 30%)", fill: "none", children: /* @__PURE__ */ jsx(
|
|
203
|
+
"line",
|
|
204
|
+
{
|
|
205
|
+
x1: "0",
|
|
206
|
+
y1: "25",
|
|
207
|
+
x2: "200",
|
|
208
|
+
y2: "25",
|
|
209
|
+
markerEnd: hasObservabilityLayer ? "" : "url(#dashLinkArrow)",
|
|
210
|
+
strokeDasharray: "20,20"
|
|
211
|
+
}
|
|
212
|
+
) }),
|
|
213
|
+
/* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsx(
|
|
214
|
+
"marker",
|
|
215
|
+
{
|
|
216
|
+
id: "dashLinkArrow",
|
|
217
|
+
markerWidth: "5",
|
|
218
|
+
markerHeight: "5",
|
|
219
|
+
markerUnits: "strokeWidth",
|
|
220
|
+
refX: "4",
|
|
221
|
+
refY: "3",
|
|
222
|
+
viewBox: "0 0 6 6",
|
|
223
|
+
orient: "auto",
|
|
224
|
+
children: /* @__PURE__ */ jsx(
|
|
225
|
+
"polygon",
|
|
226
|
+
{
|
|
227
|
+
points: "0,6 0,0 5,3",
|
|
228
|
+
fill: colors.ON_SURFACE_VARIANT
|
|
229
|
+
}
|
|
230
|
+
)
|
|
231
|
+
}
|
|
232
|
+
) })
|
|
233
|
+
]
|
|
234
|
+
}
|
|
235
|
+
),
|
|
236
|
+
/* @__PURE__ */ jsx(Text, { children: "Only static dependency" })
|
|
237
|
+
] })
|
|
238
|
+
] });
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
export { DiagramLegend, DiagramLegendPanel, LegendRow, Text };
|
|
242
|
+
//# sourceMappingURL=DiagramLegend.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiagramLegend.esm.js","sources":["../../../src/components/Controls/DiagramLegend.tsx"],"sourcesContent":["import { FC, useContext, useEffect, useRef } from 'react';\nimport styled from '@emotion/styled';\nimport gsap from 'gsap';\nimport { DiagramContext } from '../DiagramContext/DiagramContext';\nimport { DiagramLayer } from '../../types';\nimport { useColors } from '../../theme';\n\nexport const DiagramLegendPanel: FC<any> = styled.div`\n position: absolute;\n top: 15px;\n right: 15px;\n\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n align-items: start;\n gap: 4px;\n\n padding: 8px;\n\n background-color: ${({ theme }) => theme.colors.SURFACE};\n border: 1px solid ${({ theme }) => theme.colors.SURFACE_DIM};\n`;\n\nexport const LegendRow: FC<any> = styled.div`\n display: flex;\n align-items: center;\n font-size: 12px;\n gap: 8px;\n`;\n\nexport const Text: FC<any> = styled.div`\n font-size: 12px;\n user-select: none;\n color: ${({ theme }) => theme.colors.ON_SURFACE_VARIANT};\n`;\n\ninterface DiagramLegendProps {\n animation?: boolean;\n}\n\nexport function DiagramLegend(props: DiagramLegendProps) {\n const { animation = true } = props;\n const colors = useColors();\n // The \"hsl(0, 0%, 30%)\" stroke on the legend's svg <g> is a backdrop\n // line that gets overdrawn by the actual stroke color below; we leave\n // it as-is to preserve the original visual.\n\n const {\n diagramLayers: { hasLayer },\n } = useContext(DiagramContext);\n\n const controlPanelRef = useRef(null);\n const hasArchitectureLayer = hasLayer(DiagramLayer.ARCHITECTURE);\n const hasObservabilityLayer = hasLayer(DiagramLayer.OBSERVABILITY);\n const hasDiffLayer = hasLayer(DiagramLayer.DIFF);\n\n useEffect(() => {\n if (animation) {\n gsap.fromTo(\n controlPanelRef.current,\n { scale: 0 },\n {\n scale: 1,\n duration: 1,\n ease: 'power3.out',\n delay: 1,\n },\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <DiagramLegendPanel ref={controlPanelRef}>\n {(hasObservabilityLayer || hasDiffLayer) && (\n <LegendRow>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 200 50\"\n width={50}\n height={10}\n >\n <g strokeWidth=\"10\" stroke=\"hsl(0, 0%, 30%)\" fill=\"none\">\n <line\n x1=\"0\"\n y1=\"25\"\n x2=\"200\"\n y2=\"25\"\n markerEnd={hasObservabilityLayer ? '' : 'url(#solidLinkArrow)'}\n stroke={\n hasObservabilityLayer\n ? colors.PRIMARY\n : colors.ON_SURFACE_VARIANT\n }\n />\n </g>\n <defs>\n <marker\n id=\"solidLinkArrow\"\n markerWidth=\"5\"\n markerHeight=\"5\"\n markerUnits=\"strokeWidth\"\n refX=\"4\"\n refY=\"3\"\n viewBox=\"0 0 6 6\"\n orient=\"auto\"\n >\n <polygon\n points=\"0,6 0,0 5,3\"\n fill={\n hasObservabilityLayer\n ? colors.PRIMARY\n : colors.ON_SURFACE_VARIANT\n }\n />\n </marker>\n </defs>\n </svg>\n {hasObservabilityLayer && !hasDiffLayer && (\n <Text>Only runtime dependency</Text>\n )}\n {hasObservabilityLayer && hasDiffLayer && (\n <Text>Both static and runtime dependency</Text>\n )}\n {!hasObservabilityLayer && hasDiffLayer && (\n <Text>Both static and runtime dependency</Text>\n )}\n </LegendRow>\n )}\n {hasArchitectureLayer && !hasDiffLayer && (\n <LegendRow>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 200 50\"\n width={50}\n height={10}\n >\n <g strokeWidth=\"10\" stroke=\"hsl(0, 0%, 30%)\" fill=\"none\">\n <line\n x1=\"0\"\n y1=\"25\"\n x2=\"200\"\n y2=\"25\"\n markerEnd={hasObservabilityLayer ? '' : 'url(#solidLinkArrow)'}\n stroke={colors.ON_SURFACE_VARIANT}\n />\n </g>\n <defs>\n <marker\n id=\"solidLinkArrow\"\n markerWidth=\"5\"\n markerHeight=\"5\"\n markerUnits=\"strokeWidth\"\n refX=\"4\"\n refY=\"3\"\n viewBox=\"0 0 6 6\"\n orient=\"auto\"\n >\n <polygon\n points=\"0,6 0,0 5,3\"\n fill={colors.ON_SURFACE_VARIANT}\n />\n </marker>\n </defs>\n </svg>\n <Text>Only static dependency</Text>\n </LegendRow>\n )}\n {hasDiffLayer && (\n <LegendRow>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 200 50\"\n width={50}\n height={10}\n >\n <g strokeWidth={10} stroke=\"hsl(0, 0%, 30%)\" fill=\"none\">\n <line\n x1={0}\n y1={25}\n x2={200}\n y2={25}\n markerEnd={hasObservabilityLayer ? '' : 'url(#redLinkArrow)'}\n stroke={colors.ERROR}\n />\n </g>\n <defs>\n <marker\n id=\"redLinkArrow\"\n markerWidth=\"5\"\n markerHeight=\"5\"\n markerUnits=\"strokeWidth\"\n refX=\"4\"\n refY=\"3\"\n viewBox=\"0 0 6 6\"\n orient=\"auto\"\n >\n <polygon points=\"0,6 0,0 5,3\" fill={colors.ERROR} />\n </marker>\n </defs>\n </svg>\n <Text>Only runtime dependency</Text>\n </LegendRow>\n )}\n {hasDiffLayer && (\n <LegendRow>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 200 50\"\n width={50}\n height={10}\n >\n <g strokeWidth=\"10\" stroke=\"hsl(0, 0%, 30%)\" fill=\"none\">\n <line\n x1=\"0\"\n y1=\"25\"\n x2=\"200\"\n y2=\"25\"\n markerEnd={hasObservabilityLayer ? '' : 'url(#dashLinkArrow)'}\n strokeDasharray=\"20,20\"\n />\n </g>\n <defs>\n <marker\n id=\"dashLinkArrow\"\n markerWidth=\"5\"\n markerHeight=\"5\"\n markerUnits=\"strokeWidth\"\n refX=\"4\"\n refY=\"3\"\n viewBox=\"0 0 6 6\"\n orient=\"auto\"\n >\n <polygon\n points=\"0,6 0,0 5,3\"\n fill={colors.ON_SURFACE_VARIANT}\n />\n </marker>\n </defs>\n </svg>\n <Text>Only static dependency</Text>\n </LegendRow>\n )}\n </DiagramLegendPanel>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import styled from '@emotion/styled';
|
|
3
|
+
import Tooltip from '@mui/material/Tooltip';
|
|
4
|
+
|
|
5
|
+
const Button = styled.div`
|
|
6
|
+
display: flex;
|
|
7
|
+
flex-direction: column;
|
|
8
|
+
align-items: center;
|
|
9
|
+
justify-content: space-between;
|
|
10
|
+
font-size: 12px;
|
|
11
|
+
cursor: ${(props) => props.clickable ? "pointer" : "not-allowed"};
|
|
12
|
+
color: ${({ theme, selected }) => selected ? theme.colors.PRIMARY : theme.colors.ON_SURFACE_VARIANT};
|
|
13
|
+
user-select: none;
|
|
14
|
+
-webkit-user-select: none;
|
|
15
|
+
-moz-user-select: none;
|
|
16
|
+
-ms-user-select: none;
|
|
17
|
+
div {
|
|
18
|
+
border: 1px solid
|
|
19
|
+
${({ theme, selected }) => selected ? theme.colors.PRIMARY : theme.colors.SURFACE_DIM};
|
|
20
|
+
background-color: ${({ theme }) => theme.colors.SURFACE};
|
|
21
|
+
color: ${({ theme, selected }) => selected ? theme.colors.PRIMARY : theme.colors.OUTLINE_VARIANT};
|
|
22
|
+
}
|
|
23
|
+
&:hover {
|
|
24
|
+
color: ${({ theme }) => theme.colors.PRIMARY};
|
|
25
|
+
}
|
|
26
|
+
&:hover div {
|
|
27
|
+
border: 1px solid ${({ theme }) => theme.colors.PRIMARY};
|
|
28
|
+
color: ${({ theme }) => theme.colors.PRIMARY};
|
|
29
|
+
}
|
|
30
|
+
`;
|
|
31
|
+
const TooltipContainer = styled.div`
|
|
32
|
+
display: flex;
|
|
33
|
+
flex-direction: column;
|
|
34
|
+
align-items: start;
|
|
35
|
+
gap: 12px;
|
|
36
|
+
`;
|
|
37
|
+
const Title = styled.div`
|
|
38
|
+
font-size: 12px;
|
|
39
|
+
font-weight: 600;
|
|
40
|
+
`;
|
|
41
|
+
const Description = styled.div`
|
|
42
|
+
font-size: 12px;
|
|
43
|
+
`;
|
|
44
|
+
function LayerButton(props) {
|
|
45
|
+
const {
|
|
46
|
+
children,
|
|
47
|
+
onClick,
|
|
48
|
+
selected = false,
|
|
49
|
+
clickable = true,
|
|
50
|
+
tooltipTitle,
|
|
51
|
+
tooltipDescription,
|
|
52
|
+
tooltipPlacement = "top-start"
|
|
53
|
+
} = props;
|
|
54
|
+
return /* @__PURE__ */ jsx(
|
|
55
|
+
Tooltip,
|
|
56
|
+
{
|
|
57
|
+
arrow: true,
|
|
58
|
+
placement: tooltipPlacement,
|
|
59
|
+
title: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
60
|
+
!tooltipDescription && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
61
|
+
" ",
|
|
62
|
+
tooltipTitle,
|
|
63
|
+
" "
|
|
64
|
+
] }),
|
|
65
|
+
tooltipDescription && /* @__PURE__ */ jsxs(TooltipContainer, { children: [
|
|
66
|
+
/* @__PURE__ */ jsx(Title, { children: tooltipTitle }),
|
|
67
|
+
/* @__PURE__ */ jsx(Description, { children: tooltipDescription })
|
|
68
|
+
] })
|
|
69
|
+
] }),
|
|
70
|
+
enterNextDelay: 500,
|
|
71
|
+
componentsProps: {
|
|
72
|
+
tooltip: {
|
|
73
|
+
sx: {
|
|
74
|
+
fontFamily: "GilmerRegular",
|
|
75
|
+
fontSize: "12px",
|
|
76
|
+
padding: "6px 10px"
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
PopperProps: {
|
|
81
|
+
modifiers: [
|
|
82
|
+
{
|
|
83
|
+
name: "offset",
|
|
84
|
+
options: {
|
|
85
|
+
offset: [0, -10]
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
]
|
|
89
|
+
},
|
|
90
|
+
children: /* @__PURE__ */ jsx(Button, { onClick, selected, clickable, children })
|
|
91
|
+
}
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export { LayerButton };
|
|
96
|
+
//# sourceMappingURL=LayerButton.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LayerButton.esm.js","sources":["../../../src/components/Controls/LayerButton.tsx"],"sourcesContent":["import styled from '@emotion/styled';\nimport { ReactNode } from 'react';\nimport Tooltip from '@mui/material/Tooltip';\n\ninterface ButtonProps {\n selected?: boolean;\n clickable?: boolean;\n}\n\nconst Button = styled.div<ButtonProps>`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: space-between;\n font-size: 12px;\n cursor: ${props => (props.clickable ? 'pointer' : 'not-allowed')};\n color: ${({ theme, selected }) =>\n selected ? theme.colors.PRIMARY : theme.colors.ON_SURFACE_VARIANT};\n user-select: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n div {\n border: 1px solid\n ${({ theme, selected }) =>\n selected ? theme.colors.PRIMARY : theme.colors.SURFACE_DIM};\n background-color: ${({ theme }) => theme.colors.SURFACE};\n color: ${({ theme, selected }) =>\n selected ? theme.colors.PRIMARY : theme.colors.OUTLINE_VARIANT};\n }\n &:hover {\n color: ${({ theme }) => theme.colors.PRIMARY};\n }\n &:hover div {\n border: 1px solid ${({ theme }) => theme.colors.PRIMARY};\n color: ${({ theme }) => theme.colors.PRIMARY};\n }\n`;\n\nconst TooltipContainer = styled.div`\n display: flex;\n flex-direction: column;\n align-items: start;\n gap: 12px;\n`;\n\nconst Title = styled.div`\n font-size: 12px;\n font-weight: 600;\n`;\n\nconst Description = styled.div`\n font-size: 12px;\n`;\n\ninterface LayerButtonProps {\n children: ReactNode;\n selected?: boolean;\n clickable?: boolean;\n onClick: () => void;\n tooltipTitle?: string;\n tooltipDescription?: string;\n tooltipPlacement?: 'left-end' | 'right-end' | 'top-start';\n}\n\nexport function LayerButton(props: LayerButtonProps) {\n const {\n children,\n onClick,\n selected = false,\n clickable = true,\n tooltipTitle,\n tooltipDescription,\n tooltipPlacement = 'top-start',\n } = props;\n\n return (\n <Tooltip\n arrow\n placement={tooltipPlacement}\n title={\n <>\n {!tooltipDescription && <> {tooltipTitle} </>}\n {tooltipDescription && (\n <TooltipContainer>\n <Title>{tooltipTitle}</Title>\n <Description>{tooltipDescription}</Description>\n </TooltipContainer>\n )}\n </>\n }\n enterNextDelay={500}\n componentsProps={{\n tooltip: {\n sx: {\n fontFamily: 'GilmerRegular',\n fontSize: '12px',\n padding: '6px 10px',\n },\n },\n }}\n PopperProps={{\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, -10],\n },\n },\n ],\n }}\n >\n <Button onClick={onClick} selected={selected} clickable={clickable}>\n {children}\n </Button>\n </Tooltip>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { createContext, useContext } from 'react';
|
|
3
|
+
import { useActiveLayers } from '../../hooks/useActiveLayers.esm.js';
|
|
4
|
+
|
|
5
|
+
const defaultState = {};
|
|
6
|
+
const DiagramContext = createContext(defaultState);
|
|
7
|
+
function CellDiagramContext(props) {
|
|
8
|
+
const {
|
|
9
|
+
children,
|
|
10
|
+
selectedNodeId,
|
|
11
|
+
focusedNodeId,
|
|
12
|
+
componentMenu,
|
|
13
|
+
zoomLevel,
|
|
14
|
+
observationSummary,
|
|
15
|
+
defaultDiagramLayer,
|
|
16
|
+
modelVersion,
|
|
17
|
+
previewMode,
|
|
18
|
+
setSelectedNodeId,
|
|
19
|
+
setFocusedNodeId,
|
|
20
|
+
onComponentDoubleClick
|
|
21
|
+
} = props;
|
|
22
|
+
const { activeLayers, addLayer, removeLayer, setLayer, hasLayer } = useActiveLayers({ defaultDiagramLayer });
|
|
23
|
+
const context = {
|
|
24
|
+
selectedNodeId,
|
|
25
|
+
focusedNodeId,
|
|
26
|
+
componentMenu,
|
|
27
|
+
zoomLevel,
|
|
28
|
+
observationSummary,
|
|
29
|
+
modelVersion,
|
|
30
|
+
previewMode,
|
|
31
|
+
setSelectedNodeId,
|
|
32
|
+
setFocusedNodeId,
|
|
33
|
+
onComponentDoubleClick,
|
|
34
|
+
diagramLayers: {
|
|
35
|
+
activeLayers,
|
|
36
|
+
setLayer,
|
|
37
|
+
addLayer,
|
|
38
|
+
removeLayer,
|
|
39
|
+
hasLayer
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
return /* @__PURE__ */ jsx(DiagramContext.Provider, { value: { ...context }, children });
|
|
43
|
+
}
|
|
44
|
+
const useDiagramContext = () => useContext(DiagramContext);
|
|
45
|
+
|
|
46
|
+
export { CellDiagramContext, DiagramContext, useDiagramContext };
|
|
47
|
+
//# sourceMappingURL=DiagramContext.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiagramContext.esm.js","sources":["../../../src/components/DiagramContext/DiagramContext.tsx"],"sourcesContent":["import { createContext, ReactNode, useContext } from 'react';\nimport { DiagramLayer } from '../../types';\nimport { useActiveLayers } from '../../hooks/useActiveLayers';\nimport { MoreVertMenuItem, ObservationSummary } from '../../types';\n\ninterface IDiagramContext {\n selectedNodeId: string;\n focusedNodeId?: string;\n componentMenu?: MoreVertMenuItem[];\n zoomLevel: number;\n observationSummary?: ObservationSummary;\n modelVersion?: string;\n previewMode?: boolean;\n setSelectedNodeId: (id: string) => void;\n setFocusedNodeId?: (id: string) => void;\n onComponentDoubleClick?: (componentId: string) => void;\n diagramLayers: {\n activeLayers: DiagramLayer[];\n setLayer: (layer: DiagramLayer) => void;\n addLayer: (layer: DiagramLayer) => void;\n removeLayer: (layer: DiagramLayer) => void;\n hasLayer: (layer: DiagramLayer) => boolean;\n };\n}\n// Omitted states are handled by the Diagram context provider\ntype OmittedDiagramContext = Omit<IDiagramContext, 'diagramLayers'>;\ninterface DiagramContextProps extends OmittedDiagramContext {\n children: ReactNode;\n defaultDiagramLayer: DiagramLayer;\n}\n\nconst defaultState: any = {};\nexport const DiagramContext = createContext<IDiagramContext>(defaultState);\n\nexport function CellDiagramContext(props: DiagramContextProps) {\n const {\n children,\n selectedNodeId,\n focusedNodeId,\n componentMenu,\n zoomLevel,\n observationSummary,\n defaultDiagramLayer,\n modelVersion,\n previewMode,\n setSelectedNodeId,\n setFocusedNodeId,\n onComponentDoubleClick,\n } = props;\n\n const { activeLayers, addLayer, removeLayer, setLayer, hasLayer } =\n useActiveLayers({ defaultDiagramLayer });\n\n const context: IDiagramContext = {\n selectedNodeId,\n focusedNodeId,\n componentMenu,\n zoomLevel,\n observationSummary,\n modelVersion,\n previewMode,\n setSelectedNodeId,\n setFocusedNodeId,\n onComponentDoubleClick,\n diagramLayers: {\n activeLayers,\n setLayer,\n addLayer,\n removeLayer,\n hasLayer,\n },\n };\n\n return (\n <DiagramContext.Provider value={{ ...context }}>\n {children}\n </DiagramContext.Provider>\n );\n}\n\nexport const useDiagramContext = () => useContext(DiagramContext);\n"],"names":[],"mappings":";;;;AA+BA,MAAM,eAAoB,EAAC;AACpB,MAAM,cAAA,GAAiB,cAA+B,YAAY;AAElE,SAAS,mBAAmB,KAAA,EAA4B;AAC7D,EAAA,MAAM;AAAA,IACJ,QAAA;AAAA,IACA,cAAA;AAAA,IACA,aAAA;AAAA,IACA,aAAA;AAAA,IACA,SAAA;AAAA,IACA,kBAAA;AAAA,IACA,mBAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,gBAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AAEJ,EAAA,MAAM,EAAE,YAAA,EAAc,QAAA,EAAU,WAAA,EAAa,QAAA,EAAU,UAAS,GAC9D,eAAA,CAAgB,EAAE,mBAAA,EAAqB,CAAA;AAEzC,EAAA,MAAM,OAAA,GAA2B;AAAA,IAC/B,cAAA;AAAA,IACA,aAAA;AAAA,IACA,aAAA;AAAA,IACA,SAAA;AAAA,IACA,kBAAA;AAAA,IACA,YAAA;AAAA,IACA,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,gBAAA;AAAA,IACA,sBAAA;AAAA,IACA,aAAA,EAAe;AAAA,MACb,YAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAA,uBACE,GAAA,CAAC,eAAe,QAAA,EAAf,EAAwB,OAAO,EAAE,GAAG,OAAA,EAAQ,EAC1C,QAAA,EACH,CAAA;AAEJ;AAEO,MAAM,iBAAA,GAAoB,MAAM,UAAA,CAAW,cAAc;;;;"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { DefaultLinkFactory } from '@projectstorm/react-diagrams';
|
|
3
|
+
import { ExternalLinkModel } from './ExternalLinkModel.esm.js';
|
|
4
|
+
import { ExternalLinkWidget } from './ExternalLinkWidget.esm.js';
|
|
5
|
+
|
|
6
|
+
class ExternalLinkFactory extends DefaultLinkFactory {
|
|
7
|
+
constructor() {
|
|
8
|
+
super("externalLink");
|
|
9
|
+
}
|
|
10
|
+
generateModel(event) {
|
|
11
|
+
return new ExternalLinkModel(event.initialConfig.id);
|
|
12
|
+
}
|
|
13
|
+
generateReactWidget(props) {
|
|
14
|
+
return /* @__PURE__ */ jsx(ExternalLinkWidget, { link: props.model, engine: this.engine });
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { ExternalLinkFactory };
|
|
19
|
+
//# sourceMappingURL=ExternalLinkFactory.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExternalLinkFactory.esm.js","sources":["../../../../src/components/External/ExternalLink/ExternalLinkFactory.tsx"],"sourcesContent":["import { DefaultLinkFactory } from '@projectstorm/react-diagrams';\nimport { ExternalLinkModel } from './ExternalLinkModel';\nimport { ExternalLinkWidget } from './ExternalLinkWidget';\n\nexport class ExternalLinkFactory extends DefaultLinkFactory {\n constructor() {\n super('externalLink');\n }\n\n generateModel(event: { initialConfig: any }): ExternalLinkModel {\n return new ExternalLinkModel(event.initialConfig.id);\n }\n\n generateReactWidget(props: { model: ExternalLinkModel }): JSX.Element {\n return <ExternalLinkWidget link={props.model} engine={this.engine} />;\n }\n}\n"],"names":[],"mappings":";;;;;AAIO,MAAM,4BAA4B,kBAAA,CAAmB;AAAA,EAC1D,WAAA,GAAc;AACZ,IAAA,KAAA,CAAM,cAAc,CAAA;AAAA,EACtB;AAAA,EAEA,cAAc,KAAA,EAAkD;AAC9D,IAAA,OAAO,IAAI,iBAAA,CAAkB,KAAA,CAAM,aAAA,CAAc,EAAE,CAAA;AAAA,EACrD;AAAA,EAEA,oBAAoB,KAAA,EAAkD;AACpE,IAAA,2BAAQ,kBAAA,EAAA,EAAmB,IAAA,EAAM,MAAM,KAAA,EAAO,MAAA,EAAQ,KAAK,MAAA,EAAQ,CAAA;AAAA,EACrE;AACF;;;;"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { PortModelAlignment } from '@projectstorm/react-diagrams';
|
|
2
|
+
import { BezierCurve, Point } from '@projectstorm/geometry';
|
|
3
|
+
import { SharedLinkModel } from '../../SharedLink/SharedLink.esm.js';
|
|
4
|
+
|
|
5
|
+
class ExternalLinkModel extends SharedLinkModel {
|
|
6
|
+
sourceNode;
|
|
7
|
+
targetNode;
|
|
8
|
+
withRightOffset;
|
|
9
|
+
constructor(id, withRightOffset = false) {
|
|
10
|
+
super(id, "externalLink");
|
|
11
|
+
this.withRightOffset = withRightOffset;
|
|
12
|
+
}
|
|
13
|
+
setSourceNode(nodeId) {
|
|
14
|
+
this.sourceNode = { nodeId };
|
|
15
|
+
}
|
|
16
|
+
setTargetNode(nodeId) {
|
|
17
|
+
this.targetNode = { nodeId };
|
|
18
|
+
}
|
|
19
|
+
getArrowHeadPoints = () => {
|
|
20
|
+
let points = "";
|
|
21
|
+
const targetPort = this.getTargetPort().getPosition();
|
|
22
|
+
if (this.getTargetPort().getOptions().alignment === PortModelAlignment.RIGHT) {
|
|
23
|
+
points = `${targetPort.x + 6} ${targetPort.y}, ${targetPort.x + 16} ${targetPort.y + 10},
|
|
24
|
+
${targetPort.x + 16} ${targetPort.y - 10}`;
|
|
25
|
+
} else if (this.getTargetPort().getOptions().alignment === PortModelAlignment.LEFT) {
|
|
26
|
+
points = `${targetPort.x} ${targetPort.y}, ${targetPort.x - 14} ${targetPort.y + 10},
|
|
27
|
+
${targetPort.x - 14} ${targetPort.y - 10}`;
|
|
28
|
+
} else if (this.getTargetPort().getOptions().alignment === PortModelAlignment.BOTTOM) {
|
|
29
|
+
points = `${targetPort.x} ${targetPort.y + 2}, ${targetPort.x + 10} ${targetPort.y + 14},
|
|
30
|
+
${targetPort.x - 10} ${targetPort.y + 14}`;
|
|
31
|
+
} else if (this.getTargetPort().getOptions().alignment === PortModelAlignment.TOP) {
|
|
32
|
+
points = `${targetPort.x} ${targetPort.y}, ${targetPort.x + 10} ${targetPort.y - 15},
|
|
33
|
+
${targetPort.x - 10} ${targetPort.y - 15}`;
|
|
34
|
+
}
|
|
35
|
+
return points;
|
|
36
|
+
};
|
|
37
|
+
getCurvePath = () => {
|
|
38
|
+
const lineCurve = new BezierCurve();
|
|
39
|
+
if (this.getSourcePort() && this.getTargetPort()) {
|
|
40
|
+
const markerSpace = 60;
|
|
41
|
+
const sourcePoint = this.getSourcePort().getPosition().clone();
|
|
42
|
+
const targetPoint = this.getTargetPort().getPosition().clone();
|
|
43
|
+
if (this.getTargetPort().getOptions().alignment === PortModelAlignment.LEFT) {
|
|
44
|
+
targetPoint.x -= markerSpace;
|
|
45
|
+
} else if (this.getTargetPort().getOptions().alignment === PortModelAlignment.RIGHT) {
|
|
46
|
+
targetPoint.x += markerSpace;
|
|
47
|
+
} else if (this.getTargetPort().getOptions().alignment === PortModelAlignment.BOTTOM) {
|
|
48
|
+
targetPoint.y += markerSpace;
|
|
49
|
+
} else {
|
|
50
|
+
targetPoint.y -= markerSpace;
|
|
51
|
+
}
|
|
52
|
+
lineCurve.setSource(this.getSourcePort().getPosition());
|
|
53
|
+
lineCurve.setTarget(this.getTargetPort().getPosition());
|
|
54
|
+
lineCurve.setSourceControl(sourcePoint);
|
|
55
|
+
lineCurve.setTargetControl(targetPoint);
|
|
56
|
+
lineCurve.getSourceControl().translate(...this.calculateControlOffset(this.getSourcePort()));
|
|
57
|
+
lineCurve.getTargetControl().translate(...this.calculateControlOffset(this.getTargetPort()));
|
|
58
|
+
}
|
|
59
|
+
return lineCurve.getSVGCurve();
|
|
60
|
+
};
|
|
61
|
+
getCurvePathWithOffset = () => {
|
|
62
|
+
const lineCurve = new BezierCurve();
|
|
63
|
+
if (this.getSourcePort() && this.getTargetPort()) {
|
|
64
|
+
const markerSpace = 60;
|
|
65
|
+
const sourcePoint = this.getSourcePort().getPosition().clone();
|
|
66
|
+
const targetPoint = this.getTargetPort().getPosition().clone();
|
|
67
|
+
const middlePoint = new Point(targetPoint.x + 100, sourcePoint.y - 100);
|
|
68
|
+
if (this.getTargetPort().getOptions().alignment === PortModelAlignment.LEFT) {
|
|
69
|
+
targetPoint.x -= markerSpace;
|
|
70
|
+
} else if (this.getTargetPort().getOptions().alignment === PortModelAlignment.RIGHT) {
|
|
71
|
+
targetPoint.x += markerSpace;
|
|
72
|
+
} else if (this.getTargetPort().getOptions().alignment === PortModelAlignment.BOTTOM) {
|
|
73
|
+
targetPoint.y += markerSpace;
|
|
74
|
+
} else {
|
|
75
|
+
targetPoint.y -= markerSpace;
|
|
76
|
+
}
|
|
77
|
+
lineCurve.setSource(this.getSourcePort().getPosition());
|
|
78
|
+
lineCurve.setTarget(this.getTargetPort().getPosition());
|
|
79
|
+
lineCurve.setSourceControl(middlePoint);
|
|
80
|
+
lineCurve.setTargetControl(targetPoint);
|
|
81
|
+
lineCurve.getSourceControl().translate(...this.calculateControlOffset(this.getSourcePort()));
|
|
82
|
+
lineCurve.getTargetControl().translate(...this.calculateControlOffset(this.getTargetPort()));
|
|
83
|
+
}
|
|
84
|
+
return lineCurve.getSVGCurve();
|
|
85
|
+
};
|
|
86
|
+
getTwoBendPath = () => {
|
|
87
|
+
let path = "";
|
|
88
|
+
let startHorizontally = false;
|
|
89
|
+
if (this.getTargetPort().getOptions().alignment === PortModelAlignment.LEFT || this.getTargetPort().getOptions().alignment === PortModelAlignment.RIGHT) {
|
|
90
|
+
startHorizontally = true;
|
|
91
|
+
}
|
|
92
|
+
if (this.getSourcePort() && this.getTargetPort()) {
|
|
93
|
+
const sourcePoint = this.getSourcePort().getPosition().clone();
|
|
94
|
+
const targetPoint = this.getTargetPort().getPosition().clone();
|
|
95
|
+
if (startHorizontally) {
|
|
96
|
+
path = `M ${sourcePoint.x} ${sourcePoint.y} `;
|
|
97
|
+
path += `L ${(sourcePoint.x + targetPoint.x) / 2} ${sourcePoint.y} `;
|
|
98
|
+
path += `L ${(sourcePoint.x + targetPoint.x) / 2} ${targetPoint.y} `;
|
|
99
|
+
path += `L ${targetPoint.x} ${targetPoint.y}`;
|
|
100
|
+
} else {
|
|
101
|
+
path = `M ${sourcePoint.x} ${sourcePoint.y} `;
|
|
102
|
+
path += `L ${sourcePoint.x} ${(sourcePoint.y + targetPoint.y) / 2} `;
|
|
103
|
+
path += `L ${targetPoint.x} ${(sourcePoint.y + targetPoint.y) / 2} `;
|
|
104
|
+
path += `L ${targetPoint.x} ${targetPoint.y}`;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return path;
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export { ExternalLinkModel };
|
|
112
|
+
//# sourceMappingURL=ExternalLinkModel.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExternalLinkModel.esm.js","sources":["../../../../src/components/External/ExternalLink/ExternalLinkModel.ts"],"sourcesContent":["import { PortModelAlignment } from '@projectstorm/react-diagrams';\nimport { BezierCurve, Point } from '@projectstorm/geometry';\nimport { SharedLinkModel } from '../../SharedLink/SharedLink';\n\ninterface LinkOrigins {\n nodeId: string;\n}\n\nexport class ExternalLinkModel extends SharedLinkModel {\n sourceNode!: LinkOrigins;\n targetNode!: LinkOrigins;\n withRightOffset: boolean;\n\n constructor(id: string, withRightOffset: boolean = false) {\n super(id, 'externalLink');\n this.withRightOffset = withRightOffset;\n }\n\n setSourceNode(nodeId: string) {\n this.sourceNode = { nodeId };\n }\n\n setTargetNode(nodeId: string) {\n this.targetNode = { nodeId };\n }\n\n getArrowHeadPoints = (): string => {\n let points: string = '';\n const targetPort: Point = this.getTargetPort().getPosition();\n\n if (\n this.getTargetPort().getOptions().alignment === PortModelAlignment.RIGHT\n ) {\n points = `${targetPort.x + 6} ${targetPort.y}, ${targetPort.x + 16} ${\n targetPort.y + 10\n },\n ${targetPort.x + 16} ${targetPort.y - 10}`;\n } else if (\n this.getTargetPort().getOptions().alignment === PortModelAlignment.LEFT\n ) {\n points = `${targetPort.x} ${targetPort.y}, ${targetPort.x - 14} ${\n targetPort.y + 10\n },\n ${targetPort.x - 14} ${targetPort.y - 10}`;\n } else if (\n this.getTargetPort().getOptions().alignment === PortModelAlignment.BOTTOM\n ) {\n points = `${targetPort.x} ${targetPort.y + 2}, ${targetPort.x + 10} ${\n targetPort.y + 14\n },\n\t\t\t\t${targetPort.x - 10} ${targetPort.y + 14}`;\n } else if (\n this.getTargetPort().getOptions().alignment === PortModelAlignment.TOP\n ) {\n points = `${targetPort.x} ${targetPort.y}, ${targetPort.x + 10} ${\n targetPort.y - 15\n },\n\t\t\t\t\t${targetPort.x - 10} ${targetPort.y - 15}`;\n }\n return points;\n };\n\n getCurvePath = (): string => {\n const lineCurve = new BezierCurve();\n\n if (this.getSourcePort() && this.getTargetPort()) {\n const markerSpace: number = 60;\n\n // With a leeway space for the marker\n const sourcePoint: Point = this.getSourcePort().getPosition().clone();\n const targetPoint: Point = this.getTargetPort().getPosition().clone();\n\n if (\n this.getTargetPort().getOptions().alignment === PortModelAlignment.LEFT\n ) {\n targetPoint.x -= markerSpace;\n } else if (\n this.getTargetPort().getOptions().alignment === PortModelAlignment.RIGHT\n ) {\n targetPoint.x += markerSpace;\n } else if (\n this.getTargetPort().getOptions().alignment ===\n PortModelAlignment.BOTTOM\n ) {\n targetPoint.y += markerSpace;\n } else {\n targetPoint.y -= markerSpace;\n }\n\n lineCurve.setSource(this.getSourcePort().getPosition());\n lineCurve.setTarget(this.getTargetPort().getPosition());\n lineCurve.setSourceControl(sourcePoint);\n lineCurve.setTargetControl(targetPoint);\n lineCurve\n .getSourceControl()\n .translate(...this.calculateControlOffset(this.getSourcePort()));\n lineCurve\n .getTargetControl()\n .translate(...this.calculateControlOffset(this.getTargetPort()));\n }\n\n return lineCurve.getSVGCurve();\n };\n\n getCurvePathWithOffset = (): string => {\n const lineCurve = new BezierCurve();\n\n if (this.getSourcePort() && this.getTargetPort()) {\n const markerSpace: number = 60;\n\n const sourcePoint: Point = this.getSourcePort().getPosition().clone();\n const targetPoint: Point = this.getTargetPort().getPosition().clone();\n const middlePoint = new Point(targetPoint.x + 100, sourcePoint.y - 100);\n\n if (\n this.getTargetPort().getOptions().alignment === PortModelAlignment.LEFT\n ) {\n targetPoint.x -= markerSpace;\n } else if (\n this.getTargetPort().getOptions().alignment === PortModelAlignment.RIGHT\n ) {\n targetPoint.x += markerSpace;\n } else if (\n this.getTargetPort().getOptions().alignment ===\n PortModelAlignment.BOTTOM\n ) {\n targetPoint.y += markerSpace;\n } else {\n targetPoint.y -= markerSpace;\n }\n\n lineCurve.setSource(this.getSourcePort().getPosition());\n lineCurve.setTarget(this.getTargetPort().getPosition());\n lineCurve.setSourceControl(middlePoint);\n lineCurve.setTargetControl(targetPoint);\n lineCurve\n .getSourceControl()\n .translate(...this.calculateControlOffset(this.getSourcePort()));\n lineCurve\n .getTargetControl()\n .translate(...this.calculateControlOffset(this.getTargetPort()));\n }\n\n return lineCurve.getSVGCurve();\n };\n\n getTwoBendPath = (): string => {\n let path = '';\n let startHorizontally = false;\n\n if (\n this.getTargetPort().getOptions().alignment === PortModelAlignment.LEFT ||\n this.getTargetPort().getOptions().alignment === PortModelAlignment.RIGHT\n ) {\n startHorizontally = true;\n }\n\n if (this.getSourcePort() && this.getTargetPort()) {\n const sourcePoint: Point = this.getSourcePort().getPosition().clone();\n const targetPoint: Point = this.getTargetPort().getPosition().clone();\n\n if (startHorizontally) {\n // Start horizontally, then bend in the center of the y-axis\n path = `M ${sourcePoint.x} ${sourcePoint.y} `;\n path += `L ${(sourcePoint.x + targetPoint.x) / 2} ${sourcePoint.y} `;\n path += `L ${(sourcePoint.x + targetPoint.x) / 2} ${targetPoint.y} `;\n path += `L ${targetPoint.x} ${targetPoint.y}`;\n } else {\n // Start vertically, then bend in the center of the x-axis\n path = `M ${sourcePoint.x} ${sourcePoint.y} `;\n path += `L ${sourcePoint.x} ${(sourcePoint.y + targetPoint.y) / 2} `;\n path += `L ${targetPoint.x} ${(sourcePoint.y + targetPoint.y) / 2} `;\n path += `L ${targetPoint.x} ${targetPoint.y}`;\n }\n }\n\n return path;\n };\n}\n"],"names":[],"mappings":"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"}
|