@peter.prib/renderengine 0.0.0-stage → 0.2.0
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/LICENSE +21 -0
- package/README.md +203 -2
- package/REFERENCE.md +2198 -0
- package/dist/renderengine-workspace.umd.js +46905 -0
- package/dist/renderengine.umd.js +42223 -0
- package/examples/archimate.html +66 -0
- package/examples/diagram-editor.html +51 -0
- package/package.json +65 -4
- package/src/BaseRenderer.js +57 -0
- package/src/CanvasRenderer.js +194 -0
- package/src/Mat4.js +111 -0
- package/src/OrbitCamera.js +57 -0
- package/src/RendererFactory.js +50 -0
- package/src/SVGRenderer.js +439 -0
- package/src/archimate.js +723 -0
- package/src/archimateArchiFormat.js +1693 -0
- package/src/archimateArchiTypes.js +72 -0
- package/src/archimateArchive.js +140 -0
- package/src/archimateCSV.js +127 -0
- package/src/archimateDrawio.js +182 -0
- package/src/archimateExchangeFormat.js +546 -0
- package/src/archimateRelationshipTable.js +93 -0
- package/src/archimateSpecializations.js +161 -0
- package/src/chartCatalog.js +589 -0
- package/src/charting/ArchimateDiagramEditor.js +1624 -0
- package/src/charting/ArchimateSpecializationSelector.js +134 -0
- package/src/charting/Axis.js +68 -0
- package/src/charting/CameraSeeder.js +30 -0
- package/src/charting/CatalogDialog.js +92 -0
- package/src/charting/Chart.js +37 -0
- package/src/charting/Chart3D.js +99 -0
- package/src/charting/ChartBox.js +80 -0
- package/src/charting/ChartData.js +27 -0
- package/src/charting/ChartRegistry.js +76 -0
- package/src/charting/CheckboxTreeSelector.js +304 -0
- package/src/charting/ColorField.js +107 -0
- package/src/charting/ColorPalette.js +88 -0
- package/src/charting/CommandHistory.js +176 -0
- package/src/charting/DataFilter.js +52 -0
- package/src/charting/Diagram.js +36 -0
- package/src/charting/Diagram3D.js +29 -0
- package/src/charting/DiagramClipboard.js +31 -0
- package/src/charting/DiagramEditor.js +3330 -0
- package/src/charting/DiagramEditorCommand.js +110 -0
- package/src/charting/DiagramEditorCommands.js +237 -0
- package/src/charting/DiagramEditorEdgeCommands.js +142 -0
- package/src/charting/DiagramEditorState.js +98 -0
- package/src/charting/DiagramRegistry.js +86 -0
- package/src/charting/DiagramTypeRegistry.js +326 -0
- package/src/charting/DiagramViewPropertiesDialog.js +46 -0
- package/src/charting/Edge.js +113 -0
- package/src/charting/ErrorBars.js +37 -0
- package/src/charting/FilterSystem.js +285 -0
- package/src/charting/FindReplaceDialog.js +139 -0
- package/src/charting/FormDialog.js +385 -0
- package/src/charting/Gauge.js +58 -0
- package/src/charting/Hierarchy.js +175 -0
- package/src/charting/HintPanel.js +86 -0
- package/src/charting/ImageSelector.js +148 -0
- package/src/charting/InteractionManager.js +725 -0
- package/src/charting/Legend.js +58 -0
- package/src/charting/MenuBar.js +62 -0
- package/src/charting/ModelFileFormat.js +115 -0
- package/src/charting/OrbitControls.js +77 -0
- package/src/charting/Palette.js +119 -0
- package/src/charting/PopupMenu.js +117 -0
- package/src/charting/PropertiesPanel.js +155 -0
- package/src/charting/PropertyListEditor.js +96 -0
- package/src/charting/PropertyLog.js +92 -0
- package/src/charting/SettingsCascade.js +93 -0
- package/src/charting/SettingsDialog.js +53 -0
- package/src/charting/SettingsManager.js +179 -0
- package/src/charting/SettingsViewPropertiesDialog.js +58 -0
- package/src/charting/ShapePaths.js +27 -0
- package/src/charting/Statistics.js +134 -0
- package/src/charting/TemplateCatalog.js +59 -0
- package/src/charting/TemplateLibrary.js +103 -0
- package/src/charting/TextStyle.js +168 -0
- package/src/charting/ViewFit.js +55 -0
- package/src/charting/ViewMenu.js +70 -0
- package/src/charting/ViewPropertiesDialog.js +77 -0
- package/src/charting/ViewTabStrip.js +81 -0
- package/src/charting/archimate/ArchiFileFormat.js +32 -0
- package/src/charting/archimate/ArchimateCanvasEditor.js +815 -0
- package/src/charting/archimate/ArchimateCsvFileFormat.js +35 -0
- package/src/charting/archimate/ArchimateEdge.js +137 -0
- package/src/charting/archimate/ArchimateElementTemplate.js +195 -0
- package/src/charting/archimate/ArchimatePalette.js +102 -0
- package/src/charting/archimate/CsvImportDialog.js +105 -0
- package/src/charting/archimate/CustomViewpoints.js +74 -0
- package/src/charting/archimate/DerivedEdge.js +29 -0
- package/src/charting/archimate/DrawioFileFormat.js +24 -0
- package/src/charting/archimate/ElementFilterRule.js +21 -0
- package/src/charting/archimate/ExchangeFileFormat.js +28 -0
- package/src/charting/archimate/ViewGroupTemplate.js +137 -0
- package/src/charting/archimate/ViewLineEdge.js +84 -0
- package/src/charting/archimate/ViewpointRule.js +45 -0
- package/src/charting/archimate/archimateFileFormats.js +12 -0
- package/src/charting/archimate/archimateNames.js +5 -0
- package/src/charting/archimate/csvMapping.js +122 -0
- package/src/charting/archimate/elementMenuItems.js +32 -0
- package/src/charting/archimate/elementProperties.js +146 -0
- package/src/charting/archimate/elementTypeChoices.js +7 -0
- package/src/charting/archimate/elementTypeGroups.js +19 -0
- package/src/charting/archimate/index.js +17 -0
- package/src/charting/archimate/specializationCatalogDialog.js +64 -0
- package/src/charting/archimate/typeGlyph.js +29 -0
- package/src/charting/arrangement/Arrangement.js +112 -0
- package/src/charting/arrangement/ArrangementCommand.js +29 -0
- package/src/charting/arrangement/BackgroundCommand.js +41 -0
- package/src/charting/arrangement/BackgroundGroup.js +18 -0
- package/src/charting/arrangement/GroupCommand.js +46 -0
- package/src/charting/arrangement/ItemGroup.js +62 -0
- package/src/charting/arrangement/LockCommand.js +32 -0
- package/src/charting/arrangement/UngroupCommand.js +27 -0
- package/src/charting/arrangement/alignment.js +88 -0
- package/src/charting/arrangement/arrangeMenuItems.js +25 -0
- package/src/charting/arrangement/index.js +11 -0
- package/src/charting/arrangement/layouts.js +233 -0
- package/src/charting/canvas/ArchiHint.js +78 -0
- package/src/charting/canvas/CanvasBoxKind.js +39 -0
- package/src/charting/canvas/CanvasPalette.js +49 -0
- package/src/charting/canvas/CanvasTemplateLibrary.js +61 -0
- package/src/charting/canvas/CanvasTemplateMenu.js +151 -0
- package/src/charting/canvas/EditHintCommand.js +28 -0
- package/src/charting/canvas/canvasBoxKinds.js +27 -0
- package/src/charting/canvas/canvasBoxMenuItems.js +40 -0
- package/src/charting/canvas/defaultCanvasTemplates.js +186 -0
- package/src/charting/canvas/diagramBoxKinds.js +12 -0
- package/src/charting/canvas/hintMenuItems.js +49 -0
- package/src/charting/charts/ArcGauge.js +55 -0
- package/src/charting/charts/AreaChart.js +71 -0
- package/src/charting/charts/BarChart.js +80 -0
- package/src/charting/charts/BarChart3D.js +56 -0
- package/src/charting/charts/BarChart3DOrbit.js +53 -0
- package/src/charting/charts/BarChartBase.js +70 -0
- package/src/charting/charts/BarGauge.js +42 -0
- package/src/charting/charts/BoxPlotChart.js +41 -0
- package/src/charting/charts/BubbleChart.js +99 -0
- package/src/charting/charts/BubbleChart3D.js +78 -0
- package/src/charting/charts/BulletGauge.js +87 -0
- package/src/charting/charts/CalendarHeatmapChart.js +204 -0
- package/src/charting/charts/CandlestickChart.js +54 -0
- package/src/charting/charts/ChordDiagram.js +130 -0
- package/src/charting/charts/DensityChart.js +73 -0
- package/src/charting/charts/DialGauge.js +65 -0
- package/src/charting/charts/DonutChart.js +15 -0
- package/src/charting/charts/FunnelChart.js +47 -0
- package/src/charting/charts/GanttChart.js +201 -0
- package/src/charting/charts/GaugeChart.js +175 -0
- package/src/charting/charts/GeoMapChart.js +146 -0
- package/src/charting/charts/GroupedBarChart.js +88 -0
- package/src/charting/charts/GroupedDistributionChart.js +70 -0
- package/src/charting/charts/HeatmapChart.js +80 -0
- package/src/charting/charts/HierarchyChart.js +39 -0
- package/src/charting/charts/HistogramChart.js +45 -0
- package/src/charting/charts/KpiTile.js +72 -0
- package/src/charting/charts/LagPlotChart.js +41 -0
- package/src/charting/charts/LineChart.js +124 -0
- package/src/charting/charts/MultiRingGauge.js +54 -0
- package/src/charting/charts/OutlineChart.js +95 -0
- package/src/charting/charts/ParallelCoordinatesChart.js +130 -0
- package/src/charting/charts/PieChart.js +56 -0
- package/src/charting/charts/PipeChart.js +88 -0
- package/src/charting/charts/PopulationPyramidChart.js +106 -0
- package/src/charting/charts/QQPlotChart.js +64 -0
- package/src/charting/charts/RadarChart.js +76 -0
- package/src/charting/charts/RadialBarChart.js +96 -0
- package/src/charting/charts/RingGauge.js +23 -0
- package/src/charting/charts/SankeyDiagram.js +174 -0
- package/src/charting/charts/ScatterChart.js +104 -0
- package/src/charting/charts/StackedAreaChart.js +15 -0
- package/src/charting/charts/StackedBarChart.js +33 -0
- package/src/charting/charts/StackedBarChart3DOrbit.js +58 -0
- package/src/charting/charts/StreamGraphChart.js +131 -0
- package/src/charting/charts/SunburstChart.js +57 -0
- package/src/charting/charts/ThermometerGauge.js +43 -0
- package/src/charting/charts/TreemapChart.js +54 -0
- package/src/charting/charts/ViolinChart.js +37 -0
- package/src/charting/charts/WaterfallChart.js +66 -0
- package/src/charting/charts/WordCloudChart.js +104 -0
- package/src/charting/diagramModel/AddViewCommand.js +33 -0
- package/src/charting/diagramModel/DiagramModel.js +39 -0
- package/src/charting/diagramModel/DiagramModelSearch.js +22 -0
- package/src/charting/diagramModel/DiagramView.js +50 -0
- package/src/charting/diagramModel/ModelHistory.js +43 -0
- package/src/charting/diagramModel/ModelReport.js +153 -0
- package/src/charting/diagramModel/ModelSearch.js +223 -0
- package/src/charting/diagramModel/RemoveViewCommand.js +25 -0
- package/src/charting/diagramModel/RenameViewCommand.js +21 -0
- package/src/charting/diagramModel/ReplaceTextCommand.js +25 -0
- package/src/charting/diagramModel/ViewSetChecker.js +34 -0
- package/src/charting/diagramModel/ViewSetModel.js +243 -0
- package/src/charting/diagramModel/index.js +6 -0
- package/src/charting/diagramModel/nameTransforms.js +29 -0
- package/src/charting/diagrams/ArchimateCommands.js +141 -0
- package/src/charting/diagrams/ArchimateDiagram.js +263 -0
- package/src/charting/diagrams/ArchimateModel.js +1155 -0
- package/src/charting/diagrams/ArchimateModelChecker.js +125 -0
- package/src/charting/diagrams/ArchimateModelReport.js +128 -0
- package/src/charting/diagrams/ArchimateModelSearch.js +41 -0
- package/src/charting/diagrams/ArchimateValidator.js +357 -0
- package/src/charting/diagrams/CanvasView.js +112 -0
- package/src/charting/diagrams/ContextMenu.js +37 -0
- package/src/charting/diagrams/DataModelDiagram.js +86 -0
- package/src/charting/diagrams/DataModelRelationshipStrategy.js +38 -0
- package/src/charting/diagrams/DerivedRelationships.js +102 -0
- package/src/charting/diagrams/EbnfDiagram.js +39 -0
- package/src/charting/diagrams/EdgeGeometry.js +553 -0
- package/src/charting/diagrams/EditViewItemCommand.js +128 -0
- package/src/charting/diagrams/ElementInstance.js +157 -0
- package/src/charting/diagrams/GraphDiagram.js +1340 -0
- package/src/charting/diagrams/GraphDiagram3D.js +152 -0
- package/src/charting/diagrams/GraphMetrics.js +81 -0
- package/src/charting/diagrams/GridOverlay.js +137 -0
- package/src/charting/diagrams/ImportRowsCommand.js +62 -0
- package/src/charting/diagrams/LabelHelper.js +108 -0
- package/src/charting/diagrams/MergeElementsCommand.js +101 -0
- package/src/charting/diagrams/NestInstanceCommand.js +34 -0
- package/src/charting/diagrams/NodeGeometry.js +158 -0
- package/src/charting/diagrams/PlaceItemsCommand.js +77 -0
- package/src/charting/diagrams/RadialLayout.js +101 -0
- package/src/charting/diagrams/RelationshipInstance.js +93 -0
- package/src/charting/diagrams/RemoveGroupFromViewCommand.js +28 -0
- package/src/charting/diagrams/RemoveLineCommand.js +27 -0
- package/src/charting/diagrams/ShowElementCommand.js +43 -0
- package/src/charting/diagrams/SvgCoordinate.js +17 -0
- package/src/charting/diagrams/SvgZoom.js +127 -0
- package/src/charting/diagrams/Tooltip.js +62 -0
- package/src/charting/diagrams/ViewConnectionInstance.js +102 -0
- package/src/charting/diagrams/ViewObjectInstance.js +56 -0
- package/src/charting/diagrams/commands/AddEdgeCommand.js +34 -0
- package/src/charting/diagrams/commands/AddNodeCommand.js +28 -0
- package/src/charting/diagrams/commands/AddWaypointCommand.js +27 -0
- package/src/charting/diagrams/commands/CreateFolderCommand.js +27 -0
- package/src/charting/diagrams/commands/DeleteEdgeCommand.js +30 -0
- package/src/charting/diagrams/commands/DeleteFolderCommand.js +47 -0
- package/src/charting/diagrams/commands/DeleteNodeCommand.js +35 -0
- package/src/charting/diagrams/commands/DeleteWaypointCommand.js +24 -0
- package/src/charting/diagrams/commands/GraphCommand.js +65 -0
- package/src/charting/diagrams/commands/InvertEdgeCommand.js +24 -0
- package/src/charting/diagrams/commands/MoveNodeCommand.js +44 -0
- package/src/charting/diagrams/commands/MoveWaypointCommand.js +27 -0
- package/src/charting/diagrams/commands/RenameEdgeCommand.js +23 -0
- package/src/charting/diagrams/commands/RenameFolderCommand.js +31 -0
- package/src/charting/diagrams/commands/RenameNodeCommand.js +27 -0
- package/src/charting/diagrams/commands/ResizeNodeCommand.js +46 -0
- package/src/charting/diagrams/commands/UpdateEdgeSideCommand.js +40 -0
- package/src/charting/diagrams/commands/index.js +17 -0
- package/src/charting/diagrams/duplicates.js +49 -0
- package/src/charting/diagrams/nesting.js +30 -0
- package/src/charting/diagrams/roadmap.js +77 -0
- package/src/charting/edgeMarkers/ArrowMarker.js +15 -0
- package/src/charting/edgeMarkers/CircleMarker.js +13 -0
- package/src/charting/edgeMarkers/CrowsFootMarker.js +16 -0
- package/src/charting/edgeMarkers/DiamondMarker.js +15 -0
- package/src/charting/edgeMarkers/EdgeMarker.js +34 -0
- package/src/charting/edgeMarkers/HalfArrowMarker.js +8 -0
- package/src/charting/edgeMarkers/HollowDiamondMarker.js +18 -0
- package/src/charting/edgeMarkers/HollowTriangleMarker.js +18 -0
- package/src/charting/edgeMarkers/OpenArrowMarker.js +17 -0
- package/src/charting/edgeMarkers/index.js +27 -0
- package/src/charting/edgeStyle/EdgeStyleCascade.js +22 -0
- package/src/charting/edgeStyle/EdgeStyleDialog.js +51 -0
- package/src/charting/edgeStyle/EdgeStyleSchema.js +43 -0
- package/src/charting/edgeStyle/SetStyleCommand.js +12 -0
- package/src/charting/edgeStyle/index.js +4 -0
- package/src/charting/emphasis/EmphasisRule.js +42 -0
- package/src/charting/emphasis/HighlightRule.js +24 -0
- package/src/charting/gauges/ArcTrack.js +51 -0
- package/src/charting/gauges/GaugeAnimation.js +51 -0
- package/src/charting/gauges/GaugeBands.js +48 -0
- package/src/charting/gauges/GaugeScale.js +87 -0
- package/src/charting/gauges/GaugeTrack.js +44 -0
- package/src/charting/gauges/GaugeValue.js +61 -0
- package/src/charting/gauges/HorizontalTrack.js +14 -0
- package/src/charting/gauges/LinearTrack.js +29 -0
- package/src/charting/gauges/Sparkline.js +42 -0
- package/src/charting/gauges/VerticalTrack.js +17 -0
- package/src/charting/glyphs/ArrowGlyph.js +21 -0
- package/src/charting/glyphs/BatteryGlyph.js +18 -0
- package/src/charting/glyphs/ChevronGlyph.js +18 -0
- package/src/charting/glyphs/CircleGlyph.js +15 -0
- package/src/charting/glyphs/CloudGlyph.js +19 -0
- package/src/charting/glyphs/ComponentGlyph.js +18 -0
- package/src/charting/glyphs/ConstraintGlyph.js +24 -0
- package/src/charting/glyphs/ContractBoxGlyph.js +10 -0
- package/src/charting/glyphs/CubeGlyph.js +19 -0
- package/src/charting/glyphs/CylinderGlyph.js +19 -0
- package/src/charting/glyphs/DashedDoubleArrowGlyph.js +11 -0
- package/src/charting/glyphs/DeviceGlyph.js +17 -0
- package/src/charting/glyphs/DiamondGlyph.js +17 -0
- package/src/charting/glyphs/DocumentGlyph.js +17 -0
- package/src/charting/glyphs/DoubleArrowGlyph.js +23 -0
- package/src/charting/glyphs/DoubleCircleGlyph.js +24 -0
- package/src/charting/glyphs/EllipseGlyph.js +18 -0
- package/src/charting/glyphs/FactoryGlyph.js +20 -0
- package/src/charting/glyphs/FlagGlyph.js +16 -0
- package/src/charting/glyphs/GapCircleGlyph.js +17 -0
- package/src/charting/glyphs/GearGlyph.js +37 -0
- package/src/charting/glyphs/Glyph.js +98 -0
- package/src/charting/glyphs/GroupingBoxGlyph.js +13 -0
- package/src/charting/glyphs/HalfCircleGlyph.js +22 -0
- package/src/charting/glyphs/HexagonGlyph.js +28 -0
- package/src/charting/glyphs/IconGlyph.js +22 -0
- package/src/charting/glyphs/ImageGlyph.js +16 -0
- package/src/charting/glyphs/JunctionGlyph.js +17 -0
- package/src/charting/glyphs/LollipopGlyph.js +22 -0
- package/src/charting/glyphs/MagnifierGlyph.js +17 -0
- package/src/charting/glyphs/NoteGlyph.js +33 -0
- package/src/charting/glyphs/ObjectBoxGlyph.js +21 -0
- package/src/charting/glyphs/OrJunctionGlyph.js +17 -0
- package/src/charting/glyphs/ParallelogramGlyph.js +20 -0
- package/src/charting/glyphs/PersonGlyph.js +23 -0
- package/src/charting/glyphs/PillGlyph.js +23 -0
- package/src/charting/glyphs/PinGlyph.js +18 -0
- package/src/charting/glyphs/PrincipleGlyph.js +23 -0
- package/src/charting/glyphs/ProductBoxGlyph.js +16 -0
- package/src/charting/glyphs/RectGlyph.js +15 -0
- package/src/charting/glyphs/RoundedBoxGlyph.js +13 -0
- package/src/charting/glyphs/StackGlyph.js +14 -0
- package/src/charting/glyphs/StepsGlyph.js +20 -0
- package/src/charting/glyphs/StickFigureGlyph.js +32 -0
- package/src/charting/glyphs/SystemSoftwareBoxGlyph.js +16 -0
- package/src/charting/glyphs/TabbedBoxGlyph.js +37 -0
- package/src/charting/glyphs/TargetGlyph.js +23 -0
- package/src/charting/glyphs/WavyBoxGlyph.js +17 -0
- package/src/charting/glyphs/WheelGlyph.js +28 -0
- package/src/charting/glyphs/drawGlyph.js +28 -0
- package/src/charting/glyphs/glyphSvg.js +55 -0
- package/src/charting/glyphs/index.js +109 -0
- package/src/charting/modelTree/AnalysisPanel.js +159 -0
- package/src/charting/modelTree/DiagramTabs.js +217 -0
- package/src/charting/modelTree/ModelTree.js +164 -0
- package/src/charting/modelTree/ModelTreePanel.js +914 -0
- package/src/charting/modelTree/TreeBuilder.js +238 -0
- package/src/charting/modelTree/TreeModeRegistry.js +51 -0
- package/src/charting/modelTree/TreeViewMode.js +110 -0
- package/src/charting/modelTree/buildFilterTrees.js +138 -0
- package/src/charting/modelTree/modes/FlatTreeMode.js +46 -0
- package/src/charting/modelTree/modes/LayerGroupedTreeMode.js +62 -0
- package/src/charting/modelTree/modes/TypeGroupedTreeMode.js +60 -0
- package/src/charting/modelTree/treeLayers.js +11 -0
- package/src/charting/report/reportHtml.js +82 -0
- package/src/charting/report/reportViewer.js +118 -0
- package/src/charting/shapes/CircleShape.js +19 -0
- package/src/charting/shapes/PathShape.js +17 -0
- package/src/charting/shapes/RectShape.js +20 -0
- package/src/charting/shapes/Shape.js +20 -0
- package/src/charting/shapes/ShapeFactory.js +23 -0
- package/src/charting/storage/LocalJsonStore.js +43 -0
- package/src/charting/templates/ActorTemplate.js +36 -0
- package/src/charting/templates/BoxTemplate.js +27 -0
- package/src/charting/templates/CircleTemplate.js +18 -0
- package/src/charting/templates/ClassTemplate.js +20 -0
- package/src/charting/templates/CloudTemplate.js +43 -0
- package/src/charting/templates/ComponentTemplate.js +19 -0
- package/src/charting/templates/CylinderTemplate.js +30 -0
- package/src/charting/templates/DataStoreTemplate.js +16 -0
- package/src/charting/templates/DiamondTemplate.js +10 -0
- package/src/charting/templates/DocumentTemplate.js +32 -0
- package/src/charting/templates/EllipseTemplate.js +15 -0
- package/src/charting/templates/FinalStateTemplate.js +12 -0
- package/src/charting/templates/GlyphTemplate.js +47 -0
- package/src/charting/templates/HexagonTemplate.js +17 -0
- package/src/charting/templates/LifelineTemplate.js +20 -0
- package/src/charting/templates/ManualInputTemplate.js +12 -0
- package/src/charting/templates/NoteTemplate.js +23 -0
- package/src/charting/templates/OctagonTemplate.js +7 -0
- package/src/charting/templates/PackageTemplate.js +25 -0
- package/src/charting/templates/ParallelogramTemplate.js +11 -0
- package/src/charting/templates/PentagonTemplate.js +5 -0
- package/src/charting/templates/PolygonTemplate.js +18 -0
- package/src/charting/templates/PredefinedProcessTemplate.js +13 -0
- package/src/charting/templates/RectangleTemplate.js +28 -0
- package/src/charting/templates/RegularPolygonTemplate.js +21 -0
- package/src/charting/templates/RoundedRectangleTemplate.js +5 -0
- package/src/charting/templates/StadiumTemplate.js +8 -0
- package/src/charting/templates/StarTemplate.js +17 -0
- package/src/charting/templates/SwimlaneTemplate.js +18 -0
- package/src/charting/templates/Template.js +208 -0
- package/src/charting/templates/TrapezoidTemplate.js +11 -0
- package/src/charting/templates/TriangleTemplate.js +12 -0
- package/src/charting/templates/index.js +31 -0
- package/src/charting/templates/outline.js +59 -0
- package/src/charting/templates/svg.js +19 -0
- package/src/charting/textToShapes.js +61 -0
- package/src/charting/toolbar/ToolbarButton.js +38 -0
- package/src/charting/toolbar/ToolbarCheckbox.js +31 -0
- package/src/charting/toolbar/ToolbarItem.js +19 -0
- package/src/charting/toolbar/ToolbarMenu.js +36 -0
- package/src/charting/toolbar/ToolbarSelect.js +38 -0
- package/src/charting/toolbar/ToolbarSeparator.js +7 -0
- package/src/charting/toolbar/ToolbarText.js +22 -0
- package/src/charting/toolbar/index.js +8 -0
- package/src/charting/toolbar/pickFile.js +14 -0
- package/src/charting/viewDecorations.js +85 -0
- package/src/charting/zOrder.js +57 -0
- package/src/csvTable.js +61 -0
- package/src/datamodel.js +122 -0
- package/src/datawindow/BoundedWindow.js +36 -0
- package/src/datawindow/FlatDataWindow.js +34 -0
- package/src/datawindow/GraphDataWindow.js +40 -0
- package/src/datawindow/GroupedSampleDataWindow.js +16 -0
- package/src/datawindow/SeriesDataWindow.js +42 -0
- package/src/datawindow/index.js +31 -0
- package/src/diagramCatalog.js +30 -0
- package/src/ebnfDiagram.js +57 -0
- package/src/ebnfParser.js +129 -0
- package/src/exportImage.js +233 -0
- package/src/index.js +2636 -0
- package/src/itIcons.js +84 -0
- package/src/kernelExpr.js +243 -0
- package/src/propertiesDialog.js +463 -0
- package/src/railroadDiagram.js +571 -0
- package/src/treeModeCatalog.js +16 -0
- package/src/workspace/ContextBus.js +79 -0
- package/src/workspace/EditorShell.js +67 -0
- package/src/workspace/Part.js +163 -0
- package/src/workspace/PartFactory.js +49 -0
- package/src/workspace/PartRegistry.js +86 -0
- package/src/workspace/Workspace.js +321 -0
- package/src/workspace/archimateServices.js +33 -0
- package/src/workspace/dom.js +120 -0
- package/src/workspace/index.js +75 -0
- package/src/workspace/layout/GridNode.js +280 -0
- package/src/workspace/layout/LayoutNode.js +89 -0
- package/src/workspace/layout/PartNode.js +77 -0
- package/src/workspace/layout/SplitNode.js +114 -0
- package/src/workspace/layout/TabsNode.js +191 -0
- package/src/workspace/layout/index.js +24 -0
- package/src/workspace/parts/AdapterPart.js +33 -0
- package/src/workspace/parts/ArchimateCanvasPart.js +345 -0
- package/src/workspace/parts/ArchimateEditorPart.js +79 -0
- package/src/workspace/parts/ChartPart.js +115 -0
- package/src/workspace/parts/ContentPart.js +34 -0
- package/src/workspace/parts/DetailPart.js +46 -0
- package/src/workspace/parts/DiagramEditorPart.js +135 -0
- package/src/workspace/parts/EditorPart.js +388 -0
- package/src/workspace/parts/HtmlPart.js +25 -0
- package/src/workspace/parts/ListPart.js +57 -0
- package/src/workspace/parts/ModelFile.js +187 -0
- package/src/workspace/parts/ModelsPart.js +135 -0
- package/src/workspace/styles.js +258 -0
- package/src/workspace/themes.js +96 -0
- package/src/workspace/workArea.js +413 -0
- package/src/workspace/workAreaModel.js +197 -0
- package/src/workspace.js +16 -0
- package/src/zip/ZipArchive.js +160 -0
- package/src/zip/crc32.js +25 -0
- package/src/zip/inflate.js +159 -0
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DiagramTypeRegistry — palette categories: which shapes each kind of diagram offers.
|
|
3
|
+
*
|
|
4
|
+
* Each category is pure data: `{ name, group, description, templates }`, where a
|
|
5
|
+
* template entry is `{ id, name, factory(id, x, y) }`. `group` drives the
|
|
6
|
+
* grouped category picker. The 'generic' key is the fallback for unknown types.
|
|
7
|
+
*/
|
|
8
|
+
import {
|
|
9
|
+
RectangleTemplate, RoundedRectangleTemplate, StadiumTemplate, PredefinedProcessTemplate,
|
|
10
|
+
ClassTemplate, ComponentTemplate, SwimlaneTemplate, CircleTemplate, FinalStateTemplate,
|
|
11
|
+
EllipseTemplate, DiamondTemplate, TriangleTemplate, PentagonTemplate, HexagonTemplate,
|
|
12
|
+
OctagonTemplate, StarTemplate, ParallelogramTemplate, TrapezoidTemplate, ManualInputTemplate,
|
|
13
|
+
CylinderTemplate, DocumentTemplate, NoteTemplate, CloudTemplate, ActorTemplate,
|
|
14
|
+
PackageTemplate, BoxTemplate, DataStoreTemplate, LifelineTemplate,
|
|
15
|
+
} from './templates/index.js';
|
|
16
|
+
|
|
17
|
+
const C = {
|
|
18
|
+
blue: '#dbeafe', green: '#dcfce7', yellow: '#fef9c3', red: '#fee2e2', purple: '#ede9fe',
|
|
19
|
+
orange: '#ffedd5', teal: '#ccfbf1', grey: '#f1f5f9', white: '#ffffff', dark: '#334155',
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
/** Palette entry whose instances are `TemplateClass` created with `options` and named `name`. */
|
|
23
|
+
function shape(id, name, TemplateClass, options = {}) {
|
|
24
|
+
return { id, name, factory: (instanceId, x, y) => new TemplateClass(instanceId, name, { ...options, x, y }) };
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const note = shape('note', 'Note', NoteTemplate);
|
|
28
|
+
|
|
29
|
+
export const DIAGRAM_TYPES = {
|
|
30
|
+
'generic': {
|
|
31
|
+
name: 'Basic Shapes',
|
|
32
|
+
group: 'General',
|
|
33
|
+
description: 'General-purpose geometric shapes',
|
|
34
|
+
templates: [
|
|
35
|
+
shape('rectangle', 'Rectangle', RectangleTemplate, { fillColor: C.blue }),
|
|
36
|
+
shape('rounded-rectangle', 'Rounded', RoundedRectangleTemplate, { fillColor: C.blue }),
|
|
37
|
+
shape('circle', 'Circle', CircleTemplate, { fillColor: C.red }),
|
|
38
|
+
shape('ellipse', 'Ellipse', EllipseTemplate, { fillColor: C.purple }),
|
|
39
|
+
shape('diamond', 'Diamond', DiamondTemplate, { fillColor: C.yellow }),
|
|
40
|
+
shape('triangle', 'Triangle', TriangleTemplate, { fillColor: C.green }),
|
|
41
|
+
shape('pentagon', 'Pentagon', PentagonTemplate, { fillColor: C.teal }),
|
|
42
|
+
shape('hexagon', 'Hexagon', HexagonTemplate, { fillColor: C.orange }),
|
|
43
|
+
shape('octagon', 'Octagon', OctagonTemplate, { fillColor: C.red }),
|
|
44
|
+
shape('star', 'Star', StarTemplate, { fillColor: C.yellow }),
|
|
45
|
+
shape('parallelogram', 'Parallelogram', ParallelogramTemplate, { fillColor: C.green }),
|
|
46
|
+
shape('trapezoid', 'Trapezoid', TrapezoidTemplate, { fillColor: C.purple }),
|
|
47
|
+
shape('cylinder', 'Cylinder', CylinderTemplate, { fillColor: C.grey }),
|
|
48
|
+
shape('document', 'Document', DocumentTemplate, { fillColor: C.white }),
|
|
49
|
+
shape('cloud', 'Cloud', CloudTemplate, { fillColor: C.blue }),
|
|
50
|
+
note,
|
|
51
|
+
],
|
|
52
|
+
},
|
|
53
|
+
|
|
54
|
+
'flowchart': {
|
|
55
|
+
name: 'Flowchart',
|
|
56
|
+
group: 'Process',
|
|
57
|
+
description: 'Steps, decisions and data in a process or algorithm',
|
|
58
|
+
templates: [
|
|
59
|
+
shape('terminator', 'Start / End', StadiumTemplate, { fillColor: C.green }),
|
|
60
|
+
shape('process', 'Process', RectangleTemplate, { fillColor: C.blue }),
|
|
61
|
+
shape('decision', 'Decision', DiamondTemplate, { fillColor: C.yellow }),
|
|
62
|
+
shape('data', 'Data (I/O)', ParallelogramTemplate, { fillColor: C.purple }),
|
|
63
|
+
shape('predefined-process', 'Subroutine', PredefinedProcessTemplate, { fillColor: C.blue }),
|
|
64
|
+
shape('document', 'Document', DocumentTemplate, { fillColor: C.white }),
|
|
65
|
+
shape('database', 'Database', CylinderTemplate, { fillColor: C.grey }),
|
|
66
|
+
shape('manual-input', 'Manual Input', ManualInputTemplate, { fillColor: C.orange }),
|
|
67
|
+
shape('manual-operation', 'Manual Op', TrapezoidTemplate, { fillColor: C.orange }),
|
|
68
|
+
shape('preparation', 'Preparation', HexagonTemplate, { fillColor: C.teal }),
|
|
69
|
+
shape('connector', 'Connector', CircleTemplate, { width: 30, height: 30, fillColor: C.white }),
|
|
70
|
+
note,
|
|
71
|
+
],
|
|
72
|
+
},
|
|
73
|
+
|
|
74
|
+
'bpmn': {
|
|
75
|
+
name: 'BPMN Process',
|
|
76
|
+
group: 'Process',
|
|
77
|
+
description: 'Business process: events, tasks, gateways and lanes',
|
|
78
|
+
templates: [
|
|
79
|
+
shape('start-event', 'Start Event', CircleTemplate, { width: 40, height: 40, fillColor: C.green }),
|
|
80
|
+
shape('end-event', 'End Event', CircleTemplate, { width: 40, height: 40, fillColor: C.red, strokeWidth: 4 }),
|
|
81
|
+
shape('task', 'Task', RoundedRectangleTemplate, { fillColor: C.blue }),
|
|
82
|
+
shape('subprocess', 'Sub-Process', PredefinedProcessTemplate, { fillColor: C.blue }),
|
|
83
|
+
shape('gateway', 'Gateway', DiamondTemplate, { width: 50, height: 50, fillColor: C.yellow }),
|
|
84
|
+
shape('data-object', 'Data Object', NoteTemplate, { width: 50, height: 64, fillColor: C.white }),
|
|
85
|
+
shape('data-store', 'Data Store', CylinderTemplate, { width: 60, height: 60, fillColor: C.grey }),
|
|
86
|
+
shape('lane', 'Lane', SwimlaneTemplate, { zIndex: -1 }),
|
|
87
|
+
note,
|
|
88
|
+
],
|
|
89
|
+
},
|
|
90
|
+
|
|
91
|
+
'swimlane-diagram': {
|
|
92
|
+
name: 'Swimlane',
|
|
93
|
+
group: 'Process',
|
|
94
|
+
description: 'Flow steps divided into lanes by actor or department',
|
|
95
|
+
templates: [
|
|
96
|
+
shape('lane', 'Lane', SwimlaneTemplate, { zIndex: -1 }),
|
|
97
|
+
shape('start', 'Start / End', StadiumTemplate, { fillColor: C.green }),
|
|
98
|
+
shape('task', 'Task', RoundedRectangleTemplate, { width: 110, height: 50, fillColor: C.blue }),
|
|
99
|
+
shape('decision', 'Decision', DiamondTemplate, { width: 80, height: 80, fillColor: C.yellow }),
|
|
100
|
+
shape('document', 'Document', DocumentTemplate, { fillColor: C.white }),
|
|
101
|
+
note,
|
|
102
|
+
],
|
|
103
|
+
},
|
|
104
|
+
|
|
105
|
+
'class-diagram': {
|
|
106
|
+
name: 'Class',
|
|
107
|
+
group: 'UML',
|
|
108
|
+
description: 'Classes, interfaces and their relationships',
|
|
109
|
+
templates: [
|
|
110
|
+
shape('class', 'Class', ClassTemplate, { fillColor: C.white }),
|
|
111
|
+
shape('abstract-class', 'Abstract Class', ClassTemplate, { fillColor: C.grey }),
|
|
112
|
+
shape('interface', '«interface»', ClassTemplate, { height: 80, fillColor: C.green }),
|
|
113
|
+
shape('enumeration', '«enumeration»', ClassTemplate, { height: 90, fillColor: C.yellow }),
|
|
114
|
+
shape('package', 'Package', PackageTemplate, { fillColor: C.grey, zIndex: -1 }),
|
|
115
|
+
note,
|
|
116
|
+
],
|
|
117
|
+
},
|
|
118
|
+
|
|
119
|
+
'sequence-diagram': {
|
|
120
|
+
name: 'Sequence',
|
|
121
|
+
group: 'UML',
|
|
122
|
+
description: 'Messages exchanged between participants over time',
|
|
123
|
+
templates: [
|
|
124
|
+
shape('actor', 'Actor', ActorTemplate),
|
|
125
|
+
shape('lifeline', 'Participant', LifelineTemplate, { fillColor: C.blue }),
|
|
126
|
+
shape('activation', 'Activation', RectangleTemplate, { width: 14, height: 80, fillColor: C.white }),
|
|
127
|
+
shape('fragment', 'Fragment', SwimlaneTemplate, { width: 300, height: 140, fillColor: C.white, fillOpacity: 0.3, zIndex: -1 }),
|
|
128
|
+
note,
|
|
129
|
+
],
|
|
130
|
+
},
|
|
131
|
+
|
|
132
|
+
'activity-diagram': {
|
|
133
|
+
name: 'Activity',
|
|
134
|
+
group: 'UML',
|
|
135
|
+
description: 'Actions, control flow, forks and joins',
|
|
136
|
+
templates: [
|
|
137
|
+
shape('initial', 'Initial', CircleTemplate, { width: 28, height: 28, fillColor: C.dark }),
|
|
138
|
+
shape('action', 'Action', RoundedRectangleTemplate, { fillColor: C.blue }),
|
|
139
|
+
shape('decision', 'Decision / Merge', DiamondTemplate, { width: 44, height: 44, fillColor: C.yellow }),
|
|
140
|
+
shape('fork-join', 'Fork / Join', RectangleTemplate, { width: 120, height: 8, fillColor: C.dark }),
|
|
141
|
+
shape('object', 'Object', RectangleTemplate, { fillColor: C.white }),
|
|
142
|
+
shape('final', 'Final', FinalStateTemplate),
|
|
143
|
+
shape('partition', 'Partition', SwimlaneTemplate, { zIndex: -1 }),
|
|
144
|
+
note,
|
|
145
|
+
],
|
|
146
|
+
},
|
|
147
|
+
|
|
148
|
+
'state-machine': {
|
|
149
|
+
name: 'State Machine',
|
|
150
|
+
group: 'UML',
|
|
151
|
+
description: 'States and the transitions between them',
|
|
152
|
+
templates: [
|
|
153
|
+
shape('initial', 'Initial', CircleTemplate, { width: 28, height: 28, fillColor: C.dark }),
|
|
154
|
+
shape('state', 'State', RoundedRectangleTemplate, { fillColor: C.blue }),
|
|
155
|
+
shape('composite-state', 'Composite State', RoundedRectangleTemplate, { width: 260, height: 160, fillColor: C.grey, zIndex: -1 }),
|
|
156
|
+
shape('choice', 'Choice', DiamondTemplate, { width: 40, height: 40, fillColor: C.yellow }),
|
|
157
|
+
shape('final', 'Final', FinalStateTemplate),
|
|
158
|
+
note,
|
|
159
|
+
],
|
|
160
|
+
},
|
|
161
|
+
|
|
162
|
+
'use-case-diagram': {
|
|
163
|
+
name: 'Use Case',
|
|
164
|
+
group: 'UML',
|
|
165
|
+
description: 'Actors and the system functions they use',
|
|
166
|
+
templates: [
|
|
167
|
+
shape('actor', 'Actor', ActorTemplate),
|
|
168
|
+
shape('use-case', 'Use Case', EllipseTemplate, { width: 140, height: 60, fillColor: C.blue }),
|
|
169
|
+
shape('system', 'System Boundary', RectangleTemplate, { width: 300, height: 360, fillColor: C.white, zIndex: -1 }),
|
|
170
|
+
note,
|
|
171
|
+
],
|
|
172
|
+
},
|
|
173
|
+
|
|
174
|
+
'component-diagram': {
|
|
175
|
+
name: 'Component',
|
|
176
|
+
group: 'UML',
|
|
177
|
+
description: 'Software components and the interfaces that wire them',
|
|
178
|
+
templates: [
|
|
179
|
+
shape('component', 'Component', ComponentTemplate, { fillColor: C.blue }),
|
|
180
|
+
shape('interface', 'Interface', CircleTemplate, { width: 24, height: 24, fillColor: C.white }),
|
|
181
|
+
shape('package', 'Package', PackageTemplate, { fillColor: C.grey, zIndex: -1 }),
|
|
182
|
+
shape('database', 'Database', CylinderTemplate, { fillColor: C.grey }),
|
|
183
|
+
note,
|
|
184
|
+
],
|
|
185
|
+
},
|
|
186
|
+
|
|
187
|
+
'deployment-diagram': {
|
|
188
|
+
name: 'Deployment',
|
|
189
|
+
group: 'UML',
|
|
190
|
+
description: 'Hardware nodes and the artifacts deployed to them',
|
|
191
|
+
templates: [
|
|
192
|
+
shape('node', 'Node', BoxTemplate, { fillColor: C.grey }),
|
|
193
|
+
shape('device', '«device»', BoxTemplate, { fillColor: C.blue }),
|
|
194
|
+
shape('execution-environment', '«exec env»', BoxTemplate, { fillColor: C.green }),
|
|
195
|
+
shape('artifact', '«artifact»', NoteTemplate, { fillColor: C.white }),
|
|
196
|
+
shape('database', 'Database', CylinderTemplate, { fillColor: C.grey }),
|
|
197
|
+
note,
|
|
198
|
+
],
|
|
199
|
+
},
|
|
200
|
+
|
|
201
|
+
'er-diagram': {
|
|
202
|
+
name: 'Entity-Relationship',
|
|
203
|
+
group: 'Data',
|
|
204
|
+
description: 'Entities, attributes and relationships (Chen notation)',
|
|
205
|
+
templates: [
|
|
206
|
+
shape('entity', 'Entity', RectangleTemplate, { width: 140, height: 60, fillColor: C.blue }),
|
|
207
|
+
shape('relationship', 'Relationship', DiamondTemplate, { width: 120, height: 70, fillColor: C.yellow }),
|
|
208
|
+
shape('attribute', 'Attribute', EllipseTemplate, { width: 110, height: 50, fillColor: C.green }),
|
|
209
|
+
shape('table', 'Table', ClassTemplate, { fillColor: C.white }),
|
|
210
|
+
note,
|
|
211
|
+
],
|
|
212
|
+
},
|
|
213
|
+
|
|
214
|
+
'data-flow-diagram': {
|
|
215
|
+
name: 'Data Flow',
|
|
216
|
+
group: 'Data',
|
|
217
|
+
description: 'How data moves between processes, stores and external entities',
|
|
218
|
+
templates: [
|
|
219
|
+
shape('process', 'Process', CircleTemplate, { width: 100, height: 100, fillColor: C.blue }),
|
|
220
|
+
shape('external-entity', 'External Entity', RectangleTemplate, { fillColor: C.grey }),
|
|
221
|
+
shape('data-store', 'Data Store', DataStoreTemplate, { fillColor: C.yellow }),
|
|
222
|
+
note,
|
|
223
|
+
],
|
|
224
|
+
},
|
|
225
|
+
|
|
226
|
+
'network-diagram': {
|
|
227
|
+
name: 'Network',
|
|
228
|
+
group: 'Infrastructure',
|
|
229
|
+
description: 'Servers, clients and the connections between them',
|
|
230
|
+
templates: [
|
|
231
|
+
shape('server', 'Server', BoxTemplate, { width: 100, height: 110, fillColor: C.grey }),
|
|
232
|
+
shape('client', 'Client', RectangleTemplate, { width: 100, height: 70, fillColor: C.blue }),
|
|
233
|
+
shape('database', 'Database', CylinderTemplate, { fillColor: C.grey }),
|
|
234
|
+
shape('cloud', 'Cloud', CloudTemplate, { fillColor: C.blue }),
|
|
235
|
+
shape('router', 'Router', CircleTemplate, { width: 60, height: 60, fillColor: C.green }),
|
|
236
|
+
shape('firewall', 'Firewall', RectangleTemplate, { width: 40, height: 100, fillColor: C.red }),
|
|
237
|
+
shape('load-balancer', 'Load Balancer', HexagonTemplate, { fillColor: C.orange }),
|
|
238
|
+
shape('zone', 'Zone', SwimlaneTemplate, { fillColor: C.grey, fillOpacity: 0.5, zIndex: -1 }),
|
|
239
|
+
note,
|
|
240
|
+
],
|
|
241
|
+
},
|
|
242
|
+
|
|
243
|
+
'organizational-chart': {
|
|
244
|
+
name: 'Org Chart',
|
|
245
|
+
group: 'Business',
|
|
246
|
+
description: 'Reporting lines and departments',
|
|
247
|
+
templates: [
|
|
248
|
+
shape('executive', 'Executive', RoundedRectangleTemplate, { width: 140, height: 60, fillColor: C.purple }),
|
|
249
|
+
shape('manager', 'Manager', RoundedRectangleTemplate, { width: 130, height: 56, fillColor: C.blue }),
|
|
250
|
+
shape('staff', 'Staff', RoundedRectangleTemplate, { width: 120, height: 50, fillColor: C.white }),
|
|
251
|
+
shape('vacancy', 'Vacancy', RoundedRectangleTemplate, { width: 120, height: 50, fillColor: C.grey }),
|
|
252
|
+
shape('department', 'Department', SwimlaneTemplate, { width: 320, height: 200, zIndex: -1 }),
|
|
253
|
+
note,
|
|
254
|
+
],
|
|
255
|
+
},
|
|
256
|
+
|
|
257
|
+
'mind-map': {
|
|
258
|
+
name: 'Mind Map',
|
|
259
|
+
group: 'Ideas',
|
|
260
|
+
description: 'Topics radiating from a central idea',
|
|
261
|
+
templates: [
|
|
262
|
+
shape('central-topic', 'Central Topic', EllipseTemplate, { width: 170, height: 80, fillColor: C.orange, strokeWidth: 3 }),
|
|
263
|
+
shape('main-topic', 'Main Topic', StadiumTemplate, { width: 130, height: 44, fillColor: C.blue }),
|
|
264
|
+
shape('subtopic', 'Subtopic', RoundedRectangleTemplate, { width: 110, height: 34, fillColor: C.white }),
|
|
265
|
+
shape('idea', 'Idea', CloudTemplate, { width: 120, height: 72, fillColor: C.yellow }),
|
|
266
|
+
note,
|
|
267
|
+
],
|
|
268
|
+
},
|
|
269
|
+
|
|
270
|
+
'concept-map': {
|
|
271
|
+
name: 'Concept Map',
|
|
272
|
+
group: 'Ideas',
|
|
273
|
+
description: 'Concepts joined by labelled relationships',
|
|
274
|
+
templates: [
|
|
275
|
+
shape('concept', 'Concept', RoundedRectangleTemplate, { fillColor: C.blue }),
|
|
276
|
+
shape('key-concept', 'Key Concept', EllipseTemplate, { width: 140, height: 70, fillColor: C.orange }),
|
|
277
|
+
shape('linking-phrase', 'Linking Phrase', RectangleTemplate, { width: 100, height: 30, fillColor: C.white, strokeWidth: 1 }),
|
|
278
|
+
note,
|
|
279
|
+
],
|
|
280
|
+
},
|
|
281
|
+
|
|
282
|
+
'decision-tree': {
|
|
283
|
+
name: 'Decision Tree',
|
|
284
|
+
group: 'Ideas',
|
|
285
|
+
description: 'Decisions, chance events and outcomes',
|
|
286
|
+
templates: [
|
|
287
|
+
shape('decision', 'Decision', RectangleTemplate, { width: 60, height: 60, fillColor: C.blue }),
|
|
288
|
+
shape('chance', 'Chance', CircleTemplate, { width: 60, height: 60, fillColor: C.yellow }),
|
|
289
|
+
shape('outcome', 'Outcome', TriangleTemplate, { width: 60, height: 54, fillColor: C.green }),
|
|
290
|
+
shape('label', 'Label', RectangleTemplate, { width: 110, height: 30, fillColor: C.white, strokeWidth: 1 }),
|
|
291
|
+
note,
|
|
292
|
+
],
|
|
293
|
+
},
|
|
294
|
+
|
|
295
|
+
'venn-diagram': {
|
|
296
|
+
name: 'Venn',
|
|
297
|
+
group: 'Ideas',
|
|
298
|
+
description: 'Overlapping sets',
|
|
299
|
+
templates: [
|
|
300
|
+
shape('set-a', 'Set A', CircleTemplate, { width: 180, height: 180, fillColor: '#60a5fa', fillOpacity: 0.35 }),
|
|
301
|
+
shape('set-b', 'Set B', CircleTemplate, { width: 180, height: 180, fillColor: '#f87171', fillOpacity: 0.35 }),
|
|
302
|
+
shape('set-c', 'Set C', CircleTemplate, { width: 180, height: 180, fillColor: '#4ade80', fillOpacity: 0.35 }),
|
|
303
|
+
shape('universe', 'Universe', RectangleTemplate, { width: 420, height: 320, fillColor: C.white, zIndex: -1 }),
|
|
304
|
+
note,
|
|
305
|
+
],
|
|
306
|
+
},
|
|
307
|
+
};
|
|
308
|
+
|
|
309
|
+
/** Template entries for a category, falling back to 'generic' for unknown keys. */
|
|
310
|
+
export function getTemplatesForDiagramType(diagramType) {
|
|
311
|
+
return (DIAGRAM_TYPES[diagramType] ?? DIAGRAM_TYPES.generic).templates;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
export function getAllDiagramTypes() {
|
|
315
|
+
return Object.keys(DIAGRAM_TYPES);
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
/** Categories grouped for a picker, in registry order: [{ group, types: [{ key, name, description }] }]. */
|
|
319
|
+
export function getDiagramTypesByGroup(types = DIAGRAM_TYPES) {
|
|
320
|
+
const groups = new Map();
|
|
321
|
+
for (const [key, { name, group = 'Other', description }] of Object.entries(types)) {
|
|
322
|
+
if (!groups.has(group)) groups.set(group, []);
|
|
323
|
+
groups.get(group).push({ key, name, description });
|
|
324
|
+
}
|
|
325
|
+
return [...groups].map(([group, entries]) => ({ group, types: entries }));
|
|
326
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { ViewPropertiesDialog } from './ViewPropertiesDialog.js';
|
|
2
|
+
import { inheritableFields, readInheritableFields } from './SettingsCascade.js';
|
|
3
|
+
import { EDGE_STYLE_PROPERTIES } from './edgeStyle/EdgeStyleSchema.js';
|
|
4
|
+
import { SetStyleCommand } from './edgeStyle/SetStyleCommand.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* DiagramViewPropertiesDialog — a template-editor diagram's properties plus
|
|
8
|
+
* its line-style defaults: the diagram level of the line-style cascade
|
|
9
|
+
* (diagram → model → tool), each property inheriting unless set. The style
|
|
10
|
+
* change is one step on the model's undo history. Used by
|
|
11
|
+
* DiagramEditorPart.
|
|
12
|
+
*/
|
|
13
|
+
export class DiagramViewPropertiesDialog extends ViewPropertiesDialog {
|
|
14
|
+
/**
|
|
15
|
+
* @param {Object} options - As ViewPropertiesDialog, plus:
|
|
16
|
+
* @param {EdgeStyleCascade} options.cascade - The diagram's line-style levels, the diagram's own keyed `levelKey`
|
|
17
|
+
* @param {string} [options.levelKey] - Which level is this diagram's
|
|
18
|
+
* @param {() => void} [options.onStyleChange] - After the style changes (e.g. redraw)
|
|
19
|
+
*/
|
|
20
|
+
constructor({ cascade, levelKey = 'view', onStyleChange = () => {}, ...rest }) {
|
|
21
|
+
super(rest);
|
|
22
|
+
this.cascade = cascade;
|
|
23
|
+
this.levelKey = levelKey;
|
|
24
|
+
this.onStyleChange = onStyleChange;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/** The diagram's own line style (its level's style object). */
|
|
28
|
+
get style() {
|
|
29
|
+
return this.cascade.level(this.levelKey).style;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
sections() {
|
|
33
|
+
return [
|
|
34
|
+
{ type: 'heading', label: 'Line style' },
|
|
35
|
+
...inheritableFields(EDGE_STYLE_PROPERTIES, this.style, this.cascade.inheritedBy(this.levelKey)),
|
|
36
|
+
];
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
applySections(values) {
|
|
40
|
+
const patch = readInheritableFields(EDGE_STYLE_PROPERTIES, values);
|
|
41
|
+
const changed = Object.entries(patch).some(([k, v]) => this.style[k] !== v);
|
|
42
|
+
if (!changed) return;
|
|
43
|
+
this.view.history.execute(new SetStyleCommand(this.style, patch, 'Diagram line style'));
|
|
44
|
+
this.onStyleChange();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { EDGE_STYLE_PROPERTIES } from './edgeStyle/EdgeStyleSchema.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Edge — a connection between two diagram elements (templates).
|
|
5
|
+
*
|
|
6
|
+
* Style properties (routing, attach, lineStyle, strokeColor, strokeWidth,
|
|
7
|
+
* startMarker, endMarker — see EDGE_STYLE_PROPERTIES) are set only when this
|
|
8
|
+
* line overrides them; unset means "inherit" from the diagram, model or tool
|
|
9
|
+
* level via EdgeStyleCascade.
|
|
10
|
+
*/
|
|
11
|
+
export class Edge {
|
|
12
|
+
/**
|
|
13
|
+
* @param {string} id - Unique identifier
|
|
14
|
+
* @param {string} sourceId - Source template id
|
|
15
|
+
* @param {string} targetId - Target template id
|
|
16
|
+
* @param {Object} options - Line-only properties plus any style overrides
|
|
17
|
+
*/
|
|
18
|
+
constructor(id, sourceId, targetId, options = {}) {
|
|
19
|
+
this.id = id;
|
|
20
|
+
this._initState(sourceId, targetId, options);
|
|
21
|
+
|
|
22
|
+
for (const { key } of EDGE_STYLE_PROPERTIES) {
|
|
23
|
+
if (options[key] !== undefined) this[key] = options[key];
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Selection is editor state (DiagramEditor#selectedEdgeId), not stored here,
|
|
27
|
+
// so a shared or copied edge can never carry a stale selection.
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Set what this line keeps as its own fields: its ends, label, route (bend
|
|
32
|
+
* points; pinned sides 'auto', 'top', 'right', 'bottom', 'left', which beat
|
|
33
|
+
* the cascaded `attach`) and visibility. A subclass that keeps them
|
|
34
|
+
* elsewhere (an ArchiMate line keeps them on its view instance and model
|
|
35
|
+
* relationship) overrides this.
|
|
36
|
+
* @protected
|
|
37
|
+
*/
|
|
38
|
+
_initState(sourceId, targetId, options) {
|
|
39
|
+
this.sourceId = sourceId;
|
|
40
|
+
this.targetId = targetId;
|
|
41
|
+
this.label = options.label || '';
|
|
42
|
+
this.waypoints = (options.waypoints ?? []).map(({ x, y }) => ({ x, y }));
|
|
43
|
+
this.sourceSide = options.sourceSide || 'auto';
|
|
44
|
+
this.targetSide = options.targetSide || 'auto';
|
|
45
|
+
this.visible = options.visible !== false;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/** Whether the user can select, route, reconnect and delete this line; a line only drawn from elsewhere (DerivedEdge) cannot. */
|
|
49
|
+
get editable() {
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/** The style properties this line sets for itself (the properties dialog offers these): all of them here. */
|
|
54
|
+
get styleProperties() {
|
|
55
|
+
return EDGE_STYLE_PROPERTIES;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/** Extra text for the line's tooltip, or null. */
|
|
59
|
+
get tooltip() {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/** This line's own style overrides only. */
|
|
64
|
+
styleOverrides() {
|
|
65
|
+
return Object.fromEntries(EDGE_STYLE_PROPERTIES.filter(p => this[p.key] !== undefined).map(p => [p.key, this[p.key]]));
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Create a copy of this edge; waypoints are copied, not shared.
|
|
70
|
+
*/
|
|
71
|
+
clone() {
|
|
72
|
+
return new Edge(this.id, this.sourceId, this.targetId, {
|
|
73
|
+
label: this.label,
|
|
74
|
+
waypoints: this.waypoints,
|
|
75
|
+
sourceSide: this.sourceSide,
|
|
76
|
+
targetSide: this.targetSide,
|
|
77
|
+
visible: this.visible,
|
|
78
|
+
...this.styleOverrides(),
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Add a waypoint at the specified index.
|
|
84
|
+
*/
|
|
85
|
+
addWaypoint(x, y, index = this.waypoints.length) {
|
|
86
|
+
this.waypoints.splice(index, 0, { x, y });
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Remove a waypoint at the specified index.
|
|
91
|
+
*/
|
|
92
|
+
removeWaypoint(index) {
|
|
93
|
+
if (index >= 0 && index < this.waypoints.length) {
|
|
94
|
+
this.waypoints.splice(index, 1);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Move a waypoint to a new position.
|
|
100
|
+
*/
|
|
101
|
+
moveWaypoint(index, x, y) {
|
|
102
|
+
if (index >= 0 && index < this.waypoints.length) {
|
|
103
|
+
this.waypoints[index] = { x, y };
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Clear all waypoints.
|
|
109
|
+
*/
|
|
110
|
+
clearWaypoints() {
|
|
111
|
+
this.waypoints = [];
|
|
112
|
+
}
|
|
113
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ErrorBars — helper for drawing x/y error bars on scatter and line charts.
|
|
3
|
+
*
|
|
4
|
+
* All coordinates are already in screen space; this class just draws the
|
|
5
|
+
* standard "I" shape with end caps per axis.
|
|
6
|
+
*/
|
|
7
|
+
export class ErrorBars {
|
|
8
|
+
/**
|
|
9
|
+
* Draw error bars for one point.
|
|
10
|
+
* @param {*} renderer the renderer implementing .path()
|
|
11
|
+
* @param {number} cx screen x of the central point
|
|
12
|
+
* @param {number} cy screen y of the central point
|
|
13
|
+
* @param {number|null} xLow left edge of horizontal error bar (or null for none)
|
|
14
|
+
* @param {number|null} xHigh right edge of horizontal error bar (or null for none)
|
|
15
|
+
* @param {number|null} yLow bottom edge of vertical error bar (or null for none)
|
|
16
|
+
* @param {number|null} yHigh top edge of vertical error bar (or null for none)
|
|
17
|
+
* @param {string} [color='#333'] stroke color
|
|
18
|
+
* @param {number} [cap=4] cap length in pixels
|
|
19
|
+
*/
|
|
20
|
+
static draw(renderer, cx, cy, xLow, xHigh, yLow, yHigh, color = '#333', cap = 4) {
|
|
21
|
+
const stroke = { color, width: 1 };
|
|
22
|
+
|
|
23
|
+
if (xLow != null && xHigh != null && xLow !== xHigh) {
|
|
24
|
+
// Horizontal error bar
|
|
25
|
+
renderer.path(`M${xLow},${cy} L${xHigh},${cy}`, 'none', stroke);
|
|
26
|
+
renderer.path(`M${xLow},${cy - cap / 2} L${xLow},${cy + cap / 2}`, 'none', stroke);
|
|
27
|
+
renderer.path(`M${xHigh},${cy - cap / 2} L${xHigh},${cy + cap / 2}`, 'none', stroke);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if (yLow != null && yHigh != null && yLow !== yHigh) {
|
|
31
|
+
// Vertical error bar
|
|
32
|
+
renderer.path(`M${cx},${yLow} L${cx},${yHigh}`, 'none', stroke);
|
|
33
|
+
renderer.path(`M${cx - cap / 2},${yLow} L${cx + cap / 2},${yLow}`, 'none', stroke);
|
|
34
|
+
renderer.path(`M${cx - cap / 2},${yHigh} L${cx + cap / 2},${yHigh}`, 'none', stroke);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|