@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
package/src/itIcons.js ADDED
@@ -0,0 +1,84 @@
1
+ // Copyright 2026 Jaroslav Peter Prib, Purveyor of Excellence
2
+ /**
3
+ * IT / infrastructure icon and type extensions for ArchiMate diagrams.
4
+ *
5
+ * ArchiMate itself does not define element types for every IT artefact an
6
+ * enterprise architect actually draws — firewall, laptop, database table,
7
+ * container, and so on. This module provides a small, well-known catalog of
8
+ * such concepts so they can be used as custom types in `archimateDiagram`
9
+ * while still behaving like real ArchiMate elements: they resolve to a layer
10
+ * (almost always `technology`), an aspect (`active-structure` for devices and
11
+ * services, `passive-structure` for data/files), and an icon. They are NOT
12
+ * part of the official ArchiMate specification, so `ArchimateValidator` treats
13
+ * them as extended/custom types rather than standard ones.
14
+ *
15
+ * The registry is intentionally separate from `src/archimate.js` so the
16
+ * official catalog stays pure and spec-aligned; `ArchimateNotation` optionally
17
+ * merges these in when an `itIcons` flag is passed.
18
+ */
19
+
20
+ import { ArchimateLayer, ArchimateNotation } from './archimate.js';
21
+
22
+ /** One IT/infrastructure element type — layer, aspect, icon, and an optional
23
+ * notation shape. Layer is usually 'technology'; aspect follows ArchiMate's
24
+ * own meaning (active-structure = performs/provides behavior, passive-structure
25
+ * = is acted upon). */
26
+ export class ITElementType {
27
+ constructor(name, layer, aspect, icon, notationShape, description) {
28
+ this.name = name;
29
+ this.layer = layer;
30
+ this.aspect = aspect;
31
+ this.icon = icon;
32
+ this.notationShape = notationShape;
33
+ this.description = description;
34
+ }
35
+ }
36
+
37
+ const IT_ELEMENT_TYPES = new Map();
38
+ const IT_ELEMENT_ROWS = [
39
+ // Active-structure devices and hardware
40
+ ['firewall', 'technology', 'active-structure', '🧱', undefined, 'A network security device that monitors and filters incoming/outgoing network traffic.'],
41
+ ['router', 'technology', 'active-structure', '🌐', undefined, 'A networking device that forwards data packets between computer networks.'],
42
+ ['switch', 'technology', 'active-structure', '🔀', undefined, 'A networking device that connects devices together on a computer network.'],
43
+ ['load-balancer', 'technology', 'active-structure', '⚖️', undefined, 'A device or service that distributes network traffic across multiple servers.'],
44
+ ['laptop', 'technology', 'active-structure', '💻', undefined, 'A portable personal computer used by an end user.'],
45
+ ['workstation', 'technology', 'active-structure', '🖥️', undefined, 'A high-performance personal computer used for technical or professional work.'],
46
+ ['server', 'technology', 'active-structure', '🖥️', undefined, 'A computer or program that provides functionality to other computers or programs.'],
47
+ ['mobile-device', 'technology', 'active-structure', '📱', undefined, 'A handheld computing device such as a smartphone.'],
48
+ ['tablet', 'technology', 'active-structure', '📱', undefined, 'A portable touchscreen computing device.'],
49
+ ['printer', 'technology', 'active-structure', '🖨️', undefined, 'A device that produces a hard copy of documents.'],
50
+ ['iot-device', 'technology', 'active-structure', '📡', undefined, 'An Internet-of-Things device that connects and exchanges data over a network.'],
51
+ // Active-structure software/runtime
52
+ ['container', 'technology', 'active-structure', '📦', undefined, 'A lightweight, standalone, executable package of software.'],
53
+ ['pod', 'technology', 'active-structure', '🛞', undefined, 'A group of one or more containers in a Kubernetes cluster.'],
54
+ ['virtual-machine', 'technology', 'active-structure', '💻', undefined, 'A software emulation of a physical computer.'],
55
+ ['api-gateway', 'technology', 'active-structure', '🚪', undefined, 'A service that manages, routes, and secures API requests.'],
56
+ // Passive-structure data/files
57
+ ['database', 'technology', 'passive-structure', '🗄️', undefined, 'A structured collection of data stored and accessed electronically.'],
58
+ ['table', 'technology', 'passive-structure', '📊', undefined, 'A structured set of data held in a database, consisting of rows and columns.'],
59
+ ['file', 'technology', 'passive-structure', '📄', undefined, 'A named collection of data stored on a computer system.'],
60
+ ['folder', 'technology', 'passive-structure', '📁', undefined, 'A container for organising files.'],
61
+ ['bucket', 'technology', 'passive-structure', '🪣', undefined, 'A cloud-storage container for objects such as files and backups.'],
62
+ ['queue', 'technology', 'passive-structure', '📬', undefined, 'A temporary holding structure for messages or tasks waiting to be processed.'],
63
+ // Composite / other
64
+ ['cloud-region', 'technology', 'active-structure', '☁️', undefined, 'A geographic area of a cloud provider that contains one or more data centres.'],
65
+ ['datacentre', 'technology', 'active-structure', '🏢', undefined, 'A facility used to house computer systems and associated components.'],
66
+ ['network', 'technology', 'active-structure', '📡', undefined, 'A group of interconnected computers and devices that can exchange data.'],
67
+ ];
68
+
69
+ for (const [name, layerKey, aspect, icon, notationShape, description] of IT_ELEMENT_ROWS) {
70
+ const layer = ArchimateNotation.layer(layerKey);
71
+ IT_ELEMENT_TYPES.set(name, new ITElementType(name, layer, aspect, icon, notationShape, description));
72
+ }
73
+
74
+ /** Registry for looking up IT/infrastructure element types. */
75
+ export const ITIconNotation = {
76
+ /** Every IT element type, in catalog order. */
77
+ elementTypes() { return [...IT_ELEMENT_TYPES.values()]; },
78
+ /** Just the names. */
79
+ elementTypeNames() { return [...IT_ELEMENT_TYPES.keys()]; },
80
+ /** An IT element type by name, or undefined. */
81
+ elementType(name) { return IT_ELEMENT_TYPES.get(name); },
82
+ /** Whether a name is a known IT element type. */
83
+ has(name) { return IT_ELEMENT_TYPES.has(name); },
84
+ };
@@ -0,0 +1,243 @@
1
+ // Copyright 2026 Jaroslav Peter Prib, Purveyor of Excellence
2
+ /**
3
+ * A small scalar expression language for computed chart encodings — letting
4
+ * `colorCol`/similar options be a FORMULA over a data point's own fields
5
+ * ("value > threshold ? 1 : 0") instead of only a plain field name.
6
+ *
7
+ * This is renderengine's own copy of sqlengine's
8
+ * `src/compute/kernel/parseKernel.js` grammar, adapted to compile a single
9
+ * ROW at a time (one JS number per parameter in, one number out) rather than
10
+ * a whole column, since a chart evaluates an encoding once per data point,
11
+ * not once per query. Kept as a standalone copy rather than a shared
12
+ * dependency — the two repos have no package link today, and this grammar is
13
+ * small enough that duplicating it costs less than a cross-repo dependency
14
+ * would. See renderengine's own `tasks.md` for why this exists, and
15
+ * sqlengine's `documentation/kernel-language.md` for the full grammar
16
+ * reference this is a subset of.
17
+ *
18
+ * DELIBERATELY SMALL, same reasoning as the original: scalar arithmetic,
19
+ * comparisons, a fixed set of maths functions, and a conditional. No loops,
20
+ * no state, no calls out — anything outside that stays an ordinary
21
+ * JavaScript option (a function passed directly), which still works.
22
+ *
23
+ * NO GPU/WASM/WebNN TARGETS HERE, unlike the sqlengine original — renderengine
24
+ * has no compute-backend concept and nothing has measured a need for one for
25
+ * per-point chart encodings (see tasks.md's "Gated on a measurement" entry).
26
+ * This only ever emits JavaScript.
27
+ */
28
+
29
+ /** The functions a formula may call, with how many arguments each takes. */
30
+ export const KERNEL_FUNCTIONS = {
31
+ abs: 1, floor: 1, ceil: 1, round: 1, sign: 1, sqrt: 1,
32
+ exp: 1, log: 1, sin: 1, cos: 1, tanh: 1,
33
+ min: 2, max: 2, pow: 2, clamp: 3,
34
+ };
35
+
36
+ const FN_NAMES = {
37
+ abs: 'Math.abs', floor: 'Math.floor', ceil: 'Math.ceil', round: 'Math.round',
38
+ sign: 'Math.sign', sqrt: 'Math.sqrt', exp: 'Math.exp', log: 'Math.log',
39
+ sin: 'Math.sin', cos: 'Math.cos', tanh: 'Math.tanh', min: 'Math.min',
40
+ max: 'Math.max', pow: 'Math.pow', clamp: '__clamp',
41
+ };
42
+
43
+ /**
44
+ * Parse a formula into `{ast, params}`.
45
+ * @param {string} source — e.g. `value > threshold ? 1 : 0`
46
+ * @param {string[]} params — the names the formula may read
47
+ */
48
+ export function parseKernelExpr(source, params) {
49
+ if (typeof source !== 'string' || source.trim() === '')
50
+ throw new Error('parseKernelExpr: the formula is empty');
51
+ if (!Array.isArray(params) || params.length === 0)
52
+ throw new Error('parseKernelExpr: at least one parameter name is required');
53
+ for (const p of params) {
54
+ if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(p))
55
+ throw new Error(`parseKernelExpr: '${p}' is not a usable parameter name`);
56
+ if (p in KERNEL_FUNCTIONS)
57
+ throw new Error(`parseKernelExpr: '${p}' is the name of a built-in function`);
58
+ }
59
+
60
+ const tokens = _tokenize(source);
61
+ const state = { tokens, at: 0, params: new Set(params) };
62
+ const ast = _parseTernary(state);
63
+
64
+ if (state.at < tokens.length)
65
+ throw new Error(
66
+ `parseKernelExpr: unexpected '${tokens[state.at].value}' at position ${tokens[state.at].pos}. ` +
67
+ `This formula language is a single scalar expression — no statements, no assignment.`);
68
+
69
+ return { ast, params: [...params] };
70
+ }
71
+
72
+ // ── Tokenizer ───────────────────────────────────────────────────────────────
73
+
74
+ const PUNCTUATION = ['<=', '>=', '==', '!=', '&&', '||',
75
+ '+', '-', '*', '/', '%', '<', '>', '(', ')', ',', '?', ':', '!'];
76
+
77
+ function _tokenize(src) {
78
+ const out = [];
79
+ let i = 0;
80
+ while (i < src.length) {
81
+ const ch = src[i];
82
+ if (/\s/.test(ch)) { i++; continue; }
83
+
84
+ if (/[0-9.]/.test(ch)) {
85
+ const m = /^\d*\.?\d+(?:[eE][+-]?\d+)?/.exec(src.slice(i));
86
+ if (!m) throw new Error(`parseKernelExpr: malformed number at position ${i}`);
87
+ out.push({ type: 'number', value: Number(m[0]), pos: i });
88
+ i += m[0].length;
89
+ continue;
90
+ }
91
+
92
+ if (/[A-Za-z_]/.test(ch)) {
93
+ const m = /^[A-Za-z_][A-Za-z0-9_]*/.exec(src.slice(i));
94
+ out.push({ type: 'name', value: m[0], pos: i });
95
+ i += m[0].length;
96
+ continue;
97
+ }
98
+
99
+ // Two-character operators listed first, so `<=` is never read as `<`
100
+ // followed by something the parser will not recognise.
101
+ const punct = PUNCTUATION.find(p => src.startsWith(p, i));
102
+ if (!punct)
103
+ throw new Error(`parseKernelExpr: '${ch}' at position ${i} is not part of this formula language`);
104
+ out.push({ type: 'punct', value: punct, pos: i });
105
+ i += punct.length;
106
+ }
107
+ return out;
108
+ }
109
+
110
+ // ── Recursive descent, lowest precedence outermost ──────────────────────────
111
+
112
+ const _peek = (s) => s.tokens[s.at];
113
+ const _eat = (s, value) => {
114
+ const t = _peek(s);
115
+ if (t && t.type === 'punct' && t.value === value) { s.at++; return true; }
116
+ return false;
117
+ };
118
+ const _expect = (s, value) => {
119
+ if (!_eat(s, value)) {
120
+ const t = _peek(s);
121
+ throw new Error(
122
+ `parseKernelExpr: expected '${value}' but found ` +
123
+ (t ? `'${t.value}' at position ${t.pos}` : 'the end of the expression'));
124
+ }
125
+ };
126
+
127
+ function _parseTernary(s) {
128
+ const cond = _parseBinary(s, 0);
129
+ if (!_eat(s, '?')) return cond;
130
+ const then = _parseTernary(s);
131
+ _expect(s, ':');
132
+ const other = _parseTernary(s);
133
+ return { kind: 'cond', cond, then, else: other };
134
+ }
135
+
136
+ /** Precedence tiers, loosest first. */
137
+ const TIERS = [['||'], ['&&'], ['==', '!='], ['<', '<=', '>', '>='], ['+', '-'], ['*', '/', '%']];
138
+
139
+ function _parseBinary(s, tier) {
140
+ if (tier >= TIERS.length) return _parseUnary(s);
141
+ let left = _parseBinary(s, tier + 1);
142
+ for (;;) {
143
+ const t = _peek(s);
144
+ if (!t || t.type !== 'punct' || !TIERS[tier].includes(t.value)) return left;
145
+ s.at++;
146
+ const right = _parseBinary(s, tier + 1);
147
+ left = { kind: 'binary', op: t.value, left, right };
148
+ }
149
+ }
150
+
151
+ function _parseUnary(s) {
152
+ if (_eat(s, '-')) return { kind: 'neg', operand: _parseUnary(s) };
153
+ if (_eat(s, '!')) return { kind: 'not', operand: _parseUnary(s) };
154
+ return _parsePrimary(s);
155
+ }
156
+
157
+ function _parsePrimary(s) {
158
+ const t = _peek(s);
159
+ if (!t) throw new Error('parseKernelExpr: the expression ends where a value was expected');
160
+
161
+ if (_eat(s, '(')) {
162
+ const inner = _parseTernary(s);
163
+ _expect(s, ')');
164
+ return inner;
165
+ }
166
+
167
+ if (t.type === 'number') { s.at++; return { kind: 'literal', value: t.value }; }
168
+
169
+ if (t.type === 'name') {
170
+ s.at++;
171
+ const argCount = KERNEL_FUNCTIONS[t.value];
172
+ if (argCount != null) {
173
+ _expect(s, '(');
174
+ const args = [];
175
+ if (!_eat(s, ')')) {
176
+ do { args.push(_parseTernary(s)); } while (_eat(s, ','));
177
+ _expect(s, ')');
178
+ }
179
+ if (args.length !== argCount)
180
+ throw new Error(
181
+ `parseKernelExpr: ${t.value}() takes ${argCount} argument${argCount === 1 ? '' : 's'}, ` +
182
+ `not ${args.length}`);
183
+ return { kind: 'call', name: t.value, args };
184
+ }
185
+
186
+ if (!s.params.has(t.value))
187
+ throw new Error(
188
+ `parseKernelExpr: '${t.value}' is neither a parameter nor a built-in function. ` +
189
+ `Parameters here are ${[...s.params].join(', ')}; functions are ` +
190
+ `${Object.keys(KERNEL_FUNCTIONS).join(', ')}.`);
191
+ return { kind: 'param', name: t.value };
192
+ }
193
+
194
+ throw new Error(`parseKernelExpr: unexpected '${t.value}' at position ${t.pos}`);
195
+ }
196
+
197
+ // ── JavaScript emission ──────────────────────────────────────────────────────
198
+
199
+ function _emitJs(node) {
200
+ const go = (n) => {
201
+ switch (n.kind) {
202
+ case 'literal': return `${n.value}`;
203
+ case 'param': return n.name;
204
+ case 'neg': return `(-${go(n.operand)})`;
205
+ case 'not': return `(${go(n.operand)} === 0 ? 1 : 0)`;
206
+ case 'cond': return `((${go(n.cond)}) !== 0 ? ${go(n.then)} : ${go(n.else)})`;
207
+ case 'binary': {
208
+ const l = go(n.left), r = go(n.right);
209
+ if (n.op === '&&' || n.op === '||')
210
+ return `(((${l}) !== 0 ${n.op} (${r}) !== 0) ? 1 : 0)`;
211
+ if (['<', '<=', '>', '>=', '==', '!='].includes(n.op))
212
+ return `((${l} ${n.op === '==' ? '===' : n.op === '!=' ? '!==' : n.op} ${r}) ? 1 : 0)`;
213
+ return `(${l} ${n.op} ${r})`;
214
+ }
215
+ case 'call': {
216
+ const args = n.args.map(go).join(', ');
217
+ return `${FN_NAMES[n.name]}(${args})`;
218
+ }
219
+ default: throw new Error(`_emitJs: unknown node '${n.kind}'`);
220
+ }
221
+ };
222
+ return go(node);
223
+ }
224
+
225
+ /**
226
+ * Compile a formula to a callable JavaScript function — `fn(...paramValues)
227
+ * -> number`. Built with `new Function` from an expression THIS module
228
+ * generated, not from anything a caller passed in directly: the parser
229
+ * accepts only its own small grammar, so arbitrary text never reaches the
230
+ * function body, the same reasoning sqlengine's compiled UDFs rely on.
231
+ *
232
+ * @param {string} source
233
+ * @param {string[]} params
234
+ * @returns {(...values: number[]) => number}
235
+ */
236
+ export function compileFormula(source, params) {
237
+ const { ast } = parseKernelExpr(source, params);
238
+ const __clamp = (x, lo, hi) => Math.min(Math.max(x, lo), hi);
239
+ const body = `return ${_emitJs(ast)};`;
240
+ // eslint-disable-next-line no-new-func
241
+ const fn = new Function('__clamp', ...params, body);
242
+ return (...values) => fn(__clamp, ...values);
243
+ }