@grafloria/element 0.3.19 → 0.3.20

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 (638) hide show
  1. package/{src/index.ts → esm/src/index.js} +60 -569
  2. package/esm/src/lib/dashboard-kit/dashboard.js +590 -0
  3. package/esm/src/lib/dashboard-kit/grid-binder.js +1633 -0
  4. package/esm/src/lib/dashboard-kit/grid-mapping.js +164 -0
  5. package/esm/src/lib/dashboard-kit/index.js +8 -0
  6. package/{src/lib/dashboard-kit/styles.ts → esm/src/lib/dashboard-kit/styles.js} +8 -9
  7. package/esm/src/lib/dashboard-kit/widgets.js +379 -0
  8. package/esm/src/lib/diagram-kit/card.js +199 -0
  9. package/esm/src/lib/diagram-kit/editing.js +448 -0
  10. package/esm/src/lib/diagram-kit/er.js +160 -0
  11. package/esm/src/lib/diagram-kit/handles.js +312 -0
  12. package/esm/src/lib/diagram-kit/index.js +15 -0
  13. package/esm/src/lib/diagram-kit/join-guidance.js +322 -0
  14. package/esm/src/lib/diagram-kit/rows.js +144 -0
  15. package/{src/lib/diagram-kit/styles.ts → esm/src/lib/diagram-kit/styles.js} +10 -10
  16. package/esm/src/lib/diagram-kit/uml.js +135 -0
  17. package/esm/src/lib/diagram-kit/update.js +244 -0
  18. package/esm/src/lib/grafloria-flow-element.js +266 -0
  19. package/esm/src/lib/grafloria.js +69 -0
  20. package/esm/src/lib/load.js +252 -0
  21. package/esm/src/lib/node-type-registry.js +42 -0
  22. package/esm/src/lib/stencil-kit/builders.js +18 -0
  23. package/esm/src/lib/stencil-kit/card-builders.js +105 -0
  24. package/esm/src/lib/stencil-kit/index.js +9 -0
  25. package/esm/src/lib/stencil-kit/palette.js +427 -0
  26. package/esm/src/lib/stencil-kit/shape-data.js +537 -0
  27. package/{src/lib/stencil-kit/styles.ts → esm/src/lib/stencil-kit/styles.js} +9 -9
  28. package/package.json +12 -3
  29. package/jest.config.ts +0 -16
  30. package/project.json +0 -44
  31. package/src/front-door-probe.spec.ts +0 -173
  32. package/src/index.js.map +0 -1
  33. package/src/lib/dashboard-kit/dashboard.js.map +0 -1
  34. package/src/lib/dashboard-kit/dashboard.spec.ts +0 -821
  35. package/src/lib/dashboard-kit/dashboard.ts +0 -906
  36. package/src/lib/dashboard-kit/grid-binder.js.map +0 -1
  37. package/src/lib/dashboard-kit/grid-binder.ts +0 -1976
  38. package/src/lib/dashboard-kit/grid-mapping.js.map +0 -1
  39. package/src/lib/dashboard-kit/grid-mapping.spec.ts +0 -308
  40. package/src/lib/dashboard-kit/grid-mapping.ts +0 -283
  41. package/src/lib/dashboard-kit/index.js.map +0 -1
  42. package/src/lib/dashboard-kit/index.ts +0 -56
  43. package/src/lib/dashboard-kit/styles.js.map +0 -1
  44. package/src/lib/dashboard-kit/widgets.js.map +0 -1
  45. package/src/lib/dashboard-kit/widgets.spec.ts +0 -239
  46. package/src/lib/dashboard-kit/widgets.ts +0 -484
  47. package/src/lib/diagram-kit/card.js.map +0 -1
  48. package/src/lib/diagram-kit/card.ts +0 -219
  49. package/src/lib/diagram-kit/diagram-kit.spec.ts +0 -465
  50. package/src/lib/diagram-kit/editing.js.map +0 -1
  51. package/src/lib/diagram-kit/editing.spec.ts +0 -172
  52. package/src/lib/diagram-kit/editing.ts +0 -493
  53. package/src/lib/diagram-kit/er.js.map +0 -1
  54. package/src/lib/diagram-kit/er.ts +0 -246
  55. package/src/lib/diagram-kit/handles.js.map +0 -1
  56. package/src/lib/diagram-kit/handles.spec.ts +0 -224
  57. package/src/lib/diagram-kit/handles.ts +0 -375
  58. package/src/lib/diagram-kit/index.js.map +0 -1
  59. package/src/lib/diagram-kit/index.ts +0 -66
  60. package/src/lib/diagram-kit/join-guidance.js.map +0 -1
  61. package/src/lib/diagram-kit/join-guidance.spec.ts +0 -241
  62. package/src/lib/diagram-kit/join-guidance.ts +0 -390
  63. package/src/lib/diagram-kit/rows.js.map +0 -1
  64. package/src/lib/diagram-kit/rows.ts +0 -174
  65. package/src/lib/diagram-kit/styles.js.map +0 -1
  66. package/src/lib/diagram-kit/uml.js.map +0 -1
  67. package/src/lib/diagram-kit/uml.ts +0 -213
  68. package/src/lib/diagram-kit/update.js.map +0 -1
  69. package/src/lib/diagram-kit/update.spec.ts +0 -208
  70. package/src/lib/diagram-kit/update.ts +0 -324
  71. package/src/lib/grafloria-flow-element.js.map +0 -1
  72. package/src/lib/grafloria-flow-element.spec.ts +0 -290
  73. package/src/lib/grafloria-flow-element.ts +0 -298
  74. package/src/lib/grafloria.js.map +0 -1
  75. package/src/lib/grafloria.ts +0 -151
  76. package/src/lib/load.js.map +0 -1
  77. package/src/lib/load.spec.ts +0 -565
  78. package/src/lib/load.ts +0 -359
  79. package/src/lib/node-type-registry.js.map +0 -1
  80. package/src/lib/node-type-registry.ts +0 -76
  81. package/src/lib/stencil-kit/builders.js.map +0 -1
  82. package/src/lib/stencil-kit/builders.ts +0 -58
  83. package/src/lib/stencil-kit/card-builders.js.map +0 -1
  84. package/src/lib/stencil-kit/card-builders.ts +0 -113
  85. package/src/lib/stencil-kit/index.js.map +0 -1
  86. package/src/lib/stencil-kit/index.ts +0 -17
  87. package/src/lib/stencil-kit/palette.js.map +0 -1
  88. package/src/lib/stencil-kit/palette.ts +0 -482
  89. package/src/lib/stencil-kit/shape-data.js.map +0 -1
  90. package/src/lib/stencil-kit/shape-data.spec.ts +0 -470
  91. package/src/lib/stencil-kit/shape-data.ts +0 -680
  92. package/src/lib/stencil-kit/styles.js.map +0 -1
  93. package/src/libs/element/src/index.js.map +0 -1
  94. package/src/libs/element/src/lib/dashboard-kit/dashboard.js.map +0 -1
  95. package/src/libs/element/src/lib/dashboard-kit/grid-binder.js.map +0 -1
  96. package/src/libs/element/src/lib/dashboard-kit/grid-mapping.js.map +0 -1
  97. package/src/libs/element/src/lib/dashboard-kit/index.js.map +0 -1
  98. package/src/libs/element/src/lib/dashboard-kit/styles.js.map +0 -1
  99. package/src/libs/element/src/lib/dashboard-kit/widgets.js.map +0 -1
  100. package/src/libs/element/src/lib/diagram-kit/card.js.map +0 -1
  101. package/src/libs/element/src/lib/diagram-kit/editing.js.map +0 -1
  102. package/src/libs/element/src/lib/diagram-kit/er.js.map +0 -1
  103. package/src/libs/element/src/lib/diagram-kit/handles.js.map +0 -1
  104. package/src/libs/element/src/lib/diagram-kit/index.js.map +0 -1
  105. package/src/libs/element/src/lib/diagram-kit/join-guidance.js.map +0 -1
  106. package/src/libs/element/src/lib/diagram-kit/rows.js.map +0 -1
  107. package/src/libs/element/src/lib/diagram-kit/styles.js.map +0 -1
  108. package/src/libs/element/src/lib/diagram-kit/uml.js.map +0 -1
  109. package/src/libs/element/src/lib/diagram-kit/update.js.map +0 -1
  110. package/src/libs/element/src/lib/grafloria-flow-element.js.map +0 -1
  111. package/src/libs/element/src/lib/grafloria.js.map +0 -1
  112. package/src/libs/element/src/lib/load.js.map +0 -1
  113. package/src/libs/element/src/lib/node-type-registry.js.map +0 -1
  114. package/src/libs/element/src/lib/stencil-kit/builders.js.map +0 -1
  115. package/src/libs/element/src/lib/stencil-kit/card-builders.js.map +0 -1
  116. package/src/libs/element/src/lib/stencil-kit/index.js.map +0 -1
  117. package/src/libs/element/src/lib/stencil-kit/palette.js.map +0 -1
  118. package/src/libs/element/src/lib/stencil-kit/shape-data.js.map +0 -1
  119. package/src/libs/element/src/lib/stencil-kit/styles.js.map +0 -1
  120. package/src/libs/engine/src/adapters/component-adapter.interface.js.map +0 -1
  121. package/src/libs/engine/src/adapters/index.js.map +0 -1
  122. package/src/libs/engine/src/clipboard/ClipboardManager.js.map +0 -1
  123. package/src/libs/engine/src/clipboard/index.js.map +0 -1
  124. package/src/libs/engine/src/collab/apply-op.js.map +0 -1
  125. package/src/libs/engine/src/collab/capture.js.map +0 -1
  126. package/src/libs/engine/src/collab/index.js.map +0 -1
  127. package/src/libs/engine/src/collab/integrity.js.map +0 -1
  128. package/src/libs/engine/src/collab/lww.js.map +0 -1
  129. package/src/libs/engine/src/collab/op-log.js.map +0 -1
  130. package/src/libs/engine/src/collab/op.js.map +0 -1
  131. package/src/libs/engine/src/collab/replica.js.map +0 -1
  132. package/src/libs/engine/src/collab/undo.js.map +0 -1
  133. package/src/libs/engine/src/commands/Command.js.map +0 -1
  134. package/src/libs/engine/src/commands/CommandManager.js.map +0 -1
  135. package/src/libs/engine/src/commands/basic/AddGroupCommand.js.map +0 -1
  136. package/src/libs/engine/src/commands/basic/AddLinkCommand.js.map +0 -1
  137. package/src/libs/engine/src/commands/basic/AddNodeCommand.js.map +0 -1
  138. package/src/libs/engine/src/commands/basic/AddToGroupCommand.js.map +0 -1
  139. package/src/libs/engine/src/commands/basic/AlignCommands.js.map +0 -1
  140. package/src/libs/engine/src/commands/basic/CollapseGroupCommand.js.map +0 -1
  141. package/src/libs/engine/src/commands/basic/CopyCommand.js.map +0 -1
  142. package/src/libs/engine/src/commands/basic/CutCommand.js.map +0 -1
  143. package/src/libs/engine/src/commands/basic/DeleteSelectionCommand.js.map +0 -1
  144. package/src/libs/engine/src/commands/basic/DuplicateCommand.js.map +0 -1
  145. package/src/libs/engine/src/commands/basic/ExpandGroupCommand.js.map +0 -1
  146. package/src/libs/engine/src/commands/basic/MoveGroupCommand.js.map +0 -1
  147. package/src/libs/engine/src/commands/basic/MoveNodeCommand.js.map +0 -1
  148. package/src/libs/engine/src/commands/basic/NodeZOrderCommands.js.map +0 -1
  149. package/src/libs/engine/src/commands/basic/PasteCommand.js.map +0 -1
  150. package/src/libs/engine/src/commands/basic/PortCommands.js.map +0 -1
  151. package/src/libs/engine/src/commands/basic/ReconnectLinkCommand.js.map +0 -1
  152. package/src/libs/engine/src/commands/basic/RemoveFromGroupCommand.js.map +0 -1
  153. package/src/libs/engine/src/commands/basic/RemoveGroupCommand.js.map +0 -1
  154. package/src/libs/engine/src/commands/basic/RemoveLinkCommand.js.map +0 -1
  155. package/src/libs/engine/src/commands/basic/RemoveNodeCommand.js.map +0 -1
  156. package/src/libs/engine/src/commands/basic/ResizeNodeCommand.js.map +0 -1
  157. package/src/libs/engine/src/commands/basic/RotateNodeCommand.js.map +0 -1
  158. package/src/libs/engine/src/commands/basic/SetFlexItemCommand.js.map +0 -1
  159. package/src/libs/engine/src/commands/basic/SetGridItemCommand.js.map +0 -1
  160. package/src/libs/engine/src/commands/basic/SetLayoutCommand.js.map +0 -1
  161. package/src/libs/engine/src/commands/basic/SetLinkDisplayLabelCommand.js.map +0 -1
  162. package/src/libs/engine/src/commands/basic/SetLinkLabelCommand.js.map +0 -1
  163. package/src/libs/engine/src/commands/basic/SetLinkLabelsCommand.js.map +0 -1
  164. package/src/libs/engine/src/commands/basic/SetLinkPathTypeCommand.js.map +0 -1
  165. package/src/libs/engine/src/commands/basic/SetLinkPointsCommand.js.map +0 -1
  166. package/src/libs/engine/src/commands/basic/SetNodeDataCommand.js.map +0 -1
  167. package/src/libs/engine/src/commands/basic/SetNodeLabelCommand.js.map +0 -1
  168. package/src/libs/engine/src/commands/basic/SetNodeShapeConfigCommand.js.map +0 -1
  169. package/src/libs/engine/src/commands/basic/SetNodeStyleCommand.js.map +0 -1
  170. package/src/libs/engine/src/commands/basic/SetParentCommand.js.map +0 -1
  171. package/src/libs/engine/src/commands/basic/SetStrokePointsCommand.js.map +0 -1
  172. package/src/libs/engine/src/commands/basic/StrokeLifecycleCommands.js.map +0 -1
  173. package/src/libs/engine/src/commands/basic/UpdateLinkStyleCommand.js.map +0 -1
  174. package/src/libs/engine/src/commands/basic/index.js.map +0 -1
  175. package/src/libs/engine/src/commands/basic/remapNodePortIds.js.map +0 -1
  176. package/src/libs/engine/src/commands/basic/resolveLinkNodeIds.js.map +0 -1
  177. package/src/libs/engine/src/commands/composite/BatchCommand.js.map +0 -1
  178. package/src/libs/engine/src/commands/composite/MacroCommand.js.map +0 -1
  179. package/src/libs/engine/src/commands/composite/index.js.map +0 -1
  180. package/src/libs/engine/src/commands/index.js.map +0 -1
  181. package/src/libs/engine/src/comments/comment-store.js.map +0 -1
  182. package/src/libs/engine/src/comments/index.js.map +0 -1
  183. package/src/libs/engine/src/comments/mentions.js.map +0 -1
  184. package/src/libs/engine/src/comments/read-state.js.map +0 -1
  185. package/src/libs/engine/src/comments/types.js.map +0 -1
  186. package/src/libs/engine/src/config/InteractionConfig.js.map +0 -1
  187. package/src/libs/engine/src/config/index.js.map +0 -1
  188. package/src/libs/engine/src/dsl/DSL.js.map +0 -1
  189. package/src/libs/engine/src/dsl/advanced/StyleParser.js.map +0 -1
  190. package/src/libs/engine/src/dsl/advanced/TemplateParser.js.map +0 -1
  191. package/src/libs/engine/src/dsl/advanced/index.js.map +0 -1
  192. package/src/libs/engine/src/dsl/detector/LayoutDetector.js.map +0 -1
  193. package/src/libs/engine/src/dsl/extended/BPMNGenerator.js.map +0 -1
  194. package/src/libs/engine/src/dsl/extended/BPMNParser.js.map +0 -1
  195. package/src/libs/engine/src/dsl/extended/ERDGenerator.js.map +0 -1
  196. package/src/libs/engine/src/dsl/extended/ERDParser.js.map +0 -1
  197. package/src/libs/engine/src/dsl/extended/ERDTransformer.js.map +0 -1
  198. package/src/libs/engine/src/dsl/extended/UMLGenerator.js.map +0 -1
  199. package/src/libs/engine/src/dsl/extended/UMLParser.js.map +0 -1
  200. package/src/libs/engine/src/dsl/extended/index.js.map +0 -1
  201. package/src/libs/engine/src/dsl/generator/DSLFormatter.js.map +0 -1
  202. package/src/libs/engine/src/dsl/generator/DSLGenerator.js.map +0 -1
  203. package/src/libs/engine/src/dsl/generator/DiagramAnalyzer.js.map +0 -1
  204. package/src/libs/engine/src/dsl/index.js.map +0 -1
  205. package/src/libs/engine/src/dsl/lexer/Lexer.js.map +0 -1
  206. package/src/libs/engine/src/dsl/mermaid/MermaidClass.js.map +0 -1
  207. package/src/libs/engine/src/dsl/mermaid/MermaidER.js.map +0 -1
  208. package/src/libs/engine/src/dsl/mermaid/MermaidState.js.map +0 -1
  209. package/src/libs/engine/src/dsl/mermaid/index.js.map +0 -1
  210. package/src/libs/engine/src/dsl/mermaid/layout.js.map +0 -1
  211. package/src/libs/engine/src/dsl/mermaid/lines.js.map +0 -1
  212. package/src/libs/engine/src/dsl/parser/Parser.js.map +0 -1
  213. package/src/libs/engine/src/dsl/sync/BidirectionalSync.js.map +0 -1
  214. package/src/libs/engine/src/dsl/sync/IntegratedSyncManager.js.map +0 -1
  215. package/src/libs/engine/src/dsl/sync/LayoutApplicator.js.map +0 -1
  216. package/src/libs/engine/src/dsl/sync/SyncStateManager.js.map +0 -1
  217. package/src/libs/engine/src/dsl/sync/index.js.map +0 -1
  218. package/src/libs/engine/src/dsl/transformer/ASTTransformer.js.map +0 -1
  219. package/src/libs/engine/src/dsl/types/ASTNode.js.map +0 -1
  220. package/src/libs/engine/src/dsl/types/Token.js.map +0 -1
  221. package/src/libs/engine/src/engine/DiagramEngine.js.map +0 -1
  222. package/src/libs/engine/src/engine/DiagramMode.js.map +0 -1
  223. package/src/libs/engine/src/engine/DiagramModeTypes.js.map +0 -1
  224. package/src/libs/engine/src/engine/ModeManager.js.map +0 -1
  225. package/src/libs/engine/src/engine/index.js.map +0 -1
  226. package/src/libs/engine/src/events/EventBus.js.map +0 -1
  227. package/src/libs/engine/src/events/index.js.map +0 -1
  228. package/src/libs/engine/src/index.js.map +0 -1
  229. package/src/libs/engine/src/interaction/GroupCollapseService.js.map +0 -1
  230. package/src/libs/engine/src/interaction/GroupMembershipService.js.map +0 -1
  231. package/src/libs/engine/src/interaction/SemanticMembershipService.js.map +0 -1
  232. package/src/libs/engine/src/interaction/SwimlaneService.js.map +0 -1
  233. package/src/libs/engine/src/interaction/index.js.map +0 -1
  234. package/src/libs/engine/src/interop/drawio/importDrawio.js.map +0 -1
  235. package/src/libs/engine/src/interop/drawio/index.js.map +0 -1
  236. package/src/libs/engine/src/interop/drawio/xml.js.map +0 -1
  237. package/src/libs/engine/src/layout/CompoundLayoutService.js.map +0 -1
  238. package/src/libs/engine/src/layout/ILayoutAlgorithm.js.map +0 -1
  239. package/src/libs/engine/src/layout/LayoutManager.js.map +0 -1
  240. package/src/libs/engine/src/layout/SmartSpacingCalculator.js.map +0 -1
  241. package/src/libs/engine/src/layout/ViewportTransform.js.map +0 -1
  242. package/src/libs/engine/src/layout/algorithms/ForceDirectedLayoutAlgorithm.js.map +0 -1
  243. package/src/libs/engine/src/layout/algorithms/GridLayoutAlgorithm.js.map +0 -1
  244. package/src/libs/engine/src/layout/algorithms/HierarchicalLayoutAlgorithm.js.map +0 -1
  245. package/src/libs/engine/src/layout/algorithms/HybridLayoutAlgorithm.js.map +0 -1
  246. package/src/libs/engine/src/layout/community-layout-adapter.js.map +0 -1
  247. package/src/libs/engine/src/layout/component-packing.js.map +0 -1
  248. package/src/libs/engine/src/layout/dagre-layout-adapter.js.map +0 -1
  249. package/src/libs/engine/src/layout/edge-bundling.interface.js.map +0 -1
  250. package/src/libs/engine/src/layout/elk-layout-adapter.js.map +0 -1
  251. package/src/libs/engine/src/layout/elk-loader.js.map +0 -1
  252. package/src/libs/engine/src/layout/force-layout-adapter.js.map +0 -1
  253. package/src/libs/engine/src/layout/grid-pack/grid-pack-engine.js.map +0 -1
  254. package/src/libs/engine/src/layout/incremental/mental-map.js.map +0 -1
  255. package/src/libs/engine/src/layout/incremental-layout.interface.js.map +0 -1
  256. package/src/libs/engine/src/layout/index.js.map +0 -1
  257. package/src/libs/engine/src/layout/layout-adapter.interface.js.map +0 -1
  258. package/src/libs/engine/src/layout/layout-auto-select.js.map +0 -1
  259. package/src/libs/engine/src/layout/layout-constraints.interface.js.map +0 -1
  260. package/src/libs/engine/src/layout/layout-graph.js.map +0 -1
  261. package/src/libs/engine/src/layout/layout-history.js.map +0 -1
  262. package/src/libs/engine/src/layout/layout-host.js.map +0 -1
  263. package/src/libs/engine/src/layout/layout-presets.js.map +0 -1
  264. package/src/libs/engine/src/layout/layout-quality-extended.js.map +0 -1
  265. package/src/libs/engine/src/layout/layout-quality-metrics.js.map +0 -1
  266. package/src/libs/engine/src/layout/layout-registry.js.map +0 -1
  267. package/src/libs/engine/src/layout/layout.service.js.map +0 -1
  268. package/src/libs/engine/src/layout/overlap-removal.js.map +0 -1
  269. package/src/libs/engine/src/layout/port-aware-layout.interface.js.map +0 -1
  270. package/src/libs/engine/src/layout/port-label-bridge.js.map +0 -1
  271. package/src/libs/engine/src/layout/portfolio-layouts.js.map +0 -1
  272. package/src/libs/engine/src/layout/rng.js.map +0 -1
  273. package/src/libs/engine/src/layout/spectral-layout-adapter.js.map +0 -1
  274. package/src/libs/engine/src/layout/steppable-layout.js.map +0 -1
  275. package/src/libs/engine/src/layout/subgraph-layout.interface.js.map +0 -1
  276. package/src/libs/engine/src/layout/sugiyama/layered-layout.js.map +0 -1
  277. package/src/libs/engine/src/layout/sugiyama/sugiyama.js.map +0 -1
  278. package/src/libs/engine/src/layout/tree-layout.js.map +0 -1
  279. package/src/libs/engine/src/layout/types.js.map +0 -1
  280. package/src/libs/engine/src/lib/performance/mobile-performance.service.js.map +0 -1
  281. package/src/libs/engine/src/models/DiagramEntity.js.map +0 -1
  282. package/src/libs/engine/src/models/DiagramModel.js.map +0 -1
  283. package/src/libs/engine/src/models/GroupModel.js.map +0 -1
  284. package/src/libs/engine/src/models/LinkModel.js.map +0 -1
  285. package/src/libs/engine/src/models/NodeModel.js.map +0 -1
  286. package/src/libs/engine/src/models/PortModel.js.map +0 -1
  287. package/src/libs/engine/src/models/StrokeModel.js.map +0 -1
  288. package/src/libs/engine/src/models/index.js.map +0 -1
  289. package/src/libs/engine/src/models/readonly-lock.js.map +0 -1
  290. package/src/libs/engine/src/performance/LRUCache.js.map +0 -1
  291. package/src/libs/engine/src/performance/PerformanceMonitor.js.map +0 -1
  292. package/src/libs/engine/src/performance/SpatialIndex.js.map +0 -1
  293. package/src/libs/engine/src/performance/index.js.map +0 -1
  294. package/src/libs/engine/src/plugins/PluginManager.js.map +0 -1
  295. package/src/libs/engine/src/plugins/index.js.map +0 -1
  296. package/src/libs/engine/src/ports/connection-rules.js.map +0 -1
  297. package/src/libs/engine/src/ports/dynamic-ports.js.map +0 -1
  298. package/src/libs/engine/src/ports/index.js.map +0 -1
  299. package/src/libs/engine/src/ports/port-groups.js.map +0 -1
  300. package/src/libs/engine/src/ports/port-type-registry.js.map +0 -1
  301. package/src/libs/engine/src/ports/port-types.js.map +0 -1
  302. package/src/libs/engine/src/rendering/HtmlTemplateRenderer.js.map +0 -1
  303. package/src/libs/engine/src/rendering/LemonadeJSRenderer.js.map +0 -1
  304. package/src/libs/engine/src/rendering/index.js.map +0 -1
  305. package/src/libs/engine/src/routing/LiveReroutingEngine.js.map +0 -1
  306. package/src/libs/engine/src/routing/ObstacleIndex.js.map +0 -1
  307. package/src/libs/engine/src/routing/ObstacleMap.js.map +0 -1
  308. package/src/libs/engine/src/routing/ObstacleMapBuilder.js.map +0 -1
  309. package/src/libs/engine/src/routing/PathSimplifier.js.map +0 -1
  310. package/src/libs/engine/src/routing/RoutingEngine.js.map +0 -1
  311. package/src/libs/engine/src/routing/algorithms/AStarRouter.js.map +0 -1
  312. package/src/libs/engine/src/routing/algorithms/DijkstraRouter.js.map +0 -1
  313. package/src/libs/engine/src/routing/algorithms/ElkRouter.js.map +0 -1
  314. package/src/libs/engine/src/routing/algorithms/ManhattanRouter.js.map +0 -1
  315. package/src/libs/engine/src/routing/algorithms/OrthogonalRouter.js.map +0 -1
  316. package/src/libs/engine/src/routing/algorithms/StraightRouter.js.map +0 -1
  317. package/src/libs/engine/src/routing/algorithms/VisibilityGraphRouter.js.map +0 -1
  318. package/src/libs/engine/src/routing/global/GlobalRouteSolver.js.map +0 -1
  319. package/src/libs/engine/src/routing/global/solver-host.js.map +0 -1
  320. package/src/libs/engine/src/routing/index.js.map +0 -1
  321. package/src/libs/engine/src/routing/types.js.map +0 -1
  322. package/src/libs/engine/src/selection/SelectionManager.js.map +0 -1
  323. package/src/libs/engine/src/selection/index.js.map +0 -1
  324. package/src/libs/engine/src/serialization/DiagramMigrations.js.map +0 -1
  325. package/src/libs/engine/src/serialization/DiagramValidator.js.map +0 -1
  326. package/src/libs/engine/src/serialization/DocumentEnvelope.js.map +0 -1
  327. package/src/libs/engine/src/serialization/Incremental.js.map +0 -1
  328. package/src/libs/engine/src/serialization/Serializer.js.map +0 -1
  329. package/src/libs/engine/src/serialization/Subgraph.js.map +0 -1
  330. package/src/libs/engine/src/serialization/TextFormat.js.map +0 -1
  331. package/src/libs/engine/src/state/ConnectionStateManager.js.map +0 -1
  332. package/src/libs/engine/src/state/DiagramStore.js.map +0 -1
  333. package/src/libs/engine/src/state/index.js.map +0 -1
  334. package/src/libs/engine/src/sync/awareness.js.map +0 -1
  335. package/src/libs/engine/src/sync/batcher.js.map +0 -1
  336. package/src/libs/engine/src/sync/causal-buffer.js.map +0 -1
  337. package/src/libs/engine/src/sync/index.js.map +0 -1
  338. package/src/libs/engine/src/sync/protocol.js.map +0 -1
  339. package/src/libs/engine/src/sync/sync-adapter.js.map +0 -1
  340. package/src/libs/engine/src/sync/transport.js.map +0 -1
  341. package/src/libs/engine/src/sync/transports/broadcast-channel.js.map +0 -1
  342. package/src/libs/engine/src/sync/transports/memory.js.map +0 -1
  343. package/src/libs/engine/src/sync/transports/unreliable.js.map +0 -1
  344. package/src/libs/engine/src/sync/transports/websocket.js.map +0 -1
  345. package/src/libs/engine/src/sync/version-vector.js.map +0 -1
  346. package/src/libs/engine/src/template-library/common-templates.js.map +0 -1
  347. package/src/libs/engine/src/template-library/data-viz-templates.js.map +0 -1
  348. package/src/libs/engine/src/template-library/erd-templates.js.map +0 -1
  349. package/src/libs/engine/src/template-library/index.js.map +0 -1
  350. package/src/libs/engine/src/template-library/integration.js.map +0 -1
  351. package/src/libs/engine/src/template-library/workflow-templates.js.map +0 -1
  352. package/src/libs/engine/src/templates/NodeFactory.js.map +0 -1
  353. package/src/libs/engine/src/templates/NodeTemplate.js.map +0 -1
  354. package/src/libs/engine/src/templates/TemplateLoader.js.map +0 -1
  355. package/src/libs/engine/src/templates/TemplateRegistry.js.map +0 -1
  356. package/src/libs/engine/src/templates/generated/bpmn/bpmn-business-rule-task.template.js.map +0 -1
  357. package/src/libs/engine/src/templates/generated/bpmn/bpmn-end-event.template.js.map +0 -1
  358. package/src/libs/engine/src/templates/generated/bpmn/bpmn-error-event.template.js.map +0 -1
  359. package/src/libs/engine/src/templates/generated/bpmn/bpmn-exclusive-gateway.template.js.map +0 -1
  360. package/src/libs/engine/src/templates/generated/bpmn/bpmn-inclusive-gateway.template.js.map +0 -1
  361. package/src/libs/engine/src/templates/generated/bpmn/bpmn-intermediate-event.template.js.map +0 -1
  362. package/src/libs/engine/src/templates/generated/bpmn/bpmn-manual-task.template.js.map +0 -1
  363. package/src/libs/engine/src/templates/generated/bpmn/bpmn-message-event.template.js.map +0 -1
  364. package/src/libs/engine/src/templates/generated/bpmn/bpmn-parallel-gateway.template.js.map +0 -1
  365. package/src/libs/engine/src/templates/generated/bpmn/bpmn-script-task.template.js.map +0 -1
  366. package/src/libs/engine/src/templates/generated/bpmn/bpmn-service-task.template.js.map +0 -1
  367. package/src/libs/engine/src/templates/generated/bpmn/bpmn-start-event.template.js.map +0 -1
  368. package/src/libs/engine/src/templates/generated/bpmn/bpmn-task.template.js.map +0 -1
  369. package/src/libs/engine/src/templates/generated/bpmn/bpmn-timer-event.template.js.map +0 -1
  370. package/src/libs/engine/src/templates/generated/bpmn/bpmn-user-task.template.js.map +0 -1
  371. package/src/libs/engine/src/templates/generated/bpmn/index.js.map +0 -1
  372. package/src/libs/engine/src/templates/generated/erd/erd-associative-entity.template.js.map +0 -1
  373. package/src/libs/engine/src/templates/generated/erd/erd-attribute.template.js.map +0 -1
  374. package/src/libs/engine/src/templates/generated/erd/erd-bridge-entity.template.js.map +0 -1
  375. package/src/libs/engine/src/templates/generated/erd/erd-composite-attribute.template.js.map +0 -1
  376. package/src/libs/engine/src/templates/generated/erd/erd-derived-attribute.template.js.map +0 -1
  377. package/src/libs/engine/src/templates/generated/erd/erd-discriminator.template.js.map +0 -1
  378. package/src/libs/engine/src/templates/generated/erd/erd-entity.template.js.map +0 -1
  379. package/src/libs/engine/src/templates/generated/erd/erd-isa.template.js.map +0 -1
  380. package/src/libs/engine/src/templates/generated/erd/erd-key-attribute.template.js.map +0 -1
  381. package/src/libs/engine/src/templates/generated/erd/erd-multivalued-attribute.template.js.map +0 -1
  382. package/src/libs/engine/src/templates/generated/erd/erd-optional-attribute.template.js.map +0 -1
  383. package/src/libs/engine/src/templates/generated/erd/erd-partial-key.template.js.map +0 -1
  384. package/src/libs/engine/src/templates/generated/erd/erd-relationship.template.js.map +0 -1
  385. package/src/libs/engine/src/templates/generated/erd/erd-subtype.template.js.map +0 -1
  386. package/src/libs/engine/src/templates/generated/erd/erd-supertype.template.js.map +0 -1
  387. package/src/libs/engine/src/templates/generated/erd/erd-table.template.js.map +0 -1
  388. package/src/libs/engine/src/templates/generated/erd/erd-view.template.js.map +0 -1
  389. package/src/libs/engine/src/templates/generated/erd/erd-weak-entity.template.js.map +0 -1
  390. package/src/libs/engine/src/templates/generated/erd/erd-weak-relationship.template.js.map +0 -1
  391. package/src/libs/engine/src/templates/generated/erd/index.js.map +0 -1
  392. package/src/libs/engine/src/templates/generated/flowchart/flowchart-connector.template.js.map +0 -1
  393. package/src/libs/engine/src/templates/generated/flowchart/flowchart-data.template.js.map +0 -1
  394. package/src/libs/engine/src/templates/generated/flowchart/flowchart-decision.template.js.map +0 -1
  395. package/src/libs/engine/src/templates/generated/flowchart/flowchart-delay.template.js.map +0 -1
  396. package/src/libs/engine/src/templates/generated/flowchart/flowchart-display.template.js.map +0 -1
  397. package/src/libs/engine/src/templates/generated/flowchart/flowchart-document.template.js.map +0 -1
  398. package/src/libs/engine/src/templates/generated/flowchart/flowchart-manual-input.template.js.map +0 -1
  399. package/src/libs/engine/src/templates/generated/flowchart/flowchart-manual-operation.template.js.map +0 -1
  400. package/src/libs/engine/src/templates/generated/flowchart/flowchart-merge.template.js.map +0 -1
  401. package/src/libs/engine/src/templates/generated/flowchart/flowchart-or.template.js.map +0 -1
  402. package/src/libs/engine/src/templates/generated/flowchart/flowchart-predefined-process.template.js.map +0 -1
  403. package/src/libs/engine/src/templates/generated/flowchart/flowchart-preparation.template.js.map +0 -1
  404. package/src/libs/engine/src/templates/generated/flowchart/flowchart-process.template.js.map +0 -1
  405. package/src/libs/engine/src/templates/generated/flowchart/flowchart-stored-data.template.js.map +0 -1
  406. package/src/libs/engine/src/templates/generated/flowchart/flowchart-summing-junction.template.js.map +0 -1
  407. package/src/libs/engine/src/templates/generated/flowchart/flowchart-terminal.template.js.map +0 -1
  408. package/src/libs/engine/src/templates/generated/flowchart/index.js.map +0 -1
  409. package/src/libs/engine/src/templates/generated/index.js.map +0 -1
  410. package/src/libs/engine/src/templates/generated/register.js.map +0 -1
  411. package/src/libs/engine/src/templates/generated/uml/index.js.map +0 -1
  412. package/src/libs/engine/src/templates/generated/uml/uml-abstract-class.template.js.map +0 -1
  413. package/src/libs/engine/src/templates/generated/uml/uml-activation.template.js.map +0 -1
  414. package/src/libs/engine/src/templates/generated/uml/uml-activity-partition.template.js.map +0 -1
  415. package/src/libs/engine/src/templates/generated/uml/uml-activity.template.js.map +0 -1
  416. package/src/libs/engine/src/templates/generated/uml/uml-actor.template.js.map +0 -1
  417. package/src/libs/engine/src/templates/generated/uml/uml-class.template.js.map +0 -1
  418. package/src/libs/engine/src/templates/generated/uml/uml-collaboration.template.js.map +0 -1
  419. package/src/libs/engine/src/templates/generated/uml/uml-component.template.js.map +0 -1
  420. package/src/libs/engine/src/templates/generated/uml/uml-datatype.template.js.map +0 -1
  421. package/src/libs/engine/src/templates/generated/uml/uml-decision.template.js.map +0 -1
  422. package/src/libs/engine/src/templates/generated/uml/uml-enum.template.js.map +0 -1
  423. package/src/libs/engine/src/templates/generated/uml/uml-final-node.template.js.map +0 -1
  424. package/src/libs/engine/src/templates/generated/uml/uml-final-state.template.js.map +0 -1
  425. package/src/libs/engine/src/templates/generated/uml/uml-fork.template.js.map +0 -1
  426. package/src/libs/engine/src/templates/generated/uml/uml-initial-node.template.js.map +0 -1
  427. package/src/libs/engine/src/templates/generated/uml/uml-initial-state.template.js.map +0 -1
  428. package/src/libs/engine/src/templates/generated/uml/uml-interface.template.js.map +0 -1
  429. package/src/libs/engine/src/templates/generated/uml/uml-join.template.js.map +0 -1
  430. package/src/libs/engine/src/templates/generated/uml/uml-lifeline.template.js.map +0 -1
  431. package/src/libs/engine/src/templates/generated/uml/uml-merge.template.js.map +0 -1
  432. package/src/libs/engine/src/templates/generated/uml/uml-node.template.js.map +0 -1
  433. package/src/libs/engine/src/templates/generated/uml/uml-note.template.js.map +0 -1
  434. package/src/libs/engine/src/templates/generated/uml/uml-object.template.js.map +0 -1
  435. package/src/libs/engine/src/templates/generated/uml/uml-package.template.js.map +0 -1
  436. package/src/libs/engine/src/templates/generated/uml/uml-part.template.js.map +0 -1
  437. package/src/libs/engine/src/templates/generated/uml/uml-port.template.js.map +0 -1
  438. package/src/libs/engine/src/templates/generated/uml/uml-primitive-type.template.js.map +0 -1
  439. package/src/libs/engine/src/templates/generated/uml/uml-signal.template.js.map +0 -1
  440. package/src/libs/engine/src/templates/generated/uml/uml-state.template.js.map +0 -1
  441. package/src/libs/engine/src/templates/generated/uml/uml-use-case.template.js.map +0 -1
  442. package/src/libs/engine/src/templates/index.js.map +0 -1
  443. package/src/libs/engine/src/templates/stencils.js.map +0 -1
  444. package/src/libs/engine/src/types/domain/bpmn.js.map +0 -1
  445. package/src/libs/engine/src/types/domain/erd.js.map +0 -1
  446. package/src/libs/engine/src/types/domain/flowchart.js.map +0 -1
  447. package/src/libs/engine/src/types/domain/index.js.map +0 -1
  448. package/src/libs/engine/src/types/domain/uml.js.map +0 -1
  449. package/src/libs/engine/src/types/event.types.js.map +0 -1
  450. package/src/libs/engine/src/types/geometry.types.js.map +0 -1
  451. package/src/libs/engine/src/types/index.js.map +0 -1
  452. package/src/libs/engine/src/types/layout.types.js.map +0 -1
  453. package/src/libs/engine/src/types/model.types.js.map +0 -1
  454. package/src/libs/engine/src/types/performance.types.js.map +0 -1
  455. package/src/libs/engine/src/types/plugin.types.js.map +0 -1
  456. package/src/libs/engine/src/utils/deep-clone.js.map +0 -1
  457. package/src/libs/engine/src/utils/geometry.js.map +0 -1
  458. package/src/libs/engine/src/utils/id.js.map +0 -1
  459. package/src/libs/engine/src/utils/index.js.map +0 -1
  460. package/src/libs/engine/src/utils/transform.js.map +0 -1
  461. package/src/libs/engine/src/validation/ConnectionGroupValidator.js.map +0 -1
  462. package/src/libs/engine/src/validation/TypeRegistry.js.map +0 -1
  463. package/src/libs/engine/src/validation/ValidationEngine.js.map +0 -1
  464. package/src/libs/engine/src/validation/index.js.map +0 -1
  465. package/src/libs/renderer/src/a11y/diagram-outline.js.map +0 -1
  466. package/src/libs/renderer/src/a11y/focus-containment.js.map +0 -1
  467. package/src/libs/renderer/src/a11y/graph-topology.js.map +0 -1
  468. package/src/libs/renderer/src/a11y/index.js.map +0 -1
  469. package/src/libs/renderer/src/a11y/live-region.js.map +0 -1
  470. package/src/libs/renderer/src/a11y/outline-view.js.map +0 -1
  471. package/src/libs/renderer/src/a11y/reduced-motion.js.map +0 -1
  472. package/src/libs/renderer/src/a11y/semantics.js.map +0 -1
  473. package/src/libs/renderer/src/canvas/canvas-context.js.map +0 -1
  474. package/src/libs/renderer/src/canvas/canvas-renderer.js.map +0 -1
  475. package/src/libs/renderer/src/canvas/dirty-region.js.map +0 -1
  476. package/src/libs/renderer/src/canvas/index.js.map +0 -1
  477. package/src/libs/renderer/src/canvas/path-geometry.js.map +0 -1
  478. package/src/libs/renderer/src/canvas/render-backend.js.map +0 -1
  479. package/src/libs/renderer/src/canvas/style-resolution.js.map +0 -1
  480. package/src/libs/renderer/src/canvas/tier-policy.js.map +0 -1
  481. package/src/libs/renderer/src/canvas/vnode-painter.js.map +0 -1
  482. package/src/libs/renderer/src/comments/comment-overlay.js.map +0 -1
  483. package/src/libs/renderer/src/comments/comment-panel.js.map +0 -1
  484. package/src/libs/renderer/src/comments/comment-pins.js.map +0 -1
  485. package/src/libs/renderer/src/comments/index.js.map +0 -1
  486. package/src/libs/renderer/src/export/assets.js.map +0 -1
  487. package/src/libs/renderer/src/export/batch.js.map +0 -1
  488. package/src/libs/renderer/src/export/bounds.js.map +0 -1
  489. package/src/libs/renderer/src/export/capture-host.js.map +0 -1
  490. package/src/libs/renderer/src/export/custom-nodes.js.map +0 -1
  491. package/src/libs/renderer/src/export/index.js.map +0 -1
  492. package/src/libs/renderer/src/export/node-raster.js.map +0 -1
  493. package/src/libs/renderer/src/export/pagination.js.map +0 -1
  494. package/src/libs/renderer/src/export/pdf/flate.js.map +0 -1
  495. package/src/libs/renderer/src/export/pdf/index.js.map +0 -1
  496. package/src/libs/renderer/src/export/pdf/pdf-export.js.map +0 -1
  497. package/src/libs/renderer/src/export/pdf/pdf-path.js.map +0 -1
  498. package/src/libs/renderer/src/export/pdf/pdf-primitives.js.map +0 -1
  499. package/src/libs/renderer/src/export/pdf/png.js.map +0 -1
  500. package/src/libs/renderer/src/export/raster.js.map +0 -1
  501. package/src/libs/renderer/src/export/round-trip.js.map +0 -1
  502. package/src/libs/renderer/src/export/scope.js.map +0 -1
  503. package/src/libs/renderer/src/export/style-flattener.js.map +0 -1
  504. package/src/libs/renderer/src/export/svg-export.js.map +0 -1
  505. package/src/libs/renderer/src/export/vnode-serializer.js.map +0 -1
  506. package/src/libs/renderer/src/ext/capabilities.js.map +0 -1
  507. package/src/libs/renderer/src/ext/capability-factory.js.map +0 -1
  508. package/src/libs/renderer/src/ext/components/attach.js.map +0 -1
  509. package/src/libs/renderer/src/ext/components/background.js.map +0 -1
  510. package/src/libs/renderer/src/ext/components/controls.js.map +0 -1
  511. package/src/libs/renderer/src/ext/components/minimap.js.map +0 -1
  512. package/src/libs/renderer/src/ext/diagram-registry.js.map +0 -1
  513. package/src/libs/renderer/src/ext/disposable.js.map +0 -1
  514. package/src/libs/renderer/src/ext/extension-host.js.map +0 -1
  515. package/src/libs/renderer/src/ext/index.js.map +0 -1
  516. package/src/libs/renderer/src/ext/link-pipeline.js.map +0 -1
  517. package/src/libs/renderer/src/ext/manifest.js.map +0 -1
  518. package/src/libs/renderer/src/ext/node-component.js.map +0 -1
  519. package/src/libs/renderer/src/ext/plugins-loader.js.map +0 -1
  520. package/src/libs/renderer/src/ext/portal.js.map +0 -1
  521. package/src/libs/renderer/src/ext/public-api.js.map +0 -1
  522. package/src/libs/renderer/src/ext/registry-scope.js.map +0 -1
  523. package/src/libs/renderer/src/ext/tools.js.map +0 -1
  524. package/src/libs/renderer/src/index.js.map +0 -1
  525. package/src/libs/renderer/src/instance/create-diagram.js.map +0 -1
  526. package/src/libs/renderer/src/instance/diagram-instance.js.map +0 -1
  527. package/src/libs/renderer/src/instance/dom-event-binder.js.map +0 -1
  528. package/src/libs/renderer/src/instance/index.js.map +0 -1
  529. package/src/libs/renderer/src/instance/layers.js.map +0 -1
  530. package/src/libs/renderer/src/instance/model-input.js.map +0 -1
  531. package/src/libs/renderer/src/instance/render-scheduler.js.map +0 -1
  532. package/src/libs/renderer/src/instance/wheel-scroll-yield.js.map +0 -1
  533. package/src/libs/renderer/src/interaction/ControlPointEditor.js.map +0 -1
  534. package/src/libs/renderer/src/interaction/WaypointEditor.js.map +0 -1
  535. package/src/libs/renderer/src/interaction/highlighters.js.map +0 -1
  536. package/src/libs/renderer/src/interaction/in-place-editor.js.map +0 -1
  537. package/src/libs/renderer/src/interaction/index.js.map +0 -1
  538. package/src/libs/renderer/src/interaction/ink-overlay.js.map +0 -1
  539. package/src/libs/renderer/src/interaction/interaction-controller.js.map +0 -1
  540. package/src/libs/renderer/src/interaction/keyboard-navigation.js.map +0 -1
  541. package/src/libs/renderer/src/interaction/selection-tools.js.map +0 -1
  542. package/src/libs/renderer/src/interaction/snapping.js.map +0 -1
  543. package/src/libs/renderer/src/interaction/touch-gestures.js.map +0 -1
  544. package/src/libs/renderer/src/interaction/whiteboard-tools.js.map +0 -1
  545. package/src/libs/renderer/src/lazy/host-culling.js.map +0 -1
  546. package/src/libs/renderer/src/lazy/index.js.map +0 -1
  547. package/src/libs/renderer/src/lazy/progressive-mounter.js.map +0 -1
  548. package/src/libs/renderer/src/lazy/types.js.map +0 -1
  549. package/src/libs/renderer/src/lazy/view-lifecycle.js.map +0 -1
  550. package/src/libs/renderer/src/perf/index.js.map +0 -1
  551. package/src/libs/renderer/src/perf/perf-hud.js.map +0 -1
  552. package/src/libs/renderer/src/perf/quality-governor.js.map +0 -1
  553. package/src/libs/renderer/src/platform/index.js.map +0 -1
  554. package/src/libs/renderer/src/platform/platform.js.map +0 -1
  555. package/src/libs/renderer/src/presence/bind-presence.js.map +0 -1
  556. package/src/libs/renderer/src/presence/index.js.map +0 -1
  557. package/src/libs/renderer/src/presence/presence-overlay.js.map +0 -1
  558. package/src/libs/renderer/src/presentation/index.js.map +0 -1
  559. package/src/libs/renderer/src/presentation/presentation.js.map +0 -1
  560. package/src/libs/renderer/src/presentation/viewport-channel.js.map +0 -1
  561. package/src/libs/renderer/src/services/animation-lifecycle.js.map +0 -1
  562. package/src/libs/renderer/src/services/animation-performance.service.js.map +0 -1
  563. package/src/libs/renderer/src/services/animation-sequencer.js.map +0 -1
  564. package/src/libs/renderer/src/services/animation.service.js.map +0 -1
  565. package/src/libs/renderer/src/services/custom-animation-registry.js.map +0 -1
  566. package/src/libs/renderer/src/ssr/index.js.map +0 -1
  567. package/src/libs/renderer/src/ssr/render-to-static.js.map +0 -1
  568. package/src/libs/renderer/src/svg/ArrowRenderer.js.map +0 -1
  569. package/src/libs/renderer/src/svg/JumpPointDetector.js.map +0 -1
  570. package/src/libs/renderer/src/svg/JumpPointRenderer.js.map +0 -1
  571. package/src/libs/renderer/src/svg/LabelRenderer.js.map +0 -1
  572. package/src/libs/renderer/src/svg/auto-size.js.map +0 -1
  573. package/src/libs/renderer/src/svg/channel-nudging.js.map +0 -1
  574. package/src/libs/renderer/src/svg/edge-optimizer.js.map +0 -1
  575. package/src/libs/renderer/src/svg/edge-templates.js.map +0 -1
  576. package/src/libs/renderer/src/svg/html-node.js.map +0 -1
  577. package/src/libs/renderer/src/svg/index.js.map +0 -1
  578. package/src/libs/renderer/src/svg/link-fanout.js.map +0 -1
  579. package/src/libs/renderer/src/svg/link-hit-test.js.map +0 -1
  580. package/src/libs/renderer/src/svg/motion-tracker.js.map +0 -1
  581. package/src/libs/renderer/src/svg/node-sizing.js.map +0 -1
  582. package/src/libs/renderer/src/svg/node-toolbar.js.map +0 -1
  583. package/src/libs/renderer/src/svg/notation-shapes.js.map +0 -1
  584. package/src/libs/renderer/src/svg/paint-servers.js.map +0 -1
  585. package/src/libs/renderer/src/svg/panel.js.map +0 -1
  586. package/src/libs/renderer/src/svg/path-outline.js.map +0 -1
  587. package/src/libs/renderer/src/svg/port-glyph.js.map +0 -1
  588. package/src/libs/renderer/src/svg/port-label.js.map +0 -1
  589. package/src/libs/renderer/src/svg/port-layout.js.map +0 -1
  590. package/src/libs/renderer/src/svg/port-positioning.js.map +0 -1
  591. package/src/libs/renderer/src/svg/port-spots.js.map +0 -1
  592. package/src/libs/renderer/src/svg/route-memo.js.map +0 -1
  593. package/src/libs/renderer/src/svg/route-solver-bridge.js.map +0 -1
  594. package/src/libs/renderer/src/svg/shape-registry.js.map +0 -1
  595. package/src/libs/renderer/src/svg/stroke-layer.js.map +0 -1
  596. package/src/libs/renderer/src/svg/svg-renderer.js.map +0 -1
  597. package/src/libs/renderer/src/svg/text-block.js.map +0 -1
  598. package/src/libs/renderer/src/themes/color-mode.js.map +0 -1
  599. package/src/libs/renderer/src/themes/contrast.js.map +0 -1
  600. package/src/libs/renderer/src/themes/default-dark-theme.js.map +0 -1
  601. package/src/libs/renderer/src/themes/default-light-theme.js.map +0 -1
  602. package/src/libs/renderer/src/themes/default-theme-set.js.map +0 -1
  603. package/src/libs/renderer/src/themes/high-contrast-theme.js.map +0 -1
  604. package/src/libs/renderer/src/themes/index.js.map +0 -1
  605. package/src/libs/renderer/src/themes/style-cascade.js.map +0 -1
  606. package/src/libs/renderer/src/themes/style-registry.js.map +0 -1
  607. package/src/libs/renderer/src/themes/theme-a11y.js.map +0 -1
  608. package/src/libs/renderer/src/themes/theme-css.js.map +0 -1
  609. package/src/libs/renderer/src/themes/theme-ref.js.map +0 -1
  610. package/src/libs/renderer/src/themes/theme-vars.js.map +0 -1
  611. package/src/libs/renderer/src/themes/token-bridge.js.map +0 -1
  612. package/src/libs/renderer/src/types/geometry.types.js.map +0 -1
  613. package/src/libs/renderer/src/types/index.js.map +0 -1
  614. package/src/libs/renderer/src/types/property-schema/conditions.js.map +0 -1
  615. package/src/libs/renderer/src/types/property-schema/editor-types.js.map +0 -1
  616. package/src/libs/renderer/src/types/property-schema/groups.js.map +0 -1
  617. package/src/libs/renderer/src/types/property-schema/index.js.map +0 -1
  618. package/src/libs/renderer/src/types/property-schema/property-definition.js.map +0 -1
  619. package/src/libs/renderer/src/types/property-schema/schema.js.map +0 -1
  620. package/src/libs/renderer/src/types/property-schema/validation.js.map +0 -1
  621. package/src/libs/renderer/src/types/renderer.interface.js.map +0 -1
  622. package/src/libs/renderer/src/types/theme.types.js.map +0 -1
  623. package/src/libs/renderer/src/types/vnode.types.js.map +0 -1
  624. package/src/libs/renderer/src/utils/animation-presets.js.map +0 -1
  625. package/src/libs/renderer/src/utils/animation-priority.js.map +0 -1
  626. package/src/libs/renderer/src/utils/animation-utils.js.map +0 -1
  627. package/src/libs/renderer/src/utils/lru-cache.js.map +0 -1
  628. package/src/libs/renderer/src/viewport/index.js.map +0 -1
  629. package/src/libs/renderer/src/viewport/viewport-controller.js.map +0 -1
  630. package/src/libs/renderer/src/vnode/container-id-generator.js.map +0 -1
  631. package/src/libs/renderer/src/vnode/foreign-object.js.map +0 -1
  632. package/src/libs/renderer/src/vnode/index.js.map +0 -1
  633. package/src/libs/renderer/src/vnode/patch.js.map +0 -1
  634. package/src/reachability.spec.ts +0 -173
  635. package/tsconfig.esm.json +0 -9
  636. package/tsconfig.json +0 -24
  637. package/tsconfig.lib.json +0 -10
  638. package/tsconfig.spec.json +0 -14
@@ -1,906 +0,0 @@
1
- /**
2
- * `dashboard({ views, widgets })` — the DATA-FIRST dashboard authoring API.
3
- *
4
- * The exact shape `erDiagram()` / `umlDiagram()` have for ER and UML: you
5
- * describe WHAT the dashboard is, `render()` runs the returned `finalize(api)`
6
- * automatically, and every interactive part (the pack grid, drag/resize with
7
- * live push and a truthful placeholder, fit/grow, float, pin, undoable
8
- * commands) wires itself.
9
- *
10
- * Before this, a developer got `bindDashboardGrid()` — a gesture BINDER one
11
- * layer down — and had to hand-assemble everything above it: a GroupModel per
12
- * view, a NodeModel per widget, `useHTMLLayer` / `widgetKind` metadata, grid
13
- * cells, membership, then the bind. The demo page needed ~143 lines just to
14
- * build its boards. That was the missing authoring layer; this is it:
15
- *
16
- * ```js
17
- * const SPEC = dashboard({
18
- * columns: 12,
19
- * sizing: 'fit',
20
- * views: [{
21
- * id: 'overview', name: 'Overview',
22
- * widgets: [
23
- * { id: 'rev', kind: 'kpi', span: 3, rows: 1, data: {…} },
24
- * { id: 'trend', kind: 'line', span: 8, rows: 2, data: {…} },
25
- * { id: 'mix', kind: 'donut', span: 4, rows: 2, pinned: true },
26
- * ],
27
- * }],
28
- * renderWidget: (widget, host) => { … }, // optional: your charts
29
- * });
30
- * render(SPEC, host);
31
- * ```
32
- *
33
- * WHAT IT DELIBERATELY DOES NOT DO: pick a charting library. `renderWidget` is
34
- * the seam — the kit hands you the widget and a raw HTML host (the renderer's
35
- * custom-node path, which unlike `metadata.html` is not sanitised, so real
36
- * `<svg>`/`<canvas>` is fine). Omit it and `defaultWidgetRenderer` (widgets.ts)
37
- * draws the declared `kind` from your own `data` with hand-rolled inline SVG —
38
- * kpi / line / bar / donut / funnel / table, no dependency, no sample dataset —
39
- * falling back to a titled frame for kinds it does not know, so a layout is
40
- * testable before any chart exists.
41
- *
42
- * Cells are the truth and live in the existing `GridItemConfig`, so save/load
43
- * round-trips with no extra work — same as every other kit.
44
- */
45
-
46
- import {
47
- AddToGroupCommand,
48
- BatchCommand,
49
- BringNodeToFrontCommand,
50
- Command,
51
- GroupModel,
52
- NodeModel,
53
- RemoveFromGroupCommand,
54
- RemoveNodeCommand,
55
- SendNodeToBackCommand,
56
- type GridColumnLayout,
57
- } from '@grafloria/engine';
58
- import {
59
- bindDashboardGrid,
60
- type DashboardGridHandle,
61
- type DashboardGridOptions,
62
- type DashboardResponsiveOptions,
63
- } from './grid-binder';
64
- import { gridItemFromCell } from './grid-mapping';
65
- import { ensureDashboardKitStyles } from './styles';
66
- import { defaultWidgetRenderer } from './widgets';
67
-
68
- /** A widget, declared as data. */
69
- export interface DashboardWidgetSpec {
70
- id: string;
71
- /** Free-form kind string handed back to `renderWidget` (e.g. 'kpi', 'line'). */
72
- kind?: string;
73
- /** Column span (default 3) and row span (default 1). */
74
- span?: number;
75
- rows?: number;
76
- /**
77
- * Explicit cell. Omit and widgets flow in declaration order, wrapping at
78
- * the column count — the common case needs no coordinates at all.
79
- */
80
- x?: number;
81
- y?: number;
82
- /** Pinned: never pushed, refuses the mover, survives every reflow. */
83
- pinned?: boolean;
84
- /** Your payload — passed straight back to `renderWidget`. */
85
- data?: Record<string, unknown>;
86
- /** Optional title used by the built-in fallback renderer. */
87
- title?: string;
88
- }
89
-
90
- /** One board. Multiple views are the tab pattern: only one is on-camera. */
91
- export interface DashboardViewSpec {
92
- id: string;
93
- name?: string;
94
- widgets: DashboardWidgetSpec[];
95
- /** Per-view overrides of the dashboard-level geometry. */
96
- columns?: number;
97
- width?: number;
98
- height?: number;
99
- }
100
-
101
- export interface DashboardOptions {
102
- /** Column count for every view (default 12). */
103
- columns?: number;
104
- /** Gap between widgets AND the board padding, px (default 8). */
105
- gap?: number;
106
- /** Sizing mode (default 'fit' — squeeze rows; 'grow' extends the board). */
107
- sizing?: 'fit' | 'grow';
108
- /** Row height in 'grow' mode, px (default 130). */
109
- rowHeight?: number;
110
- /** Board size, px (default 1180 × 660). */
111
- width?: number;
112
- height?: number;
113
- /** Engine float mode (default false → gravity packs upward). */
114
- float?: boolean;
115
- /**
116
- * RIGHT-TO-LEFT boards: column x=0 renders at the RIGHT edge and columns run
117
- * leftwards. Cells are untouched — the same `widgets` array describes the
118
- * same layout in both directions, and a layout saved in one renders mirrored
119
- * in the other with identical cells.
120
- */
121
- rtl?: boolean;
122
- /**
123
- * RESPONSIVE COLUMN COUNT: derive the live count from each board's width.
124
- * `{ columnWidth: 100 }` gives one column per ~100px (capped by `columns`);
125
- * `{ breakpoints: [{ w: 480, c: 1 }, { w: 900, c: 6 }] }` names the steps.
126
- * The count changes through the engine's per-column layout CACHE, so
127
- * narrowing and widening again restores the wide layout exactly, and
128
- * `toJSON()` keeps serialising the widest layout however narrow the board is.
129
- */
130
- responsive?: DashboardResponsiveOptions;
131
- /** One view, or many (the tab pattern). Mutually exclusive with `widgets`. */
132
- views?: DashboardViewSpec[];
133
- /** Shorthand for a single unnamed view. */
134
- widgets?: DashboardWidgetSpec[];
135
- /**
136
- * Paint a widget into its host element. Called once per widget when it
137
- * mounts (the host is reused across re-renders, so this is not a per-frame
138
- * hook). Omit for a titled placeholder frame.
139
- */
140
- renderWidget?: (widget: DashboardWidgetSpec, host: HTMLElement) => void;
141
- /** Fires after any committed gesture, with the view whose layout changed. */
142
- onLayoutChange?: (viewId: string, widgets: DashboardWidgetSpec[]) => void;
143
- /** Extra binder options, merged last (escape hatch to the layer below). */
144
- binder?: Partial<DashboardGridOptions>;
145
- }
146
-
147
- /** What `dashboard()` returns — a render spec plus the runtime handle. */
148
- export interface DashboardSpec {
149
- nodes: Array<Record<string, unknown>>;
150
- edges: Array<Record<string, unknown>>;
151
- renderCustomNode: (node: unknown, host: HTMLElement) => void;
152
- finalize: (api: unknown) => void;
153
- /** Live handle, populated by finalize(). */
154
- readonly handle: DashboardHandle;
155
- }
156
-
157
- /**
158
- * A whole board as plain data: every `DashboardOptions` field except the
159
- * function seams. `dashboard({ ...snapshot, renderWidget })` rebuilds it.
160
- *
161
- * Typed as an Omit rather than a hand-written twin on purpose — a field added
162
- * to `DashboardOptions` then joins the snapshot automatically instead of being
163
- * silently dropped, which is the exact failure this type exists to end.
164
- */
165
- export type DashboardSnapshot = Omit<
166
- DashboardOptions,
167
- 'renderWidget' | 'onLayoutChange' | 'views'
168
- > & { views: DashboardViewSpec[] };
169
-
170
- /** The typed façade — the `erTable`/`umlClass` equivalent for dashboards. */
171
- export interface DashboardHandle {
172
- /** The view ids, in declaration order. */
173
- readonly views: string[];
174
- /** Show a view (the others park off-camera) and frame it. */
175
- showView(id: string): void;
176
- /** The currently shown view id. */
177
- readonly activeView: string;
178
- /** A widget handle by id (undefined when unknown). */
179
- widget(id: string): WidgetHandle | undefined;
180
- /** Every widget handle of a view (default: the active one). */
181
- widgetsOf(viewId?: string): WidgetHandle[];
182
- /** Live sizing/float switches — the two prototype toggles. */
183
- setSizing(mode: 'fit' | 'grow'): void;
184
- getSizing(): 'fit' | 'grow';
185
- setFloat(on: boolean): void;
186
- getFloat(): boolean;
187
- /**
188
- * Set the COLUMN COUNT of every board (or one view), live. Goes through the
189
- * engine's per-column layout cache, so shrinking then growing back restores
190
- * the wide layout rather than re-deriving it. An explicit call PINS the
191
- * count — the width-driven `responsive` evaluator stops overriding it.
192
- */
193
- setColumns(n: number, layout?: GridColumnLayout, viewId?: string): void;
194
- /** The LIVE column count of a view (default: the active one). */
195
- getColumns(viewId?: string): number;
196
- /** RTL mirroring, live — pixels only, cells never change. */
197
- setRtl(on: boolean): void;
198
- getRtl(): boolean;
199
- /**
200
- * Add a widget to a view. CREATES the node (you do not pre-build one), wires
201
- * its metadata, and commits node + membership as ONE undoable step.
202
- * Auto-positions when the spec names no cell.
203
- */
204
- addWidget(spec: DashboardWidgetSpec, viewId?: string): WidgetHandle | undefined;
205
- /**
206
- * Re-read every board from the model — call after undo/redo, or any
207
- * out-of-band mutation, so the grid and the projection agree again.
208
- */
209
- refresh(): void;
210
- /** Re-frame the camera on a view (default: the active one). */
211
- fit(viewId?: string): void;
212
- /** Live geometry of a view's board (columns, gap, rows, rowHeight, frame…). */
213
- metrics(viewId?: string): ReturnType<DashboardGridHandle['metrics']> | undefined;
214
- /**
215
- * The whole board as plain data — feed it straight back to `dashboard()`:
216
- *
217
- * ```ts
218
- * dashboard({ ...handle.toJSON(), renderWidget }); // a true round trip
219
- * ```
220
- *
221
- * Everything `DashboardOptions` takes EXCEPT the function seams
222
- * (`renderWidget`, `onLayoutChange`), which cannot be written to a file and
223
- * must be supplied again on the way back in.
224
- *
225
- * Values are read from the LIVE board, not from the authored literal, so a
226
- * mode or column count the user changed after mount is what you get back.
227
- *
228
- * This used to return only `views`, which made the round-trip claim true of
229
- * the layout and false of the board: a board authored `grow` at a 10-column,
230
- * 6px-gap geometry reloaded as a 12-column `fit` one. It is also what
231
- * `JSON.stringify(handle)` calls, so the partial answer was a permanent
232
- * footgun in a save API rather than merely an omission.
233
- */
234
- toJSON(): DashboardSnapshot;
235
- /**
236
- * The node ids ONE view occupies — pass straight to `includeIds` to export
237
- * just that board:
238
- *
239
- * ```ts
240
- * api.export('pdf', { includeIds: handle.exportIds() });
241
- * ```
242
- *
243
- * WHY THIS EXISTS. Tabs park the inactive views far off-camera, which is
244
- * invisible on screen and ruinous on export: `export()` frames the whole
245
- * MODEL, so a two-view board writes a ~21,000px document that is almost
246
- * entirely empty — with no warning, because nothing is technically wrong.
247
- * Scoping was always possible; knowing WHAT to scope to was not.
248
- *
249
- * The set includes the view's GROUP as well as its widgets. Rolling this by
250
- * hand from `toJSON()` looks equivalent and is not — it drops the group, and
251
- * the widgets export without the frame they sit in.
252
- */
253
- exportIds(viewId?: string): Set<string>;
254
- /**
255
- * THE DOCUMENTED ESCAPE HATCH: the view's own `bindDashboardGrid` handle
256
- * (default: the active view). Reach for it only for what this façade does
257
- * not cover yet — palette drag-in (`beginPaletteDrag`), board `metrics()`,
258
- * `cellRectOf`, `planRemoval`, and re-`sync()` after an external undo. Every
259
- * call site is a named gap in this API, not a normal way to drive a board.
260
- */
261
- binderOf(viewId?: string): DashboardGridHandle | undefined;
262
- dispose(): void;
263
- }
264
-
265
- /** One widget's OO surface (mirrors ErTable/UmlClass). */
266
- export interface WidgetHandle {
267
- readonly id: string;
268
- readonly viewId: string;
269
- readonly node: NodeModel | undefined;
270
- /** The DECLARED spec — read it back (title/kind/data) without a side map. */
271
- readonly spec: DashboardWidgetSpec;
272
- /** Current cell, as data. */
273
- readonly cell: { x: number; y: number; w: number; h: number } | undefined;
274
- /** The world rect the current cell projects to. */
275
- readonly rect: { x: number; y: number; width: number; height: number } | undefined;
276
- /** Resize in CELLS. Resolves TRUE when the board accepted it. */
277
- resize(span: number, rows: number): Promise<boolean>;
278
- /** Move to a cell. Resolves TRUE when the board accepted it. */
279
- moveTo(x: number, y: number): Promise<boolean>;
280
- /** Pin / unpin (a pinned widget refuses the mover and never gets pushed). */
281
- pin(on?: boolean): void;
282
- readonly pinned: boolean;
283
- /** Raise / lower — one undoable step each (mirrors the toolbar commands). */
284
- bringToFront(): void;
285
- sendToBack(): void;
286
- /**
287
- * Remove it — ONE undoable step including the survivors' re-pack.
288
- * `displaced` accepts the commands a drag-out gesture already computed;
289
- * omit it and the handle plans them itself.
290
- */
291
- remove(displaced?: unknown[]): void;
292
- /** Replace the widget's `data` (and optionally title) and repaint. */
293
- update(patch: Partial<Pick<DashboardWidgetSpec, 'data' | 'title' | 'kind'>>): void;
294
- /** Repaint through `renderWidget` (after your data changed). */
295
- repaint(): void;
296
- }
297
-
298
- /**
299
- * Add a widget node AND its board membership as ONE undoable step.
300
- *
301
- * A `BatchCommand([AddNodeCommand, AddToGroupCommand])` cannot express this:
302
- * the manager validates the whole batch up front, and
303
- * `AddToGroupCommand.canExecute` pre-gates on the node ALREADY being in the
304
- * diagram — which it is not until the first command runs. Sequencing two
305
- * commands works but costs two undo steps, so an interactive "add widget"
306
- * would need two Ctrl-Z. This composite does both in its own execute(), and
307
- * unwinds both in undo().
308
- */
309
- class AddWidgetCommand extends Command {
310
- constructor(
311
- private node: NodeModel,
312
- private groupId: string
313
- ) {
314
- super('Add widget');
315
- }
316
-
317
- override execute(context: { diagram?: unknown }): void {
318
- const diagram = context.diagram as
319
- | { addNode(n: NodeModel): void; getGroup(id: string): GroupModel | undefined }
320
- | undefined;
321
- if (!diagram) return;
322
- diagram.addNode(this.node);
323
- diagram.getGroup(this.groupId)?.addMember(this.node.id);
324
- }
325
-
326
- override undo(context: { diagram?: unknown }): void {
327
- const diagram = context.diagram as
328
- | { removeNode(id: string): unknown; getGroup(id: string): GroupModel | undefined }
329
- | undefined;
330
- if (!diagram) return;
331
- diagram.getGroup(this.groupId)?.removeMember(this.node.id);
332
- diagram.removeNode(this.node.id);
333
- }
334
-
335
- override serialize() {
336
- return {
337
- id: this.id,
338
- name: this.name,
339
- timestamp: this.timestamp,
340
- data: { nodeId: this.node.id, groupId: this.groupId },
341
- };
342
- }
343
- }
344
-
345
- const DEFAULTS = { columns: 12, gap: 8, rowHeight: 130, width: 1180, height: 660 };
346
- const OFFSCREEN_X = -20000;
347
- let autoId = 0;
348
-
349
- /** The node a widget spec becomes — one place, so addWidget() and the initial
350
- * spec build can never drift apart on metadata. */
351
- function buildWidgetNode(w: DashboardWidgetSpec, rowHeight: number): NodeModel {
352
- const node = new NodeModel({
353
- id: w.id,
354
- type: 'widget',
355
- position: { x: 0, y: 0 },
356
- size: { width: 120, height: rowHeight, depth: 0 },
357
- });
358
- node.setMetadata('useHTMLLayer', true);
359
- node.setMetadata('widgetKind', w.kind ?? 'widget');
360
- node.setMetadata('widgetSpec', w.data ?? {});
361
- // The TITLE was the one authored field that never reached the node — so a
362
- // document-level reload rebuilt every card with `titleOf()` falling through to
363
- // the kind, and a board of "Revenue vs target" / "Top reps by revenue" came
364
- // back as "line" / "table". Only written when authored, so an untitled widget
365
- // serialises exactly as it always did.
366
- if (w.title !== undefined) node.setMetadata('widgetTitle', w.title);
367
- node.setMetadata('columnSpan', w.span ?? 3);
368
- node.setMetadata('rowSpan', w.rows ?? 1);
369
- if (w.x !== undefined && w.y !== undefined) {
370
- node.setGridItem({
371
- columnStart: w.x + 1,
372
- columnEnd: w.x + 1 + (w.span ?? 3),
373
- rowStart: w.y + 1,
374
- rowEnd: w.y + 1 + (w.rows ?? 1),
375
- });
376
- }
377
- // A dashboard widget is not a wiring endpoint: no ports, no hover glyphs.
378
- node.setBehavior({ connectable: false });
379
- for (const p of [...node.getPorts().values()]) node.removePort(p.id);
380
- return node;
381
- }
382
-
383
- /** Flow widgets that declared no cell: left-to-right, wrapping at `columns`. */
384
- function assignCells(widgets: DashboardWidgetSpec[], columns: number): void {
385
- let x = 0;
386
- let y = 0;
387
- let rowMax = 0;
388
- for (const w of widgets) {
389
- const span = Math.max(1, Math.min(columns, w.span ?? 3));
390
- const rows = Math.max(1, w.rows ?? 1);
391
- if (w.x === undefined || w.y === undefined) {
392
- if (x + span > columns) {
393
- x = 0;
394
- y += rowMax || 1;
395
- rowMax = 0;
396
- }
397
- w.x = x;
398
- w.y = y;
399
- x += span;
400
- rowMax = Math.max(rowMax, rows);
401
- }
402
- w.span = span;
403
- w.rows = rows;
404
- }
405
- }
406
-
407
- /**
408
- * The API surface the handle drives — the slice of a DiagramInstance both
409
- * `dashboard().finalize` and `fromDocument().finalize` hand in. Named (was an
410
- * inline type on the old `apiRef` local) because two call sites now share it.
411
- */
412
- export interface DashboardApiRef {
413
- getModel(): {
414
- getNode(id: string): NodeModel | undefined;
415
- addGroup(g: GroupModel): void;
416
- getGroup(id: string): GroupModel | undefined;
417
- removeGroup?(id: string): unknown;
418
- };
419
- getEngine?: () => { commandManager: { execute(c: unknown): unknown } };
420
- renderNow(): void;
421
- viewport?: { fitToBounds(r: unknown, pad: number, o?: unknown): void };
422
- }
423
-
424
- /**
425
- * Everything one `DashboardHandle` closes over, gathered into ONE object so a
426
- * single builder can serve both `dashboard()` (context built from the authored
427
- * literal) and `fromDocument()` (context reconstructed from the loaded model).
428
- *
429
- * `active` and `apiRef` are the two MUTABLE cells: the handle READS them on
430
- * every call and the builder WRITES them (showView reassigns `active`, the
431
- * caller's finalize sets `apiRef`). They live here rather than as free `let`s
432
- * precisely because there are now two call sites — a boxed cell one builder
433
- * reads and writes is the whole reason a second handle implementation, which
434
- * would silently drift, is not needed.
435
- */
436
- export interface DashboardHandleContext {
437
- /** The views — MUTATED in place by addWidget (push) and remove (filter). */
438
- views: DashboardViewSpec[];
439
- groups: Map<string, GroupModel>;
440
- binders: Map<string, DashboardGridHandle>;
441
- specById: Map<string, DashboardWidgetSpec>;
442
- viewOfWidget: Map<string, string>;
443
- hosts: Map<string, HTMLElement>;
444
- renderWidget: (widget: DashboardWidgetSpec, host: HTMLElement) => void;
445
- columns: number;
446
- gap: number;
447
- rowHeight: number;
448
- boardW: number;
449
- boardH: number;
450
- /**
451
- * Spread verbatim into `toJSON()` output — carries width/height/responsive
452
- * and any other authored option so a new `DashboardOptions` field round-trips
453
- * for free (dashboard() passes the whole `options`; fromDocument() passes the
454
- * geometry it can recover from the persisted board metadata).
455
- */
456
- optionsBase: Partial<DashboardOptions>;
457
- /** MUTABLE — reassigned by showView(). */
458
- active: string;
459
- /** MUTABLE — set by the caller's finalize once the render API exists. */
460
- apiRef: DashboardApiRef | null;
461
- }
462
-
463
- /**
464
- * Build THE `DashboardHandle` — the one and only implementation, shared by
465
- * `dashboard()` and `fromDocument()`. Reads/writes the mutable `ctx.active` /
466
- * `ctx.apiRef` cells so the caller's finalize can wire the API in afterwards.
467
- */
468
- export function createDashboardHandle(ctx: DashboardHandleContext): DashboardHandle {
469
- const { views, groups, binders, specById, viewOfWidget } = ctx;
470
-
471
- const hostOf = (id: string): HTMLElement | undefined => ctx.hosts.get(id);
472
-
473
- const execCommand = (cmd: unknown): void => {
474
- try {
475
- const r = ctx.apiRef?.getEngine?.()?.commandManager.execute(cmd) as {
476
- catch?: (f: () => void) => void;
477
- };
478
- // Fire-and-forget like the binder's own commits, but never leave an
479
- // unhandled rejection: a refused command is a no-op, not a crash.
480
- r?.catch?.(() => undefined);
481
- } catch {
482
- /* a refused command must not break the caller */
483
- }
484
- };
485
-
486
- const handle: DashboardHandle = {
487
- get views() {
488
- return views.map((v) => v.id);
489
- },
490
- get activeView() {
491
- return ctx.active;
492
- },
493
- showView(id) {
494
- if (!groups.has(id)) return;
495
- ctx.active = id;
496
- for (const [vid, g] of groups) {
497
- const x = vid === id ? 0 : OFFSCREEN_X;
498
- const s = g.size ?? { width: ctx.boardW, height: ctx.boardH };
499
- if (g.position.x !== x) g.setFrame({ x, y: 0, width: s.width, height: s.height });
500
- }
501
- binders.get(id)?.sync();
502
- ctx.apiRef?.renderNow();
503
- const g = groups.get(id)!;
504
- const gs = g.size ?? { width: ctx.boardW, height: ctx.boardH };
505
- ctx.apiRef?.viewport?.fitToBounds(
506
- { x: g.position.x, y: g.position.y, width: gs.width, height: gs.height },
507
- 26,
508
- { maxZoom: 1 }
509
- );
510
- },
511
- widget(id) {
512
- return makeWidgetHandle(id);
513
- },
514
- widgetsOf(viewId) {
515
- const v = views.find((x) => x.id === (viewId ?? ctx.active));
516
- return (v?.widgets ?? []).map((w) => makeWidgetHandle(w.id)).filter(Boolean) as WidgetHandle[];
517
- },
518
- setSizing(mode) {
519
- for (const b of binders.values()) b.setSizing(mode);
520
- ctx.apiRef?.renderNow();
521
- },
522
- getSizing: () => binders.get(ctx.active)?.getSizing() ?? (ctx.optionsBase.sizing ?? 'fit'),
523
- setFloat(on) {
524
- for (const b of binders.values()) b.setFloat(on);
525
- ctx.apiRef?.renderNow();
526
- },
527
- getFloat: () => binders.get(ctx.active)?.getFloat() ?? (ctx.optionsBase.float ?? false),
528
- setColumns(n, layout, viewId) {
529
- const targets = viewId ? [binders.get(viewId)] : [...binders.values()];
530
- for (const b of targets) b?.setColumns(n, layout);
531
- ctx.apiRef?.renderNow();
532
- },
533
- getColumns: (viewId) => binders.get(viewId ?? ctx.active)?.getColumns() ?? ctx.columns,
534
- setRtl(on) {
535
- for (const b of binders.values()) b.setRtl(on);
536
- ctx.apiRef?.renderNow();
537
- },
538
- getRtl: () => binders.get(ctx.active)?.getRtl() ?? (ctx.optionsBase.rtl ?? false),
539
- addWidget(spec, viewId) {
540
- const vid = viewId ?? ctx.active;
541
- const v = views.find((x) => x.id === vid);
542
- const model = ctx.apiRef?.getModel();
543
- const group = groups.get(vid);
544
- if (!v || !model || !group) return undefined;
545
- const w: DashboardWidgetSpec = {
546
- ...spec,
547
- id: spec.id || `w-${++autoId}`,
548
- span: spec.span ?? 3,
549
- rows: spec.rows ?? 1,
550
- };
551
- // REGISTER FIRST: a custom node mounts exactly once, and the painter
552
- // returns early for an id the spec does not know — so the widget must be
553
- // known before the node reaches the model, or it paints blank forever.
554
- v.widgets.push(w);
555
- specById.set(w.id, w);
556
- viewOfWidget.set(w.id, vid);
557
-
558
- const existing = model.getNode(w.id);
559
- const node = existing ?? buildWidgetNode(w, ctx.rowHeight);
560
- if (w.pinned) node.setState({ locked: true });
561
- // ONE undoable step (see AddWidgetCommand for why this cannot be a batch).
562
- execCommand(existing ? new AddToGroupCommand(group.id, w.id) : new AddWidgetCommand(node, group.id));
563
-
564
- binders.get(vid)?.sync();
565
- ctx.apiRef?.renderNow();
566
- return makeWidgetHandle(w.id);
567
- },
568
- refresh() {
569
- for (const b of binders.values()) b.sync();
570
- ctx.apiRef?.renderNow();
571
- },
572
- fit(viewId) {
573
- const g = groups.get(viewId ?? ctx.active);
574
- if (!g) return;
575
- const gs = g.size ?? { width: ctx.boardW, height: ctx.boardH };
576
- ctx.apiRef?.viewport?.fitToBounds(
577
- { x: g.position.x, y: g.position.y, width: gs.width, height: gs.height },
578
- 26,
579
- { maxZoom: 1 }
580
- );
581
- },
582
- metrics(viewId) {
583
- return binders.get(viewId ?? ctx.active)?.metrics();
584
- },
585
- binderOf(viewId) {
586
- return binders.get(viewId ?? ctx.active);
587
- },
588
- exportIds(viewId) {
589
- const id = viewId ?? ctx.active;
590
- const ids = new Set<string>();
591
- // A view with no group is a view that was never finalized — an empty set
592
- // is the honest answer, and scoping an export to nothing is a visible
593
- // failure rather than a silently enormous document.
594
- if (!groups.has(id)) return ids;
595
- ids.add(id);
596
- // Read the SPEC, not the group's member Set: membership is maintained by
597
- // commands and an in-flight drag can have a widget momentarily reparented.
598
- // The spec is what the view IS.
599
- for (const w of views.find((v) => v.id === id)?.widgets ?? []) ids.add(w.id);
600
- return ids;
601
- },
602
- toJSON() {
603
- // SAVING ON A PHONE SAVES THE DESKTOP LAYOUT. The binder serialises from
604
- // the engine's LARGEST cached column count (gridstack's `save()`), so a
605
- // board currently squeezed to 1 column still writes out the 12-column
606
- // layout its user authored — and the view's `columns` is that count, so
607
- // feeding this straight back into dashboard() rebuilds the wide board.
608
- const savedViews = views.map((v) => {
609
- const saved = binders.get(v.id)?.saveLayout();
610
- return {
611
- ...v,
612
- ...(saved ? { columns: saved.columns } : {}),
613
- widgets: v.widgets.map((w) => {
614
- const cell = saved?.cells.get(w.id) ?? binders.get(v.id)?.cellOf(w.id);
615
- return cell ? { ...w, x: cell.x, y: cell.y, span: cell.w, rows: cell.h } : { ...w };
616
- }),
617
- };
618
- });
619
-
620
- // Board options come off the LIVE board wherever the handle can see it —
621
- // `sizing` and `float` are the two a user changes from the toolbar, and
622
- // reading them from the authored literal would restore the board they
623
- // started with rather than the one they are looking at.
624
- return {
625
- ...ctx.optionsBase,
626
- renderWidget: undefined,
627
- onLayoutChange: undefined,
628
- columns: ctx.columns,
629
- gap: ctx.gap,
630
- rowHeight: ctx.rowHeight,
631
- sizing: handle.getSizing(),
632
- float: handle.getFloat(),
633
- rtl: handle.getRtl(),
634
- views: savedViews,
635
- } as DashboardSnapshot;
636
- },
637
- dispose() {
638
- for (const b of binders.values()) b.dispose();
639
- binders.clear();
640
- // The groups finalize() created are ours to clean up — leaving them
641
- // behind made a rebuild stack a second set of boards on the first.
642
- const model = ctx.apiRef?.getModel();
643
- for (const id of groups.keys()) model?.removeGroup?.(id);
644
- groups.clear();
645
- ctx.hosts.clear();
646
- },
647
- };
648
-
649
- function makeWidgetHandle(id: string): WidgetHandle | undefined {
650
- const spec = specById.get(id);
651
- const viewId = viewOfWidget.get(id);
652
- if (!spec || !viewId) return undefined;
653
- const binder = () => binders.get(viewId);
654
- const node = () => ctx.apiRef?.getModel().getNode(id);
655
- return {
656
- id,
657
- viewId,
658
- get node() {
659
- return node();
660
- },
661
- get spec() {
662
- return spec;
663
- },
664
- get cell() {
665
- return binder()?.cellOf(id);
666
- },
667
- get rect() {
668
- return binder()?.cellRectOf(id);
669
- },
670
- get pinned() {
671
- return node()?.state?.locked === true;
672
- },
673
- async resize(span, rows) {
674
- return (await binder()?.resizeTo(id, span, rows)) ?? false;
675
- },
676
- async moveTo(x, y) {
677
- return (await binder()?.moveTo(id, x, y)) ?? false;
678
- },
679
- pin(on) {
680
- const n = node();
681
- if (!n) return;
682
- n.setState({ locked: on ?? !(n.state?.locked === true) });
683
- // Re-sync so the ENGINE's locked flag (never pushed, drags refused)
684
- // and the hidden corner handle take effect on this frame, not the next
685
- // gesture.
686
- binder()?.sync();
687
- ctx.apiRef?.renderNow();
688
- },
689
- bringToFront() {
690
- execCommand(new BringNodeToFrontCommand(id));
691
- ctx.apiRef?.renderNow();
692
- },
693
- sendToBack() {
694
- execCommand(new SendNodeToBackCommand(id));
695
- ctx.apiRef?.renderNow();
696
- },
697
- update(patch) {
698
- if (patch.data !== undefined) spec.data = patch.data;
699
- if (patch.title !== undefined) spec.title = patch.title;
700
- if (patch.kind !== undefined) spec.kind = patch.kind;
701
- const host = hostOf(id);
702
- if (host) ctx.renderWidget(spec, host);
703
- },
704
- remove(displaced) {
705
- const n = node();
706
- const group = groups.get(viewId);
707
- const b = binder();
708
- if (!n || !group || !b) return;
709
- // ONE undoable step, survivors' re-pack folded in — the same atomic
710
- // shape the kit's own drag-out-to-remove uses. A gesture that ALREADY
711
- // computed the survivors passes them in: after a drag-out the tile is
712
- // gone from the engine, so planRemoval() would return [] and the
713
- // survivors' cells would never commit.
714
- const survivors = (displaced as never[] | undefined) ?? b.planRemoval(id);
715
- const cmds = [...survivors, new RemoveFromGroupCommand(group.id, id), new RemoveNodeCommand(id)];
716
- void execCommand(new BatchCommand('Remove widget', cmds));
717
- const v = views.find((x) => x.id === viewId);
718
- if (v) v.widgets = v.widgets.filter((w) => w.id !== id);
719
- specById.delete(id);
720
- viewOfWidget.delete(id);
721
- b.sync();
722
- ctx.apiRef?.renderNow();
723
- },
724
- repaint() {
725
- const host = hostOf(id);
726
- if (host) ctx.renderWidget(spec, host);
727
- },
728
- // (hosts are captured in renderCustomNode, so repaint works for every
729
- // widget the renderer has mounted — including after a rebuild.)
730
- };
731
- }
732
-
733
- return handle;
734
- }
735
-
736
- export function dashboard(options: DashboardOptions): DashboardSpec {
737
- ensureDashboardKitStyles();
738
-
739
- const columns = options.columns ?? DEFAULTS.columns;
740
- const gap = options.gap ?? DEFAULTS.gap;
741
- const rowHeight = options.rowHeight ?? DEFAULTS.rowHeight;
742
- const boardW = options.width ?? DEFAULTS.width;
743
- const boardH = options.height ?? DEFAULTS.height;
744
-
745
- const views: DashboardViewSpec[] = options.views
746
- ? options.views.map((v) => ({ ...v, widgets: v.widgets.map((w) => ({ ...w })) }))
747
- : [{ id: 'main', widgets: (options.widgets ?? []).map((w) => ({ ...w })) }];
748
- for (const v of views) assignCells(v.widgets, v.columns ?? columns);
749
-
750
- // -- the render spec: one custom-HTML node per widget ----------------------
751
- const nodes: Array<Record<string, unknown>> = [];
752
- const specById = new Map<string, DashboardWidgetSpec>();
753
- const viewOfWidget = new Map<string, string>();
754
- for (const v of views) {
755
- for (const w of v.widgets) {
756
- specById.set(w.id, w);
757
- viewOfWidget.set(w.id, v.id);
758
- nodes.push({
759
- id: w.id,
760
- type: 'widget',
761
- position: { x: 0, y: 0 },
762
- size: { width: 100, height: rowHeight },
763
- custom: true,
764
- metadata: {
765
- useHTMLLayer: true,
766
- widgetKind: w.kind ?? 'widget',
767
- widgetSpec: w.data ?? {},
768
- // See buildWidgetNode(): the title has to reach the node or a reload
769
- // cannot rebuild the card's header. These two paths are the drift the
770
- // comment on buildWidgetNode warns about — they must agree.
771
- ...(w.title !== undefined ? { widgetTitle: w.title } : {}),
772
- columnSpan: w.span,
773
- rowSpan: w.rows,
774
- gridItem: { columnStart: w.x! + 1, columnEnd: w.x! + 1 + w.span!, rowStart: w.y! + 1, rowEnd: w.y! + 1 + w.rows! },
775
- },
776
- });
777
- }
778
- }
779
-
780
- // No renderWidget → the built-in renderers draw the declared `kind` from the
781
- // developer's own `data` (widgets.ts), unknown kinds landing on the titled
782
- // frame they always did.
783
- const renderWidget = options.renderWidget ?? defaultWidgetRenderer;
784
-
785
- // -- runtime: ONE shared handle over a boxed context -----------------------
786
- // The two MUTABLE cells the handle used to close over as free `let`s —
787
- // `active` (showView reassigns it) and `apiRef` (finalize sets it) — are boxed
788
- // on `ctx`, so the SAME builder that fromDocument() calls reads and writes
789
- // them. Everything else is the stable state; the handle is identical to what
790
- // was inline here, moved verbatim into createDashboardHandle().
791
- const ctx: DashboardHandleContext = {
792
- views,
793
- groups: new Map<string, GroupModel>(),
794
- binders: new Map<string, DashboardGridHandle>(),
795
- specById,
796
- viewOfWidget,
797
- hosts: new Map<string, HTMLElement>(),
798
- renderWidget,
799
- columns,
800
- gap,
801
- rowHeight,
802
- boardW,
803
- boardH,
804
- optionsBase: options,
805
- active: views[0]?.id ?? 'main',
806
- apiRef: null,
807
- };
808
- const { binders, groups } = ctx;
809
- const handle = createDashboardHandle(ctx);
810
-
811
- return {
812
- nodes,
813
- edges: [],
814
- renderCustomNode: (node: unknown, host: HTMLElement) => {
815
- const n = node as { id: string };
816
- const spec = specById.get(n.id);
817
- if (!spec) return;
818
- ctx.hosts.set(n.id, host);
819
- renderWidget(spec, host);
820
- },
821
- get handle() {
822
- return handle;
823
- },
824
- finalize: (api: unknown) => {
825
- const a = api as DashboardApiRef | null;
826
- if (!a) return;
827
- ctx.apiRef = a;
828
- const model = a.getModel();
829
-
830
- for (const v of views) {
831
- // One board per view; the group is a pure LAYOUT CONTAINER, so its
832
- // chrome is suppressed (frameChrome) exactly as a dashboard needs.
833
- const g = new GroupModel({ id: v.id, name: v.name ?? v.id });
834
- model.addGroup(g);
835
- g.setMetadata('frameChrome', 'none');
836
- // THE BOARD'S GEOMETRY, PERSISTED. Cells alone do not describe a board:
837
- // the column count, gap and sizing mode are what turn them into pixels,
838
- // and they live only in the `dashboard()` call. Without them a reloaded
839
- // document could paint the widgets but never rebind the grid — the
840
- // reload would be a picture of a dashboard rather than a dashboard.
841
- // Serializable values only: the binder's callbacks belong to the app.
842
- g.setMetadata('dashboardBoard', {
843
- columns: v.columns ?? columns,
844
- gap,
845
- padding: gap,
846
- sizing: options.sizing ?? 'fit',
847
- baseRowHeight: rowHeight,
848
- designHeight: v.height ?? boardH,
849
- float: options.float ?? false,
850
- rtl: options.rtl ?? false,
851
- });
852
- g.size = { width: v.width ?? boardW, height: v.height ?? boardH, depth: 0 };
853
- g.position = { x: v.id === ctx.active ? 0 : OFFSCREEN_X, y: 0 };
854
- groups.set(v.id, g);
855
- for (const w of v.widgets) {
856
- const n = model.getNode(w.id);
857
- if (!n) continue;
858
- // DECLARED CELLS ARE AUTHORITATIVE. `metadata.gridItem` on the node
859
- // SPEC is inert — the model's GridItemConfig is a real field
860
- // (`setGridItem`), and it is the only thing the binder reads. Without
861
- // this write the board silently auto-positioned instead, which
862
- // matched the declaration only while flow order happened to agree,
863
- // and made toJSON() → dashboard() NOT round-trip (a saved layout
864
- // rebuilt back into its declaration order rather than its cells).
865
- if (w.x !== undefined && w.y !== undefined) {
866
- n.setGridItem(gridItemFromCell({ x: w.x, y: w.y, w: w.span ?? 3, h: w.rows ?? 1 }));
867
- }
868
- if (w.pinned) n.setState({ locked: true });
869
- // A dashboard widget is not a wiring endpoint. This MUST happen here
870
- // rather than on the node spec: the render-input path IGNORES a
871
- // spec-level `behavior` (the same trap erDiagram documents for
872
- // `resizable`), so a DECLARED widget shipped connectable with four
873
- // default ports and sprouted glyphs on hover — while addWidget()'s
874
- // directly-built nodes were already correct. One path being right is
875
- // exactly what hid it, and why the tooth now covers both.
876
- n.setBehavior({ connectable: false });
877
- for (const p of [...n.getPorts().values()]) n.removePort(p.id);
878
- g.addMember(w.id);
879
- }
880
- binders.set(
881
- v.id,
882
- bindDashboardGrid(a as never, g, {
883
- columns: v.columns ?? columns,
884
- gap,
885
- padding: gap,
886
- sizing: options.sizing ?? 'fit',
887
- baseRowHeight: rowHeight,
888
- designHeight: v.height ?? boardH,
889
- float: options.float ?? false,
890
- rtl: options.rtl ?? false,
891
- ...(options.responsive ? { responsive: options.responsive } : {}),
892
- ...(options.binder ?? {}),
893
- onGesture: (e) => {
894
- if (e.type === 'commit' && options.onLayoutChange) {
895
- const snapshot = handle.toJSON().views.find((x) => x.id === v.id);
896
- if (snapshot) options.onLayoutChange(v.id, snapshot.widgets);
897
- }
898
- options.binder?.onGesture?.(e);
899
- },
900
- })
901
- );
902
- }
903
- handle.showView(ctx.active);
904
- },
905
- };
906
- }