@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,114 @@
1
+ import { LayoutNode } from './LayoutNode.js';
2
+ import { el } from '../dom.js';
3
+
4
+ const SPLITTER_PX = 5;
5
+ const MIN_PANE_PX = 60;
6
+
7
+ /**
8
+ * SplitNode — a resizable row or column of children, separated by draggable
9
+ * splitters. This is what expresses an IDE shell (sidebar + main + console).
10
+ *
11
+ * `sizes[i]` is the pixel size of child i along the split axis, or `null` for
12
+ * "take the remaining space" (flex). A tree can leave every size null and get
13
+ * an even split; dragging a splitter pins its two neighbours to explicit pixel
14
+ * sizes, which is what makes the result serializable.
15
+ */
16
+ export class SplitNode extends LayoutNode {
17
+ static type = 'split';
18
+
19
+ constructor(spec = {}) {
20
+ super(spec);
21
+ this.dir = spec.dir === 'col' ? 'col' : 'row';
22
+ this.sizes = (spec.sizes ?? []).slice();
23
+ while (this.sizes.length < this.children.length) this.sizes.push(null);
24
+ }
25
+
26
+ get _axis() { return this.dir === 'row' ? 'width' : 'height'; }
27
+ get _clientAxis() { return this.dir === 'row' ? 'clientX' : 'clientY'; }
28
+
29
+ build(ctx) {
30
+ this.el.classList.add(this.dir === 'row' ? 'ws-split-row' : 'ws-split-col');
31
+
32
+ this.children.forEach((child, i) => {
33
+ if (i > 0) this._buildSplitter(i);
34
+ const pane = this.el.appendChild(el({ cls: 'ws-split-pane' }));
35
+ this._applySize(pane, this.sizes[i]);
36
+ child.render(pane, ctx);
37
+ child.activate?.();
38
+ });
39
+ }
40
+
41
+ _applySize(paneEl, size) {
42
+ if (size == null) {
43
+ paneEl.style.flex = '1 1 0';
44
+ paneEl.style.flexBasis = '0';
45
+ } else {
46
+ paneEl.style.flex = `0 0 ${size}px`;
47
+ }
48
+ }
49
+
50
+ /** The splitter sitting before child `i` — it resizes children i-1 and i. */
51
+ _buildSplitter(i) {
52
+ const bar = this.el.appendChild(el({
53
+ cls: ['ws-splitter', `ws-splitter-${this.dir}`],
54
+ style: { flex: `0 0 ${SPLITTER_PX}px` },
55
+ attrs: {
56
+ role: 'separator',
57
+ 'aria-orientation': this.dir === 'row' ? 'vertical' : 'horizontal',
58
+ },
59
+ }));
60
+
61
+ bar.addEventListener('pointerdown', (e) => {
62
+ if (e.button !== 0) return;
63
+ e.preventDefault();
64
+ const panes = [...this.el.querySelectorAll(':scope > .ws-split-pane')];
65
+ const before = panes[i - 1];
66
+ const after = panes[i];
67
+ if (!before || !after) return;
68
+
69
+ const start = e[this._clientAxis];
70
+ const beforeStart = before.getBoundingClientRect()[this._axis];
71
+ const afterStart = after.getBoundingClientRect()[this._axis];
72
+ const total = beforeStart + afterStart;
73
+
74
+ bar.setPointerCapture(e.pointerId);
75
+ this.el.classList.add('ws-splitting');
76
+
77
+ const onMove = (ev) => {
78
+ const delta = ev[this._clientAxis] - start;
79
+ const nextBefore = Math.max(MIN_PANE_PX, Math.min(total - MIN_PANE_PX, beforeStart + delta));
80
+ // Pin both neighbours: the pair must stay pixel-exact or the
81
+ // flex children either side would absorb the drag instead.
82
+ this._applySize(before, nextBefore);
83
+ this._applySize(after, total - nextBefore);
84
+ };
85
+ const onUp = () => {
86
+ bar.releasePointerCapture(e.pointerId);
87
+ bar.removeEventListener('pointermove', onMove);
88
+ bar.removeEventListener('pointerup', onUp);
89
+ bar.removeEventListener('pointercancel', onUp);
90
+ this.el.classList.remove('ws-splitting');
91
+ this.sizes[i - 1] = before.getBoundingClientRect()[this._axis];
92
+ this.sizes[i] = after.getBoundingClientRect()[this._axis];
93
+ this._emitChange();
94
+ };
95
+ bar.addEventListener('pointermove', onMove);
96
+ bar.addEventListener('pointerup', onUp);
97
+ bar.addEventListener('pointercancel', onUp);
98
+ });
99
+ }
100
+
101
+ /** Children outside a tab strip are live as soon as they exist. */
102
+ activate() {
103
+ for (const child of this.children) child.activate?.();
104
+ }
105
+
106
+ serialize() {
107
+ return {
108
+ type: SplitNode.type,
109
+ dir: this.dir,
110
+ sizes: this.sizes.slice(),
111
+ children: this.children.map(c => c.serialize()),
112
+ };
113
+ }
114
+ }
@@ -0,0 +1,191 @@
1
+ import { LayoutNode } from './LayoutNode.js';
2
+ import { el } from '../dom.js';
3
+
4
+ /**
5
+ * TabsNode — a tab strip over a stack of children, one visible at a time.
6
+ * This is what workbench's eight mutually exclusive tool-panels become, and
7
+ * what a WorkArea uses as its editor groups.
8
+ *
9
+ * Three deliberate behaviours:
10
+ * - **Lazy first mount.** A child is only mounted when its tab is first
11
+ * selected, so opening a workspace does not pay for eight panels nobody
12
+ * looked at. This is the case ContextBus's retained-value replay exists for:
13
+ * a part mounting on first activation still sees current selection.
14
+ * - **No unmount on switch.** Once mounted a child stays mounted and is merely
15
+ * hidden. Tearing down and rebuilding per switch is what makes a shell feel
16
+ * slow, and it would discard scroll position and unsaved input.
17
+ * - **Closing is optional and delegable.** `closable` adds a close control per
18
+ * tab (per-child `closable: false` opts one out — a pinned welcome tab, say).
19
+ * With no `ctx.onTabClose` the node closes the tab itself, so a plain layout
20
+ * gets working close buttons; with one, the handler owns it, which is how
21
+ * WorkArea keeps closing in its model instead of in the DOM.
22
+ */
23
+ export class TabsNode extends LayoutNode {
24
+ static type = 'tabs';
25
+
26
+ constructor(spec = {}) {
27
+ super(spec);
28
+ this.active = Number.isInteger(spec.active) ? spec.active : 0;
29
+ /** Group identity — what "open beside THIS group" addresses. */
30
+ this.id = spec.id ?? null;
31
+ this.closable = spec.closable ?? false;
32
+ this._panes = [];
33
+ this._tabs = [];
34
+ }
35
+
36
+ build(ctx) {
37
+ this.el.classList.add('ws-tabs');
38
+ this.el.append(
39
+ el({ cls: 'ws-tabstrip', attrs: { role: 'tablist' }, ref: n => { this.strip = n; } }),
40
+ el({ cls: 'ws-tabbody', ref: n => { this.body = n; } }),
41
+ );
42
+
43
+ // Capture phase: a part may stopPropagation on its own clicks, and
44
+ // "the group you last touched" has to hold even then, or the next
45
+ // thing you open lands somewhere you weren't looking.
46
+ if (this.id) {
47
+ this.el.addEventListener('pointerdown', () => ctx.onGroupFocus?.(this.id, this), true);
48
+ }
49
+
50
+ this._panes = [];
51
+ this._tabs = [];
52
+
53
+ this.children.forEach((child, i) => {
54
+ const pane = el({ cls: 'ws-tabpane' });
55
+ this.body.appendChild(pane);
56
+ // Render before reading label(): a PartNode only resolves its part
57
+ // — and therefore its title — during render(). Building the tab
58
+ // first would label every tab with the raw part id.
59
+ child.render(pane, ctx);
60
+ this._panes.push(pane);
61
+ this._tabs.push(this.strip.appendChild(this._buildTab(child, i)));
62
+ });
63
+
64
+ if (this.children.length) this.select(Math.min(this.active, this.children.length - 1), true);
65
+ }
66
+
67
+ /**
68
+ * One tab. A `<div role="tab">` rather than a `<button>` because a closable
69
+ * tab nests a close button, and a button inside a button is invalid markup
70
+ * that browsers reparent — so `tabindex`/`keydown` stand in for the button
71
+ * behaviour that is lost.
72
+ */
73
+ _buildTab(child, i) {
74
+ const label = child.label?.() ?? child.spec?.title ?? `Tab ${i + 1}`;
75
+ const closable = this.closable && (child.spec?.closable ?? true);
76
+ return el({
77
+ cls: 'ws-tab',
78
+ attrs: { role: 'tab', tabindex: '0', title: label },
79
+ on: {
80
+ click: () => this.select(i),
81
+ keydown: (e) => {
82
+ if (e.key !== 'Enter' && e.key !== ' ') return;
83
+ e.preventDefault();
84
+ this.select(i);
85
+ },
86
+ // Middle-click closes, as it does in every editor and browser.
87
+ auxclick: (e) => { if (closable && e.button === 1) { e.preventDefault(); this.requestClose(i); } },
88
+ },
89
+ children: [
90
+ { tag: 'span', cls: 'ws-tab-label', text: label },
91
+ closable && {
92
+ tag: 'button',
93
+ cls: 'ws-tabclose',
94
+ text: '×',
95
+ attrs: { type: 'button', tabindex: '-1', 'aria-label': `Close ${label}` },
96
+ // Without stopPropagation the tab's own click handler also
97
+ // fires and selects the tab we are closing.
98
+ on: { click: (e) => { e.stopPropagation(); this.requestClose(i); } },
99
+ },
100
+ ].filter(Boolean),
101
+ });
102
+ }
103
+
104
+ select(index, silent = false) {
105
+ if (index < 0 || index >= this.children.length) return;
106
+ this.active = index;
107
+ this._tabs.forEach((t, i) => {
108
+ const on = i === index;
109
+ t.classList.toggle('ws-tab-active', on);
110
+ t.setAttribute('aria-selected', String(on));
111
+ });
112
+ this._panes.forEach((p, i) => { p.style.display = i === index ? '' : 'none'; });
113
+ // Mount on first reveal only — activate() is idempotent.
114
+ this.children[index].activate?.();
115
+ if (!silent) this._emitChange();
116
+ }
117
+
118
+ /**
119
+ * A tab's close control was used. Hands off to `ctx.onTabClose` when the
120
+ * shell wants to own the decision (it may prompt about unsaved work, or
121
+ * rearrange the surrounding splits); otherwise closes it here.
122
+ */
123
+ requestClose(index) {
124
+ const child = this.children[index];
125
+ if (!child) return;
126
+ const detail = { tabs: this, index, partId: child.spec?.partId ?? null, node: child };
127
+ if (this.ctx?.onTabClose) { this.ctx.onTabClose(detail); return; }
128
+ this.closeTab(index);
129
+ }
130
+
131
+ /**
132
+ * Remove a tab and its child. Selection moves to the neighbour rather than
133
+ * back to the first tab, which is what closing the tab you were reading
134
+ * should feel like.
135
+ */
136
+ closeTab(index) {
137
+ const child = this.children[index];
138
+ if (!child) return null;
139
+ child.dispose();
140
+ this._panes[index]?.remove?.();
141
+ this._tabs[index]?.remove?.();
142
+ this.children.splice(index, 1);
143
+ this._panes.splice(index, 1);
144
+ this._tabs.splice(index, 1);
145
+ // Rebuilt so each tab's handlers close over its new index.
146
+ this._tabs.forEach((tab, i) => {
147
+ const fresh = this._buildTab(this.children[i], i);
148
+ tab.replaceWith(fresh);
149
+ this._tabs[i] = fresh;
150
+ });
151
+ if (this.children.length) {
152
+ this.select(Math.min(index, this.children.length - 1), true);
153
+ } else {
154
+ this.active = 0;
155
+ }
156
+ this._emitChange();
157
+ return child;
158
+ }
159
+
160
+ /** Show each tab's label as its child gives it now (a part's title that changed). */
161
+ refreshLabels() {
162
+ this._tabs.forEach((tab, i) => {
163
+ const fresh = this._buildTab(this.children[i], i);
164
+ fresh.classList.toggle('ws-tab-active', i === this.active);
165
+ fresh.setAttribute('aria-selected', String(i === this.active));
166
+ tab.replaceWith(fresh);
167
+ this._tabs[i] = fresh;
168
+ });
169
+ }
170
+
171
+ /** Activating the container activates only the visible child. */
172
+ activate() {
173
+ if (this.children.length) this.children[this.active]?.activate?.();
174
+ }
175
+
176
+ serialize() {
177
+ // Spread the spec first: `id` and `closable` are part of the group's
178
+ // identity, and a work area that lost group ids on save would reopen
179
+ // with every "open beside this group" pointing at nothing.
180
+ // The spec is spread rather than rebuilt field by field: `id` and
181
+ // `closable` are part of a group's identity, and a work area that lost
182
+ // group ids on save would come back with every "open beside this group"
183
+ // pointing at nothing.
184
+ return {
185
+ ...this.spec,
186
+ type: TabsNode.type,
187
+ active: this.active,
188
+ children: this.children.map(c => c.serialize()),
189
+ };
190
+ }
191
+ }
@@ -0,0 +1,24 @@
1
+ import { LayoutNode } from './LayoutNode.js';
2
+ import { PartNode } from './PartNode.js';
3
+ import { SplitNode } from './SplitNode.js';
4
+ import { TabsNode } from './TabsNode.js';
5
+ import { GridNode } from './GridNode.js';
6
+
7
+ // Populate the discriminator table LayoutNode.create() dispatches on. Doing it
8
+ // here rather than in each subclass keeps the subclasses importing only the
9
+ // base, so there is no import cycle.
10
+ LayoutNode.registerType(PartNode);
11
+ LayoutNode.registerType(SplitNode);
12
+ LayoutNode.registerType(TabsNode);
13
+ LayoutNode.registerType(GridNode);
14
+
15
+ /** Build a layout tree from a plain-JSON descriptor. */
16
+ export function createLayout(json) {
17
+ return LayoutNode.create(json);
18
+ }
19
+
20
+ export { LayoutNode, PartNode, SplitNode, TabsNode, GridNode };
21
+ export {
22
+ GRID_COLS, ROW_UNIT_PX, GRID_GAP_PX,
23
+ MIN_COL_SPAN, MIN_ROW_SPAN, DEFAULT_COL_SPAN, DEFAULT_ROW_SPAN,
24
+ } from './GridNode.js';
@@ -0,0 +1,33 @@
1
+ import { Part } from '../Part.js';
2
+
3
+ /**
4
+ * AdapterPart — wraps an existing imperative `mount(element, ctx)` function.
5
+ *
6
+ * This is the migration bridge, and it matters more than it looks: sqlengine
7
+ * workbench already has eight tool panels built as `mountX(container, {apiFetch})`
8
+ * functions. Wrapping them means they become parts of this shell **without
9
+ * being rewritten**, so adoption doesn't have to be all-or-nothing.
10
+ *
11
+ * ws.addPart({ id: 'datamodel', type: 'adapter', title: 'Data Modeller',
12
+ * mount: (el, ctx) => mountDataModel(el, { apiFetch }) });
13
+ *
14
+ * If the wrapped function returns a teardown callback it is honoured on dispose.
15
+ */
16
+ export class AdapterPart extends Part {
17
+ static type = 'adapter';
18
+
19
+ render() {
20
+ const fn = this.spec.mount;
21
+ if (typeof fn !== 'function') {
22
+ throw new Error(`AdapterPart "${this.id}" requires a mount(element, ctx) function`);
23
+ }
24
+ const teardown = fn(this.container, this.ctx);
25
+ if (typeof teardown === 'function') this.onDispose(teardown);
26
+ }
27
+
28
+ /** `mount` is a live function, so it cannot round-trip through JSON. */
29
+ serialize() {
30
+ const { mount, ...rest } = this.spec;
31
+ return { ...rest, type: AdapterPart.type, id: this.id, title: this.title, adapter: true };
32
+ }
33
+ }