@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,64 @@
|
|
|
1
|
+
import styled from '@emotion/styled';
|
|
2
|
+
import { CIRCLE_WIDTH, LABEL_FONT_SIZE, LABEL_MAX_WIDTH, ICON_SCALE } from '../../../resources/constants.esm.js';
|
|
3
|
+
import 'react/jsx-runtime';
|
|
4
|
+
import { Orientation } from './ConnectionModel.esm.js';
|
|
5
|
+
|
|
6
|
+
const getConnectionHeadBorderColor = ({
|
|
7
|
+
theme,
|
|
8
|
+
isSelected,
|
|
9
|
+
isFocused
|
|
10
|
+
}) => {
|
|
11
|
+
if (isSelected) {
|
|
12
|
+
return theme.colors.SECONDARY;
|
|
13
|
+
}
|
|
14
|
+
if (isFocused) {
|
|
15
|
+
return theme.colors.SECONDARY;
|
|
16
|
+
}
|
|
17
|
+
return theme.colors.OUTLINE;
|
|
18
|
+
};
|
|
19
|
+
const ConnectionNode = styled.div`
|
|
20
|
+
color: ${({ theme }) => theme.colors.ON_SURFACE_VARIANT};
|
|
21
|
+
display: flex;
|
|
22
|
+
flex-direction: ${(props) => props.orientation === Orientation.VERTICAL ? "column" : "row"};
|
|
23
|
+
align-items: center;
|
|
24
|
+
justify-content: center;
|
|
25
|
+
gap: 10px;
|
|
26
|
+
padding: 2px;
|
|
27
|
+
pointer-events: all;
|
|
28
|
+
cursor: ${(props) => props.previewMode ? "pointer" : "grab"};
|
|
29
|
+
&:active {
|
|
30
|
+
cursor: ${(props) => props.previewMode ? "pointer" : "grabbing"};
|
|
31
|
+
}
|
|
32
|
+
`;
|
|
33
|
+
const ConnectionHead = styled.div`
|
|
34
|
+
background-color: ${({ theme, isSelected }) => isSelected ? theme.colors.SECONDARY_CONTAINER : theme.colors.SURFACE};
|
|
35
|
+
border: ${({ theme, borderWidth, isSelected, isFocused }) => `${borderWidth}px solid ${getConnectionHeadBorderColor({
|
|
36
|
+
theme,
|
|
37
|
+
isSelected,
|
|
38
|
+
isFocused
|
|
39
|
+
})}`};
|
|
40
|
+
border-radius: 50%;
|
|
41
|
+
height: ${CIRCLE_WIDTH}px;
|
|
42
|
+
width: ${CIRCLE_WIDTH}px;
|
|
43
|
+
display: flex;
|
|
44
|
+
justify-content: center;
|
|
45
|
+
align-items: center;
|
|
46
|
+
`;
|
|
47
|
+
const ConnectionName = styled.span`
|
|
48
|
+
font-size: ${LABEL_FONT_SIZE}px;
|
|
49
|
+
white-space: nowrap;
|
|
50
|
+
overflow: hidden;
|
|
51
|
+
text-overflow: ellipsis;
|
|
52
|
+
max-width: ${(props) => props.orientation === Orientation.VERTICAL ? LABEL_MAX_WIDTH : "unset"};
|
|
53
|
+
`;
|
|
54
|
+
const IconWrapper = styled.div`
|
|
55
|
+
height: 32px;
|
|
56
|
+
width: 32px;
|
|
57
|
+
svg {
|
|
58
|
+
fill: ${({ theme, isSelected }) => isSelected ? theme.colors.SECONDARY : theme.colors.OUTLINE};
|
|
59
|
+
transform: ${({ previewMode }) => previewMode ? `scale(${ICON_SCALE.PREVIEW})` : "none"};
|
|
60
|
+
}
|
|
61
|
+
`;
|
|
62
|
+
|
|
63
|
+
export { ConnectionHead, ConnectionName, ConnectionNode, IconWrapper };
|
|
64
|
+
//# sourceMappingURL=styles.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.esm.js","sources":["../../../../src/components/Connection/ConnectionNode/styles.ts"],"sourcesContent":["import styled from '@emotion/styled';\nimport { Theme } from '@emotion/react';\nimport {\n CIRCLE_WIDTH,\n ICON_SCALE,\n LABEL_FONT_SIZE,\n LABEL_MAX_WIDTH,\n} from '../../../resources';\nimport { Orientation } from './ConnectionModel';\n\ninterface StyleProps {\n isAnonymous?: boolean;\n isSelected?: boolean;\n isClickable?: boolean;\n isCollapsed?: boolean;\n isFocused?: boolean;\n orientation?: Orientation;\n borderWidth?: number;\n previewMode?: boolean;\n}\n\nconst getConnectionHeadBorderColor = ({\n theme,\n isSelected,\n isFocused,\n}: Pick<StyleProps, 'isSelected' | 'isFocused'> & { theme: Theme }) => {\n if (isSelected) {\n return theme.colors.SECONDARY;\n }\n if (isFocused) {\n return theme.colors.SECONDARY;\n }\n return theme.colors.OUTLINE;\n};\n\nexport const ConnectionNode = styled.div<StyleProps>`\n color: ${({ theme }) => theme.colors.ON_SURFACE_VARIANT};\n display: flex;\n flex-direction: ${(props: StyleProps) =>\n props.orientation === Orientation.VERTICAL ? 'column' : 'row'};\n align-items: center;\n justify-content: center;\n gap: 10px;\n padding: 2px;\n pointer-events: all;\n cursor: ${(props: StyleProps) => (props.previewMode ? 'pointer' : 'grab')};\n &:active {\n cursor: ${(props: StyleProps) =>\n props.previewMode ? 'pointer' : 'grabbing'};\n }\n`;\n\nexport const ConnectionHead = styled.div<StyleProps>`\n background-color: ${({ theme, isSelected }) =>\n isSelected ? theme.colors.SECONDARY_CONTAINER : theme.colors.SURFACE};\n border: ${({ theme, borderWidth, isSelected, isFocused }) =>\n `${borderWidth}px solid ${getConnectionHeadBorderColor({\n theme,\n isSelected,\n isFocused,\n })}`};\n border-radius: 50%;\n height: ${CIRCLE_WIDTH}px;\n width: ${CIRCLE_WIDTH}px;\n display: flex;\n justify-content: center;\n align-items: center;\n`;\n\nexport const ConnectionName = styled.span<StyleProps>`\n font-size: ${LABEL_FONT_SIZE}px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: ${(props: StyleProps) =>\n props.orientation === Orientation.VERTICAL ? LABEL_MAX_WIDTH : 'unset'};\n`;\n\ninterface IconWrapperStyleProps {\n previewMode: boolean;\n isSelected?: boolean;\n}\nexport const IconWrapper = styled.div<IconWrapperStyleProps>`\n height: 32px;\n width: 32px;\n svg {\n fill: ${({ theme, isSelected }) =>\n isSelected ? theme.colors.SECONDARY : theme.colors.OUTLINE};\n transform: ${({ previewMode }) =>\n previewMode ? `scale(${ICON_SCALE.PREVIEW})` : 'none'};\n }\n`;\n"],"names":[],"mappings":";;;;;AAqBA,MAAM,+BAA+B,CAAC;AAAA,EACpC,KAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,KAAuE;AACrE,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,OAAO,MAAM,MAAA,CAAO,SAAA;AAAA,EACtB;AACA,EAAA,IAAI,SAAA,EAAW;AACb,IAAA,OAAO,MAAM,MAAA,CAAO,SAAA;AAAA,EACtB;AACA,EAAA,OAAO,MAAM,MAAA,CAAO,OAAA;AACtB,CAAA;AAEO,MAAM,iBAAiB,MAAA,CAAO,GAAA;AAAA,SAAA,EAC1B,CAAC,EAAE,KAAA,EAAM,KAAM,KAAA,CAAM,OAAO,kBAAkB,CAAA;AAAA;AAAA,kBAAA,EAErC,CAAC,KAAA,KACjB,KAAA,CAAM,gBAAgB,WAAA,CAAY,QAAA,GAAW,WAAW,KAAK,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAAA,EAMrD,CAAC,KAAA,KAAuB,KAAA,CAAM,WAAA,GAAc,YAAY,MAAO,CAAA;AAAA;AAAA,YAAA,EAE7D,CAAC,KAAA,KACT,KAAA,CAAM,WAAA,GAAc,YAAY,UAAU,CAAA;AAAA;AAAA;AAIzC,MAAM,iBAAiB,MAAA,CAAO,GAAA;AAAA,oBAAA,EACf,CAAC,EAAE,KAAA,EAAO,UAAA,EAAW,KACvC,UAAA,GAAa,KAAA,CAAM,MAAA,CAAO,mBAAA,GAAsB,KAAA,CAAM,MAAA,CAAO,OAAO,CAAA;AAAA,UAAA,EAC5D,CAAC,EAAE,KAAA,EAAO,WAAA,EAAa,UAAA,EAAY,WAAU,KACrD,CAAA,EAAG,WAAW,CAAA,SAAA,EAAY,4BAAA,CAA6B;AAAA,EACrD,KAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAC,CAAC,CAAA,CAAE,CAAA;AAAA;AAAA,UAAA,EAEI,YAAY,CAAA;AAAA,SAAA,EACb,YAAY,CAAA;AAAA;AAAA;AAAA;AAAA;AAMhB,MAAM,iBAAiB,MAAA,CAAO,IAAA;AAAA,aAAA,EACtB,eAAe,CAAA;AAAA;AAAA;AAAA;AAAA,aAAA,EAIf,CAAC,KAAA,KACZ,KAAA,CAAM,gBAAgB,WAAA,CAAY,QAAA,GAAW,kBAAkB,OAAO,CAAA;AAAA;AAOnE,MAAM,cAAc,MAAA,CAAO,GAAA;AAAA;AAAA;AAAA;AAAA,UAAA,EAItB,CAAC,EAAE,KAAA,EAAO,UAAA,EAAW,KAC3B,UAAA,GAAa,KAAA,CAAM,MAAA,CAAO,SAAA,GAAY,KAAA,CAAM,MAAA,CAAO,OAAO,CAAA;AAAA,eAAA,EAC/C,CAAC,EAAE,WAAA,EAAY,KAC1B,cAAc,CAAA,MAAA,EAAS,UAAA,CAAW,OAAO,CAAA,CAAA,CAAA,GAAM,MAAM,CAAA;AAAA;AAAA;;;;"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { AbstractModelFactory } from '@projectstorm/react-canvas-core';
|
|
2
|
+
import { ConnectionPortModel } from './ConnectionPortModel.esm.js';
|
|
3
|
+
|
|
4
|
+
class ConnectionPortFactory extends AbstractModelFactory {
|
|
5
|
+
constructor() {
|
|
6
|
+
super("connectionPort");
|
|
7
|
+
}
|
|
8
|
+
generateModel(event) {
|
|
9
|
+
return new ConnectionPortModel(
|
|
10
|
+
event.initialConfig.id,
|
|
11
|
+
event.initialConfig.portType
|
|
12
|
+
);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export { ConnectionPortFactory };
|
|
17
|
+
//# sourceMappingURL=ConnectionPortFactory.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConnectionPortFactory.esm.js","sources":["../../../../src/components/Connection/ConnectionPort/ConnectionPortFactory.tsx"],"sourcesContent":["import { DiagramEngine, PortModel } from '@projectstorm/react-diagrams';\nimport { AbstractModelFactory } from '@projectstorm/react-canvas-core';\nimport { ConnectionPortModel } from './ConnectionPortModel';\n\nexport class ConnectionPortFactory extends AbstractModelFactory<\n PortModel,\n DiagramEngine\n> {\n constructor() {\n super('connectionPort');\n }\n\n generateModel(event: { initialConfig: any }): ConnectionPortModel {\n return new ConnectionPortModel(\n event.initialConfig.id,\n event.initialConfig.portType,\n );\n }\n}\n"],"names":[],"mappings":";;;AAIO,MAAM,8BAA8B,oBAAA,CAGzC;AAAA,EACA,WAAA,GAAc;AACZ,IAAA,KAAA,CAAM,gBAAgB,CAAA;AAAA,EACxB;AAAA,EAEA,cAAc,KAAA,EAAoD;AAChE,IAAA,OAAO,IAAI,mBAAA;AAAA,MACT,MAAM,aAAA,CAAc,EAAA;AAAA,MACpB,MAAM,aAAA,CAAc;AAAA,KACtB;AAAA,EACF;AACF;;;;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { PortModel } from '@projectstorm/react-diagrams';
|
|
2
|
+
|
|
3
|
+
class ConnectionPortModel extends PortModel {
|
|
4
|
+
constructor(id, portType) {
|
|
5
|
+
super({
|
|
6
|
+
type: "connectionPort",
|
|
7
|
+
name: `${portType}-${id}`,
|
|
8
|
+
id: `${portType}-${id}`,
|
|
9
|
+
alignment: portType
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
isLocked() {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export { ConnectionPortModel };
|
|
18
|
+
//# sourceMappingURL=ConnectionPortModel.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConnectionPortModel.esm.js","sources":["../../../../src/components/Connection/ConnectionPort/ConnectionPortModel.ts"],"sourcesContent":["import { PortModel, PortModelAlignment } from '@projectstorm/react-diagrams';\n\nexport class ConnectionPortModel extends PortModel {\n constructor(id: string, portType: PortModelAlignment) {\n super({\n type: 'connectionPort',\n name: `${portType}-${id}`,\n id: `${portType}-${id}`,\n alignment: portType,\n });\n }\n\n isLocked(): boolean {\n return true;\n }\n}\n"],"names":[],"mappings":";;AAEO,MAAM,4BAA4B,SAAA,CAAU;AAAA,EACjD,WAAA,CAAY,IAAY,QAAA,EAA8B;AACpD,IAAA,KAAA,CAAM;AAAA,MACJ,IAAA,EAAM,gBAAA;AAAA,MACN,IAAA,EAAM,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA;AAAA,MACvB,EAAA,EAAI,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA;AAAA,MACrB,SAAA,EAAW;AAAA,KACZ,CAAA;AAAA,EACH;AAAA,EAEA,QAAA,GAAoB;AAClB,IAAA,OAAO,IAAA;AAAA,EACT;AACF;;;;"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { PortWidget, PortModelAlignment } from '@projectstorm/react-diagrams';
|
|
3
|
+
import { sidePortStyles, inclusionPortStyles } from './styles.esm.js';
|
|
4
|
+
|
|
5
|
+
function getPortStyles(alignment) {
|
|
6
|
+
if (alignment === PortModelAlignment.LEFT) {
|
|
7
|
+
return { left: 0, ...sidePortStyles };
|
|
8
|
+
}
|
|
9
|
+
if (alignment === PortModelAlignment.RIGHT) {
|
|
10
|
+
return { right: 0, ...sidePortStyles };
|
|
11
|
+
}
|
|
12
|
+
if (alignment === PortModelAlignment.TOP) {
|
|
13
|
+
return { top: 0, ...inclusionPortStyles };
|
|
14
|
+
}
|
|
15
|
+
return { bottom: 0, ...inclusionPortStyles };
|
|
16
|
+
}
|
|
17
|
+
function ConnectionPortWidget(props) {
|
|
18
|
+
const { port, engine } = props;
|
|
19
|
+
const portStyles = getPortStyles(port.getOptions().alignment);
|
|
20
|
+
return /* @__PURE__ */ jsx(PortWidget, { engine, port, style: portStyles });
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export { ConnectionPortWidget };
|
|
24
|
+
//# sourceMappingURL=ConnectionPortWidget.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConnectionPortWidget.esm.js","sources":["../../../../src/components/Connection/ConnectionPort/ConnectionPortWidget.tsx"],"sourcesContent":["import { CSSProperties } from 'react';\nimport {\n DiagramEngine,\n PortModelAlignment,\n PortWidget,\n} from '@projectstorm/react-diagrams';\nimport { ConnectionPortModel } from './ConnectionPortModel';\nimport { inclusionPortStyles, sidePortStyles } from './styles';\n\ninterface CustomPortProps {\n port: ConnectionPortModel;\n engine: DiagramEngine;\n}\n\nfunction getPortStyles(\n alignment: PortModelAlignment | undefined,\n): CSSProperties {\n if (alignment === PortModelAlignment.LEFT) {\n return { left: 0, ...sidePortStyles };\n }\n if (alignment === PortModelAlignment.RIGHT) {\n return { right: 0, ...sidePortStyles };\n }\n if (alignment === PortModelAlignment.TOP) {\n return { top: 0, ...inclusionPortStyles };\n }\n return { bottom: 0, ...inclusionPortStyles };\n}\n\nexport function ConnectionPortWidget(props: CustomPortProps) {\n const { port, engine } = props;\n const portStyles: CSSProperties = getPortStyles(port.getOptions().alignment);\n\n return <PortWidget engine={engine} port={port} style={portStyles} />;\n}\n"],"names":[],"mappings":";;;;AAcA,SAAS,cACP,SAAA,EACe;AACf,EAAA,IAAI,SAAA,KAAc,mBAAmB,IAAA,EAAM;AACzC,IAAA,OAAO,EAAE,IAAA,EAAM,CAAA,EAAG,GAAG,cAAA,EAAe;AAAA,EACtC;AACA,EAAA,IAAI,SAAA,KAAc,mBAAmB,KAAA,EAAO;AAC1C,IAAA,OAAO,EAAE,KAAA,EAAO,CAAA,EAAG,GAAG,cAAA,EAAe;AAAA,EACvC;AACA,EAAA,IAAI,SAAA,KAAc,mBAAmB,GAAA,EAAK;AACxC,IAAA,OAAO,EAAE,GAAA,EAAK,CAAA,EAAG,GAAG,mBAAA,EAAoB;AAAA,EAC1C;AACA,EAAA,OAAO,EAAE,MAAA,EAAQ,CAAA,EAAG,GAAG,mBAAA,EAAoB;AAC7C;AAEO,SAAS,qBAAqB,KAAA,EAAwB;AAC3D,EAAA,MAAM,EAAE,IAAA,EAAM,MAAA,EAAO,GAAI,KAAA;AACzB,EAAA,MAAM,UAAA,GAA4B,aAAA,CAAc,IAAA,CAAK,UAAA,GAAa,SAAS,CAAA;AAE3E,EAAA,uBAAO,GAAA,CAAC,UAAA,EAAA,EAAW,MAAA,EAAgB,IAAA,EAAY,OAAO,UAAA,EAAY,CAAA;AACpE;;;;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const sidePortStyles = {
|
|
2
|
+
position: "absolute",
|
|
3
|
+
height: "16px",
|
|
4
|
+
width: "2px"
|
|
5
|
+
};
|
|
6
|
+
const inclusionPortStyles = {
|
|
7
|
+
position: "absolute",
|
|
8
|
+
height: "2px",
|
|
9
|
+
width: "2px"
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export { inclusionPortStyles, sidePortStyles };
|
|
13
|
+
//# sourceMappingURL=styles.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.esm.js","sources":["../../../../src/components/Connection/ConnectionPort/styles.ts"],"sourcesContent":["import { CSSProperties } from 'react';\n\nexport const sidePortStyles: CSSProperties = {\n position: 'absolute',\n height: '16px',\n width: '2px',\n};\n\nexport const inclusionPortStyles: CSSProperties = {\n position: 'absolute',\n height: '2px',\n width: '2px',\n};\n"],"names":[],"mappings":"AAEO,MAAM,cAAA,GAAgC;AAAA,EAC3C,QAAA,EAAU,UAAA;AAAA,EACV,MAAA,EAAQ,MAAA;AAAA,EACR,KAAA,EAAO;AACT;AAEO,MAAM,mBAAA,GAAqC;AAAA,EAChD,QAAA,EAAU,UAAA;AAAA,EACV,MAAA,EAAQ,KAAA;AAAA,EACR,KAAA,EAAO;AACT;;;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CONNECTION_NODE, NAME_JOIN_CHAR } from '../../resources/constants.esm.js';
|
|
2
|
+
import 'react/jsx-runtime';
|
|
3
|
+
|
|
4
|
+
function getConnectionName(connection) {
|
|
5
|
+
return getConnectionNameById(connection.id);
|
|
6
|
+
}
|
|
7
|
+
function getConnectionNameById(id) {
|
|
8
|
+
return `${CONNECTION_NODE}${NAME_JOIN_CHAR}${id}`;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export { getConnectionName, getConnectionNameById };
|
|
12
|
+
//# sourceMappingURL=connection-node-util.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-node-util.esm.js","sources":["../../../src/components/Connection/connection-node-util.ts"],"sourcesContent":["import { CONNECTION_NODE, NAME_JOIN_CHAR } from '../../resources';\nimport { Connection } from '../../types';\n\nexport function getConnectionName(connection: Connection): string {\n return getConnectionNameById(connection.id);\n}\n\nexport function getConnectionNameById(id: string): string {\n return `${CONNECTION_NODE}${NAME_JOIN_CHAR}${id}`;\n}\n\nexport function getConnectionMetadataByName(name: string): {\n type: string;\n id: string;\n} {\n const parts = name.split(NAME_JOIN_CHAR);\n return { type: parts[0], id: parts[1] };\n}\n\nexport function getConnectionLinkName(source: string, target: string): string {\n return `${CONNECTION_NODE}${NAME_JOIN_CHAR}${source}::${target}`;\n}\n"],"names":[],"mappings":";;;AAGO,SAAS,kBAAkB,UAAA,EAAgC;AAChE,EAAA,OAAO,qBAAA,CAAsB,WAAW,EAAE,CAAA;AAC5C;AAEO,SAAS,sBAAsB,EAAA,EAAoB;AACxD,EAAA,OAAO,CAAA,EAAG,eAAe,CAAA,EAAG,cAAc,GAAG,EAAE,CAAA,CAAA;AACjD;;;;"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import Tooltip from '@mui/material/Tooltip';
|
|
3
|
+
import { ControlIconButton } from './style.esm.js';
|
|
4
|
+
|
|
5
|
+
function CanvasControlButton(props) {
|
|
6
|
+
const {
|
|
7
|
+
children,
|
|
8
|
+
onClick,
|
|
9
|
+
tooltipTitle,
|
|
10
|
+
tooltipPlacement = "left-end"
|
|
11
|
+
} = props;
|
|
12
|
+
return /* @__PURE__ */ jsx(
|
|
13
|
+
Tooltip,
|
|
14
|
+
{
|
|
15
|
+
arrow: true,
|
|
16
|
+
placement: tooltipPlacement,
|
|
17
|
+
title: tooltipTitle,
|
|
18
|
+
enterNextDelay: 200,
|
|
19
|
+
componentsProps: {
|
|
20
|
+
tooltip: {
|
|
21
|
+
sx: {
|
|
22
|
+
fontFamily: "GilmerRegular",
|
|
23
|
+
fontSize: "12px",
|
|
24
|
+
padding: "6px 10px"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
PopperProps: {
|
|
29
|
+
modifiers: [
|
|
30
|
+
{
|
|
31
|
+
name: "offset",
|
|
32
|
+
options: {
|
|
33
|
+
offset: [0, -10]
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
]
|
|
37
|
+
},
|
|
38
|
+
children: /* @__PURE__ */ jsx(
|
|
39
|
+
ControlIconButton,
|
|
40
|
+
{
|
|
41
|
+
size: "small",
|
|
42
|
+
onClick,
|
|
43
|
+
sx: {
|
|
44
|
+
cursor: "pointer"
|
|
45
|
+
},
|
|
46
|
+
children
|
|
47
|
+
}
|
|
48
|
+
)
|
|
49
|
+
}
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export { CanvasControlButton };
|
|
54
|
+
//# sourceMappingURL=ControlButton.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ControlButton.esm.js","sources":["../../../../src/components/Controls/ControlButtons/ControlButton.tsx"],"sourcesContent":["import { ReactNode } from 'react';\nimport Tooltip from '@mui/material/Tooltip';\nimport { ControlIconButton } from './style';\n\ninterface ControlButtonProps {\n children: ReactNode;\n onClick: () => void;\n tooltipTitle: string;\n tooltipPlacement?: 'left-end' | 'right-end' | 'top-start';\n}\n\nexport function CanvasControlButton(props: ControlButtonProps) {\n const {\n children,\n onClick,\n tooltipTitle,\n tooltipPlacement = 'left-end',\n } = props;\n\n return (\n <Tooltip\n arrow\n placement={tooltipPlacement}\n title={tooltipTitle}\n enterNextDelay={200}\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 <ControlIconButton\n size=\"small\"\n onClick={onClick}\n sx={{\n cursor: 'pointer',\n }}\n >\n {children}\n </ControlIconButton>\n </Tooltip>\n );\n}\n"],"names":[],"mappings":";;;;AAWO,SAAS,oBAAoB,KAAA,EAA2B;AAC7D,EAAA,MAAM;AAAA,IACJ,QAAA;AAAA,IACA,OAAA;AAAA,IACA,YAAA;AAAA,IACA,gBAAA,GAAmB;AAAA,GACrB,GAAI,KAAA;AAEJ,EAAA,uBACE,GAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAK,IAAA;AAAA,MACL,SAAA,EAAW,gBAAA;AAAA,MACX,KAAA,EAAO,YAAA;AAAA,MACP,cAAA,EAAgB,GAAA;AAAA,MAChB,eAAA,EAAiB;AAAA,QACf,OAAA,EAAS;AAAA,UACP,EAAA,EAAI;AAAA,YACF,UAAA,EAAY,eAAA;AAAA,YACZ,QAAA,EAAU,MAAA;AAAA,YACV,OAAA,EAAS;AAAA;AACX;AACF,OACF;AAAA,MACA,WAAA,EAAa;AAAA,QACX,SAAA,EAAW;AAAA,UACT;AAAA,YACE,IAAA,EAAM,QAAA;AAAA,YACN,OAAA,EAAS;AAAA,cACP,MAAA,EAAQ,CAAC,CAAA,EAAG,GAAG;AAAA;AACjB;AACF;AACF,OACF;AAAA,MAEA,QAAA,kBAAA,GAAA;AAAA,QAAC,iBAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,OAAA;AAAA,UACA,EAAA,EAAI;AAAA,YACF,MAAA,EAAQ;AAAA,WACV;AAAA,UAEC;AAAA;AAAA;AACH;AAAA,GACF;AAEJ;;;;"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import styled from '@emotion/styled';
|
|
2
|
+
import IconButton from '@mui/material/IconButton';
|
|
3
|
+
|
|
4
|
+
const ControlIconButton = styled(IconButton)`
|
|
5
|
+
background-color: ${({ theme }) => theme.colors.SURFACE_BRIGHT} !important;
|
|
6
|
+
border: 1px solid ${({ theme }) => theme.colors.SURFACE_DIM} !important;
|
|
7
|
+
border-radius: 2px !important;
|
|
8
|
+
height: 32px !important;
|
|
9
|
+
width: 32px !important;
|
|
10
|
+
color: ${({ theme }) => theme.colors.ON_SURFACE_VARIANT};
|
|
11
|
+
|
|
12
|
+
& svg {
|
|
13
|
+
height: 20px;
|
|
14
|
+
width: 20px;
|
|
15
|
+
}
|
|
16
|
+
`;
|
|
17
|
+
|
|
18
|
+
export { ControlIconButton };
|
|
19
|
+
//# sourceMappingURL=style.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style.esm.js","sources":["../../../../src/components/Controls/ControlButtons/style.ts"],"sourcesContent":["import styled from '@emotion/styled';\nimport IconButton from '@mui/material/IconButton';\n\n/**\n * Themed IconButton used by `CanvasControlButton`. Background and border are\n * pulled from the active cell-diagram theme so the canvas controls match\n * dark mode automatically.\n */\nexport const ControlIconButton: React.FC<any> = styled(IconButton)`\n background-color: ${({ theme }) => theme.colors.SURFACE_BRIGHT} !important;\n border: 1px solid ${({ theme }) => theme.colors.SURFACE_DIM} !important;\n border-radius: 2px !important;\n height: 32px !important;\n width: 32px !important;\n color: ${({ theme }) => theme.colors.ON_SURFACE_VARIANT};\n\n & svg {\n height: 20px;\n width: 20px;\n }\n`;\n"],"names":[],"mappings":";;;AAQO,MAAM,iBAAA,GAAmC,OAAO,UAAU,CAAA;AAAA,oBAAA,EAC3C,CAAC,EAAE,KAAA,EAAM,KAAM,KAAA,CAAM,OAAO,cAAc,CAAA;AAAA,oBAAA,EAC1C,CAAC,EAAE,KAAA,EAAM,KAAM,KAAA,CAAM,OAAO,WAAW,CAAA;AAAA;AAAA;AAAA;AAAA,SAAA,EAIlD,CAAC,EAAE,KAAA,EAAM,KAAM,KAAA,CAAM,OAAO,kBAAkB,CAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;;;"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useRef, useEffect } from 'react';
|
|
3
|
+
import { FullScreenIcon } from '../../resources/assets/icons/FullScreenIcon.esm.js';
|
|
4
|
+
import { FitScreenIcon } from '../../resources/assets/icons/FitScreenIcon.esm.js';
|
|
5
|
+
import { AddIcon } from '../../resources/assets/icons/AddIcon.esm.js';
|
|
6
|
+
import { RemoveIcon } from '../../resources/assets/icons/RemoveIcon.esm.js';
|
|
7
|
+
import { RefreshIcon } from '../../resources/assets/icons/RefreshIcon.esm.js';
|
|
8
|
+
import styled from '@emotion/styled';
|
|
9
|
+
import { CanvasControlButton } from './ControlButtons/ControlButton.esm.js';
|
|
10
|
+
import gsap from 'gsap';
|
|
11
|
+
|
|
12
|
+
const ControlPanel = styled.div`
|
|
13
|
+
bottom: 15px;
|
|
14
|
+
display: flex;
|
|
15
|
+
flex-direction: column;
|
|
16
|
+
gap: 5px;
|
|
17
|
+
justify-content: space-between;
|
|
18
|
+
position: absolute;
|
|
19
|
+
right: 15px;
|
|
20
|
+
width: 32px;
|
|
21
|
+
`;
|
|
22
|
+
function DiagramControls(props) {
|
|
23
|
+
const { engine, animation = true, refreshDiagram } = props;
|
|
24
|
+
const controlPanelRef = useRef(null);
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
if (animation) {
|
|
27
|
+
gsap.fromTo(
|
|
28
|
+
controlPanelRef.current,
|
|
29
|
+
{ scale: 0 },
|
|
30
|
+
{
|
|
31
|
+
scale: 1,
|
|
32
|
+
duration: 1,
|
|
33
|
+
ease: "power3.out",
|
|
34
|
+
delay: 1
|
|
35
|
+
}
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
}, []);
|
|
39
|
+
const onZoom = (zoomIn) => {
|
|
40
|
+
const delta = zoomIn ? 5 : -5;
|
|
41
|
+
engine.getModel().setZoomLevel(engine.getModel().getZoomLevel() + delta);
|
|
42
|
+
engine.repaintCanvas();
|
|
43
|
+
};
|
|
44
|
+
const zoomToFit = () => {
|
|
45
|
+
engine.zoomToFitNodes({ margin: 10, maxZoom: 1 });
|
|
46
|
+
};
|
|
47
|
+
const zoomToActualSize = () => {
|
|
48
|
+
engine.getModel().setZoomLevel(100);
|
|
49
|
+
engine.repaintCanvas();
|
|
50
|
+
};
|
|
51
|
+
return /* @__PURE__ */ jsxs(ControlPanel, { ref: controlPanelRef, children: [
|
|
52
|
+
refreshDiagram && /* @__PURE__ */ jsx(CanvasControlButton, { onClick: refreshDiagram, tooltipTitle: "Refresh", children: /* @__PURE__ */ jsx(RefreshIcon, {}) }),
|
|
53
|
+
/* @__PURE__ */ jsx(CanvasControlButton, { onClick: zoomToFit, tooltipTitle: "Zoom to fit nodes", children: /* @__PURE__ */ jsx(FullScreenIcon, {}) }),
|
|
54
|
+
/* @__PURE__ */ jsx(
|
|
55
|
+
CanvasControlButton,
|
|
56
|
+
{
|
|
57
|
+
onClick: zoomToActualSize,
|
|
58
|
+
tooltipTitle: "Zoom to actual size",
|
|
59
|
+
children: /* @__PURE__ */ jsx(FitScreenIcon, {})
|
|
60
|
+
}
|
|
61
|
+
),
|
|
62
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
63
|
+
/* @__PURE__ */ jsx(
|
|
64
|
+
CanvasControlButton,
|
|
65
|
+
{
|
|
66
|
+
onClick: () => {
|
|
67
|
+
onZoom(true);
|
|
68
|
+
},
|
|
69
|
+
tooltipTitle: "Zoom in",
|
|
70
|
+
children: /* @__PURE__ */ jsx(AddIcon, {})
|
|
71
|
+
}
|
|
72
|
+
),
|
|
73
|
+
/* @__PURE__ */ jsx(
|
|
74
|
+
CanvasControlButton,
|
|
75
|
+
{
|
|
76
|
+
onClick: () => {
|
|
77
|
+
onZoom(false);
|
|
78
|
+
},
|
|
79
|
+
tooltipTitle: "Zoom out",
|
|
80
|
+
children: /* @__PURE__ */ jsx(RemoveIcon, {})
|
|
81
|
+
}
|
|
82
|
+
)
|
|
83
|
+
] })
|
|
84
|
+
] });
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export { ControlPanel, DiagramControls };
|
|
88
|
+
//# sourceMappingURL=DiagramControls.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiagramControls.esm.js","sources":["../../../src/components/Controls/DiagramControls.tsx"],"sourcesContent":["import { FC, useEffect, useRef } from 'react';\nimport {\n FullScreenIcon,\n FitScreenIcon,\n AddIcon,\n RemoveIcon,\n RefreshIcon,\n} from '../../resources/assets/icons';\nimport styled from '@emotion/styled';\nimport { DiagramEngine } from '@projectstorm/react-diagrams';\nimport { CanvasControlButton } from './ControlButtons/ControlButton';\nimport gsap from 'gsap';\n\ninterface ControlProps {\n engine: DiagramEngine;\n animation?: boolean;\n refreshDiagram?: () => void;\n}\n\nexport const ControlPanel: FC<any> = styled.div`\n bottom: 15px;\n display: flex;\n flex-direction: column;\n gap: 5px;\n justify-content: space-between;\n position: absolute;\n right: 15px;\n width: 32px;\n`;\n\nexport function DiagramControls(props: ControlProps) {\n const { engine, animation = true, refreshDiagram } = props;\n const controlPanelRef = useRef(null);\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 const onZoom = (zoomIn: boolean) => {\n const delta: number = zoomIn ? +5 : -5;\n engine.getModel().setZoomLevel(engine.getModel().getZoomLevel() + delta);\n engine.repaintCanvas();\n };\n\n const zoomToFit = () => {\n engine.zoomToFitNodes({ margin: 10, maxZoom: 1 });\n };\n\n const zoomToActualSize = () => {\n engine.getModel().setZoomLevel(100);\n engine.repaintCanvas();\n };\n\n return (\n <ControlPanel ref={controlPanelRef}>\n {refreshDiagram && (\n <CanvasControlButton onClick={refreshDiagram} tooltipTitle=\"Refresh\">\n <RefreshIcon />\n </CanvasControlButton>\n )}\n\n <CanvasControlButton onClick={zoomToFit} tooltipTitle=\"Zoom to fit nodes\">\n <FullScreenIcon />\n </CanvasControlButton>\n\n <CanvasControlButton\n onClick={zoomToActualSize}\n tooltipTitle=\"Zoom to actual size\"\n >\n <FitScreenIcon />\n </CanvasControlButton>\n\n <div>\n <CanvasControlButton\n onClick={() => {\n onZoom(true);\n }}\n tooltipTitle=\"Zoom in\"\n >\n <AddIcon />\n </CanvasControlButton>\n\n <CanvasControlButton\n onClick={() => {\n onZoom(false);\n }}\n tooltipTitle=\"Zoom out\"\n >\n <RemoveIcon />\n </CanvasControlButton>\n </div>\n </ControlPanel>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAmBO,MAAM,eAAwB,MAAA,CAAO,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWrC,SAAS,gBAAgB,KAAA,EAAqB;AACnD,EAAA,MAAM,EAAE,MAAA,EAAQ,SAAA,GAAY,IAAA,EAAM,gBAAe,GAAI,KAAA;AACrD,EAAA,MAAM,eAAA,GAAkB,OAAO,IAAI,CAAA;AAEnC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,IAAA,CAAK,MAAA;AAAA,QACH,eAAA,CAAgB,OAAA;AAAA,QAChB,EAAE,OAAO,CAAA,EAAE;AAAA,QACX;AAAA,UACE,KAAA,EAAO,CAAA;AAAA,UACP,QAAA,EAAU,CAAA;AAAA,UACV,IAAA,EAAM,YAAA;AAAA,UACN,KAAA,EAAO;AAAA;AACT,OACF;AAAA,IACF;AAAA,EAEF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,MAAA,GAAS,CAAC,MAAA,KAAoB;AAClC,IAAA,MAAM,KAAA,GAAgB,SAAS,CAAA,GAAK,EAAA;AACpC,IAAA,MAAA,CAAO,QAAA,GAAW,YAAA,CAAa,MAAA,CAAO,UAAS,CAAE,YAAA,KAAiB,KAAK,CAAA;AACvE,IAAA,MAAA,CAAO,aAAA,EAAc;AAAA,EACvB,CAAA;AAEA,EAAA,MAAM,YAAY,MAAM;AACtB,IAAA,MAAA,CAAO,eAAe,EAAE,MAAA,EAAQ,EAAA,EAAI,OAAA,EAAS,GAAG,CAAA;AAAA,EAClD,CAAA;AAEA,EAAA,MAAM,mBAAmB,MAAM;AAC7B,IAAA,MAAA,CAAO,QAAA,EAAS,CAAE,YAAA,CAAa,GAAG,CAAA;AAClC,IAAA,MAAA,CAAO,aAAA,EAAc;AAAA,EACvB,CAAA;AAEA,EAAA,uBACE,IAAA,CAAC,YAAA,EAAA,EAAa,GAAA,EAAK,eAAA,EAChB,QAAA,EAAA;AAAA,IAAA,cAAA,oBACC,GAAA,CAAC,uBAAoB,OAAA,EAAS,cAAA,EAAgB,cAAa,SAAA,EACzD,QAAA,kBAAA,GAAA,CAAC,eAAY,CAAA,EACf,CAAA;AAAA,oBAGF,GAAA,CAAC,uBAAoB,OAAA,EAAS,SAAA,EAAW,cAAa,mBAAA,EACpD,QAAA,kBAAA,GAAA,CAAC,kBAAe,CAAA,EAClB,CAAA;AAAA,oBAEA,GAAA;AAAA,MAAC,mBAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,gBAAA;AAAA,QACT,YAAA,EAAa,qBAAA;AAAA,QAEb,8BAAC,aAAA,EAAA,EAAc;AAAA;AAAA,KACjB;AAAA,yBAEC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,GAAA;AAAA,QAAC,mBAAA;AAAA,QAAA;AAAA,UACC,SAAS,MAAM;AACb,YAAA,MAAA,CAAO,IAAI,CAAA;AAAA,UACb,CAAA;AAAA,UACA,YAAA,EAAa,SAAA;AAAA,UAEb,8BAAC,OAAA,EAAA,EAAQ;AAAA;AAAA,OACX;AAAA,sBAEA,GAAA;AAAA,QAAC,mBAAA;AAAA,QAAA;AAAA,UACC,SAAS,MAAM;AACb,YAAA,MAAA,CAAO,KAAK,CAAA;AAAA,UACd,CAAA;AAAA,UACA,YAAA,EAAa,UAAA;AAAA,UAEb,8BAAC,UAAA,EAAA,EAAW;AAAA;AAAA;AACd,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useState, useRef, useEffect } from 'react';
|
|
3
|
+
import styled from '@emotion/styled';
|
|
4
|
+
import gsap from 'gsap';
|
|
5
|
+
import { useDiagramContext } from '../DiagramContext/DiagramContext.esm.js';
|
|
6
|
+
import { LayersIcon } from '../../resources/assets/icons/LayersIcon.esm.js';
|
|
7
|
+
import { ObservationIcon } from '../../resources/assets/icons/ObservationIcon.esm.js';
|
|
8
|
+
import { DiffIcon } from '../../resources/assets/icons/DiffIcon.esm.js';
|
|
9
|
+
import { DiagramIcon } from '../../resources/assets/icons/DiagramIcon.esm.js';
|
|
10
|
+
import { DiagramLayer } from '../../types.esm.js';
|
|
11
|
+
import { CanvasControlButton } from './ControlButtons/ControlButton.esm.js';
|
|
12
|
+
import { LayerButton } from './LayerButton.esm.js';
|
|
13
|
+
|
|
14
|
+
const DiagramLayersPanel = styled.div`
|
|
15
|
+
display: flex;
|
|
16
|
+
flex-direction: row;
|
|
17
|
+
justify-content: space-between;
|
|
18
|
+
align-items: end;
|
|
19
|
+
gap: 4px;
|
|
20
|
+
position: absolute;
|
|
21
|
+
bottom: 15px;
|
|
22
|
+
left: 15px;
|
|
23
|
+
`;
|
|
24
|
+
const LayersPanel = styled.div`
|
|
25
|
+
display: flex;
|
|
26
|
+
flex-direction: row;
|
|
27
|
+
justify-content: space-between;
|
|
28
|
+
align-items: center;
|
|
29
|
+
gap: 8px;
|
|
30
|
+
padding: 6px 6px 4px;
|
|
31
|
+
background-color: ${({ theme }) => theme.colors.SURFACE_BRIGHT};
|
|
32
|
+
border: 1px solid ${({ theme }) => theme.colors.SURFACE_DIM};
|
|
33
|
+
`;
|
|
34
|
+
styled.div`
|
|
35
|
+
border: 1px solid ${({ theme }) => theme.colors.SURFACE_DIM};
|
|
36
|
+
width: 34px;
|
|
37
|
+
height: 34px;
|
|
38
|
+
border-radius: 2px;
|
|
39
|
+
color: ${({ theme, selected }) => selected ? theme.colors.PRIMARY : theme.colors.OUTLINE_VARIANT};
|
|
40
|
+
background-color: ${({ theme }) => theme.colors.SURFACE_BRIGHT};
|
|
41
|
+
display: inline-flex;
|
|
42
|
+
align-items: center;
|
|
43
|
+
justify-content: center;
|
|
44
|
+
position: relative;
|
|
45
|
+
box-sizing: border-box;
|
|
46
|
+
padding: 5px;
|
|
47
|
+
cursor: pointer;
|
|
48
|
+
&:active {
|
|
49
|
+
background-color: ${({ theme }) => theme.colors.SURFACE_DIM};
|
|
50
|
+
}
|
|
51
|
+
`;
|
|
52
|
+
const LayerIcon = styled.div`
|
|
53
|
+
width: 40px;
|
|
54
|
+
height: 40px;
|
|
55
|
+
border-radius: 2px;
|
|
56
|
+
display: inline-flex;
|
|
57
|
+
align-items: center;
|
|
58
|
+
justify-content: center;
|
|
59
|
+
position: relative;
|
|
60
|
+
box-sizing: border-box;
|
|
61
|
+
padding: 4px;
|
|
62
|
+
`;
|
|
63
|
+
function DiagramLayers(props) {
|
|
64
|
+
const { animation = true, tooltips } = props;
|
|
65
|
+
const {
|
|
66
|
+
diagramLayers: { addLayer, removeLayer, hasLayer, activeLayers }
|
|
67
|
+
} = useDiagramContext();
|
|
68
|
+
const [hover, setHover] = useState(true);
|
|
69
|
+
const controlPanelRef = useRef(null);
|
|
70
|
+
const canRemoveLayer = activeLayers.length > 1;
|
|
71
|
+
useEffect(() => {
|
|
72
|
+
if (animation) {
|
|
73
|
+
gsap.fromTo(
|
|
74
|
+
controlPanelRef.current,
|
|
75
|
+
{ scale: 0 },
|
|
76
|
+
{
|
|
77
|
+
scale: 1,
|
|
78
|
+
duration: 1,
|
|
79
|
+
ease: "power3.out",
|
|
80
|
+
delay: 1
|
|
81
|
+
}
|
|
82
|
+
);
|
|
83
|
+
}
|
|
84
|
+
}, []);
|
|
85
|
+
const toggleArchitectureLayer = () => {
|
|
86
|
+
if (hasLayer(DiagramLayer.ARCHITECTURE)) {
|
|
87
|
+
removeLayer(DiagramLayer.ARCHITECTURE);
|
|
88
|
+
} else {
|
|
89
|
+
addLayer(DiagramLayer.ARCHITECTURE);
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
const toggleObservabilityLayer = () => {
|
|
93
|
+
if (hasLayer(DiagramLayer.OBSERVABILITY)) {
|
|
94
|
+
removeLayer(DiagramLayer.OBSERVABILITY);
|
|
95
|
+
} else {
|
|
96
|
+
addLayer(DiagramLayer.OBSERVABILITY);
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
const toggleDiffLayer = () => {
|
|
100
|
+
if (hasLayer(DiagramLayer.DIFF)) {
|
|
101
|
+
removeLayer(DiagramLayer.DIFF);
|
|
102
|
+
} else {
|
|
103
|
+
addLayer(DiagramLayer.DIFF);
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
const toggleDiagramLayerPanel = () => {
|
|
107
|
+
setHover((prev) => !prev);
|
|
108
|
+
};
|
|
109
|
+
return /* @__PURE__ */ jsxs(DiagramLayersPanel, { ref: controlPanelRef, children: [
|
|
110
|
+
/* @__PURE__ */ jsx(
|
|
111
|
+
CanvasControlButton,
|
|
112
|
+
{
|
|
113
|
+
onClick: toggleDiagramLayerPanel,
|
|
114
|
+
tooltipTitle: !hover ? "Toggle architecture layers" : "",
|
|
115
|
+
children: /* @__PURE__ */ jsx(LayersIcon, {})
|
|
116
|
+
}
|
|
117
|
+
),
|
|
118
|
+
hover && /* @__PURE__ */ jsxs(LayersPanel, { children: [
|
|
119
|
+
/* @__PURE__ */ jsxs(
|
|
120
|
+
LayerButton,
|
|
121
|
+
{
|
|
122
|
+
onClick: toggleArchitectureLayer,
|
|
123
|
+
selected: hasLayer(DiagramLayer.ARCHITECTURE),
|
|
124
|
+
clickable: hasLayer(DiagramLayer.ARCHITECTURE) ? canRemoveLayer : true,
|
|
125
|
+
tooltipTitle: "Toggle static architecture layer",
|
|
126
|
+
tooltipDescription: tooltips?.staticLayer || "Visualize the static architecture defined in the component-config.yaml file. This layer represents the intended architecture of the system and shows the connections between components as specified by the user.",
|
|
127
|
+
children: [
|
|
128
|
+
/* @__PURE__ */ jsx(LayerIcon, { children: /* @__PURE__ */ jsx(DiagramIcon, { styles: { width: 24, height: 24 } }) }),
|
|
129
|
+
"Static"
|
|
130
|
+
]
|
|
131
|
+
}
|
|
132
|
+
),
|
|
133
|
+
/* @__PURE__ */ jsxs(
|
|
134
|
+
LayerButton,
|
|
135
|
+
{
|
|
136
|
+
onClick: toggleObservabilityLayer,
|
|
137
|
+
selected: hasLayer(DiagramLayer.OBSERVABILITY),
|
|
138
|
+
clickable: hasLayer(DiagramLayer.OBSERVABILITY) ? canRemoveLayer : true,
|
|
139
|
+
tooltipTitle: "Toggle runtime architecture layer",
|
|
140
|
+
tooltipDescription: tooltips?.runtimeLayer || "Visualize the runtime architecture of the system. This layer represents the actual runtime architecture of the system and shows the connections between components based on observability data.",
|
|
141
|
+
children: [
|
|
142
|
+
/* @__PURE__ */ jsx(LayerIcon, { children: /* @__PURE__ */ jsx(ObservationIcon, { styles: { width: 24, height: 24 } }) }),
|
|
143
|
+
"Runtime"
|
|
144
|
+
]
|
|
145
|
+
}
|
|
146
|
+
),
|
|
147
|
+
/* @__PURE__ */ jsxs(
|
|
148
|
+
LayerButton,
|
|
149
|
+
{
|
|
150
|
+
onClick: toggleDiffLayer,
|
|
151
|
+
selected: hasLayer(DiagramLayer.DIFF),
|
|
152
|
+
clickable: hasLayer(DiagramLayer.DIFF) ? canRemoveLayer : true,
|
|
153
|
+
tooltipTitle: "Toggle architectural drift layer",
|
|
154
|
+
tooltipDescription: tooltips?.diffLayer || "Detect architectural drift by comparing the static and runtime architecture layers. This layer highlights the differences between the static and runtime architecture layers, allowing you to identify architectural drift.",
|
|
155
|
+
children: [
|
|
156
|
+
/* @__PURE__ */ jsx(LayerIcon, { children: /* @__PURE__ */ jsx(DiffIcon, { styles: { width: 24, height: 24 } }) }),
|
|
157
|
+
"Diff"
|
|
158
|
+
]
|
|
159
|
+
}
|
|
160
|
+
)
|
|
161
|
+
] })
|
|
162
|
+
] });
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
export { DiagramLayers, DiagramLayersPanel, LayerIcon, LayersPanel };
|
|
166
|
+
//# sourceMappingURL=DiagramLayers.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiagramLayers.esm.js","sources":["../../../src/components/Controls/DiagramLayers.tsx"],"sourcesContent":["import { FC, useEffect, useRef, useState } from 'react';\nimport styled from '@emotion/styled';\nimport gsap from 'gsap';\nimport { useDiagramContext } from '../DiagramContext/DiagramContext';\nimport {\n DiagramIcon,\n DiffIcon,\n LayersIcon,\n ObservationIcon,\n} from '../../resources';\nimport { DiagramLayer, DiagramLayerTooltips } from '../../types';\nimport { CanvasControlButton } from './ControlButtons/ControlButton';\nimport { LayerButton } from './LayerButton';\n\nexport const DiagramLayersPanel: FC<any> = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: end;\n gap: 4px;\n position: absolute;\n bottom: 15px;\n left: 15px;\n`;\n\nexport const LayersPanel: FC<any> = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n padding: 6px 6px 4px;\n background-color: ${({ theme }) => theme.colors.SURFACE_BRIGHT};\n border: 1px solid ${({ theme }) => theme.colors.SURFACE_DIM};\n`;\n\nexport const MainButton: FC<any> = styled.div`\n border: 1px solid ${({ theme }) => theme.colors.SURFACE_DIM};\n width: 34px;\n height: 34px;\n border-radius: 2px;\n color: ${({ theme, selected }: { theme: any; selected?: boolean }) =>\n selected ? theme.colors.PRIMARY : theme.colors.OUTLINE_VARIANT};\n background-color: ${({ theme }) => theme.colors.SURFACE_BRIGHT};\n display: inline-flex;\n align-items: center;\n justify-content: center;\n position: relative;\n box-sizing: border-box;\n padding: 5px;\n cursor: pointer;\n &:active {\n background-color: ${({ theme }) => theme.colors.SURFACE_DIM};\n }\n`;\n\nexport const LayerIcon: FC<any> = styled.div`\n width: 40px;\n height: 40px;\n border-radius: 2px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n position: relative;\n box-sizing: border-box;\n padding: 4px;\n`;\n\ninterface DiagramLayersProps {\n animation?: boolean;\n tooltips?: DiagramLayerTooltips;\n}\n\nexport function DiagramLayers(props: DiagramLayersProps) {\n const { animation = true, tooltips } = props;\n const {\n diagramLayers: { addLayer, removeLayer, hasLayer, activeLayers },\n } = useDiagramContext();\n const [hover, setHover] = useState(true);\n const controlPanelRef = useRef(null);\n const canRemoveLayer = activeLayers.length > 1;\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 const toggleArchitectureLayer = () => {\n if (hasLayer(DiagramLayer.ARCHITECTURE)) {\n removeLayer(DiagramLayer.ARCHITECTURE);\n } else {\n addLayer(DiagramLayer.ARCHITECTURE);\n }\n };\n\n const toggleObservabilityLayer = () => {\n if (hasLayer(DiagramLayer.OBSERVABILITY)) {\n removeLayer(DiagramLayer.OBSERVABILITY);\n } else {\n addLayer(DiagramLayer.OBSERVABILITY);\n }\n };\n\n const toggleDiffLayer = () => {\n if (hasLayer(DiagramLayer.DIFF)) {\n removeLayer(DiagramLayer.DIFF);\n } else {\n addLayer(DiagramLayer.DIFF);\n }\n };\n\n const toggleDiagramLayerPanel = () => {\n setHover(prev => !prev);\n };\n\n return (\n <DiagramLayersPanel ref={controlPanelRef}>\n <CanvasControlButton\n onClick={toggleDiagramLayerPanel}\n tooltipTitle={!hover ? 'Toggle architecture layers' : ''}\n >\n <LayersIcon />\n </CanvasControlButton>\n {hover && (\n <LayersPanel>\n <LayerButton\n onClick={toggleArchitectureLayer}\n selected={hasLayer(DiagramLayer.ARCHITECTURE)}\n clickable={\n hasLayer(DiagramLayer.ARCHITECTURE) ? canRemoveLayer : true\n }\n tooltipTitle=\"Toggle static architecture layer\"\n tooltipDescription={\n tooltips?.staticLayer ||\n 'Visualize the static architecture defined in the component-config.yaml file. This layer represents the intended architecture of the system and shows the connections between components as specified by the user.'\n }\n >\n <LayerIcon>\n <DiagramIcon styles={{ width: 24, height: 24 }} />\n </LayerIcon>\n Static\n </LayerButton>\n <LayerButton\n onClick={toggleObservabilityLayer}\n selected={hasLayer(DiagramLayer.OBSERVABILITY)}\n clickable={\n hasLayer(DiagramLayer.OBSERVABILITY) ? canRemoveLayer : true\n }\n tooltipTitle=\"Toggle runtime architecture layer\"\n tooltipDescription={\n tooltips?.runtimeLayer ||\n 'Visualize the runtime architecture of the system. This layer represents the actual runtime architecture of the system and shows the connections between components based on observability data.'\n }\n >\n <LayerIcon>\n <ObservationIcon styles={{ width: 24, height: 24 }} />\n </LayerIcon>\n Runtime\n </LayerButton>\n <LayerButton\n onClick={toggleDiffLayer}\n selected={hasLayer(DiagramLayer.DIFF)}\n clickable={hasLayer(DiagramLayer.DIFF) ? canRemoveLayer : true}\n tooltipTitle=\"Toggle architectural drift layer\"\n tooltipDescription={\n tooltips?.diffLayer ||\n 'Detect architectural drift by comparing the static and runtime architecture layers. This layer highlights the differences between the static and runtime architecture layers, allowing you to identify architectural drift.'\n }\n >\n <LayerIcon>\n <DiffIcon styles={{ width: 24, height: 24 }} />\n </LayerIcon>\n Diff\n </LayerButton>\n </LayersPanel>\n )}\n </DiagramLayersPanel>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;AAcO,MAAM,qBAA8B,MAAA,CAAO,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAW3C,MAAM,cAAuB,MAAA,CAAO,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAA,EAOrB,CAAC,EAAE,KAAA,EAAM,KAAM,KAAA,CAAM,OAAO,cAAc,CAAA;AAAA,oBAAA,EAC1C,CAAC,EAAE,KAAA,EAAM,KAAM,KAAA,CAAM,OAAO,WAAW,CAAA;AAAA;AAG1B,MAAA,CAAO,GAAA;AAAA,oBAAA,EACpB,CAAC,EAAE,KAAA,EAAM,KAAM,KAAA,CAAM,OAAO,WAAW,CAAA;AAAA;AAAA;AAAA;AAAA,SAAA,EAIlD,CAAC,EAAE,KAAA,EAAO,QAAA,EAAS,KAC1B,QAAA,GAAW,KAAA,CAAM,MAAA,CAAO,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,eAAe,CAAA;AAAA,oBAAA,EAC5C,CAAC,EAAE,KAAA,EAAM,KAAM,KAAA,CAAM,OAAO,cAAc,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAA,EASxC,CAAC,EAAE,KAAA,EAAM,KAAM,KAAA,CAAM,OAAO,WAAW,CAAA;AAAA;AAAA;AAIxD,MAAM,YAAqB,MAAA,CAAO,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiBlC,SAAS,cAAc,KAAA,EAA2B;AACvD,EAAA,MAAM,EAAE,SAAA,GAAY,IAAA,EAAM,QAAA,EAAS,GAAI,KAAA;AACvC,EAAA,MAAM;AAAA,IACJ,aAAA,EAAe,EAAE,QAAA,EAAU,WAAA,EAAa,UAAU,YAAA;AAAa,MAC7D,iBAAA,EAAkB;AACtB,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAS,IAAI,CAAA;AACvC,EAAA,MAAM,eAAA,GAAkB,OAAO,IAAI,CAAA;AACnC,EAAA,MAAM,cAAA,GAAiB,aAAa,MAAA,GAAS,CAAA;AAE7C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,IAAA,CAAK,MAAA;AAAA,QACH,eAAA,CAAgB,OAAA;AAAA,QAChB,EAAE,OAAO,CAAA,EAAE;AAAA,QACX;AAAA,UACE,KAAA,EAAO,CAAA;AAAA,UACP,QAAA,EAAU,CAAA;AAAA,UACV,IAAA,EAAM,YAAA;AAAA,UACN,KAAA,EAAO;AAAA;AACT,OACF;AAAA,IACF;AAAA,EAEF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,0BAA0B,MAAM;AACpC,IAAA,IAAI,QAAA,CAAS,YAAA,CAAa,YAAY,CAAA,EAAG;AACvC,MAAA,WAAA,CAAY,aAAa,YAAY,CAAA;AAAA,IACvC,CAAA,MAAO;AACL,MAAA,QAAA,CAAS,aAAa,YAAY,CAAA;AAAA,IACpC;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,2BAA2B,MAAM;AACrC,IAAA,IAAI,QAAA,CAAS,YAAA,CAAa,aAAa,CAAA,EAAG;AACxC,MAAA,WAAA,CAAY,aAAa,aAAa,CAAA;AAAA,IACxC,CAAA,MAAO;AACL,MAAA,QAAA,CAAS,aAAa,aAAa,CAAA;AAAA,IACrC;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,kBAAkB,MAAM;AAC5B,IAAA,IAAI,QAAA,CAAS,YAAA,CAAa,IAAI,CAAA,EAAG;AAC/B,MAAA,WAAA,CAAY,aAAa,IAAI,CAAA;AAAA,IAC/B,CAAA,MAAO;AACL,MAAA,QAAA,CAAS,aAAa,IAAI,CAAA;AAAA,IAC5B;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,0BAA0B,MAAM;AACpC,IAAA,QAAA,CAAS,CAAA,IAAA,KAAQ,CAAC,IAAI,CAAA;AAAA,EACxB,CAAA;AAEA,EAAA,uBACE,IAAA,CAAC,kBAAA,EAAA,EAAmB,GAAA,EAAK,eAAA,EACvB,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,mBAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAS,uBAAA;AAAA,QACT,YAAA,EAAc,CAAC,KAAA,GAAQ,4BAAA,GAA+B,EAAA;AAAA,QAEtD,8BAAC,UAAA,EAAA,EAAW;AAAA;AAAA,KACd;AAAA,IACC,KAAA,yBACE,WAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,IAAA;AAAA,QAAC,WAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,uBAAA;AAAA,UACT,QAAA,EAAU,QAAA,CAAS,YAAA,CAAa,YAAY,CAAA;AAAA,UAC5C,SAAA,EACE,QAAA,CAAS,YAAA,CAAa,YAAY,IAAI,cAAA,GAAiB,IAAA;AAAA,UAEzD,YAAA,EAAa,kCAAA;AAAA,UACb,kBAAA,EACE,UAAU,WAAA,IACV,mNAAA;AAAA,UAGF,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,SAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,WAAA,EAAA,EAAY,MAAA,EAAQ,EAAE,OAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAG,EAAG,CAAA,EAClD,CAAA;AAAA,YAAY;AAAA;AAAA;AAAA,OAEd;AAAA,sBACA,IAAA;AAAA,QAAC,WAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,wBAAA;AAAA,UACT,QAAA,EAAU,QAAA,CAAS,YAAA,CAAa,aAAa,CAAA;AAAA,UAC7C,SAAA,EACE,QAAA,CAAS,YAAA,CAAa,aAAa,IAAI,cAAA,GAAiB,IAAA;AAAA,UAE1D,YAAA,EAAa,mCAAA;AAAA,UACb,kBAAA,EACE,UAAU,YAAA,IACV,iMAAA;AAAA,UAGF,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,SAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,eAAA,EAAA,EAAgB,MAAA,EAAQ,EAAE,OAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAG,EAAG,CAAA,EACtD,CAAA;AAAA,YAAY;AAAA;AAAA;AAAA,OAEd;AAAA,sBACA,IAAA;AAAA,QAAC,WAAA;AAAA,QAAA;AAAA,UACC,OAAA,EAAS,eAAA;AAAA,UACT,QAAA,EAAU,QAAA,CAAS,YAAA,CAAa,IAAI,CAAA;AAAA,UACpC,SAAA,EAAW,QAAA,CAAS,YAAA,CAAa,IAAI,IAAI,cAAA,GAAiB,IAAA;AAAA,UAC1D,YAAA,EAAa,kCAAA;AAAA,UACb,kBAAA,EACE,UAAU,SAAA,IACV,6NAAA;AAAA,UAGF,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,SAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,QAAA,EAAA,EAAS,MAAA,EAAQ,EAAE,OAAO,EAAA,EAAI,MAAA,EAAQ,EAAA,EAAG,EAAG,CAAA,EAC/C,CAAA;AAAA,YAAY;AAAA;AAAA;AAAA;AAEd,KAAA,EACF;AAAA,GAAA,EAEJ,CAAA;AAEJ;;;;"}
|