@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.
Files changed (451) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +203 -2
  3. package/REFERENCE.md +2198 -0
  4. package/dist/renderengine-workspace.umd.js +46905 -0
  5. package/dist/renderengine.umd.js +42223 -0
  6. package/examples/archimate.html +66 -0
  7. package/examples/diagram-editor.html +51 -0
  8. package/package.json +65 -4
  9. package/src/BaseRenderer.js +57 -0
  10. package/src/CanvasRenderer.js +194 -0
  11. package/src/Mat4.js +111 -0
  12. package/src/OrbitCamera.js +57 -0
  13. package/src/RendererFactory.js +50 -0
  14. package/src/SVGRenderer.js +439 -0
  15. package/src/archimate.js +723 -0
  16. package/src/archimateArchiFormat.js +1693 -0
  17. package/src/archimateArchiTypes.js +72 -0
  18. package/src/archimateArchive.js +140 -0
  19. package/src/archimateCSV.js +127 -0
  20. package/src/archimateDrawio.js +182 -0
  21. package/src/archimateExchangeFormat.js +546 -0
  22. package/src/archimateRelationshipTable.js +93 -0
  23. package/src/archimateSpecializations.js +161 -0
  24. package/src/chartCatalog.js +589 -0
  25. package/src/charting/ArchimateDiagramEditor.js +1624 -0
  26. package/src/charting/ArchimateSpecializationSelector.js +134 -0
  27. package/src/charting/Axis.js +68 -0
  28. package/src/charting/CameraSeeder.js +30 -0
  29. package/src/charting/CatalogDialog.js +92 -0
  30. package/src/charting/Chart.js +37 -0
  31. package/src/charting/Chart3D.js +99 -0
  32. package/src/charting/ChartBox.js +80 -0
  33. package/src/charting/ChartData.js +27 -0
  34. package/src/charting/ChartRegistry.js +76 -0
  35. package/src/charting/CheckboxTreeSelector.js +304 -0
  36. package/src/charting/ColorField.js +107 -0
  37. package/src/charting/ColorPalette.js +88 -0
  38. package/src/charting/CommandHistory.js +176 -0
  39. package/src/charting/DataFilter.js +52 -0
  40. package/src/charting/Diagram.js +36 -0
  41. package/src/charting/Diagram3D.js +29 -0
  42. package/src/charting/DiagramClipboard.js +31 -0
  43. package/src/charting/DiagramEditor.js +3330 -0
  44. package/src/charting/DiagramEditorCommand.js +110 -0
  45. package/src/charting/DiagramEditorCommands.js +237 -0
  46. package/src/charting/DiagramEditorEdgeCommands.js +142 -0
  47. package/src/charting/DiagramEditorState.js +98 -0
  48. package/src/charting/DiagramRegistry.js +86 -0
  49. package/src/charting/DiagramTypeRegistry.js +326 -0
  50. package/src/charting/DiagramViewPropertiesDialog.js +46 -0
  51. package/src/charting/Edge.js +113 -0
  52. package/src/charting/ErrorBars.js +37 -0
  53. package/src/charting/FilterSystem.js +285 -0
  54. package/src/charting/FindReplaceDialog.js +139 -0
  55. package/src/charting/FormDialog.js +385 -0
  56. package/src/charting/Gauge.js +58 -0
  57. package/src/charting/Hierarchy.js +175 -0
  58. package/src/charting/HintPanel.js +86 -0
  59. package/src/charting/ImageSelector.js +148 -0
  60. package/src/charting/InteractionManager.js +725 -0
  61. package/src/charting/Legend.js +58 -0
  62. package/src/charting/MenuBar.js +62 -0
  63. package/src/charting/ModelFileFormat.js +115 -0
  64. package/src/charting/OrbitControls.js +77 -0
  65. package/src/charting/Palette.js +119 -0
  66. package/src/charting/PopupMenu.js +117 -0
  67. package/src/charting/PropertiesPanel.js +155 -0
  68. package/src/charting/PropertyListEditor.js +96 -0
  69. package/src/charting/PropertyLog.js +92 -0
  70. package/src/charting/SettingsCascade.js +93 -0
  71. package/src/charting/SettingsDialog.js +53 -0
  72. package/src/charting/SettingsManager.js +179 -0
  73. package/src/charting/SettingsViewPropertiesDialog.js +58 -0
  74. package/src/charting/ShapePaths.js +27 -0
  75. package/src/charting/Statistics.js +134 -0
  76. package/src/charting/TemplateCatalog.js +59 -0
  77. package/src/charting/TemplateLibrary.js +103 -0
  78. package/src/charting/TextStyle.js +168 -0
  79. package/src/charting/ViewFit.js +55 -0
  80. package/src/charting/ViewMenu.js +70 -0
  81. package/src/charting/ViewPropertiesDialog.js +77 -0
  82. package/src/charting/ViewTabStrip.js +81 -0
  83. package/src/charting/archimate/ArchiFileFormat.js +32 -0
  84. package/src/charting/archimate/ArchimateCanvasEditor.js +815 -0
  85. package/src/charting/archimate/ArchimateCsvFileFormat.js +35 -0
  86. package/src/charting/archimate/ArchimateEdge.js +137 -0
  87. package/src/charting/archimate/ArchimateElementTemplate.js +195 -0
  88. package/src/charting/archimate/ArchimatePalette.js +102 -0
  89. package/src/charting/archimate/CsvImportDialog.js +105 -0
  90. package/src/charting/archimate/CustomViewpoints.js +74 -0
  91. package/src/charting/archimate/DerivedEdge.js +29 -0
  92. package/src/charting/archimate/DrawioFileFormat.js +24 -0
  93. package/src/charting/archimate/ElementFilterRule.js +21 -0
  94. package/src/charting/archimate/ExchangeFileFormat.js +28 -0
  95. package/src/charting/archimate/ViewGroupTemplate.js +137 -0
  96. package/src/charting/archimate/ViewLineEdge.js +84 -0
  97. package/src/charting/archimate/ViewpointRule.js +45 -0
  98. package/src/charting/archimate/archimateFileFormats.js +12 -0
  99. package/src/charting/archimate/archimateNames.js +5 -0
  100. package/src/charting/archimate/csvMapping.js +122 -0
  101. package/src/charting/archimate/elementMenuItems.js +32 -0
  102. package/src/charting/archimate/elementProperties.js +146 -0
  103. package/src/charting/archimate/elementTypeChoices.js +7 -0
  104. package/src/charting/archimate/elementTypeGroups.js +19 -0
  105. package/src/charting/archimate/index.js +17 -0
  106. package/src/charting/archimate/specializationCatalogDialog.js +64 -0
  107. package/src/charting/archimate/typeGlyph.js +29 -0
  108. package/src/charting/arrangement/Arrangement.js +112 -0
  109. package/src/charting/arrangement/ArrangementCommand.js +29 -0
  110. package/src/charting/arrangement/BackgroundCommand.js +41 -0
  111. package/src/charting/arrangement/BackgroundGroup.js +18 -0
  112. package/src/charting/arrangement/GroupCommand.js +46 -0
  113. package/src/charting/arrangement/ItemGroup.js +62 -0
  114. package/src/charting/arrangement/LockCommand.js +32 -0
  115. package/src/charting/arrangement/UngroupCommand.js +27 -0
  116. package/src/charting/arrangement/alignment.js +88 -0
  117. package/src/charting/arrangement/arrangeMenuItems.js +25 -0
  118. package/src/charting/arrangement/index.js +11 -0
  119. package/src/charting/arrangement/layouts.js +233 -0
  120. package/src/charting/canvas/ArchiHint.js +78 -0
  121. package/src/charting/canvas/CanvasBoxKind.js +39 -0
  122. package/src/charting/canvas/CanvasPalette.js +49 -0
  123. package/src/charting/canvas/CanvasTemplateLibrary.js +61 -0
  124. package/src/charting/canvas/CanvasTemplateMenu.js +151 -0
  125. package/src/charting/canvas/EditHintCommand.js +28 -0
  126. package/src/charting/canvas/canvasBoxKinds.js +27 -0
  127. package/src/charting/canvas/canvasBoxMenuItems.js +40 -0
  128. package/src/charting/canvas/defaultCanvasTemplates.js +186 -0
  129. package/src/charting/canvas/diagramBoxKinds.js +12 -0
  130. package/src/charting/canvas/hintMenuItems.js +49 -0
  131. package/src/charting/charts/ArcGauge.js +55 -0
  132. package/src/charting/charts/AreaChart.js +71 -0
  133. package/src/charting/charts/BarChart.js +80 -0
  134. package/src/charting/charts/BarChart3D.js +56 -0
  135. package/src/charting/charts/BarChart3DOrbit.js +53 -0
  136. package/src/charting/charts/BarChartBase.js +70 -0
  137. package/src/charting/charts/BarGauge.js +42 -0
  138. package/src/charting/charts/BoxPlotChart.js +41 -0
  139. package/src/charting/charts/BubbleChart.js +99 -0
  140. package/src/charting/charts/BubbleChart3D.js +78 -0
  141. package/src/charting/charts/BulletGauge.js +87 -0
  142. package/src/charting/charts/CalendarHeatmapChart.js +204 -0
  143. package/src/charting/charts/CandlestickChart.js +54 -0
  144. package/src/charting/charts/ChordDiagram.js +130 -0
  145. package/src/charting/charts/DensityChart.js +73 -0
  146. package/src/charting/charts/DialGauge.js +65 -0
  147. package/src/charting/charts/DonutChart.js +15 -0
  148. package/src/charting/charts/FunnelChart.js +47 -0
  149. package/src/charting/charts/GanttChart.js +201 -0
  150. package/src/charting/charts/GaugeChart.js +175 -0
  151. package/src/charting/charts/GeoMapChart.js +146 -0
  152. package/src/charting/charts/GroupedBarChart.js +88 -0
  153. package/src/charting/charts/GroupedDistributionChart.js +70 -0
  154. package/src/charting/charts/HeatmapChart.js +80 -0
  155. package/src/charting/charts/HierarchyChart.js +39 -0
  156. package/src/charting/charts/HistogramChart.js +45 -0
  157. package/src/charting/charts/KpiTile.js +72 -0
  158. package/src/charting/charts/LagPlotChart.js +41 -0
  159. package/src/charting/charts/LineChart.js +124 -0
  160. package/src/charting/charts/MultiRingGauge.js +54 -0
  161. package/src/charting/charts/OutlineChart.js +95 -0
  162. package/src/charting/charts/ParallelCoordinatesChart.js +130 -0
  163. package/src/charting/charts/PieChart.js +56 -0
  164. package/src/charting/charts/PipeChart.js +88 -0
  165. package/src/charting/charts/PopulationPyramidChart.js +106 -0
  166. package/src/charting/charts/QQPlotChart.js +64 -0
  167. package/src/charting/charts/RadarChart.js +76 -0
  168. package/src/charting/charts/RadialBarChart.js +96 -0
  169. package/src/charting/charts/RingGauge.js +23 -0
  170. package/src/charting/charts/SankeyDiagram.js +174 -0
  171. package/src/charting/charts/ScatterChart.js +104 -0
  172. package/src/charting/charts/StackedAreaChart.js +15 -0
  173. package/src/charting/charts/StackedBarChart.js +33 -0
  174. package/src/charting/charts/StackedBarChart3DOrbit.js +58 -0
  175. package/src/charting/charts/StreamGraphChart.js +131 -0
  176. package/src/charting/charts/SunburstChart.js +57 -0
  177. package/src/charting/charts/ThermometerGauge.js +43 -0
  178. package/src/charting/charts/TreemapChart.js +54 -0
  179. package/src/charting/charts/ViolinChart.js +37 -0
  180. package/src/charting/charts/WaterfallChart.js +66 -0
  181. package/src/charting/charts/WordCloudChart.js +104 -0
  182. package/src/charting/diagramModel/AddViewCommand.js +33 -0
  183. package/src/charting/diagramModel/DiagramModel.js +39 -0
  184. package/src/charting/diagramModel/DiagramModelSearch.js +22 -0
  185. package/src/charting/diagramModel/DiagramView.js +50 -0
  186. package/src/charting/diagramModel/ModelHistory.js +43 -0
  187. package/src/charting/diagramModel/ModelReport.js +153 -0
  188. package/src/charting/diagramModel/ModelSearch.js +223 -0
  189. package/src/charting/diagramModel/RemoveViewCommand.js +25 -0
  190. package/src/charting/diagramModel/RenameViewCommand.js +21 -0
  191. package/src/charting/diagramModel/ReplaceTextCommand.js +25 -0
  192. package/src/charting/diagramModel/ViewSetChecker.js +34 -0
  193. package/src/charting/diagramModel/ViewSetModel.js +243 -0
  194. package/src/charting/diagramModel/index.js +6 -0
  195. package/src/charting/diagramModel/nameTransforms.js +29 -0
  196. package/src/charting/diagrams/ArchimateCommands.js +141 -0
  197. package/src/charting/diagrams/ArchimateDiagram.js +263 -0
  198. package/src/charting/diagrams/ArchimateModel.js +1155 -0
  199. package/src/charting/diagrams/ArchimateModelChecker.js +125 -0
  200. package/src/charting/diagrams/ArchimateModelReport.js +128 -0
  201. package/src/charting/diagrams/ArchimateModelSearch.js +41 -0
  202. package/src/charting/diagrams/ArchimateValidator.js +357 -0
  203. package/src/charting/diagrams/CanvasView.js +112 -0
  204. package/src/charting/diagrams/ContextMenu.js +37 -0
  205. package/src/charting/diagrams/DataModelDiagram.js +86 -0
  206. package/src/charting/diagrams/DataModelRelationshipStrategy.js +38 -0
  207. package/src/charting/diagrams/DerivedRelationships.js +102 -0
  208. package/src/charting/diagrams/EbnfDiagram.js +39 -0
  209. package/src/charting/diagrams/EdgeGeometry.js +553 -0
  210. package/src/charting/diagrams/EditViewItemCommand.js +128 -0
  211. package/src/charting/diagrams/ElementInstance.js +157 -0
  212. package/src/charting/diagrams/GraphDiagram.js +1340 -0
  213. package/src/charting/diagrams/GraphDiagram3D.js +152 -0
  214. package/src/charting/diagrams/GraphMetrics.js +81 -0
  215. package/src/charting/diagrams/GridOverlay.js +137 -0
  216. package/src/charting/diagrams/ImportRowsCommand.js +62 -0
  217. package/src/charting/diagrams/LabelHelper.js +108 -0
  218. package/src/charting/diagrams/MergeElementsCommand.js +101 -0
  219. package/src/charting/diagrams/NestInstanceCommand.js +34 -0
  220. package/src/charting/diagrams/NodeGeometry.js +158 -0
  221. package/src/charting/diagrams/PlaceItemsCommand.js +77 -0
  222. package/src/charting/diagrams/RadialLayout.js +101 -0
  223. package/src/charting/diagrams/RelationshipInstance.js +93 -0
  224. package/src/charting/diagrams/RemoveGroupFromViewCommand.js +28 -0
  225. package/src/charting/diagrams/RemoveLineCommand.js +27 -0
  226. package/src/charting/diagrams/ShowElementCommand.js +43 -0
  227. package/src/charting/diagrams/SvgCoordinate.js +17 -0
  228. package/src/charting/diagrams/SvgZoom.js +127 -0
  229. package/src/charting/diagrams/Tooltip.js +62 -0
  230. package/src/charting/diagrams/ViewConnectionInstance.js +102 -0
  231. package/src/charting/diagrams/ViewObjectInstance.js +56 -0
  232. package/src/charting/diagrams/commands/AddEdgeCommand.js +34 -0
  233. package/src/charting/diagrams/commands/AddNodeCommand.js +28 -0
  234. package/src/charting/diagrams/commands/AddWaypointCommand.js +27 -0
  235. package/src/charting/diagrams/commands/CreateFolderCommand.js +27 -0
  236. package/src/charting/diagrams/commands/DeleteEdgeCommand.js +30 -0
  237. package/src/charting/diagrams/commands/DeleteFolderCommand.js +47 -0
  238. package/src/charting/diagrams/commands/DeleteNodeCommand.js +35 -0
  239. package/src/charting/diagrams/commands/DeleteWaypointCommand.js +24 -0
  240. package/src/charting/diagrams/commands/GraphCommand.js +65 -0
  241. package/src/charting/diagrams/commands/InvertEdgeCommand.js +24 -0
  242. package/src/charting/diagrams/commands/MoveNodeCommand.js +44 -0
  243. package/src/charting/diagrams/commands/MoveWaypointCommand.js +27 -0
  244. package/src/charting/diagrams/commands/RenameEdgeCommand.js +23 -0
  245. package/src/charting/diagrams/commands/RenameFolderCommand.js +31 -0
  246. package/src/charting/diagrams/commands/RenameNodeCommand.js +27 -0
  247. package/src/charting/diagrams/commands/ResizeNodeCommand.js +46 -0
  248. package/src/charting/diagrams/commands/UpdateEdgeSideCommand.js +40 -0
  249. package/src/charting/diagrams/commands/index.js +17 -0
  250. package/src/charting/diagrams/duplicates.js +49 -0
  251. package/src/charting/diagrams/nesting.js +30 -0
  252. package/src/charting/diagrams/roadmap.js +77 -0
  253. package/src/charting/edgeMarkers/ArrowMarker.js +15 -0
  254. package/src/charting/edgeMarkers/CircleMarker.js +13 -0
  255. package/src/charting/edgeMarkers/CrowsFootMarker.js +16 -0
  256. package/src/charting/edgeMarkers/DiamondMarker.js +15 -0
  257. package/src/charting/edgeMarkers/EdgeMarker.js +34 -0
  258. package/src/charting/edgeMarkers/HalfArrowMarker.js +8 -0
  259. package/src/charting/edgeMarkers/HollowDiamondMarker.js +18 -0
  260. package/src/charting/edgeMarkers/HollowTriangleMarker.js +18 -0
  261. package/src/charting/edgeMarkers/OpenArrowMarker.js +17 -0
  262. package/src/charting/edgeMarkers/index.js +27 -0
  263. package/src/charting/edgeStyle/EdgeStyleCascade.js +22 -0
  264. package/src/charting/edgeStyle/EdgeStyleDialog.js +51 -0
  265. package/src/charting/edgeStyle/EdgeStyleSchema.js +43 -0
  266. package/src/charting/edgeStyle/SetStyleCommand.js +12 -0
  267. package/src/charting/edgeStyle/index.js +4 -0
  268. package/src/charting/emphasis/EmphasisRule.js +42 -0
  269. package/src/charting/emphasis/HighlightRule.js +24 -0
  270. package/src/charting/gauges/ArcTrack.js +51 -0
  271. package/src/charting/gauges/GaugeAnimation.js +51 -0
  272. package/src/charting/gauges/GaugeBands.js +48 -0
  273. package/src/charting/gauges/GaugeScale.js +87 -0
  274. package/src/charting/gauges/GaugeTrack.js +44 -0
  275. package/src/charting/gauges/GaugeValue.js +61 -0
  276. package/src/charting/gauges/HorizontalTrack.js +14 -0
  277. package/src/charting/gauges/LinearTrack.js +29 -0
  278. package/src/charting/gauges/Sparkline.js +42 -0
  279. package/src/charting/gauges/VerticalTrack.js +17 -0
  280. package/src/charting/glyphs/ArrowGlyph.js +21 -0
  281. package/src/charting/glyphs/BatteryGlyph.js +18 -0
  282. package/src/charting/glyphs/ChevronGlyph.js +18 -0
  283. package/src/charting/glyphs/CircleGlyph.js +15 -0
  284. package/src/charting/glyphs/CloudGlyph.js +19 -0
  285. package/src/charting/glyphs/ComponentGlyph.js +18 -0
  286. package/src/charting/glyphs/ConstraintGlyph.js +24 -0
  287. package/src/charting/glyphs/ContractBoxGlyph.js +10 -0
  288. package/src/charting/glyphs/CubeGlyph.js +19 -0
  289. package/src/charting/glyphs/CylinderGlyph.js +19 -0
  290. package/src/charting/glyphs/DashedDoubleArrowGlyph.js +11 -0
  291. package/src/charting/glyphs/DeviceGlyph.js +17 -0
  292. package/src/charting/glyphs/DiamondGlyph.js +17 -0
  293. package/src/charting/glyphs/DocumentGlyph.js +17 -0
  294. package/src/charting/glyphs/DoubleArrowGlyph.js +23 -0
  295. package/src/charting/glyphs/DoubleCircleGlyph.js +24 -0
  296. package/src/charting/glyphs/EllipseGlyph.js +18 -0
  297. package/src/charting/glyphs/FactoryGlyph.js +20 -0
  298. package/src/charting/glyphs/FlagGlyph.js +16 -0
  299. package/src/charting/glyphs/GapCircleGlyph.js +17 -0
  300. package/src/charting/glyphs/GearGlyph.js +37 -0
  301. package/src/charting/glyphs/Glyph.js +98 -0
  302. package/src/charting/glyphs/GroupingBoxGlyph.js +13 -0
  303. package/src/charting/glyphs/HalfCircleGlyph.js +22 -0
  304. package/src/charting/glyphs/HexagonGlyph.js +28 -0
  305. package/src/charting/glyphs/IconGlyph.js +22 -0
  306. package/src/charting/glyphs/ImageGlyph.js +16 -0
  307. package/src/charting/glyphs/JunctionGlyph.js +17 -0
  308. package/src/charting/glyphs/LollipopGlyph.js +22 -0
  309. package/src/charting/glyphs/MagnifierGlyph.js +17 -0
  310. package/src/charting/glyphs/NoteGlyph.js +33 -0
  311. package/src/charting/glyphs/ObjectBoxGlyph.js +21 -0
  312. package/src/charting/glyphs/OrJunctionGlyph.js +17 -0
  313. package/src/charting/glyphs/ParallelogramGlyph.js +20 -0
  314. package/src/charting/glyphs/PersonGlyph.js +23 -0
  315. package/src/charting/glyphs/PillGlyph.js +23 -0
  316. package/src/charting/glyphs/PinGlyph.js +18 -0
  317. package/src/charting/glyphs/PrincipleGlyph.js +23 -0
  318. package/src/charting/glyphs/ProductBoxGlyph.js +16 -0
  319. package/src/charting/glyphs/RectGlyph.js +15 -0
  320. package/src/charting/glyphs/RoundedBoxGlyph.js +13 -0
  321. package/src/charting/glyphs/StackGlyph.js +14 -0
  322. package/src/charting/glyphs/StepsGlyph.js +20 -0
  323. package/src/charting/glyphs/StickFigureGlyph.js +32 -0
  324. package/src/charting/glyphs/SystemSoftwareBoxGlyph.js +16 -0
  325. package/src/charting/glyphs/TabbedBoxGlyph.js +37 -0
  326. package/src/charting/glyphs/TargetGlyph.js +23 -0
  327. package/src/charting/glyphs/WavyBoxGlyph.js +17 -0
  328. package/src/charting/glyphs/WheelGlyph.js +28 -0
  329. package/src/charting/glyphs/drawGlyph.js +28 -0
  330. package/src/charting/glyphs/glyphSvg.js +55 -0
  331. package/src/charting/glyphs/index.js +109 -0
  332. package/src/charting/modelTree/AnalysisPanel.js +159 -0
  333. package/src/charting/modelTree/DiagramTabs.js +217 -0
  334. package/src/charting/modelTree/ModelTree.js +164 -0
  335. package/src/charting/modelTree/ModelTreePanel.js +914 -0
  336. package/src/charting/modelTree/TreeBuilder.js +238 -0
  337. package/src/charting/modelTree/TreeModeRegistry.js +51 -0
  338. package/src/charting/modelTree/TreeViewMode.js +110 -0
  339. package/src/charting/modelTree/buildFilterTrees.js +138 -0
  340. package/src/charting/modelTree/modes/FlatTreeMode.js +46 -0
  341. package/src/charting/modelTree/modes/LayerGroupedTreeMode.js +62 -0
  342. package/src/charting/modelTree/modes/TypeGroupedTreeMode.js +60 -0
  343. package/src/charting/modelTree/treeLayers.js +11 -0
  344. package/src/charting/report/reportHtml.js +82 -0
  345. package/src/charting/report/reportViewer.js +118 -0
  346. package/src/charting/shapes/CircleShape.js +19 -0
  347. package/src/charting/shapes/PathShape.js +17 -0
  348. package/src/charting/shapes/RectShape.js +20 -0
  349. package/src/charting/shapes/Shape.js +20 -0
  350. package/src/charting/shapes/ShapeFactory.js +23 -0
  351. package/src/charting/storage/LocalJsonStore.js +43 -0
  352. package/src/charting/templates/ActorTemplate.js +36 -0
  353. package/src/charting/templates/BoxTemplate.js +27 -0
  354. package/src/charting/templates/CircleTemplate.js +18 -0
  355. package/src/charting/templates/ClassTemplate.js +20 -0
  356. package/src/charting/templates/CloudTemplate.js +43 -0
  357. package/src/charting/templates/ComponentTemplate.js +19 -0
  358. package/src/charting/templates/CylinderTemplate.js +30 -0
  359. package/src/charting/templates/DataStoreTemplate.js +16 -0
  360. package/src/charting/templates/DiamondTemplate.js +10 -0
  361. package/src/charting/templates/DocumentTemplate.js +32 -0
  362. package/src/charting/templates/EllipseTemplate.js +15 -0
  363. package/src/charting/templates/FinalStateTemplate.js +12 -0
  364. package/src/charting/templates/GlyphTemplate.js +47 -0
  365. package/src/charting/templates/HexagonTemplate.js +17 -0
  366. package/src/charting/templates/LifelineTemplate.js +20 -0
  367. package/src/charting/templates/ManualInputTemplate.js +12 -0
  368. package/src/charting/templates/NoteTemplate.js +23 -0
  369. package/src/charting/templates/OctagonTemplate.js +7 -0
  370. package/src/charting/templates/PackageTemplate.js +25 -0
  371. package/src/charting/templates/ParallelogramTemplate.js +11 -0
  372. package/src/charting/templates/PentagonTemplate.js +5 -0
  373. package/src/charting/templates/PolygonTemplate.js +18 -0
  374. package/src/charting/templates/PredefinedProcessTemplate.js +13 -0
  375. package/src/charting/templates/RectangleTemplate.js +28 -0
  376. package/src/charting/templates/RegularPolygonTemplate.js +21 -0
  377. package/src/charting/templates/RoundedRectangleTemplate.js +5 -0
  378. package/src/charting/templates/StadiumTemplate.js +8 -0
  379. package/src/charting/templates/StarTemplate.js +17 -0
  380. package/src/charting/templates/SwimlaneTemplate.js +18 -0
  381. package/src/charting/templates/Template.js +208 -0
  382. package/src/charting/templates/TrapezoidTemplate.js +11 -0
  383. package/src/charting/templates/TriangleTemplate.js +12 -0
  384. package/src/charting/templates/index.js +31 -0
  385. package/src/charting/templates/outline.js +59 -0
  386. package/src/charting/templates/svg.js +19 -0
  387. package/src/charting/textToShapes.js +61 -0
  388. package/src/charting/toolbar/ToolbarButton.js +38 -0
  389. package/src/charting/toolbar/ToolbarCheckbox.js +31 -0
  390. package/src/charting/toolbar/ToolbarItem.js +19 -0
  391. package/src/charting/toolbar/ToolbarMenu.js +36 -0
  392. package/src/charting/toolbar/ToolbarSelect.js +38 -0
  393. package/src/charting/toolbar/ToolbarSeparator.js +7 -0
  394. package/src/charting/toolbar/ToolbarText.js +22 -0
  395. package/src/charting/toolbar/index.js +8 -0
  396. package/src/charting/toolbar/pickFile.js +14 -0
  397. package/src/charting/viewDecorations.js +85 -0
  398. package/src/charting/zOrder.js +57 -0
  399. package/src/csvTable.js +61 -0
  400. package/src/datamodel.js +122 -0
  401. package/src/datawindow/BoundedWindow.js +36 -0
  402. package/src/datawindow/FlatDataWindow.js +34 -0
  403. package/src/datawindow/GraphDataWindow.js +40 -0
  404. package/src/datawindow/GroupedSampleDataWindow.js +16 -0
  405. package/src/datawindow/SeriesDataWindow.js +42 -0
  406. package/src/datawindow/index.js +31 -0
  407. package/src/diagramCatalog.js +30 -0
  408. package/src/ebnfDiagram.js +57 -0
  409. package/src/ebnfParser.js +129 -0
  410. package/src/exportImage.js +233 -0
  411. package/src/index.js +2636 -0
  412. package/src/itIcons.js +84 -0
  413. package/src/kernelExpr.js +243 -0
  414. package/src/propertiesDialog.js +463 -0
  415. package/src/railroadDiagram.js +571 -0
  416. package/src/treeModeCatalog.js +16 -0
  417. package/src/workspace/ContextBus.js +79 -0
  418. package/src/workspace/EditorShell.js +67 -0
  419. package/src/workspace/Part.js +163 -0
  420. package/src/workspace/PartFactory.js +49 -0
  421. package/src/workspace/PartRegistry.js +86 -0
  422. package/src/workspace/Workspace.js +321 -0
  423. package/src/workspace/archimateServices.js +33 -0
  424. package/src/workspace/dom.js +120 -0
  425. package/src/workspace/index.js +75 -0
  426. package/src/workspace/layout/GridNode.js +280 -0
  427. package/src/workspace/layout/LayoutNode.js +89 -0
  428. package/src/workspace/layout/PartNode.js +77 -0
  429. package/src/workspace/layout/SplitNode.js +114 -0
  430. package/src/workspace/layout/TabsNode.js +191 -0
  431. package/src/workspace/layout/index.js +24 -0
  432. package/src/workspace/parts/AdapterPart.js +33 -0
  433. package/src/workspace/parts/ArchimateCanvasPart.js +345 -0
  434. package/src/workspace/parts/ArchimateEditorPart.js +79 -0
  435. package/src/workspace/parts/ChartPart.js +115 -0
  436. package/src/workspace/parts/ContentPart.js +34 -0
  437. package/src/workspace/parts/DetailPart.js +46 -0
  438. package/src/workspace/parts/DiagramEditorPart.js +135 -0
  439. package/src/workspace/parts/EditorPart.js +388 -0
  440. package/src/workspace/parts/HtmlPart.js +25 -0
  441. package/src/workspace/parts/ListPart.js +57 -0
  442. package/src/workspace/parts/ModelFile.js +187 -0
  443. package/src/workspace/parts/ModelsPart.js +135 -0
  444. package/src/workspace/styles.js +258 -0
  445. package/src/workspace/themes.js +96 -0
  446. package/src/workspace/workArea.js +413 -0
  447. package/src/workspace/workAreaModel.js +197 -0
  448. package/src/workspace.js +16 -0
  449. package/src/zip/ZipArchive.js +160 -0
  450. package/src/zip/crc32.js +25 -0
  451. 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
+ }