@grafloria/element 0.3.20 → 0.3.22

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 (1083) hide show
  1. package/package.json +2 -2
  2. package/src/libs/element/src/index.d.ts +0 -92
  3. package/src/libs/element/src/index.js +0 -576
  4. package/src/libs/element/src/lib/dashboard-kit/dashboard.d.ts +0 -345
  5. package/src/libs/element/src/lib/dashboard-kit/dashboard.js +0 -594
  6. package/src/libs/element/src/lib/dashboard-kit/grid-binder.d.ts +0 -277
  7. package/src/libs/element/src/lib/dashboard-kit/grid-binder.js +0 -1636
  8. package/src/libs/element/src/lib/dashboard-kit/grid-mapping.d.ts +0 -141
  9. package/src/libs/element/src/lib/dashboard-kit/grid-mapping.js +0 -176
  10. package/src/libs/element/src/lib/dashboard-kit/index.d.ts +0 -5
  11. package/src/libs/element/src/lib/dashboard-kit/index.js +0 -33
  12. package/src/libs/element/src/lib/dashboard-kit/styles.d.ts +0 -25
  13. package/src/libs/element/src/lib/dashboard-kit/styles.js +0 -209
  14. package/src/libs/element/src/lib/dashboard-kit/widgets.d.ts +0 -112
  15. package/src/libs/element/src/lib/dashboard-kit/widgets.js +0 -389
  16. package/src/libs/element/src/lib/diagram-kit/card.d.ts +0 -75
  17. package/src/libs/element/src/lib/diagram-kit/card.js +0 -209
  18. package/src/libs/element/src/lib/diagram-kit/editing.d.ts +0 -58
  19. package/src/libs/element/src/lib/diagram-kit/editing.js +0 -453
  20. package/src/libs/element/src/lib/diagram-kit/er.d.ts +0 -73
  21. package/src/libs/element/src/lib/diagram-kit/er.js +0 -163
  22. package/src/libs/element/src/lib/diagram-kit/handles.d.ts +0 -181
  23. package/src/libs/element/src/lib/diagram-kit/handles.js +0 -325
  24. package/src/libs/element/src/lib/diagram-kit/index.d.ts +0 -10
  25. package/src/libs/element/src/lib/diagram-kit/index.js +0 -55
  26. package/src/libs/element/src/lib/diagram-kit/join-guidance.d.ts +0 -116
  27. package/src/libs/element/src/lib/diagram-kit/join-guidance.js +0 -331
  28. package/src/libs/element/src/lib/diagram-kit/rows.d.ts +0 -53
  29. package/src/libs/element/src/lib/diagram-kit/rows.js +0 -147
  30. package/src/libs/element/src/lib/diagram-kit/styles.d.ts +0 -18
  31. package/src/libs/element/src/lib/diagram-kit/styles.js +0 -122
  32. package/src/libs/element/src/lib/diagram-kit/uml.d.ts +0 -59
  33. package/src/libs/element/src/lib/diagram-kit/uml.js +0 -138
  34. package/src/libs/element/src/lib/diagram-kit/update.d.ts +0 -133
  35. package/src/libs/element/src/lib/diagram-kit/update.js +0 -251
  36. package/src/libs/element/src/lib/grafloria-flow-element.d.ts +0 -48
  37. package/src/libs/element/src/lib/grafloria-flow-element.js +0 -271
  38. package/src/libs/element/src/lib/grafloria.d.ts +0 -72
  39. package/src/libs/element/src/lib/grafloria.js +0 -74
  40. package/src/libs/element/src/lib/load.d.ts +0 -72
  41. package/src/libs/element/src/lib/load.js +0 -255
  42. package/src/libs/element/src/lib/node-type-registry.d.ts +0 -39
  43. package/src/libs/element/src/lib/node-type-registry.js +0 -50
  44. package/src/libs/element/src/lib/stencil-kit/builders.d.ts +0 -45
  45. package/src/libs/element/src/lib/stencil-kit/builders.js +0 -24
  46. package/src/libs/element/src/lib/stencil-kit/card-builders.d.ts +0 -2
  47. package/src/libs/element/src/lib/stencil-kit/card-builders.js +0 -108
  48. package/src/libs/element/src/lib/stencil-kit/index.d.ts +0 -7
  49. package/src/libs/element/src/lib/stencil-kit/index.js +0 -19
  50. package/src/libs/element/src/lib/stencil-kit/palette.d.ts +0 -93
  51. package/src/libs/element/src/lib/stencil-kit/palette.js +0 -430
  52. package/src/libs/element/src/lib/stencil-kit/shape-data.d.ts +0 -28
  53. package/src/libs/element/src/lib/stencil-kit/shape-data.js +0 -540
  54. package/src/libs/element/src/lib/stencil-kit/styles.d.ts +0 -2
  55. package/src/libs/element/src/lib/stencil-kit/styles.js +0 -129
  56. package/src/libs/engine/src/adapters/component-adapter.interface.d.ts +0 -302
  57. package/src/libs/engine/src/adapters/component-adapter.interface.js +0 -84
  58. package/src/libs/engine/src/adapters/index.d.ts +0 -7
  59. package/src/libs/engine/src/adapters/index.js +0 -11
  60. package/src/libs/engine/src/clipboard/ClipboardManager.d.ts +0 -81
  61. package/src/libs/engine/src/clipboard/ClipboardManager.js +0 -108
  62. package/src/libs/engine/src/clipboard/index.d.ts +0 -1
  63. package/src/libs/engine/src/clipboard/index.js +0 -6
  64. package/src/libs/engine/src/collab/apply-op.d.ts +0 -42
  65. package/src/libs/engine/src/collab/apply-op.js +0 -939
  66. package/src/libs/engine/src/collab/capture.d.ts +0 -147
  67. package/src/libs/engine/src/collab/capture.js +0 -510
  68. package/src/libs/engine/src/collab/index.d.ts +0 -12
  69. package/src/libs/engine/src/collab/index.js +0 -84
  70. package/src/libs/engine/src/collab/integrity.d.ts +0 -178
  71. package/src/libs/engine/src/collab/integrity.js +0 -438
  72. package/src/libs/engine/src/collab/lww.d.ts +0 -47
  73. package/src/libs/engine/src/collab/lww.js +0 -188
  74. package/src/libs/engine/src/collab/op-log.d.ts +0 -50
  75. package/src/libs/engine/src/collab/op-log.js +0 -167
  76. package/src/libs/engine/src/collab/op.d.ts +0 -120
  77. package/src/libs/engine/src/collab/op.js +0 -118
  78. package/src/libs/engine/src/collab/replica.d.ts +0 -188
  79. package/src/libs/engine/src/collab/replica.js +0 -526
  80. package/src/libs/engine/src/collab/undo.d.ts +0 -106
  81. package/src/libs/engine/src/collab/undo.js +0 -388
  82. package/src/libs/engine/src/commands/Command.d.ts +0 -66
  83. package/src/libs/engine/src/commands/Command.js +0 -64
  84. package/src/libs/engine/src/commands/CommandManager.d.ts +0 -161
  85. package/src/libs/engine/src/commands/CommandManager.js +0 -417
  86. package/src/libs/engine/src/commands/basic/AddGroupCommand.d.ts +0 -13
  87. package/src/libs/engine/src/commands/basic/AddGroupCommand.js +0 -50
  88. package/src/libs/engine/src/commands/basic/AddLinkCommand.d.ts +0 -13
  89. package/src/libs/engine/src/commands/basic/AddLinkCommand.js +0 -50
  90. package/src/libs/engine/src/commands/basic/AddNodeCommand.d.ts +0 -13
  91. package/src/libs/engine/src/commands/basic/AddNodeCommand.js +0 -65
  92. package/src/libs/engine/src/commands/basic/AddToGroupCommand.d.ts +0 -12
  93. package/src/libs/engine/src/commands/basic/AddToGroupCommand.js +0 -73
  94. package/src/libs/engine/src/commands/basic/AlignCommands.d.ts +0 -42
  95. package/src/libs/engine/src/commands/basic/AlignCommands.js +0 -138
  96. package/src/libs/engine/src/commands/basic/CollapseGroupCommand.d.ts +0 -14
  97. package/src/libs/engine/src/commands/basic/CollapseGroupCommand.js +0 -70
  98. package/src/libs/engine/src/commands/basic/CopyCommand.d.ts +0 -29
  99. package/src/libs/engine/src/commands/basic/CopyCommand.js +0 -131
  100. package/src/libs/engine/src/commands/basic/CutCommand.d.ts +0 -49
  101. package/src/libs/engine/src/commands/basic/CutCommand.js +0 -68
  102. package/src/libs/engine/src/commands/basic/DeleteSelectionCommand.d.ts +0 -58
  103. package/src/libs/engine/src/commands/basic/DeleteSelectionCommand.js +0 -309
  104. package/src/libs/engine/src/commands/basic/DuplicateCommand.d.ts +0 -31
  105. package/src/libs/engine/src/commands/basic/DuplicateCommand.js +0 -232
  106. package/src/libs/engine/src/commands/basic/ExpandGroupCommand.d.ts +0 -12
  107. package/src/libs/engine/src/commands/basic/ExpandGroupCommand.js +0 -69
  108. package/src/libs/engine/src/commands/basic/MoveGroupCommand.d.ts +0 -46
  109. package/src/libs/engine/src/commands/basic/MoveGroupCommand.js +0 -77
  110. package/src/libs/engine/src/commands/basic/MoveNodeCommand.d.ts +0 -30
  111. package/src/libs/engine/src/commands/basic/MoveNodeCommand.js +0 -87
  112. package/src/libs/engine/src/commands/basic/NodeZOrderCommands.d.ts +0 -39
  113. package/src/libs/engine/src/commands/basic/NodeZOrderCommands.js +0 -120
  114. package/src/libs/engine/src/commands/basic/PasteCommand.d.ts +0 -33
  115. package/src/libs/engine/src/commands/basic/PasteCommand.js +0 -228
  116. package/src/libs/engine/src/commands/basic/PortCommands.d.ts +0 -22
  117. package/src/libs/engine/src/commands/basic/PortCommands.js +0 -85
  118. package/src/libs/engine/src/commands/basic/ReconnectLinkCommand.d.ts +0 -15
  119. package/src/libs/engine/src/commands/basic/ReconnectLinkCommand.js +0 -59
  120. package/src/libs/engine/src/commands/basic/RemoveFromGroupCommand.d.ts +0 -12
  121. package/src/libs/engine/src/commands/basic/RemoveFromGroupCommand.js +0 -64
  122. package/src/libs/engine/src/commands/basic/RemoveGroupCommand.d.ts +0 -12
  123. package/src/libs/engine/src/commands/basic/RemoveGroupCommand.js +0 -56
  124. package/src/libs/engine/src/commands/basic/RemoveLinkCommand.d.ts +0 -12
  125. package/src/libs/engine/src/commands/basic/RemoveLinkCommand.js +0 -57
  126. package/src/libs/engine/src/commands/basic/RemoveNodeCommand.d.ts +0 -23
  127. package/src/libs/engine/src/commands/basic/RemoveNodeCommand.js +0 -108
  128. package/src/libs/engine/src/commands/basic/ResizeNodeCommand.d.ts +0 -16
  129. package/src/libs/engine/src/commands/basic/ResizeNodeCommand.js +0 -81
  130. package/src/libs/engine/src/commands/basic/RotateNodeCommand.d.ts +0 -37
  131. package/src/libs/engine/src/commands/basic/RotateNodeCommand.js +0 -88
  132. package/src/libs/engine/src/commands/basic/SetFlexItemCommand.d.ts +0 -14
  133. package/src/libs/engine/src/commands/basic/SetFlexItemCommand.js +0 -74
  134. package/src/libs/engine/src/commands/basic/SetGridItemCommand.d.ts +0 -14
  135. package/src/libs/engine/src/commands/basic/SetGridItemCommand.js +0 -74
  136. package/src/libs/engine/src/commands/basic/SetLayoutCommand.d.ts +0 -16
  137. package/src/libs/engine/src/commands/basic/SetLayoutCommand.js +0 -80
  138. package/src/libs/engine/src/commands/basic/SetLinkDisplayLabelCommand.d.ts +0 -28
  139. package/src/libs/engine/src/commands/basic/SetLinkDisplayLabelCommand.js +0 -83
  140. package/src/libs/engine/src/commands/basic/SetLinkLabelCommand.d.ts +0 -24
  141. package/src/libs/engine/src/commands/basic/SetLinkLabelCommand.js +0 -81
  142. package/src/libs/engine/src/commands/basic/SetLinkLabelsCommand.d.ts +0 -14
  143. package/src/libs/engine/src/commands/basic/SetLinkLabelsCommand.js +0 -75
  144. package/src/libs/engine/src/commands/basic/SetLinkPathTypeCommand.d.ts +0 -14
  145. package/src/libs/engine/src/commands/basic/SetLinkPathTypeCommand.js +0 -77
  146. package/src/libs/engine/src/commands/basic/SetLinkPointsCommand.d.ts +0 -32
  147. package/src/libs/engine/src/commands/basic/SetLinkPointsCommand.js +0 -87
  148. package/src/libs/engine/src/commands/basic/SetNodeDataCommand.d.ts +0 -14
  149. package/src/libs/engine/src/commands/basic/SetNodeDataCommand.js +0 -93
  150. package/src/libs/engine/src/commands/basic/SetNodeLabelCommand.d.ts +0 -26
  151. package/src/libs/engine/src/commands/basic/SetNodeLabelCommand.js +0 -81
  152. package/src/libs/engine/src/commands/basic/SetNodeShapeConfigCommand.d.ts +0 -14
  153. package/src/libs/engine/src/commands/basic/SetNodeShapeConfigCommand.js +0 -69
  154. package/src/libs/engine/src/commands/basic/SetNodeStyleCommand.d.ts +0 -15
  155. package/src/libs/engine/src/commands/basic/SetNodeStyleCommand.js +0 -88
  156. package/src/libs/engine/src/commands/basic/SetParentCommand.d.ts +0 -13
  157. package/src/libs/engine/src/commands/basic/SetParentCommand.js +0 -109
  158. package/src/libs/engine/src/commands/basic/SetStrokePointsCommand.d.ts +0 -34
  159. package/src/libs/engine/src/commands/basic/SetStrokePointsCommand.js +0 -86
  160. package/src/libs/engine/src/commands/basic/StrokeLifecycleCommands.d.ts +0 -31
  161. package/src/libs/engine/src/commands/basic/StrokeLifecycleCommands.js +0 -88
  162. package/src/libs/engine/src/commands/basic/UpdateLinkStyleCommand.d.ts +0 -15
  163. package/src/libs/engine/src/commands/basic/UpdateLinkStyleCommand.js +0 -72
  164. package/src/libs/engine/src/commands/basic/index.d.ts +0 -41
  165. package/src/libs/engine/src/commands/basic/index.js +0 -52
  166. package/src/libs/engine/src/commands/basic/remapNodePortIds.d.ts +0 -23
  167. package/src/libs/engine/src/commands/basic/remapNodePortIds.js +0 -46
  168. package/src/libs/engine/src/commands/basic/resolveLinkNodeIds.d.ts +0 -31
  169. package/src/libs/engine/src/commands/basic/resolveLinkNodeIds.js +0 -49
  170. package/src/libs/engine/src/commands/composite/BatchCommand.d.ts +0 -19
  171. package/src/libs/engine/src/commands/composite/BatchCommand.js +0 -61
  172. package/src/libs/engine/src/commands/composite/MacroCommand.d.ts +0 -35
  173. package/src/libs/engine/src/commands/composite/MacroCommand.js +0 -87
  174. package/src/libs/engine/src/commands/composite/index.d.ts +0 -2
  175. package/src/libs/engine/src/commands/composite/index.js +0 -7
  176. package/src/libs/engine/src/commands/index.d.ts +0 -4
  177. package/src/libs/engine/src/commands/index.js +0 -9
  178. package/src/libs/engine/src/comments/comment-store.d.ts +0 -238
  179. package/src/libs/engine/src/comments/comment-store.js +0 -538
  180. package/src/libs/engine/src/comments/index.d.ts +0 -4
  181. package/src/libs/engine/src/comments/index.js +0 -31
  182. package/src/libs/engine/src/comments/mentions.d.ts +0 -52
  183. package/src/libs/engine/src/comments/mentions.js +0 -94
  184. package/src/libs/engine/src/comments/read-state.d.ts +0 -37
  185. package/src/libs/engine/src/comments/read-state.js +0 -105
  186. package/src/libs/engine/src/comments/types.d.ts +0 -154
  187. package/src/libs/engine/src/comments/types.js +0 -107
  188. package/src/libs/engine/src/config/InteractionConfig.d.ts +0 -330
  189. package/src/libs/engine/src/config/InteractionConfig.js +0 -154
  190. package/src/libs/engine/src/config/index.d.ts +0 -1
  191. package/src/libs/engine/src/config/index.js +0 -6
  192. package/src/libs/engine/src/dsl/DSL.d.ts +0 -197
  193. package/src/libs/engine/src/dsl/DSL.js +0 -564
  194. package/src/libs/engine/src/dsl/advanced/StyleParser.d.ts +0 -75
  195. package/src/libs/engine/src/dsl/advanced/StyleParser.js +0 -166
  196. package/src/libs/engine/src/dsl/advanced/TemplateParser.d.ts +0 -88
  197. package/src/libs/engine/src/dsl/advanced/TemplateParser.js +0 -226
  198. package/src/libs/engine/src/dsl/advanced/index.d.ts +0 -9
  199. package/src/libs/engine/src/dsl/advanced/index.js +0 -13
  200. package/src/libs/engine/src/dsl/detector/LayoutDetector.d.ts +0 -80
  201. package/src/libs/engine/src/dsl/detector/LayoutDetector.js +0 -333
  202. package/src/libs/engine/src/dsl/extended/BPMNGenerator.d.ts +0 -38
  203. package/src/libs/engine/src/dsl/extended/BPMNGenerator.js +0 -90
  204. package/src/libs/engine/src/dsl/extended/BPMNParser.d.ts +0 -83
  205. package/src/libs/engine/src/dsl/extended/BPMNParser.js +0 -198
  206. package/src/libs/engine/src/dsl/extended/ERDGenerator.d.ts +0 -38
  207. package/src/libs/engine/src/dsl/extended/ERDGenerator.js +0 -126
  208. package/src/libs/engine/src/dsl/extended/ERDParser.d.ts +0 -81
  209. package/src/libs/engine/src/dsl/extended/ERDParser.js +0 -161
  210. package/src/libs/engine/src/dsl/extended/ERDTransformer.d.ts +0 -43
  211. package/src/libs/engine/src/dsl/extended/ERDTransformer.js +0 -105
  212. package/src/libs/engine/src/dsl/extended/UMLGenerator.d.ts +0 -42
  213. package/src/libs/engine/src/dsl/extended/UMLGenerator.js +0 -157
  214. package/src/libs/engine/src/dsl/extended/UMLParser.d.ts +0 -99
  215. package/src/libs/engine/src/dsl/extended/UMLParser.js +0 -200
  216. package/src/libs/engine/src/dsl/extended/index.d.ts +0 -13
  217. package/src/libs/engine/src/dsl/extended/index.js +0 -27
  218. package/src/libs/engine/src/dsl/generator/DSLFormatter.d.ts +0 -87
  219. package/src/libs/engine/src/dsl/generator/DSLFormatter.js +0 -261
  220. package/src/libs/engine/src/dsl/generator/DSLGenerator.d.ts +0 -96
  221. package/src/libs/engine/src/dsl/generator/DSLGenerator.js +0 -328
  222. package/src/libs/engine/src/dsl/generator/DiagramAnalyzer.d.ts +0 -111
  223. package/src/libs/engine/src/dsl/generator/DiagramAnalyzer.js +0 -361
  224. package/src/libs/engine/src/dsl/index.d.ts +0 -35
  225. package/src/libs/engine/src/dsl/index.js +0 -64
  226. package/src/libs/engine/src/dsl/lexer/Lexer.d.ts +0 -117
  227. package/src/libs/engine/src/dsl/lexer/Lexer.js +0 -521
  228. package/src/libs/engine/src/dsl/mermaid/MermaidClass.d.ts +0 -136
  229. package/src/libs/engine/src/dsl/mermaid/MermaidClass.js +0 -429
  230. package/src/libs/engine/src/dsl/mermaid/MermaidER.d.ts +0 -118
  231. package/src/libs/engine/src/dsl/mermaid/MermaidER.js +0 -338
  232. package/src/libs/engine/src/dsl/mermaid/MermaidState.d.ts +0 -89
  233. package/src/libs/engine/src/dsl/mermaid/MermaidState.js +0 -613
  234. package/src/libs/engine/src/dsl/mermaid/index.d.ts +0 -10
  235. package/src/libs/engine/src/dsl/mermaid/index.js +0 -33
  236. package/src/libs/engine/src/dsl/mermaid/layout.d.ts +0 -70
  237. package/src/libs/engine/src/dsl/mermaid/layout.js +0 -162
  238. package/src/libs/engine/src/dsl/mermaid/lines.d.ts +0 -25
  239. package/src/libs/engine/src/dsl/mermaid/lines.js +0 -74
  240. package/src/libs/engine/src/dsl/parser/Parser.d.ts +0 -131
  241. package/src/libs/engine/src/dsl/parser/Parser.js +0 -725
  242. package/src/libs/engine/src/dsl/sync/BidirectionalSync.d.ts +0 -154
  243. package/src/libs/engine/src/dsl/sync/BidirectionalSync.js +0 -389
  244. package/src/libs/engine/src/dsl/sync/IntegratedSyncManager.d.ts +0 -128
  245. package/src/libs/engine/src/dsl/sync/IntegratedSyncManager.js +0 -244
  246. package/src/libs/engine/src/dsl/sync/LayoutApplicator.d.ts +0 -140
  247. package/src/libs/engine/src/dsl/sync/LayoutApplicator.js +0 -271
  248. package/src/libs/engine/src/dsl/sync/SyncStateManager.d.ts +0 -145
  249. package/src/libs/engine/src/dsl/sync/SyncStateManager.js +0 -253
  250. package/src/libs/engine/src/dsl/sync/index.d.ts +0 -13
  251. package/src/libs/engine/src/dsl/sync/index.js +0 -21
  252. package/src/libs/engine/src/dsl/transformer/ASTTransformer.d.ts +0 -150
  253. package/src/libs/engine/src/dsl/transformer/ASTTransformer.js +0 -605
  254. package/src/libs/engine/src/dsl/types/ASTNode.d.ts +0 -159
  255. package/src/libs/engine/src/dsl/types/ASTNode.js +0 -31
  256. package/src/libs/engine/src/dsl/types/Token.d.ts +0 -79
  257. package/src/libs/engine/src/dsl/types/Token.js +0 -84
  258. package/src/libs/engine/src/engine/DiagramEngine.d.ts +0 -917
  259. package/src/libs/engine/src/engine/DiagramEngine.js +0 -2190
  260. package/src/libs/engine/src/engine/DiagramMode.d.ts +0 -51
  261. package/src/libs/engine/src/engine/DiagramMode.js +0 -53
  262. package/src/libs/engine/src/engine/DiagramModeTypes.d.ts +0 -73
  263. package/src/libs/engine/src/engine/DiagramModeTypes.js +0 -4
  264. package/src/libs/engine/src/engine/ModeManager.d.ts +0 -155
  265. package/src/libs/engine/src/engine/ModeManager.js +0 -387
  266. package/src/libs/engine/src/engine/index.d.ts +0 -2
  267. package/src/libs/engine/src/engine/index.js +0 -7
  268. package/src/libs/engine/src/events/EventBus.d.ts +0 -106
  269. package/src/libs/engine/src/events/EventBus.js +0 -226
  270. package/src/libs/engine/src/events/index.d.ts +0 -1
  271. package/src/libs/engine/src/events/index.js +0 -6
  272. package/src/libs/engine/src/index.d.ts +0 -43
  273. package/src/libs/engine/src/index.js +0 -142
  274. package/src/libs/engine/src/interaction/GroupCollapseService.d.ts +0 -53
  275. package/src/libs/engine/src/interaction/GroupCollapseService.js +0 -274
  276. package/src/libs/engine/src/interaction/GroupMembershipService.d.ts +0 -107
  277. package/src/libs/engine/src/interaction/GroupMembershipService.js +0 -245
  278. package/src/libs/engine/src/interaction/SemanticMembershipService.d.ts +0 -28
  279. package/src/libs/engine/src/interaction/SemanticMembershipService.js +0 -168
  280. package/src/libs/engine/src/interaction/SwimlaneService.d.ts +0 -62
  281. package/src/libs/engine/src/interaction/SwimlaneService.js +0 -180
  282. package/src/libs/engine/src/interaction/index.d.ts +0 -4
  283. package/src/libs/engine/src/interaction/index.js +0 -9
  284. package/src/libs/engine/src/interop/drawio/importDrawio.d.ts +0 -52
  285. package/src/libs/engine/src/interop/drawio/importDrawio.js +0 -940
  286. package/src/libs/engine/src/interop/drawio/index.d.ts +0 -1
  287. package/src/libs/engine/src/interop/drawio/index.js +0 -12
  288. package/src/libs/engine/src/interop/drawio/xml.d.ts +0 -26
  289. package/src/libs/engine/src/interop/drawio/xml.js +0 -213
  290. package/src/libs/engine/src/layout/CompoundLayoutService.d.ts +0 -121
  291. package/src/libs/engine/src/layout/CompoundLayoutService.js +0 -616
  292. package/src/libs/engine/src/layout/ILayoutAlgorithm.d.ts +0 -120
  293. package/src/libs/engine/src/layout/ILayoutAlgorithm.js +0 -88
  294. package/src/libs/engine/src/layout/LayoutManager.d.ts +0 -155
  295. package/src/libs/engine/src/layout/LayoutManager.js +0 -640
  296. package/src/libs/engine/src/layout/SmartSpacingCalculator.d.ts +0 -62
  297. package/src/libs/engine/src/layout/SmartSpacingCalculator.js +0 -134
  298. package/src/libs/engine/src/layout/ViewportTransform.d.ts +0 -55
  299. package/src/libs/engine/src/layout/ViewportTransform.js +0 -118
  300. package/src/libs/engine/src/layout/algorithms/ForceDirectedLayoutAlgorithm.d.ts +0 -34
  301. package/src/libs/engine/src/layout/algorithms/ForceDirectedLayoutAlgorithm.js +0 -317
  302. package/src/libs/engine/src/layout/algorithms/GridLayoutAlgorithm.d.ts +0 -56
  303. package/src/libs/engine/src/layout/algorithms/GridLayoutAlgorithm.js +0 -223
  304. package/src/libs/engine/src/layout/algorithms/HierarchicalLayoutAlgorithm.d.ts +0 -60
  305. package/src/libs/engine/src/layout/algorithms/HierarchicalLayoutAlgorithm.js +0 -307
  306. package/src/libs/engine/src/layout/algorithms/HybridLayoutAlgorithm.d.ts +0 -62
  307. package/src/libs/engine/src/layout/algorithms/HybridLayoutAlgorithm.js +0 -324
  308. package/src/libs/engine/src/layout/community-layout-adapter.d.ts +0 -107
  309. package/src/libs/engine/src/layout/community-layout-adapter.js +0 -486
  310. package/src/libs/engine/src/layout/component-packing.d.ts +0 -98
  311. package/src/libs/engine/src/layout/component-packing.js +0 -307
  312. package/src/libs/engine/src/layout/dagre-layout-adapter.d.ts +0 -122
  313. package/src/libs/engine/src/layout/dagre-layout-adapter.js +0 -697
  314. package/src/libs/engine/src/layout/edge-bundling.interface.d.ts +0 -159
  315. package/src/libs/engine/src/layout/edge-bundling.interface.js +0 -379
  316. package/src/libs/engine/src/layout/elk-layout-adapter.d.ts +0 -121
  317. package/src/libs/engine/src/layout/elk-layout-adapter.js +0 -586
  318. package/src/libs/engine/src/layout/elk-loader.d.ts +0 -1
  319. package/src/libs/engine/src/layout/elk-loader.js +0 -24
  320. package/src/libs/engine/src/layout/force-layout-adapter.d.ts +0 -167
  321. package/src/libs/engine/src/layout/force-layout-adapter.js +0 -790
  322. package/src/libs/engine/src/layout/grid-pack/grid-pack-engine.d.ts +0 -323
  323. package/src/libs/engine/src/layout/grid-pack/grid-pack-engine.js +0 -685
  324. package/src/libs/engine/src/layout/incremental/mental-map.d.ts +0 -98
  325. package/src/libs/engine/src/layout/incremental/mental-map.js +0 -221
  326. package/src/libs/engine/src/layout/incremental-layout.interface.d.ts +0 -145
  327. package/src/libs/engine/src/layout/incremental-layout.interface.js +0 -300
  328. package/src/libs/engine/src/layout/index.d.ts +0 -83
  329. package/src/libs/engine/src/layout/index.js +0 -116
  330. package/src/libs/engine/src/layout/layout-adapter.interface.d.ts +0 -185
  331. package/src/libs/engine/src/layout/layout-adapter.interface.js +0 -10
  332. package/src/libs/engine/src/layout/layout-auto-select.d.ts +0 -160
  333. package/src/libs/engine/src/layout/layout-auto-select.js +0 -621
  334. package/src/libs/engine/src/layout/layout-constraints.interface.d.ts +0 -117
  335. package/src/libs/engine/src/layout/layout-constraints.interface.js +0 -138
  336. package/src/libs/engine/src/layout/layout-graph.d.ts +0 -70
  337. package/src/libs/engine/src/layout/layout-graph.js +0 -119
  338. package/src/libs/engine/src/layout/layout-history.d.ts +0 -147
  339. package/src/libs/engine/src/layout/layout-history.js +0 -258
  340. package/src/libs/engine/src/layout/layout-host.d.ts +0 -172
  341. package/src/libs/engine/src/layout/layout-host.js +0 -523
  342. package/src/libs/engine/src/layout/layout-presets.d.ts +0 -91
  343. package/src/libs/engine/src/layout/layout-presets.js +0 -333
  344. package/src/libs/engine/src/layout/layout-quality-extended.d.ts +0 -66
  345. package/src/libs/engine/src/layout/layout-quality-extended.js +0 -246
  346. package/src/libs/engine/src/layout/layout-quality-metrics.d.ts +0 -127
  347. package/src/libs/engine/src/layout/layout-quality-metrics.js +0 -466
  348. package/src/libs/engine/src/layout/layout-registry.d.ts +0 -309
  349. package/src/libs/engine/src/layout/layout-registry.js +0 -414
  350. package/src/libs/engine/src/layout/layout.service.d.ts +0 -100
  351. package/src/libs/engine/src/layout/layout.service.js +0 -216
  352. package/src/libs/engine/src/layout/overlap-removal.d.ts +0 -20
  353. package/src/libs/engine/src/layout/overlap-removal.js +0 -117
  354. package/src/libs/engine/src/layout/port-aware-layout.interface.d.ts +0 -232
  355. package/src/libs/engine/src/layout/port-aware-layout.interface.js +0 -413
  356. package/src/libs/engine/src/layout/port-label-bridge.d.ts +0 -77
  357. package/src/libs/engine/src/layout/port-label-bridge.js +0 -250
  358. package/src/libs/engine/src/layout/portfolio-layouts.d.ts +0 -53
  359. package/src/libs/engine/src/layout/portfolio-layouts.js +0 -388
  360. package/src/libs/engine/src/layout/rng.d.ts +0 -34
  361. package/src/libs/engine/src/layout/rng.js +0 -71
  362. package/src/libs/engine/src/layout/spectral-layout-adapter.d.ts +0 -72
  363. package/src/libs/engine/src/layout/spectral-layout-adapter.js +0 -379
  364. package/src/libs/engine/src/layout/steppable-layout.d.ts +0 -40
  365. package/src/libs/engine/src/layout/steppable-layout.js +0 -34
  366. package/src/libs/engine/src/layout/subgraph-layout.interface.d.ts +0 -269
  367. package/src/libs/engine/src/layout/subgraph-layout.interface.js +0 -452
  368. package/src/libs/engine/src/layout/sugiyama/layered-layout.d.ts +0 -9
  369. package/src/libs/engine/src/layout/sugiyama/layered-layout.js +0 -83
  370. package/src/libs/engine/src/layout/sugiyama/sugiyama.d.ts +0 -91
  371. package/src/libs/engine/src/layout/sugiyama/sugiyama.js +0 -797
  372. package/src/libs/engine/src/layout/tree-layout.d.ts +0 -43
  373. package/src/libs/engine/src/layout/tree-layout.js +0 -426
  374. package/src/libs/engine/src/layout/types.d.ts +0 -263
  375. package/src/libs/engine/src/layout/types.js +0 -6
  376. package/src/libs/engine/src/lib/performance/mobile-performance.service.d.ts +0 -43
  377. package/src/libs/engine/src/lib/performance/mobile-performance.service.js +0 -95
  378. package/src/libs/engine/src/models/DiagramEntity.d.ts +0 -174
  379. package/src/libs/engine/src/models/DiagramEntity.js +0 -366
  380. package/src/libs/engine/src/models/DiagramModel.d.ts +0 -960
  381. package/src/libs/engine/src/models/DiagramModel.js +0 -2416
  382. package/src/libs/engine/src/models/GroupModel.d.ts +0 -573
  383. package/src/libs/engine/src/models/GroupModel.js +0 -1373
  384. package/src/libs/engine/src/models/LinkModel.d.ts +0 -395
  385. package/src/libs/engine/src/models/LinkModel.js +0 -1045
  386. package/src/libs/engine/src/models/NodeModel.d.ts +0 -666
  387. package/src/libs/engine/src/models/NodeModel.js +0 -1512
  388. package/src/libs/engine/src/models/PortModel.d.ts +0 -292
  389. package/src/libs/engine/src/models/PortModel.js +0 -637
  390. package/src/libs/engine/src/models/StrokeModel.d.ts +0 -160
  391. package/src/libs/engine/src/models/StrokeModel.js +0 -387
  392. package/src/libs/engine/src/models/index.d.ts +0 -7
  393. package/src/libs/engine/src/models/index.js +0 -12
  394. package/src/libs/engine/src/models/readonly-lock.d.ts +0 -108
  395. package/src/libs/engine/src/models/readonly-lock.js +0 -125
  396. package/src/libs/engine/src/performance/LRUCache.d.ts +0 -78
  397. package/src/libs/engine/src/performance/LRUCache.js +0 -179
  398. package/src/libs/engine/src/performance/PerformanceMonitor.d.ts +0 -47
  399. package/src/libs/engine/src/performance/PerformanceMonitor.js +0 -112
  400. package/src/libs/engine/src/performance/SpatialIndex.d.ts +0 -157
  401. package/src/libs/engine/src/performance/SpatialIndex.js +0 -306
  402. package/src/libs/engine/src/performance/index.d.ts +0 -2
  403. package/src/libs/engine/src/performance/index.js +0 -7
  404. package/src/libs/engine/src/plugins/PluginManager.d.ts +0 -95
  405. package/src/libs/engine/src/plugins/PluginManager.js +0 -388
  406. package/src/libs/engine/src/plugins/index.d.ts +0 -1
  407. package/src/libs/engine/src/plugins/index.js +0 -6
  408. package/src/libs/engine/src/ports/connection-rules.d.ts +0 -32
  409. package/src/libs/engine/src/ports/connection-rules.js +0 -131
  410. package/src/libs/engine/src/ports/dynamic-ports.d.ts +0 -27
  411. package/src/libs/engine/src/ports/dynamic-ports.js +0 -135
  412. package/src/libs/engine/src/ports/index.d.ts +0 -5
  413. package/src/libs/engine/src/ports/index.js +0 -16
  414. package/src/libs/engine/src/ports/port-groups.d.ts +0 -43
  415. package/src/libs/engine/src/ports/port-groups.js +0 -185
  416. package/src/libs/engine/src/ports/port-type-registry.d.ts +0 -34
  417. package/src/libs/engine/src/ports/port-type-registry.js +0 -87
  418. package/src/libs/engine/src/ports/port-types.d.ts +0 -266
  419. package/src/libs/engine/src/ports/port-types.js +0 -30
  420. package/src/libs/engine/src/rendering/HtmlTemplateRenderer.d.ts +0 -136
  421. package/src/libs/engine/src/rendering/HtmlTemplateRenderer.js +0 -292
  422. package/src/libs/engine/src/rendering/LemonadeJSRenderer.d.ts +0 -160
  423. package/src/libs/engine/src/rendering/LemonadeJSRenderer.js +0 -362
  424. package/src/libs/engine/src/rendering/index.d.ts +0 -2
  425. package/src/libs/engine/src/rendering/index.js +0 -7
  426. package/src/libs/engine/src/routing/LiveReroutingEngine.d.ts +0 -75
  427. package/src/libs/engine/src/routing/LiveReroutingEngine.js +0 -173
  428. package/src/libs/engine/src/routing/ObstacleIndex.d.ts +0 -42
  429. package/src/libs/engine/src/routing/ObstacleIndex.js +0 -215
  430. package/src/libs/engine/src/routing/ObstacleMap.d.ts +0 -68
  431. package/src/libs/engine/src/routing/ObstacleMap.js +0 -312
  432. package/src/libs/engine/src/routing/ObstacleMapBuilder.d.ts +0 -28
  433. package/src/libs/engine/src/routing/ObstacleMapBuilder.js +0 -76
  434. package/src/libs/engine/src/routing/PathSimplifier.d.ts +0 -119
  435. package/src/libs/engine/src/routing/PathSimplifier.js +0 -224
  436. package/src/libs/engine/src/routing/RoutingEngine.d.ts +0 -118
  437. package/src/libs/engine/src/routing/RoutingEngine.js +0 -546
  438. package/src/libs/engine/src/routing/algorithms/AStarRouter.d.ts +0 -90
  439. package/src/libs/engine/src/routing/algorithms/AStarRouter.js +0 -331
  440. package/src/libs/engine/src/routing/algorithms/DijkstraRouter.d.ts +0 -74
  441. package/src/libs/engine/src/routing/algorithms/DijkstraRouter.js +0 -297
  442. package/src/libs/engine/src/routing/algorithms/ElkRouter.d.ts +0 -34
  443. package/src/libs/engine/src/routing/algorithms/ElkRouter.js +0 -210
  444. package/src/libs/engine/src/routing/algorithms/ManhattanRouter.d.ts +0 -18
  445. package/src/libs/engine/src/routing/algorithms/ManhattanRouter.js +0 -224
  446. package/src/libs/engine/src/routing/algorithms/OrthogonalRouter.d.ts +0 -173
  447. package/src/libs/engine/src/routing/algorithms/OrthogonalRouter.js +0 -1092
  448. package/src/libs/engine/src/routing/algorithms/StraightRouter.d.ts +0 -8
  449. package/src/libs/engine/src/routing/algorithms/StraightRouter.js +0 -53
  450. package/src/libs/engine/src/routing/algorithms/VisibilityGraphRouter.d.ts +0 -59
  451. package/src/libs/engine/src/routing/algorithms/VisibilityGraphRouter.js +0 -258
  452. package/src/libs/engine/src/routing/global/GlobalRouteSolver.d.ts +0 -64
  453. package/src/libs/engine/src/routing/global/GlobalRouteSolver.js +0 -334
  454. package/src/libs/engine/src/routing/global/solver-host.d.ts +0 -65
  455. package/src/libs/engine/src/routing/global/solver-host.js +0 -87
  456. package/src/libs/engine/src/routing/index.d.ts +0 -15
  457. package/src/libs/engine/src/routing/index.js +0 -20
  458. package/src/libs/engine/src/routing/types.d.ts +0 -161
  459. package/src/libs/engine/src/routing/types.js +0 -4
  460. package/src/libs/engine/src/selection/SelectionManager.d.ts +0 -161
  461. package/src/libs/engine/src/selection/SelectionManager.js +0 -483
  462. package/src/libs/engine/src/selection/index.d.ts +0 -1
  463. package/src/libs/engine/src/selection/index.js +0 -6
  464. package/src/libs/engine/src/serialization/DiagramMigrations.d.ts +0 -41
  465. package/src/libs/engine/src/serialization/DiagramMigrations.js +0 -124
  466. package/src/libs/engine/src/serialization/DiagramValidator.d.ts +0 -20
  467. package/src/libs/engine/src/serialization/DiagramValidator.js +0 -136
  468. package/src/libs/engine/src/serialization/DocumentEnvelope.d.ts +0 -53
  469. package/src/libs/engine/src/serialization/DocumentEnvelope.js +0 -111
  470. package/src/libs/engine/src/serialization/Incremental.d.ts +0 -77
  471. package/src/libs/engine/src/serialization/Incremental.js +0 -227
  472. package/src/libs/engine/src/serialization/Serializer.d.ts +0 -29
  473. package/src/libs/engine/src/serialization/Serializer.js +0 -45
  474. package/src/libs/engine/src/serialization/Subgraph.d.ts +0 -51
  475. package/src/libs/engine/src/serialization/Subgraph.js +0 -172
  476. package/src/libs/engine/src/serialization/TextFormat.d.ts +0 -71
  477. package/src/libs/engine/src/serialization/TextFormat.js +0 -261
  478. package/src/libs/engine/src/state/ConnectionStateManager.d.ts +0 -178
  479. package/src/libs/engine/src/state/ConnectionStateManager.js +0 -319
  480. package/src/libs/engine/src/state/DiagramStore.d.ts +0 -134
  481. package/src/libs/engine/src/state/DiagramStore.js +0 -372
  482. package/src/libs/engine/src/state/index.d.ts +0 -2
  483. package/src/libs/engine/src/state/index.js +0 -7
  484. package/src/libs/engine/src/sync/awareness.d.ts +0 -91
  485. package/src/libs/engine/src/sync/awareness.js +0 -221
  486. package/src/libs/engine/src/sync/batcher.d.ts +0 -84
  487. package/src/libs/engine/src/sync/batcher.js +0 -0
  488. package/src/libs/engine/src/sync/causal-buffer.d.ts +0 -81
  489. package/src/libs/engine/src/sync/causal-buffer.js +0 -199
  490. package/src/libs/engine/src/sync/index.d.ts +0 -20
  491. package/src/libs/engine/src/sync/index.js +0 -41
  492. package/src/libs/engine/src/sync/protocol.d.ts +0 -74
  493. package/src/libs/engine/src/sync/protocol.js +0 -39
  494. package/src/libs/engine/src/sync/sync-adapter.d.ts +0 -243
  495. package/src/libs/engine/src/sync/sync-adapter.js +0 -524
  496. package/src/libs/engine/src/sync/transport.d.ts +0 -30
  497. package/src/libs/engine/src/sync/transport.js +0 -28
  498. package/src/libs/engine/src/sync/transports/broadcast-channel.d.ts +0 -39
  499. package/src/libs/engine/src/sync/transports/broadcast-channel.js +0 -117
  500. package/src/libs/engine/src/sync/transports/memory.d.ts +0 -38
  501. package/src/libs/engine/src/sync/transports/memory.js +0 -111
  502. package/src/libs/engine/src/sync/transports/unreliable.d.ts +0 -59
  503. package/src/libs/engine/src/sync/transports/unreliable.js +0 -153
  504. package/src/libs/engine/src/sync/transports/websocket.d.ts +0 -60
  505. package/src/libs/engine/src/sync/transports/websocket.js +0 -210
  506. package/src/libs/engine/src/sync/version-vector.d.ts +0 -47
  507. package/src/libs/engine/src/sync/version-vector.js +0 -218
  508. package/src/libs/engine/src/template-library/common-templates.d.ts +0 -46
  509. package/src/libs/engine/src/template-library/common-templates.js +0 -395
  510. package/src/libs/engine/src/template-library/data-viz-templates.d.ts +0 -52
  511. package/src/libs/engine/src/template-library/data-viz-templates.js +0 -471
  512. package/src/libs/engine/src/template-library/erd-templates.d.ts +0 -71
  513. package/src/libs/engine/src/template-library/erd-templates.js +0 -773
  514. package/src/libs/engine/src/template-library/index.d.ts +0 -141
  515. package/src/libs/engine/src/template-library/index.js +0 -271
  516. package/src/libs/engine/src/template-library/integration.d.ts +0 -80
  517. package/src/libs/engine/src/template-library/integration.js +0 -141
  518. package/src/libs/engine/src/template-library/workflow-templates.d.ts +0 -52
  519. package/src/libs/engine/src/template-library/workflow-templates.js +0 -438
  520. package/src/libs/engine/src/templates/NodeFactory.d.ts +0 -118
  521. package/src/libs/engine/src/templates/NodeFactory.js +0 -436
  522. package/src/libs/engine/src/templates/NodeTemplate.d.ts +0 -342
  523. package/src/libs/engine/src/templates/NodeTemplate.js +0 -13
  524. package/src/libs/engine/src/templates/TemplateLoader.d.ts +0 -46
  525. package/src/libs/engine/src/templates/TemplateLoader.js +0 -114
  526. package/src/libs/engine/src/templates/TemplateRegistry.d.ts +0 -70
  527. package/src/libs/engine/src/templates/TemplateRegistry.js +0 -128
  528. package/src/libs/engine/src/templates/generated/bpmn/bpmn-business-rule-task.template.d.ts +0 -11
  529. package/src/libs/engine/src/templates/generated/bpmn/bpmn-business-rule-task.template.js +0 -123
  530. package/src/libs/engine/src/templates/generated/bpmn/bpmn-end-event.template.d.ts +0 -11
  531. package/src/libs/engine/src/templates/generated/bpmn/bpmn-end-event.template.js +0 -123
  532. package/src/libs/engine/src/templates/generated/bpmn/bpmn-error-event.template.d.ts +0 -11
  533. package/src/libs/engine/src/templates/generated/bpmn/bpmn-error-event.template.js +0 -123
  534. package/src/libs/engine/src/templates/generated/bpmn/bpmn-exclusive-gateway.template.d.ts +0 -11
  535. package/src/libs/engine/src/templates/generated/bpmn/bpmn-exclusive-gateway.template.js +0 -124
  536. package/src/libs/engine/src/templates/generated/bpmn/bpmn-inclusive-gateway.template.d.ts +0 -11
  537. package/src/libs/engine/src/templates/generated/bpmn/bpmn-inclusive-gateway.template.js +0 -123
  538. package/src/libs/engine/src/templates/generated/bpmn/bpmn-intermediate-event.template.d.ts +0 -11
  539. package/src/libs/engine/src/templates/generated/bpmn/bpmn-intermediate-event.template.js +0 -124
  540. package/src/libs/engine/src/templates/generated/bpmn/bpmn-manual-task.template.d.ts +0 -11
  541. package/src/libs/engine/src/templates/generated/bpmn/bpmn-manual-task.template.js +0 -123
  542. package/src/libs/engine/src/templates/generated/bpmn/bpmn-message-event.template.d.ts +0 -11
  543. package/src/libs/engine/src/templates/generated/bpmn/bpmn-message-event.template.js +0 -122
  544. package/src/libs/engine/src/templates/generated/bpmn/bpmn-parallel-gateway.template.d.ts +0 -11
  545. package/src/libs/engine/src/templates/generated/bpmn/bpmn-parallel-gateway.template.js +0 -125
  546. package/src/libs/engine/src/templates/generated/bpmn/bpmn-script-task.template.d.ts +0 -11
  547. package/src/libs/engine/src/templates/generated/bpmn/bpmn-script-task.template.js +0 -123
  548. package/src/libs/engine/src/templates/generated/bpmn/bpmn-service-task.template.d.ts +0 -11
  549. package/src/libs/engine/src/templates/generated/bpmn/bpmn-service-task.template.js +0 -123
  550. package/src/libs/engine/src/templates/generated/bpmn/bpmn-start-event.template.d.ts +0 -11
  551. package/src/libs/engine/src/templates/generated/bpmn/bpmn-start-event.template.js +0 -123
  552. package/src/libs/engine/src/templates/generated/bpmn/bpmn-task.template.d.ts +0 -11
  553. package/src/libs/engine/src/templates/generated/bpmn/bpmn-task.template.js +0 -152
  554. package/src/libs/engine/src/templates/generated/bpmn/bpmn-timer-event.template.d.ts +0 -11
  555. package/src/libs/engine/src/templates/generated/bpmn/bpmn-timer-event.template.js +0 -123
  556. package/src/libs/engine/src/templates/generated/bpmn/bpmn-user-task.template.d.ts +0 -11
  557. package/src/libs/engine/src/templates/generated/bpmn/bpmn-user-task.template.js +0 -123
  558. package/src/libs/engine/src/templates/generated/bpmn/index.d.ts +0 -15
  559. package/src/libs/engine/src/templates/generated/bpmn/index.js +0 -34
  560. package/src/libs/engine/src/templates/generated/erd/erd-associative-entity.template.d.ts +0 -11
  561. package/src/libs/engine/src/templates/generated/erd/erd-associative-entity.template.js +0 -152
  562. package/src/libs/engine/src/templates/generated/erd/erd-attribute.template.d.ts +0 -11
  563. package/src/libs/engine/src/templates/generated/erd/erd-attribute.template.js +0 -122
  564. package/src/libs/engine/src/templates/generated/erd/erd-bridge-entity.template.d.ts +0 -11
  565. package/src/libs/engine/src/templates/generated/erd/erd-bridge-entity.template.js +0 -151
  566. package/src/libs/engine/src/templates/generated/erd/erd-composite-attribute.template.d.ts +0 -11
  567. package/src/libs/engine/src/templates/generated/erd/erd-composite-attribute.template.js +0 -122
  568. package/src/libs/engine/src/templates/generated/erd/erd-derived-attribute.template.d.ts +0 -11
  569. package/src/libs/engine/src/templates/generated/erd/erd-derived-attribute.template.js +0 -122
  570. package/src/libs/engine/src/templates/generated/erd/erd-discriminator.template.d.ts +0 -11
  571. package/src/libs/engine/src/templates/generated/erd/erd-discriminator.template.js +0 -123
  572. package/src/libs/engine/src/templates/generated/erd/erd-entity.template.d.ts +0 -11
  573. package/src/libs/engine/src/templates/generated/erd/erd-entity.template.js +0 -149
  574. package/src/libs/engine/src/templates/generated/erd/erd-isa.template.d.ts +0 -11
  575. package/src/libs/engine/src/templates/generated/erd/erd-isa.template.js +0 -123
  576. package/src/libs/engine/src/templates/generated/erd/erd-key-attribute.template.d.ts +0 -11
  577. package/src/libs/engine/src/templates/generated/erd/erd-key-attribute.template.js +0 -122
  578. package/src/libs/engine/src/templates/generated/erd/erd-multivalued-attribute.template.d.ts +0 -11
  579. package/src/libs/engine/src/templates/generated/erd/erd-multivalued-attribute.template.js +0 -122
  580. package/src/libs/engine/src/templates/generated/erd/erd-optional-attribute.template.d.ts +0 -11
  581. package/src/libs/engine/src/templates/generated/erd/erd-optional-attribute.template.js +0 -122
  582. package/src/libs/engine/src/templates/generated/erd/erd-partial-key.template.d.ts +0 -11
  583. package/src/libs/engine/src/templates/generated/erd/erd-partial-key.template.js +0 -123
  584. package/src/libs/engine/src/templates/generated/erd/erd-relationship.template.d.ts +0 -11
  585. package/src/libs/engine/src/templates/generated/erd/erd-relationship.template.js +0 -121
  586. package/src/libs/engine/src/templates/generated/erd/erd-subtype.template.d.ts +0 -11
  587. package/src/libs/engine/src/templates/generated/erd/erd-subtype.template.js +0 -123
  588. package/src/libs/engine/src/templates/generated/erd/erd-supertype.template.d.ts +0 -11
  589. package/src/libs/engine/src/templates/generated/erd/erd-supertype.template.js +0 -123
  590. package/src/libs/engine/src/templates/generated/erd/erd-table.template.d.ts +0 -11
  591. package/src/libs/engine/src/templates/generated/erd/erd-table.template.js +0 -123
  592. package/src/libs/engine/src/templates/generated/erd/erd-view.template.d.ts +0 -11
  593. package/src/libs/engine/src/templates/generated/erd/erd-view.template.js +0 -123
  594. package/src/libs/engine/src/templates/generated/erd/erd-weak-entity.template.d.ts +0 -11
  595. package/src/libs/engine/src/templates/generated/erd/erd-weak-entity.template.js +0 -149
  596. package/src/libs/engine/src/templates/generated/erd/erd-weak-relationship.template.d.ts +0 -11
  597. package/src/libs/engine/src/templates/generated/erd/erd-weak-relationship.template.js +0 -122
  598. package/src/libs/engine/src/templates/generated/erd/index.d.ts +0 -19
  599. package/src/libs/engine/src/templates/generated/erd/index.js +0 -42
  600. package/src/libs/engine/src/templates/generated/flowchart/flowchart-connector.template.d.ts +0 -11
  601. package/src/libs/engine/src/templates/generated/flowchart/flowchart-connector.template.js +0 -123
  602. package/src/libs/engine/src/templates/generated/flowchart/flowchart-data.template.d.ts +0 -11
  603. package/src/libs/engine/src/templates/generated/flowchart/flowchart-data.template.js +0 -123
  604. package/src/libs/engine/src/templates/generated/flowchart/flowchart-decision.template.d.ts +0 -11
  605. package/src/libs/engine/src/templates/generated/flowchart/flowchart-decision.template.js +0 -123
  606. package/src/libs/engine/src/templates/generated/flowchart/flowchart-delay.template.d.ts +0 -11
  607. package/src/libs/engine/src/templates/generated/flowchart/flowchart-delay.template.js +0 -124
  608. package/src/libs/engine/src/templates/generated/flowchart/flowchart-display.template.d.ts +0 -11
  609. package/src/libs/engine/src/templates/generated/flowchart/flowchart-display.template.js +0 -124
  610. package/src/libs/engine/src/templates/generated/flowchart/flowchart-document.template.d.ts +0 -11
  611. package/src/libs/engine/src/templates/generated/flowchart/flowchart-document.template.js +0 -123
  612. package/src/libs/engine/src/templates/generated/flowchart/flowchart-manual-input.template.d.ts +0 -11
  613. package/src/libs/engine/src/templates/generated/flowchart/flowchart-manual-input.template.js +0 -123
  614. package/src/libs/engine/src/templates/generated/flowchart/flowchart-manual-operation.template.d.ts +0 -11
  615. package/src/libs/engine/src/templates/generated/flowchart/flowchart-manual-operation.template.js +0 -122
  616. package/src/libs/engine/src/templates/generated/flowchart/flowchart-merge.template.d.ts +0 -11
  617. package/src/libs/engine/src/templates/generated/flowchart/flowchart-merge.template.js +0 -122
  618. package/src/libs/engine/src/templates/generated/flowchart/flowchart-or.template.d.ts +0 -11
  619. package/src/libs/engine/src/templates/generated/flowchart/flowchart-or.template.js +0 -123
  620. package/src/libs/engine/src/templates/generated/flowchart/flowchart-predefined-process.template.d.ts +0 -11
  621. package/src/libs/engine/src/templates/generated/flowchart/flowchart-predefined-process.template.js +0 -123
  622. package/src/libs/engine/src/templates/generated/flowchart/flowchart-preparation.template.d.ts +0 -11
  623. package/src/libs/engine/src/templates/generated/flowchart/flowchart-preparation.template.js +0 -123
  624. package/src/libs/engine/src/templates/generated/flowchart/flowchart-process.template.d.ts +0 -11
  625. package/src/libs/engine/src/templates/generated/flowchart/flowchart-process.template.js +0 -122
  626. package/src/libs/engine/src/templates/generated/flowchart/flowchart-stored-data.template.d.ts +0 -11
  627. package/src/libs/engine/src/templates/generated/flowchart/flowchart-stored-data.template.js +0 -123
  628. package/src/libs/engine/src/templates/generated/flowchart/flowchart-summing-junction.template.d.ts +0 -11
  629. package/src/libs/engine/src/templates/generated/flowchart/flowchart-summing-junction.template.js +0 -124
  630. package/src/libs/engine/src/templates/generated/flowchart/flowchart-terminal.template.d.ts +0 -11
  631. package/src/libs/engine/src/templates/generated/flowchart/flowchart-terminal.template.js +0 -124
  632. package/src/libs/engine/src/templates/generated/flowchart/index.d.ts +0 -16
  633. package/src/libs/engine/src/templates/generated/flowchart/index.js +0 -36
  634. package/src/libs/engine/src/templates/generated/index.d.ts +0 -9
  635. package/src/libs/engine/src/templates/generated/index.js +0 -13
  636. package/src/libs/engine/src/templates/generated/register.d.ts +0 -23
  637. package/src/libs/engine/src/templates/generated/register.js +0 -31
  638. package/src/libs/engine/src/templates/generated/uml/index.d.ts +0 -30
  639. package/src/libs/engine/src/templates/generated/uml/index.js +0 -64
  640. package/src/libs/engine/src/templates/generated/uml/uml-abstract-class.template.d.ts +0 -11
  641. package/src/libs/engine/src/templates/generated/uml/uml-abstract-class.template.js +0 -204
  642. package/src/libs/engine/src/templates/generated/uml/uml-activation.template.d.ts +0 -11
  643. package/src/libs/engine/src/templates/generated/uml/uml-activation.template.js +0 -124
  644. package/src/libs/engine/src/templates/generated/uml/uml-activity-partition.template.d.ts +0 -11
  645. package/src/libs/engine/src/templates/generated/uml/uml-activity-partition.template.js +0 -124
  646. package/src/libs/engine/src/templates/generated/uml/uml-activity.template.d.ts +0 -11
  647. package/src/libs/engine/src/templates/generated/uml/uml-activity.template.js +0 -123
  648. package/src/libs/engine/src/templates/generated/uml/uml-actor.template.d.ts +0 -11
  649. package/src/libs/engine/src/templates/generated/uml/uml-actor.template.js +0 -123
  650. package/src/libs/engine/src/templates/generated/uml/uml-class.template.d.ts +0 -11
  651. package/src/libs/engine/src/templates/generated/uml/uml-class.template.js +0 -204
  652. package/src/libs/engine/src/templates/generated/uml/uml-collaboration.template.d.ts +0 -11
  653. package/src/libs/engine/src/templates/generated/uml/uml-collaboration.template.js +0 -122
  654. package/src/libs/engine/src/templates/generated/uml/uml-component.template.d.ts +0 -11
  655. package/src/libs/engine/src/templates/generated/uml/uml-component.template.js +0 -122
  656. package/src/libs/engine/src/templates/generated/uml/uml-datatype.template.d.ts +0 -11
  657. package/src/libs/engine/src/templates/generated/uml/uml-datatype.template.js +0 -204
  658. package/src/libs/engine/src/templates/generated/uml/uml-decision.template.d.ts +0 -11
  659. package/src/libs/engine/src/templates/generated/uml/uml-decision.template.js +0 -124
  660. package/src/libs/engine/src/templates/generated/uml/uml-enum.template.d.ts +0 -11
  661. package/src/libs/engine/src/templates/generated/uml/uml-enum.template.js +0 -204
  662. package/src/libs/engine/src/templates/generated/uml/uml-final-node.template.d.ts +0 -11
  663. package/src/libs/engine/src/templates/generated/uml/uml-final-node.template.js +0 -124
  664. package/src/libs/engine/src/templates/generated/uml/uml-final-state.template.d.ts +0 -11
  665. package/src/libs/engine/src/templates/generated/uml/uml-final-state.template.js +0 -124
  666. package/src/libs/engine/src/templates/generated/uml/uml-fork.template.d.ts +0 -11
  667. package/src/libs/engine/src/templates/generated/uml/uml-fork.template.js +0 -125
  668. package/src/libs/engine/src/templates/generated/uml/uml-initial-node.template.d.ts +0 -11
  669. package/src/libs/engine/src/templates/generated/uml/uml-initial-node.template.js +0 -123
  670. package/src/libs/engine/src/templates/generated/uml/uml-initial-state.template.d.ts +0 -11
  671. package/src/libs/engine/src/templates/generated/uml/uml-initial-state.template.js +0 -123
  672. package/src/libs/engine/src/templates/generated/uml/uml-interface.template.d.ts +0 -11
  673. package/src/libs/engine/src/templates/generated/uml/uml-interface.template.js +0 -204
  674. package/src/libs/engine/src/templates/generated/uml/uml-join.template.d.ts +0 -11
  675. package/src/libs/engine/src/templates/generated/uml/uml-join.template.js +0 -125
  676. package/src/libs/engine/src/templates/generated/uml/uml-lifeline.template.d.ts +0 -11
  677. package/src/libs/engine/src/templates/generated/uml/uml-lifeline.template.js +0 -123
  678. package/src/libs/engine/src/templates/generated/uml/uml-merge.template.d.ts +0 -11
  679. package/src/libs/engine/src/templates/generated/uml/uml-merge.template.js +0 -122
  680. package/src/libs/engine/src/templates/generated/uml/uml-node.template.d.ts +0 -11
  681. package/src/libs/engine/src/templates/generated/uml/uml-node.template.js +0 -122
  682. package/src/libs/engine/src/templates/generated/uml/uml-note.template.d.ts +0 -11
  683. package/src/libs/engine/src/templates/generated/uml/uml-note.template.js +0 -123
  684. package/src/libs/engine/src/templates/generated/uml/uml-object.template.d.ts +0 -11
  685. package/src/libs/engine/src/templates/generated/uml/uml-object.template.js +0 -204
  686. package/src/libs/engine/src/templates/generated/uml/uml-package.template.d.ts +0 -11
  687. package/src/libs/engine/src/templates/generated/uml/uml-package.template.js +0 -123
  688. package/src/libs/engine/src/templates/generated/uml/uml-part.template.d.ts +0 -11
  689. package/src/libs/engine/src/templates/generated/uml/uml-part.template.js +0 -122
  690. package/src/libs/engine/src/templates/generated/uml/uml-port.template.d.ts +0 -11
  691. package/src/libs/engine/src/templates/generated/uml/uml-port.template.js +0 -123
  692. package/src/libs/engine/src/templates/generated/uml/uml-primitive-type.template.d.ts +0 -11
  693. package/src/libs/engine/src/templates/generated/uml/uml-primitive-type.template.js +0 -204
  694. package/src/libs/engine/src/templates/generated/uml/uml-signal.template.d.ts +0 -11
  695. package/src/libs/engine/src/templates/generated/uml/uml-signal.template.js +0 -123
  696. package/src/libs/engine/src/templates/generated/uml/uml-state.template.d.ts +0 -11
  697. package/src/libs/engine/src/templates/generated/uml/uml-state.template.js +0 -123
  698. package/src/libs/engine/src/templates/generated/uml/uml-use-case.template.d.ts +0 -11
  699. package/src/libs/engine/src/templates/generated/uml/uml-use-case.template.js +0 -122
  700. package/src/libs/engine/src/templates/index.d.ts +0 -12
  701. package/src/libs/engine/src/templates/index.js +0 -27
  702. package/src/libs/engine/src/templates/stencils.d.ts +0 -45
  703. package/src/libs/engine/src/templates/stencils.js +0 -85
  704. package/src/libs/engine/src/types/domain/bpmn.d.ts +0 -25
  705. package/src/libs/engine/src/types/domain/bpmn.js +0 -313
  706. package/src/libs/engine/src/types/domain/erd.d.ts +0 -29
  707. package/src/libs/engine/src/types/domain/erd.js +0 -394
  708. package/src/libs/engine/src/types/domain/flowchart.d.ts +0 -26
  709. package/src/libs/engine/src/types/domain/flowchart.js +0 -434
  710. package/src/libs/engine/src/types/domain/index.d.ts +0 -4
  711. package/src/libs/engine/src/types/domain/index.js +0 -9
  712. package/src/libs/engine/src/types/domain/uml.d.ts +0 -40
  713. package/src/libs/engine/src/types/domain/uml.js +0 -758
  714. package/src/libs/engine/src/types/event.types.d.ts +0 -142
  715. package/src/libs/engine/src/types/event.types.js +0 -96
  716. package/src/libs/engine/src/types/geometry.types.d.ts +0 -84
  717. package/src/libs/engine/src/types/geometry.types.js +0 -16
  718. package/src/libs/engine/src/types/index.d.ts +0 -7
  719. package/src/libs/engine/src/types/index.js +0 -14
  720. package/src/libs/engine/src/types/layout.types.d.ts +0 -148
  721. package/src/libs/engine/src/types/layout.types.js +0 -28
  722. package/src/libs/engine/src/types/model.types.d.ts +0 -378
  723. package/src/libs/engine/src/types/model.types.js +0 -4
  724. package/src/libs/engine/src/types/performance.types.d.ts +0 -109
  725. package/src/libs/engine/src/types/performance.types.js +0 -122
  726. package/src/libs/engine/src/types/plugin.types.d.ts +0 -30
  727. package/src/libs/engine/src/types/plugin.types.js +0 -4
  728. package/src/libs/engine/src/utils/deep-clone.d.ts +0 -9
  729. package/src/libs/engine/src/utils/deep-clone.js +0 -123
  730. package/src/libs/engine/src/utils/geometry.d.ts +0 -45
  731. package/src/libs/engine/src/utils/geometry.js +0 -241
  732. package/src/libs/engine/src/utils/id.d.ts +0 -22
  733. package/src/libs/engine/src/utils/id.js +0 -44
  734. package/src/libs/engine/src/utils/index.d.ts +0 -3
  735. package/src/libs/engine/src/utils/index.js +0 -8
  736. package/src/libs/engine/src/utils/transform.d.ts +0 -84
  737. package/src/libs/engine/src/utils/transform.js +0 -200
  738. package/src/libs/engine/src/validation/ConnectionGroupValidator.d.ts +0 -22
  739. package/src/libs/engine/src/validation/ConnectionGroupValidator.js +0 -56
  740. package/src/libs/engine/src/validation/TypeRegistry.d.ts +0 -179
  741. package/src/libs/engine/src/validation/TypeRegistry.js +0 -358
  742. package/src/libs/engine/src/validation/ValidationEngine.d.ts +0 -79
  743. package/src/libs/engine/src/validation/ValidationEngine.js +0 -1150
  744. package/src/libs/engine/src/validation/index.d.ts +0 -3
  745. package/src/libs/engine/src/validation/index.js +0 -8
  746. package/src/libs/renderer/src/a11y/diagram-outline.d.ts +0 -93
  747. package/src/libs/renderer/src/a11y/diagram-outline.js +0 -0
  748. package/src/libs/renderer/src/a11y/focus-containment.d.ts +0 -90
  749. package/src/libs/renderer/src/a11y/focus-containment.js +0 -173
  750. package/src/libs/renderer/src/a11y/graph-topology.d.ts +0 -70
  751. package/src/libs/renderer/src/a11y/graph-topology.js +0 -0
  752. package/src/libs/renderer/src/a11y/index.d.ts +0 -26
  753. package/src/libs/renderer/src/a11y/index.js +0 -30
  754. package/src/libs/renderer/src/a11y/live-region.d.ts +0 -83
  755. package/src/libs/renderer/src/a11y/live-region.js +0 -170
  756. package/src/libs/renderer/src/a11y/outline-view.d.ts +0 -62
  757. package/src/libs/renderer/src/a11y/outline-view.js +0 -158
  758. package/src/libs/renderer/src/a11y/reduced-motion.d.ts +0 -48
  759. package/src/libs/renderer/src/a11y/reduced-motion.js +0 -223
  760. package/src/libs/renderer/src/a11y/semantics.d.ts +0 -76
  761. package/src/libs/renderer/src/a11y/semantics.js +0 -229
  762. package/src/libs/renderer/src/canvas/canvas-context.d.ts +0 -167
  763. package/src/libs/renderer/src/canvas/canvas-context.js +0 -267
  764. package/src/libs/renderer/src/canvas/canvas-renderer.d.ts +0 -194
  765. package/src/libs/renderer/src/canvas/canvas-renderer.js +0 -600
  766. package/src/libs/renderer/src/canvas/dirty-region.d.ts +0 -56
  767. package/src/libs/renderer/src/canvas/dirty-region.js +0 -171
  768. package/src/libs/renderer/src/canvas/index.d.ts +0 -16
  769. package/src/libs/renderer/src/canvas/index.js +0 -79
  770. package/src/libs/renderer/src/canvas/path-geometry.d.ts +0 -112
  771. package/src/libs/renderer/src/canvas/path-geometry.js +0 -673
  772. package/src/libs/renderer/src/canvas/render-backend.d.ts +0 -133
  773. package/src/libs/renderer/src/canvas/render-backend.js +0 -339
  774. package/src/libs/renderer/src/canvas/style-resolution.d.ts +0 -101
  775. package/src/libs/renderer/src/canvas/style-resolution.js +0 -466
  776. package/src/libs/renderer/src/canvas/tier-policy.d.ts +0 -33
  777. package/src/libs/renderer/src/canvas/tier-policy.js +0 -89
  778. package/src/libs/renderer/src/canvas/vnode-painter.d.ts +0 -154
  779. package/src/libs/renderer/src/canvas/vnode-painter.js +0 -649
  780. package/src/libs/renderer/src/comments/comment-overlay.d.ts +0 -56
  781. package/src/libs/renderer/src/comments/comment-overlay.js +0 -127
  782. package/src/libs/renderer/src/comments/comment-panel.d.ts +0 -45
  783. package/src/libs/renderer/src/comments/comment-panel.js +0 -287
  784. package/src/libs/renderer/src/comments/comment-pins.d.ts +0 -34
  785. package/src/libs/renderer/src/comments/comment-pins.js +0 -227
  786. package/src/libs/renderer/src/comments/index.d.ts +0 -3
  787. package/src/libs/renderer/src/comments/index.js +0 -17
  788. package/src/libs/renderer/src/export/assets.d.ts +0 -96
  789. package/src/libs/renderer/src/export/assets.js +0 -350
  790. package/src/libs/renderer/src/export/batch.d.ts +0 -49
  791. package/src/libs/renderer/src/export/batch.js +0 -95
  792. package/src/libs/renderer/src/export/bounds.d.ts +0 -81
  793. package/src/libs/renderer/src/export/bounds.js +0 -367
  794. package/src/libs/renderer/src/export/capture-host.d.ts +0 -39
  795. package/src/libs/renderer/src/export/capture-host.js +0 -1259
  796. package/src/libs/renderer/src/export/custom-nodes.d.ts +0 -88
  797. package/src/libs/renderer/src/export/custom-nodes.js +0 -237
  798. package/src/libs/renderer/src/export/index.d.ts +0 -14
  799. package/src/libs/renderer/src/export/index.js +0 -30
  800. package/src/libs/renderer/src/export/node-raster.d.ts +0 -60
  801. package/src/libs/renderer/src/export/node-raster.js +0 -161
  802. package/src/libs/renderer/src/export/pagination.d.ts +0 -116
  803. package/src/libs/renderer/src/export/pagination.js +0 -245
  804. package/src/libs/renderer/src/export/pdf/flate.d.ts +0 -13
  805. package/src/libs/renderer/src/export/pdf/flate.js +0 -287
  806. package/src/libs/renderer/src/export/pdf/index.d.ts +0 -4
  807. package/src/libs/renderer/src/export/pdf/index.js +0 -15
  808. package/src/libs/renderer/src/export/pdf/pdf-export.d.ts +0 -64
  809. package/src/libs/renderer/src/export/pdf/pdf-export.js +0 -1076
  810. package/src/libs/renderer/src/export/pdf/pdf-path.d.ts +0 -17
  811. package/src/libs/renderer/src/export/pdf/pdf-path.js +0 -85
  812. package/src/libs/renderer/src/export/pdf/pdf-primitives.d.ts +0 -115
  813. package/src/libs/renderer/src/export/pdf/pdf-primitives.js +0 -338
  814. package/src/libs/renderer/src/export/pdf/png.d.ts +0 -25
  815. package/src/libs/renderer/src/export/pdf/png.js +0 -596
  816. package/src/libs/renderer/src/export/raster.d.ts +0 -42
  817. package/src/libs/renderer/src/export/raster.js +0 -126
  818. package/src/libs/renderer/src/export/round-trip.d.ts +0 -83
  819. package/src/libs/renderer/src/export/round-trip.js +0 -432
  820. package/src/libs/renderer/src/export/scope.d.ts +0 -16
  821. package/src/libs/renderer/src/export/scope.js +0 -69
  822. package/src/libs/renderer/src/export/style-flattener.d.ts +0 -23
  823. package/src/libs/renderer/src/export/style-flattener.js +0 -144
  824. package/src/libs/renderer/src/export/svg-export.d.ts +0 -123
  825. package/src/libs/renderer/src/export/svg-export.js +0 -178
  826. package/src/libs/renderer/src/export/vnode-serializer.d.ts +0 -75
  827. package/src/libs/renderer/src/export/vnode-serializer.js +0 -344
  828. package/src/libs/renderer/src/ext/capabilities.d.ts +0 -178
  829. package/src/libs/renderer/src/ext/capabilities.js +0 -22
  830. package/src/libs/renderer/src/ext/capability-factory.d.ts +0 -44
  831. package/src/libs/renderer/src/ext/capability-factory.js +0 -194
  832. package/src/libs/renderer/src/ext/components/attach.d.ts +0 -66
  833. package/src/libs/renderer/src/ext/components/attach.js +0 -112
  834. package/src/libs/renderer/src/ext/components/background.d.ts +0 -84
  835. package/src/libs/renderer/src/ext/components/background.js +0 -202
  836. package/src/libs/renderer/src/ext/components/controls.d.ts +0 -49
  837. package/src/libs/renderer/src/ext/components/controls.js +0 -144
  838. package/src/libs/renderer/src/ext/components/minimap.d.ts +0 -78
  839. package/src/libs/renderer/src/ext/components/minimap.js +0 -326
  840. package/src/libs/renderer/src/ext/diagram-registry.d.ts +0 -109
  841. package/src/libs/renderer/src/ext/diagram-registry.js +0 -303
  842. package/src/libs/renderer/src/ext/disposable.d.ts +0 -51
  843. package/src/libs/renderer/src/ext/disposable.js +0 -104
  844. package/src/libs/renderer/src/ext/extension-host.d.ts +0 -144
  845. package/src/libs/renderer/src/ext/extension-host.js +0 -272
  846. package/src/libs/renderer/src/ext/index.d.ts +0 -62
  847. package/src/libs/renderer/src/ext/index.js +0 -91
  848. package/src/libs/renderer/src/ext/link-pipeline.d.ts +0 -195
  849. package/src/libs/renderer/src/ext/link-pipeline.js +0 -431
  850. package/src/libs/renderer/src/ext/manifest.d.ts +0 -73
  851. package/src/libs/renderer/src/ext/manifest.js +0 -149
  852. package/src/libs/renderer/src/ext/node-component.d.ts +0 -114
  853. package/src/libs/renderer/src/ext/node-component.js +0 -290
  854. package/src/libs/renderer/src/ext/plugins-loader.d.ts +0 -1
  855. package/src/libs/renderer/src/ext/plugins-loader.js +0 -18
  856. package/src/libs/renderer/src/ext/portal.d.ts +0 -129
  857. package/src/libs/renderer/src/ext/portal.js +0 -267
  858. package/src/libs/renderer/src/ext/public-api.d.ts +0 -101
  859. package/src/libs/renderer/src/ext/public-api.js +0 -201
  860. package/src/libs/renderer/src/ext/registry-scope.d.ts +0 -93
  861. package/src/libs/renderer/src/ext/registry-scope.js +0 -142
  862. package/src/libs/renderer/src/ext/tools.d.ts +0 -164
  863. package/src/libs/renderer/src/ext/tools.js +0 -170
  864. package/src/libs/renderer/src/index.d.ts +0 -34
  865. package/src/libs/renderer/src/index.js +0 -108
  866. package/src/libs/renderer/src/instance/create-diagram.d.ts +0 -385
  867. package/src/libs/renderer/src/instance/create-diagram.js +0 -1150
  868. package/src/libs/renderer/src/instance/diagram-instance.d.ts +0 -48
  869. package/src/libs/renderer/src/instance/diagram-instance.js +0 -51
  870. package/src/libs/renderer/src/instance/dom-event-binder.d.ts +0 -394
  871. package/src/libs/renderer/src/instance/dom-event-binder.js +0 -2104
  872. package/src/libs/renderer/src/instance/index.d.ts +0 -5
  873. package/src/libs/renderer/src/instance/index.js +0 -13
  874. package/src/libs/renderer/src/instance/layers.d.ts +0 -31
  875. package/src/libs/renderer/src/instance/layers.js +0 -43
  876. package/src/libs/renderer/src/instance/model-input.d.ts +0 -229
  877. package/src/libs/renderer/src/instance/model-input.js +0 -325
  878. package/src/libs/renderer/src/instance/render-scheduler.d.ts +0 -79
  879. package/src/libs/renderer/src/instance/render-scheduler.js +0 -96
  880. package/src/libs/renderer/src/instance/wheel-scroll-yield.d.ts +0 -38
  881. package/src/libs/renderer/src/instance/wheel-scroll-yield.js +0 -118
  882. package/src/libs/renderer/src/interaction/ControlPointEditor.d.ts +0 -160
  883. package/src/libs/renderer/src/interaction/ControlPointEditor.js +0 -360
  884. package/src/libs/renderer/src/interaction/WaypointEditor.d.ts +0 -133
  885. package/src/libs/renderer/src/interaction/WaypointEditor.js +0 -263
  886. package/src/libs/renderer/src/interaction/highlighters.d.ts +0 -88
  887. package/src/libs/renderer/src/interaction/highlighters.js +0 -212
  888. package/src/libs/renderer/src/interaction/in-place-editor.d.ts +0 -63
  889. package/src/libs/renderer/src/interaction/in-place-editor.js +0 -141
  890. package/src/libs/renderer/src/interaction/index.d.ts +0 -11
  891. package/src/libs/renderer/src/interaction/index.js +0 -29
  892. package/src/libs/renderer/src/interaction/ink-overlay.d.ts +0 -53
  893. package/src/libs/renderer/src/interaction/ink-overlay.js +0 -154
  894. package/src/libs/renderer/src/interaction/interaction-controller.d.ts +0 -555
  895. package/src/libs/renderer/src/interaction/interaction-controller.js +0 -1733
  896. package/src/libs/renderer/src/interaction/keyboard-navigation.d.ts +0 -223
  897. package/src/libs/renderer/src/interaction/keyboard-navigation.js +0 -885
  898. package/src/libs/renderer/src/interaction/selection-tools.d.ts +0 -343
  899. package/src/libs/renderer/src/interaction/selection-tools.js +0 -918
  900. package/src/libs/renderer/src/interaction/snapping.d.ts +0 -210
  901. package/src/libs/renderer/src/interaction/snapping.js +0 -569
  902. package/src/libs/renderer/src/interaction/touch-gestures.d.ts +0 -160
  903. package/src/libs/renderer/src/interaction/touch-gestures.js +0 -549
  904. package/src/libs/renderer/src/interaction/whiteboard-tools.d.ts +0 -171
  905. package/src/libs/renderer/src/interaction/whiteboard-tools.js +0 -476
  906. package/src/libs/renderer/src/lazy/host-culling.d.ts +0 -116
  907. package/src/libs/renderer/src/lazy/host-culling.js +0 -135
  908. package/src/libs/renderer/src/lazy/index.d.ts +0 -7
  909. package/src/libs/renderer/src/lazy/index.js +0 -28
  910. package/src/libs/renderer/src/lazy/progressive-mounter.d.ts +0 -80
  911. package/src/libs/renderer/src/lazy/progressive-mounter.js +0 -264
  912. package/src/libs/renderer/src/lazy/types.d.ts +0 -43
  913. package/src/libs/renderer/src/lazy/types.js +0 -14
  914. package/src/libs/renderer/src/lazy/view-lifecycle.d.ts +0 -97
  915. package/src/libs/renderer/src/lazy/view-lifecycle.js +0 -221
  916. package/src/libs/renderer/src/perf/index.d.ts +0 -2
  917. package/src/libs/renderer/src/perf/index.js +0 -7
  918. package/src/libs/renderer/src/perf/perf-hud.d.ts +0 -46
  919. package/src/libs/renderer/src/perf/perf-hud.js +0 -105
  920. package/src/libs/renderer/src/perf/quality-governor.d.ts +0 -77
  921. package/src/libs/renderer/src/perf/quality-governor.js +0 -154
  922. package/src/libs/renderer/src/platform/index.d.ts +0 -1
  923. package/src/libs/renderer/src/platform/index.js +0 -5
  924. package/src/libs/renderer/src/platform/platform.d.ts +0 -34
  925. package/src/libs/renderer/src/platform/platform.js +0 -64
  926. package/src/libs/renderer/src/presence/bind-presence.d.ts +0 -51
  927. package/src/libs/renderer/src/presence/bind-presence.js +0 -144
  928. package/src/libs/renderer/src/presence/index.d.ts +0 -4
  929. package/src/libs/renderer/src/presence/index.js +0 -18
  930. package/src/libs/renderer/src/presence/presence-overlay.d.ts +0 -121
  931. package/src/libs/renderer/src/presence/presence-overlay.js +0 -465
  932. package/src/libs/renderer/src/presentation/index.d.ts +0 -3
  933. package/src/libs/renderer/src/presentation/index.js +0 -14
  934. package/src/libs/renderer/src/presentation/presentation.d.ts +0 -94
  935. package/src/libs/renderer/src/presentation/presentation.js +0 -158
  936. package/src/libs/renderer/src/presentation/viewport-channel.d.ts +0 -78
  937. package/src/libs/renderer/src/presentation/viewport-channel.js +0 -86
  938. package/src/libs/renderer/src/services/animation-lifecycle.d.ts +0 -153
  939. package/src/libs/renderer/src/services/animation-lifecycle.js +0 -326
  940. package/src/libs/renderer/src/services/animation-performance.service.d.ts +0 -191
  941. package/src/libs/renderer/src/services/animation-performance.service.js +0 -371
  942. package/src/libs/renderer/src/services/animation-sequencer.d.ts +0 -226
  943. package/src/libs/renderer/src/services/animation-sequencer.js +0 -379
  944. package/src/libs/renderer/src/services/animation.service.d.ts +0 -182
  945. package/src/libs/renderer/src/services/animation.service.js +0 -858
  946. package/src/libs/renderer/src/services/custom-animation-registry.d.ts +0 -182
  947. package/src/libs/renderer/src/services/custom-animation-registry.js +0 -361
  948. package/src/libs/renderer/src/ssr/index.d.ts +0 -1
  949. package/src/libs/renderer/src/ssr/index.js +0 -6
  950. package/src/libs/renderer/src/ssr/render-to-static.d.ts +0 -91
  951. package/src/libs/renderer/src/ssr/render-to-static.js +0 -81
  952. package/src/libs/renderer/src/svg/ArrowRenderer.d.ts +0 -159
  953. package/src/libs/renderer/src/svg/ArrowRenderer.js +0 -723
  954. package/src/libs/renderer/src/svg/JumpPointDetector.d.ts +0 -79
  955. package/src/libs/renderer/src/svg/JumpPointDetector.js +0 -176
  956. package/src/libs/renderer/src/svg/JumpPointRenderer.d.ts +0 -59
  957. package/src/libs/renderer/src/svg/JumpPointRenderer.js +0 -309
  958. package/src/libs/renderer/src/svg/LabelRenderer.d.ts +0 -76
  959. package/src/libs/renderer/src/svg/LabelRenderer.js +0 -273
  960. package/src/libs/renderer/src/svg/auto-size.d.ts +0 -76
  961. package/src/libs/renderer/src/svg/auto-size.js +0 -142
  962. package/src/libs/renderer/src/svg/channel-nudging.d.ts +0 -34
  963. package/src/libs/renderer/src/svg/channel-nudging.js +0 -226
  964. package/src/libs/renderer/src/svg/edge-optimizer.d.ts +0 -228
  965. package/src/libs/renderer/src/svg/edge-optimizer.js +0 -606
  966. package/src/libs/renderer/src/svg/edge-templates.d.ts +0 -152
  967. package/src/libs/renderer/src/svg/edge-templates.js +0 -233
  968. package/src/libs/renderer/src/svg/html-node.d.ts +0 -50
  969. package/src/libs/renderer/src/svg/html-node.js +0 -214
  970. package/src/libs/renderer/src/svg/index.d.ts +0 -25
  971. package/src/libs/renderer/src/svg/index.js +0 -32
  972. package/src/libs/renderer/src/svg/link-fanout.d.ts +0 -127
  973. package/src/libs/renderer/src/svg/link-fanout.js +0 -333
  974. package/src/libs/renderer/src/svg/link-hit-test.d.ts +0 -142
  975. package/src/libs/renderer/src/svg/link-hit-test.js +0 -182
  976. package/src/libs/renderer/src/svg/motion-tracker.d.ts +0 -18
  977. package/src/libs/renderer/src/svg/motion-tracker.js +0 -71
  978. package/src/libs/renderer/src/svg/node-sizing.d.ts +0 -51
  979. package/src/libs/renderer/src/svg/node-sizing.js +0 -65
  980. package/src/libs/renderer/src/svg/node-toolbar.d.ts +0 -30
  981. package/src/libs/renderer/src/svg/node-toolbar.js +0 -45
  982. package/src/libs/renderer/src/svg/notation-shapes.d.ts +0 -2
  983. package/src/libs/renderer/src/svg/notation-shapes.js +0 -126
  984. package/src/libs/renderer/src/svg/paint-servers.d.ts +0 -49
  985. package/src/libs/renderer/src/svg/paint-servers.js +0 -225
  986. package/src/libs/renderer/src/svg/panel.d.ts +0 -115
  987. package/src/libs/renderer/src/svg/panel.js +0 -353
  988. package/src/libs/renderer/src/svg/path-outline.d.ts +0 -35
  989. package/src/libs/renderer/src/svg/path-outline.js +0 -134
  990. package/src/libs/renderer/src/svg/port-glyph.d.ts +0 -27
  991. package/src/libs/renderer/src/svg/port-glyph.js +0 -97
  992. package/src/libs/renderer/src/svg/port-label.d.ts +0 -74
  993. package/src/libs/renderer/src/svg/port-label.js +0 -201
  994. package/src/libs/renderer/src/svg/port-layout.d.ts +0 -50
  995. package/src/libs/renderer/src/svg/port-layout.js +0 -212
  996. package/src/libs/renderer/src/svg/port-positioning.d.ts +0 -33
  997. package/src/libs/renderer/src/svg/port-positioning.js +0 -101
  998. package/src/libs/renderer/src/svg/port-spots.d.ts +0 -69
  999. package/src/libs/renderer/src/svg/port-spots.js +0 -154
  1000. package/src/libs/renderer/src/svg/route-memo.d.ts +0 -63
  1001. package/src/libs/renderer/src/svg/route-memo.js +0 -206
  1002. package/src/libs/renderer/src/svg/route-solver-bridge.d.ts +0 -48
  1003. package/src/libs/renderer/src/svg/route-solver-bridge.js +0 -151
  1004. package/src/libs/renderer/src/svg/shape-registry.d.ts +0 -189
  1005. package/src/libs/renderer/src/svg/shape-registry.js +0 -1104
  1006. package/src/libs/renderer/src/svg/stroke-layer.d.ts +0 -36
  1007. package/src/libs/renderer/src/svg/stroke-layer.js +0 -183
  1008. package/src/libs/renderer/src/svg/svg-renderer.d.ts +0 -1737
  1009. package/src/libs/renderer/src/svg/svg-renderer.js +0 -7772
  1010. package/src/libs/renderer/src/svg/text-block.d.ts +0 -54
  1011. package/src/libs/renderer/src/svg/text-block.js +0 -171
  1012. package/src/libs/renderer/src/themes/color-mode.d.ts +0 -81
  1013. package/src/libs/renderer/src/themes/color-mode.js +0 -158
  1014. package/src/libs/renderer/src/themes/contrast.d.ts +0 -67
  1015. package/src/libs/renderer/src/themes/contrast.js +0 -215
  1016. package/src/libs/renderer/src/themes/default-dark-theme.d.ts +0 -6
  1017. package/src/libs/renderer/src/themes/default-dark-theme.js +0 -126
  1018. package/src/libs/renderer/src/themes/default-light-theme.d.ts +0 -6
  1019. package/src/libs/renderer/src/themes/default-light-theme.js +0 -168
  1020. package/src/libs/renderer/src/themes/default-theme-set.d.ts +0 -10
  1021. package/src/libs/renderer/src/themes/default-theme-set.js +0 -25
  1022. package/src/libs/renderer/src/themes/high-contrast-theme.d.ts +0 -5
  1023. package/src/libs/renderer/src/themes/high-contrast-theme.js +0 -170
  1024. package/src/libs/renderer/src/themes/index.d.ts +0 -22
  1025. package/src/libs/renderer/src/themes/index.js +0 -93
  1026. package/src/libs/renderer/src/themes/style-cascade.d.ts +0 -23
  1027. package/src/libs/renderer/src/themes/style-cascade.js +0 -194
  1028. package/src/libs/renderer/src/themes/style-registry.d.ts +0 -40
  1029. package/src/libs/renderer/src/themes/style-registry.js +0 -129
  1030. package/src/libs/renderer/src/themes/theme-a11y.d.ts +0 -65
  1031. package/src/libs/renderer/src/themes/theme-a11y.js +0 -256
  1032. package/src/libs/renderer/src/themes/theme-css.d.ts +0 -30
  1033. package/src/libs/renderer/src/themes/theme-css.js +0 -304
  1034. package/src/libs/renderer/src/themes/theme-ref.d.ts +0 -63
  1035. package/src/libs/renderer/src/themes/theme-ref.js +0 -206
  1036. package/src/libs/renderer/src/themes/theme-vars.d.ts +0 -49
  1037. package/src/libs/renderer/src/themes/theme-vars.js +0 -112
  1038. package/src/libs/renderer/src/themes/token-bridge.d.ts +0 -62
  1039. package/src/libs/renderer/src/themes/token-bridge.js +0 -354
  1040. package/src/libs/renderer/src/types/geometry.types.d.ts +0 -10
  1041. package/src/libs/renderer/src/types/geometry.types.js +0 -3
  1042. package/src/libs/renderer/src/types/index.d.ts +0 -5
  1043. package/src/libs/renderer/src/types/index.js +0 -14
  1044. package/src/libs/renderer/src/types/property-schema/conditions.d.ts +0 -96
  1045. package/src/libs/renderer/src/types/property-schema/conditions.js +0 -8
  1046. package/src/libs/renderer/src/types/property-schema/editor-types.d.ts +0 -310
  1047. package/src/libs/renderer/src/types/property-schema/editor-types.js +0 -8
  1048. package/src/libs/renderer/src/types/property-schema/groups.d.ts +0 -58
  1049. package/src/libs/renderer/src/types/property-schema/groups.js +0 -8
  1050. package/src/libs/renderer/src/types/property-schema/index.d.ts +0 -101
  1051. package/src/libs/renderer/src/types/property-schema/index.js +0 -98
  1052. package/src/libs/renderer/src/types/property-schema/property-definition.d.ts +0 -117
  1053. package/src/libs/renderer/src/types/property-schema/property-definition.js +0 -8
  1054. package/src/libs/renderer/src/types/property-schema/schema.d.ts +0 -108
  1055. package/src/libs/renderer/src/types/property-schema/schema.js +0 -8
  1056. package/src/libs/renderer/src/types/property-schema/validation.d.ts +0 -181
  1057. package/src/libs/renderer/src/types/property-schema/validation.js +0 -8
  1058. package/src/libs/renderer/src/types/renderer.interface.d.ts +0 -623
  1059. package/src/libs/renderer/src/types/renderer.interface.js +0 -3
  1060. package/src/libs/renderer/src/types/theme.types.d.ts +0 -305
  1061. package/src/libs/renderer/src/types/theme.types.js +0 -3
  1062. package/src/libs/renderer/src/types/vnode.types.d.ts +0 -139
  1063. package/src/libs/renderer/src/types/vnode.types.js +0 -3
  1064. package/src/libs/renderer/src/utils/animation-presets.d.ts +0 -310
  1065. package/src/libs/renderer/src/utils/animation-presets.js +0 -406
  1066. package/src/libs/renderer/src/utils/animation-priority.d.ts +0 -118
  1067. package/src/libs/renderer/src/utils/animation-priority.js +0 -258
  1068. package/src/libs/renderer/src/utils/animation-utils.d.ts +0 -159
  1069. package/src/libs/renderer/src/utils/animation-utils.js +0 -323
  1070. package/src/libs/renderer/src/utils/lru-cache.d.ts +0 -34
  1071. package/src/libs/renderer/src/utils/lru-cache.js +0 -72
  1072. package/src/libs/renderer/src/viewport/index.d.ts +0 -1
  1073. package/src/libs/renderer/src/viewport/index.js +0 -6
  1074. package/src/libs/renderer/src/viewport/viewport-controller.d.ts +0 -198
  1075. package/src/libs/renderer/src/viewport/viewport-controller.js +0 -315
  1076. package/src/libs/renderer/src/vnode/container-id-generator.d.ts +0 -94
  1077. package/src/libs/renderer/src/vnode/container-id-generator.js +0 -110
  1078. package/src/libs/renderer/src/vnode/foreign-object.d.ts +0 -157
  1079. package/src/libs/renderer/src/vnode/foreign-object.js +0 -167
  1080. package/src/libs/renderer/src/vnode/index.d.ts +0 -56
  1081. package/src/libs/renderer/src/vnode/index.js +0 -78
  1082. package/src/libs/renderer/src/vnode/patch.d.ts +0 -189
  1083. package/src/libs/renderer/src/vnode/patch.js +0 -564
@@ -1,2190 +0,0 @@
1
- "use strict";
2
- // DiagramEngine - Main orchestrator for diagram functionality
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.DiagramEngine = void 0;
5
- const tslib_1 = require("tslib");
6
- const EventBus_1 = require("../events/EventBus");
7
- const TemplateRegistry_1 = require("../templates/TemplateRegistry");
8
- const DiagramEntity_1 = require("../models/DiagramEntity");
9
- const DiagramStore_1 = require("../state/DiagramStore");
10
- const CommandManager_1 = require("../commands/CommandManager");
11
- const PluginManager_1 = require("../plugins/PluginManager");
12
- const TypeRegistry_1 = require("../validation/TypeRegistry");
13
- const ValidationEngine_1 = require("../validation/ValidationEngine");
14
- const Serializer_1 = require("../serialization/Serializer");
15
- const PerformanceMonitor_1 = require("../performance/PerformanceMonitor");
16
- const DiagramModel_1 = require("../models/DiagramModel");
17
- const NodeModel_1 = require("../models/NodeModel");
18
- const LinkModel_1 = require("../models/LinkModel");
19
- const GroupModel_1 = require("../models/GroupModel"); // Phase 1.6c
20
- const AddNodeCommand_1 = require("../commands/basic/AddNodeCommand");
21
- const RemoveNodeCommand_1 = require("../commands/basic/RemoveNodeCommand");
22
- const dynamic_ports_1 = require("../ports/dynamic-ports");
23
- const AddLinkCommand_1 = require("../commands/basic/AddLinkCommand");
24
- const RemoveLinkCommand_1 = require("../commands/basic/RemoveLinkCommand");
25
- const basic_1 = require("../commands/basic"); // Phase 1.6c
26
- const basic_2 = require("../commands/basic"); // Phase 1.7
27
- const basic_3 = require("../commands/basic"); // Phase 1.8
28
- const ClipboardManager_1 = require("../clipboard/ClipboardManager"); // Phase 1.8
29
- const SelectionManager_1 = require("../selection/SelectionManager"); // Phase 1.8a
30
- const DiagramMode_1 = require("./DiagramMode");
31
- const ModeManager_1 = require("./ModeManager");
32
- // Phase 1: Interaction modes
33
- const ConnectionStateManager_1 = require("../state/ConnectionStateManager");
34
- const InteractionConfig_1 = require("../config/InteractionConfig");
35
- // Routing imports
36
- const RoutingEngine_1 = require("../routing/RoutingEngine");
37
- const LiveReroutingEngine_1 = require("../routing/LiveReroutingEngine"); // Phase 0.2
38
- const ObstacleMapBuilder_1 = require("../routing/ObstacleMapBuilder");
39
- const StraightRouter_1 = require("../routing/algorithms/StraightRouter");
40
- const OrthogonalRouter_1 = require("../routing/algorithms/OrthogonalRouter");
41
- const AStarRouter_1 = require("../routing/algorithms/AStarRouter");
42
- const DijkstraRouter_1 = require("../routing/algorithms/DijkstraRouter");
43
- const VisibilityGraphRouter_1 = require("../routing/algorithms/VisibilityGraphRouter");
44
- // Wave 7 (Auto-layout) — Card 0: the unified layout entry point.
45
- const layout_registry_1 = require("../layout/layout-registry");
46
- const rng_1 = require("../layout/rng");
47
- const mental_map_1 = require("../layout/incremental/mental-map");
48
- // Wave 7 — Card 4: nested container / subgraph layout.
49
- const CompoundLayoutService_1 = require("../layout/CompoundLayoutService");
50
- // Wave 7 — Card 3: off-main-thread layout.
51
- const layout_host_1 = require("../layout/layout-host");
52
- const layout_graph_1 = require("../layout/layout-graph");
53
- class DiagramEngine {
54
- constructor(config = {}) {
55
- // Phase 0.2: Live rerouting engine
56
- this.liveReroutingEngine = null;
57
- // Current diagram
58
- this.diagram = null;
59
- // Disposer functions for the engine's own listeners on the attached diagram.
60
- // Stored on attach and invoked on detach so switching diagrams unsubscribes
61
- // cleanly without accumulating duplicate handlers (and without touching the
62
- // diagram's contents).
63
- this.diagramDisposers = [];
64
- // Wave 6 (Card 7): re-entry guard for the dynamic-port allocator.
65
- this.reconcilingDynamicPorts = false;
66
- // Wave 2 (Edges & links): transient endpoint-reconnection preview (see type).
67
- this.reconnectionPreview = null;
68
- this.proximityPreview = null;
69
- this.snapGuides = null;
70
- // State
71
- this.initialized = false;
72
- this.destroyed = false;
73
- this.config = config;
74
- // Initialize core systems
75
- this.eventBus = new EventBus_1.EventBus();
76
- this.store = new DiagramStore_1.DiagramStore();
77
- // Empty by default (a plain app pays nothing); registerTemplateLibrary() /
78
- // registerGeneratedTemplates() populate it. Closes the documented-but-absent
79
- // `engine.templateRegistry` the template-library integration already targets.
80
- this.templateRegistry = new TemplateRegistry_1.TemplateRegistry(this.eventBus);
81
- // Phase 1: Initialize interaction config
82
- this.interactionConfig = Object.assign(Object.assign({}, InteractionConfig_1.DEFAULT_INTERACTION_CONFIG), config.interaction);
83
- // Phase 1: Initialize connection state manager
84
- this.connectionStateManager = new ConnectionStateManager_1.ConnectionStateManager(this.eventBus);
85
- // CRITICAL FIX: Listen for connection complete events and create the actual link
86
- this.eventBus.on('connection:complete', (event) => tslib_1.__awaiter(this, void 0, void 0, function* () {
87
- var _a, _b;
88
- if (this.diagram && event.sourcePort && event.targetPort) {
89
- const sourcePort = event.sourcePort;
90
- const targetPort = event.targetPort;
91
- // Find the nodes that own these ports
92
- const nodes = this.diagram.getNodes();
93
- let sourceNode = null;
94
- let targetNode = null;
95
- for (const node of nodes) {
96
- if (node.getPort(sourcePort.id)) {
97
- sourceNode = node;
98
- }
99
- if (node.getPort(targetPort.id)) {
100
- targetNode = node;
101
- }
102
- if (sourceNode && targetNode)
103
- break;
104
- }
105
- if (sourceNode && targetNode) {
106
- // Determine path type from config
107
- // Map ConnectionLineStyle enum to LinkModel pathType
108
- let pathType = 'smooth';
109
- switch (this.interactionConfig.connectionLineStyle) {
110
- case 'bezier':
111
- pathType = 'bezier';
112
- break;
113
- case 'step':
114
- pathType = 'orthogonal';
115
- break;
116
- case 'straight':
117
- pathType = 'direct';
118
- break;
119
- default:
120
- pathType = 'smooth';
121
- }
122
- console.log(`🔗 Creating link with pathType: ${pathType} (from connectionLineStyle: ${this.interactionConfig.connectionLineStyle})`);
123
- // Create the link manually (same logic as createSmartLink)
124
- const link = new LinkModel_1.LinkModel(sourcePort.id, targetPort.id, pathType);
125
- link.sourceNodeId = sourceNode.id;
126
- link.targetNodeId = targetNode.id;
127
- // Register connections in ports
128
- sourcePort.addConnection(link.id, 'source');
129
- targetPort.addConnection(link.id, 'target');
130
- // Calculate initial path using RoutingEngine
131
- const sourcePos = sourcePort.getAbsolutePosition(sourceNode.getBoundingBox());
132
- const targetPos = targetPort.getAbsolutePosition(targetNode.getBoundingBox());
133
- // Get port directions for routing
134
- const sourceDirection = (_a = sourcePort.alignment) === null || _a === void 0 ? void 0 : _a.side;
135
- const targetDirection = (_b = targetPort.alignment) === null || _b === void 0 ? void 0 : _b.side;
136
- // Use RoutingEngine to calculate path with obstacle avoidance
137
- yield this.generateLinkPathWithRouting(link, sourcePos, targetPos, sourceDirection, targetDirection, sourceNode, targetNode);
138
- // Add link THROUGH THE COMMAND MANAGER — one undoable step, like every
139
- // other edit. This used to call diagram.addLink() directly, so a link
140
- // the user DREW (the port-drag gesture) was the one mutation Ctrl+Z
141
- // could not take back (visio audit). The command serializes the link
142
- // AFTER routing, so the routed path is what redo restores.
143
- const command = new AddLinkCommand_1.AddLinkCommand(link);
144
- if (this.commandManager) {
145
- yield this.commandManager.execute(command);
146
- }
147
- else {
148
- this.diagram.addLink(link); // constructor-time fallback; unreachable in practice
149
- }
150
- console.log('✅ Link created successfully:', link.id, 'from', sourcePort.id, 'to', targetPort.id);
151
- }
152
- else {
153
- console.error('❌ Failed to find nodes for ports');
154
- }
155
- }
156
- }));
157
- // Initialize ModeManager with context provider
158
- this.modeManager = new ModeManager_1.ModeManager(this.eventBus, () => ({
159
- engine: this,
160
- diagram: this.diagram,
161
- }), config.mode);
162
- const context = {
163
- diagram: this.diagram,
164
- eventBus: this.eventBus,
165
- store: this.store,
166
- engine: this,
167
- };
168
- this.commandManager = new CommandManager_1.CommandManager(context, this.eventBus);
169
- this.pluginManager = new PluginManager_1.PluginManager(this, this.eventBus);
170
- this.typeRegistry = new TypeRegistry_1.TypeRegistry();
171
- this.validationEngine = new ValidationEngine_1.ValidationEngine(this.typeRegistry, this.eventBus); // Phase 1 - Pass EventBus
172
- this.serializer = new Serializer_1.DiagramSerializer();
173
- this.performanceMonitor = new PerformanceMonitor_1.PerformanceMonitor(config.performance);
174
- this.routingEngine = new RoutingEngine_1.RoutingEngine(); // Initialize routing engine with LRU cache
175
- this.clipboardManager = new ClipboardManager_1.ClipboardManager(); // Phase 1.8
176
- this.selectionManager = new SelectionManager_1.SelectionManager(null, this.store, this.eventBus); // Phase 1.8a
177
- // Configure systems
178
- this.configureSystems();
179
- // Install plugins
180
- this.installPlugins();
181
- // Mark as initialized
182
- this.initialized = true;
183
- this.eventBus.emit('engine:initialized');
184
- }
185
- /**
186
- * Get current diagram
187
- */
188
- getDiagram() {
189
- return this.diagram;
190
- }
191
- /**
192
- * Get configuration (Phase 1 - Critical Fixes)
193
- */
194
- getConfig() {
195
- return this.config;
196
- }
197
- /**
198
- * Phase 1: Get interaction configuration
199
- * Returns the current interaction mode settings
200
- */
201
- getInteractionConfig() {
202
- return Object.assign({}, this.interactionConfig);
203
- }
204
- /**
205
- * Phase 1: Set interaction configuration
206
- * Updates interaction mode settings and emits event
207
- */
208
- setInteractionConfig(config) {
209
- const oldConfig = Object.assign({}, this.interactionConfig);
210
- this.interactionConfig = Object.assign(Object.assign({}, this.interactionConfig), config);
211
- this.eventBus.emit('config:interaction-changed', {
212
- oldConfig,
213
- newConfig: this.interactionConfig,
214
- });
215
- }
216
- /**
217
- * Phase 1: Get connection state manager
218
- * Used for managing connection drag operations
219
- */
220
- getConnectionStateManager() {
221
- return this.connectionStateManager;
222
- }
223
- /**
224
- * Wave 2 (Edges & links): current endpoint-reconnection preview, or null when
225
- * no endpoint is being dragged. The renderer reads this to draw a ghost link.
226
- */
227
- getReconnectionPreview() {
228
- return this.reconnectionPreview;
229
- }
230
- /**
231
- * Wave 2 (Edges & links): set (or clear, with null) the endpoint-reconnection
232
- * preview. Called by the interaction layer on start/move/end of an endpoint
233
- * drag. Does not emit — the interaction layer already triggers re-render.
234
- */
235
- setReconnectionPreview(preview) {
236
- this.reconnectionPreview = preview;
237
- // A bare field write bumps no epoch, and the renderer's frame-skip gate
238
- // dropped every repaint during an endpoint drag — the ghost line froze at
239
- // the grab point while the model tracked the cursor perfectly (live
240
- // audit). Overlay state IS picture state; say so.
241
- (0, DiagramEntity_1.bumpMutationEpoch)();
242
- }
243
- /** The proximity-connect proposal the renderer draws as a live wire, or null. */
244
- getProximityPreview() {
245
- return this.proximityPreview;
246
- }
247
- /** Set (or clear, with null) the proximity-connect proposal. Does not emit —
248
- * the node drag that drives it already triggers re-renders. */
249
- setProximityPreview(preview) {
250
- this.proximityPreview = preview;
251
- (0, DiagramEntity_1.bumpMutationEpoch)(); // overlay state is picture state — see setReconnectionPreview
252
- }
253
- /** The live snap-guide segments a node drag is showing, or null. */
254
- getSnapGuides() {
255
- return this.snapGuides;
256
- }
257
- /** Set (or clear, with null) the live snap guides. Does not emit — the node
258
- * drag that drives them already triggers re-renders. */
259
- setSnapGuides(guides) {
260
- this.snapGuides = guides;
261
- (0, DiagramEntity_1.bumpMutationEpoch)(); // overlay state is picture state — see setReconnectionPreview
262
- }
263
- /**
264
- * Get routing engine
265
- * Used for calculating link paths with various algorithms
266
- */
267
- getRoutingEngine() {
268
- return this.routingEngine;
269
- }
270
- /**
271
- * Phase 0.2: Enable live rerouting
272
- * Automatically updates link paths when nodes move or resize
273
- */
274
- enableLiveRerouting() {
275
- if (!this.diagram) {
276
- console.warn('Cannot enable live rerouting: No diagram loaded');
277
- return;
278
- }
279
- if (!this.liveReroutingEngine) {
280
- this.liveReroutingEngine = new LiveReroutingEngine_1.LiveReroutingEngine(this.routingEngine, this.diagram);
281
- }
282
- this.liveReroutingEngine.enable();
283
- console.log('✅ Live rerouting enabled');
284
- }
285
- /**
286
- * Phase 0.2: Disable live rerouting
287
- */
288
- disableLiveRerouting() {
289
- if (this.liveReroutingEngine) {
290
- this.liveReroutingEngine.disable();
291
- console.log('⚠️ Live rerouting disabled');
292
- }
293
- }
294
- /**
295
- * Phase 0.2: Get live rerouting engine
296
- */
297
- getLiveReroutingEngine() {
298
- return this.liveReroutingEngine;
299
- }
300
- /**
301
- * Set diagram
302
- */
303
- setDiagram(diagram) {
304
- const oldDiagram = this.diagram;
305
- if (oldDiagram) {
306
- this.detachDiagram(oldDiagram);
307
- }
308
- this.diagram = diagram;
309
- if (diagram) {
310
- this.attachDiagram(diagram);
311
- // Wave 9 — Card 7: a diagram attached to an engine that is ALREADY in
312
- // VIEW/PRESENTATION mode must come up LOCKED. Without this, read-only would
313
- // depend on whether the host happened to call setMode() before or after
314
- // loading the document — a race the host cannot see.
315
- this.syncReadonlyLock();
316
- }
317
- this.store.set('diagram', diagram);
318
- this.eventBus.emit('diagram:changed', { oldDiagram, newDiagram: diagram });
319
- // Update command context
320
- this.commandManager.updateContext({ diagram });
321
- // Update selection manager diagram reference (Phase 1.8a)
322
- this.selectionManager.setDiagram(diagram);
323
- // Wave 6 (Card 6): the connection manager needs the graph to work out which
324
- // ports are valid targets. Without this its `calculateValidTargets()` has
325
- // nothing to walk — which is exactly why that method was a no-op stub and
326
- // `validTargetPorts` was empty for the whole life of the feature.
327
- this.connectionStateManager.setDiagram(diagram);
328
- }
329
- /**
330
- * Create new diagram
331
- */
332
- createDiagram(name = 'Untitled') {
333
- const diagram = new DiagramModel_1.DiagramModel(name);
334
- this.setDiagram(diagram);
335
- this.eventBus.emit('diagram:created', diagram);
336
- return diagram;
337
- }
338
- /**
339
- * Clear diagram
340
- */
341
- clearDiagram() {
342
- if (this.diagram) {
343
- this.diagram.clear();
344
- this.store.set('selectedNodes', new Set());
345
- this.store.set('selectedLinks', new Set());
346
- this.commandManager.clear();
347
- this.eventBus.emit('diagram:cleared');
348
- }
349
- }
350
- /**
351
- * Add node implementation
352
- */
353
- addNode(configOrNode) {
354
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
355
- if (!this.diagram) {
356
- throw new Error('No diagram loaded');
357
- }
358
- return this.performanceMonitor.measure('addNode', () => tslib_1.__awaiter(this, void 0, void 0, function* () {
359
- var _a, _b;
360
- // Determine if we received a config or a NodeModel
361
- let node;
362
- if (configOrNode instanceof NodeModel_1.NodeModel) {
363
- node = configOrNode;
364
- }
365
- else {
366
- node = new NodeModel_1.NodeModel(configOrNode);
367
- }
368
- // Validate
369
- if ((_a = this.config.validation) === null || _a === void 0 ? void 0 : _a.strict) {
370
- const validation = this.validationEngine.validateNode(node);
371
- if (!validation.valid) {
372
- throw new Error(`Invalid node: ${(_b = validation.errors[0]) === null || _b === void 0 ? void 0 : _b.message}`);
373
- }
374
- }
375
- // Add via command
376
- const command = new AddNodeCommand_1.AddNodeCommand(node);
377
- yield this.commandManager.execute(command);
378
- // Return the node that was actually added (might be deserialized)
379
- return (this.diagram && this.diagram.getNode(node.id)) || node;
380
- }));
381
- });
382
- }
383
- /**
384
- * Remove node
385
- *
386
- * Wave 14: async + awaited, mirroring removeGroup(). The execute() promise
387
- * used to float — a command failure became an unhandled rejection (fatal
388
- * under Node), and callers could not sequence on the removal completing.
389
- */
390
- removeNode(nodeId) {
391
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
392
- if (!this.diagram) {
393
- throw new Error('No diagram loaded');
394
- }
395
- const node = this.diagram.getNode(nodeId);
396
- if (!node) {
397
- throw new Error(`Node ${nodeId} not found`);
398
- }
399
- const command = new RemoveNodeCommand_1.RemoveNodeCommand(nodeId);
400
- yield this.commandManager.execute(command);
401
- });
402
- }
403
- /**
404
- * Wave 6 (Card 7): top up (or trim) the dynamic port groups on the nodes at
405
- * either end of `link`.
406
- *
407
- * Runs through the COMMAND layer, so a spawned port is undoable and arrives
408
- * with the same events and dirty-tracking as any other model change. Guarded
409
- * against re-entry: an AddPortCommand does not itself add a link, but a host
410
- * validator could, and a self-feeding allocator would be a delightful way to
411
- * hang the app.
412
- */
413
- reconcileDynamicPorts(nodeIds) {
414
- if (this.reconcilingDynamicPorts || !this.diagram)
415
- return;
416
- // The LINKS are the source of truth for "is this port free" — the port's
417
- // own connection registry is derived state that `addLink()` never updates.
418
- const links = this.diagram.getLinks();
419
- const commands = [];
420
- for (const nodeId of new Set(nodeIds)) {
421
- const node = this.diagram.getNode(nodeId);
422
- if (node)
423
- commands.push(...(0, dynamic_ports_1.buildDynamicPortCommands)(node, links));
424
- }
425
- if (commands.length === 0)
426
- return;
427
- this.reconcilingDynamicPorts = true;
428
- try {
429
- for (const command of commands) {
430
- // Port add/remove is synchronous; `execute` returns a promise only
431
- // because the Command contract allows async ones. Nothing here awaits it,
432
- // so the port is on the node by the time this returns — which is what the
433
- // renderer, mid-frame, is entitled to assume.
434
- void this.commandManager.execute(command);
435
- }
436
- }
437
- finally {
438
- this.reconcilingDynamicPorts = false;
439
- }
440
- }
441
- /** The nodes a link touches — resolved by id, or by searching for its ports. */
442
- reconcileDynamicPortsFor(link) {
443
- var _a;
444
- const diagram = this.diagram;
445
- if (!diagram)
446
- return;
447
- const nodeIds = [];
448
- for (const [nodeId, portId] of [
449
- [link.sourceNodeId, link.sourcePortId],
450
- [link.targetNodeId, link.targetPortId],
451
- ]) {
452
- if (nodeId) {
453
- nodeIds.push(nodeId);
454
- }
455
- else if (portId) {
456
- const owner = (_a = diagram.getNodeByPortId) === null || _a === void 0 ? void 0 : _a.call(diagram, portId);
457
- if (owner)
458
- nodeIds.push(owner.id);
459
- }
460
- }
461
- this.reconcileDynamicPorts(nodeIds);
462
- }
463
- /**
464
- * Add link
465
- */
466
- addLink(config) {
467
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
468
- if (!this.diagram) {
469
- throw new Error('No diagram loaded');
470
- }
471
- return this.performanceMonitor.measure('addLink', () => tslib_1.__awaiter(this, void 0, void 0, function* () {
472
- var _a;
473
- // Check ports exist
474
- const sourcePort = this.findPort(config.sourcePortId);
475
- const targetPort = this.findPort(config.targetPortId);
476
- if (!sourcePort || !targetPort) {
477
- throw new Error('Invalid ports');
478
- }
479
- const link = new LinkModel_1.LinkModel(config.sourcePortId, config.targetPortId, config.type);
480
- // Validate
481
- const validation = this.validationEngine.validateLink(link, this.diagram);
482
- if (!validation.valid) {
483
- throw new Error(`Invalid link: ${(_a = validation.errors[0]) === null || _a === void 0 ? void 0 : _a.message}`);
484
- }
485
- // Add via command
486
- const command = new AddLinkCommand_1.AddLinkCommand(link);
487
- yield this.commandManager.execute(command);
488
- // Return the link that was actually added (might be deserialized)
489
- return (this.diagram && this.diagram.getLink(link.id)) || link;
490
- }));
491
- });
492
- }
493
- /**
494
- * Remove link
495
- *
496
- * Wave 14: async + awaited, mirroring removeGroup() — see removeNode().
497
- */
498
- removeLink(linkId) {
499
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
500
- if (!this.diagram) {
501
- throw new Error('No diagram loaded');
502
- }
503
- const link = this.diagram.getLink(linkId);
504
- if (!link) {
505
- throw new Error(`Link ${linkId} not found`);
506
- }
507
- const command = new RemoveLinkCommand_1.RemoveLinkCommand(linkId);
508
- yield this.commandManager.execute(command);
509
- });
510
- }
511
- /**
512
- * Add group (Phase 1.6c)
513
- */
514
- addGroup(config) {
515
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
516
- if (!this.diagram) {
517
- throw new Error('No diagram loaded');
518
- }
519
- return this.performanceMonitor.measure('addGroup', () => tslib_1.__awaiter(this, void 0, void 0, function* () {
520
- const group = new GroupModel_1.GroupModel(config);
521
- // Add via command
522
- const command = new basic_1.AddGroupCommand(group);
523
- yield this.commandManager.execute(command);
524
- // Return the group that was actually added
525
- return (this.diagram && this.diagram.getGroup(group.id)) || group;
526
- }));
527
- });
528
- }
529
- /**
530
- * Remove group (Phase 1.6c)
531
- */
532
- removeGroup(groupId) {
533
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
534
- if (!this.diagram) {
535
- throw new Error('No diagram loaded');
536
- }
537
- const group = this.diagram.getGroup(groupId);
538
- if (!group) {
539
- throw new Error(`Group ${groupId} not found`);
540
- }
541
- const command = new basic_1.RemoveGroupCommand(groupId);
542
- yield this.commandManager.execute(command);
543
- });
544
- }
545
- /**
546
- * Add entity to group (Phase 1.6c)
547
- */
548
- addToGroup(groupId, entityId) {
549
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
550
- if (!this.diagram) {
551
- throw new Error('No diagram loaded');
552
- }
553
- const command = new basic_1.AddToGroupCommand(groupId, entityId);
554
- yield this.commandManager.execute(command);
555
- });
556
- }
557
- /**
558
- * Remove entity from group (Phase 1.6c)
559
- */
560
- removeFromGroup(groupId, entityId) {
561
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
562
- if (!this.diagram) {
563
- throw new Error('No diagram loaded');
564
- }
565
- const command = new basic_1.RemoveFromGroupCommand(groupId, entityId);
566
- yield this.commandManager.execute(command);
567
- });
568
- }
569
- /**
570
- * Expand group (Phase 1.6c)
571
- */
572
- expandGroup(groupId) {
573
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
574
- if (!this.diagram) {
575
- throw new Error('No diagram loaded');
576
- }
577
- const command = new basic_1.ExpandGroupCommand(groupId);
578
- yield this.commandManager.execute(command);
579
- });
580
- }
581
- /**
582
- * Collapse group (Phase 1.6c)
583
- */
584
- collapseGroup(groupId, options) {
585
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
586
- if (!this.diagram) {
587
- throw new Error('No diagram loaded');
588
- }
589
- const command = new basic_1.CollapseGroupCommand(groupId, options);
590
- yield this.commandManager.execute(command);
591
- });
592
- }
593
- /**
594
- * Get group by ID (Phase 1.6c)
595
- */
596
- getGroup(groupId) {
597
- var _a;
598
- return (_a = this.diagram) === null || _a === void 0 ? void 0 : _a.getGroup(groupId);
599
- }
600
- /**
601
- * Get all groups (Phase 1.6c)
602
- */
603
- getGroups() {
604
- var _a;
605
- return ((_a = this.diagram) === null || _a === void 0 ? void 0 : _a.getGroups()) || [];
606
- }
607
- /**
608
- * Set layout configuration on a group (Phase 1.7)
609
- */
610
- setLayout(groupId, layoutType, layoutConfig) {
611
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
612
- if (!this.diagram) {
613
- throw new Error('No diagram loaded');
614
- }
615
- const group = this.diagram.getGroup(groupId);
616
- if (!group) {
617
- throw new Error(`Group ${groupId} not found`);
618
- }
619
- const command = new basic_2.SetLayoutCommand(groupId, layoutType, layoutConfig);
620
- yield this.commandManager.execute(command);
621
- });
622
- }
623
- /**
624
- * Clear layout configuration from a group (Phase 1.7)
625
- */
626
- clearLayout(groupId) {
627
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
628
- if (!this.diagram) {
629
- throw new Error('No diagram loaded');
630
- }
631
- const group = this.diagram.getGroup(groupId);
632
- if (!group) {
633
- throw new Error(`Group ${groupId} not found`);
634
- }
635
- // Clear layout by setting to 'none' (this triggers a command internally through the model)
636
- group.clearLayout();
637
- });
638
- }
639
- /**
640
- * Get layout configuration from a group (Phase 1.7)
641
- */
642
- getLayout(groupId) {
643
- var _a;
644
- const group = (_a = this.diagram) === null || _a === void 0 ? void 0 : _a.getGroup(groupId);
645
- return group === null || group === void 0 ? void 0 : group.getLayout();
646
- }
647
- /**
648
- * Set flex item configuration on a node (Phase 1.7)
649
- */
650
- setFlexItem(nodeId, flexConfig) {
651
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
652
- if (!this.diagram) {
653
- throw new Error('No diagram loaded');
654
- }
655
- const node = this.diagram.getNode(nodeId);
656
- if (!node) {
657
- throw new Error(`Node ${nodeId} not found`);
658
- }
659
- const command = new basic_2.SetFlexItemCommand(nodeId, flexConfig);
660
- yield this.commandManager.execute(command);
661
- });
662
- }
663
- /**
664
- * Set grid item configuration on a node (Phase 1.7)
665
- */
666
- setGridItem(nodeId, gridConfig) {
667
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
668
- if (!this.diagram) {
669
- throw new Error('No diagram loaded');
670
- }
671
- const node = this.diagram.getNode(nodeId);
672
- if (!node) {
673
- throw new Error(`Node ${nodeId} not found`);
674
- }
675
- const command = new basic_2.SetGridItemCommand(nodeId, gridConfig);
676
- yield this.commandManager.execute(command);
677
- });
678
- }
679
- /**
680
- * Copy selected entities to clipboard (Phase 1.8)
681
- */
682
- copy(options) {
683
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
684
- if (!this.diagram) {
685
- throw new Error('No diagram loaded');
686
- }
687
- const command = new basic_3.CopyCommand(this.clipboardManager, options);
688
- yield this.commandManager.execute(command);
689
- });
690
- }
691
- /**
692
- * Paste entities from clipboard (Phase 1.8)
693
- */
694
- paste(options) {
695
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
696
- if (!this.diagram) {
697
- throw new Error('No diagram loaded');
698
- }
699
- if (!this.clipboardManager.hasData()) {
700
- throw new Error('Clipboard is empty');
701
- }
702
- const command = new basic_3.PasteCommand(this.clipboardManager, options);
703
- yield this.commandManager.execute(command);
704
- });
705
- }
706
- /**
707
- * Duplicate selected entities (Phase 1.8)
708
- */
709
- duplicate(options) {
710
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
711
- if (!this.diagram) {
712
- throw new Error('No diagram loaded');
713
- }
714
- // Diagram selection first — a mouse click selects through
715
- // diagram.selectNode() and never writes the store's set, so gating on the
716
- // store alone made this helper throw for every mouse-selected node while
717
- // DuplicateCommand itself (which checks both) would have succeeded.
718
- const diagramSelection = this.diagram.getSelectedNodes();
719
- const selectedNodeIds = this.store.get('selectedNodes');
720
- if (diagramSelection.length === 0 && (!selectedNodeIds || selectedNodeIds.size === 0)) {
721
- throw new Error('No nodes selected');
722
- }
723
- const command = new basic_3.DuplicateCommand(options);
724
- yield this.commandManager.execute(command);
725
- });
726
- }
727
- /**
728
- * Delete selected entities (Phase 1.8)
729
- */
730
- deleteSelection(options) {
731
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
732
- if (!this.diagram) {
733
- throw new Error('No diagram loaded');
734
- }
735
- const selectedNodeIds = this.store.get('selectedNodes');
736
- const selectedLinkIds = this.store.get('selectedLinks');
737
- if ((!selectedNodeIds || selectedNodeIds.size === 0) &&
738
- (!selectedLinkIds || selectedLinkIds.size === 0)) {
739
- throw new Error('No entities selected');
740
- }
741
- const command = new basic_3.DeleteSelectionCommand(options);
742
- yield this.commandManager.execute(command);
743
- });
744
- }
745
- /**
746
- * Get clipboard data (Phase 1.8)
747
- */
748
- getClipboardData() {
749
- return this.clipboardManager.get();
750
- }
751
- /**
752
- * Check if clipboard has data (Phase 1.8)
753
- */
754
- hasClipboardData() {
755
- return this.clipboardManager.hasData();
756
- }
757
- /**
758
- * Clear clipboard (Phase 1.8)
759
- */
760
- clearClipboard() {
761
- this.clipboardManager.clear();
762
- }
763
- /**
764
- * Get clipboard statistics (Phase 1.8)
765
- */
766
- getClipboardStats() {
767
- return this.clipboardManager.getStats();
768
- }
769
- // ============================================================================
770
- // Validation API (Phase 1 - Critical Fixes)
771
- // ============================================================================
772
- /**
773
- * Validate the entire diagram
774
- * @param options Validation options
775
- * @returns Validation result with errors and warnings
776
- */
777
- validateDiagram(options) {
778
- if (!this.diagram) {
779
- return {
780
- valid: false,
781
- errors: [{
782
- path: 'diagram',
783
- message: 'No diagram loaded',
784
- code: 'NO_DIAGRAM',
785
- severity: 'error'
786
- }],
787
- warnings: []
788
- };
789
- }
790
- return this.validationEngine.validateDiagram(this.diagram, options);
791
- }
792
- /**
793
- * Validate a specific node
794
- * @param nodeId Node ID to validate
795
- * @param options Validation options
796
- * @returns Validation result with errors and warnings
797
- */
798
- validateNode(nodeId, options) {
799
- if (!this.diagram) {
800
- return {
801
- valid: false,
802
- errors: [{
803
- path: `node.${nodeId}`,
804
- message: 'No diagram loaded',
805
- code: 'NO_DIAGRAM',
806
- severity: 'error'
807
- }],
808
- warnings: []
809
- };
810
- }
811
- const node = this.diagram.getNode(nodeId);
812
- if (!node) {
813
- return {
814
- valid: false,
815
- errors: [{
816
- path: `node.${nodeId}`,
817
- message: `Node ${nodeId} not found`,
818
- code: 'NODE_NOT_FOUND',
819
- severity: 'error'
820
- }],
821
- warnings: []
822
- };
823
- }
824
- return this.validationEngine.validateNode(node, options);
825
- }
826
- /**
827
- * Validate a specific link
828
- * @param linkId Link ID to validate
829
- * @param options Validation options
830
- * @returns Validation result with errors and warnings
831
- */
832
- validateLink(linkId, options) {
833
- if (!this.diagram) {
834
- return {
835
- valid: false,
836
- errors: [{
837
- path: `link.${linkId}`,
838
- message: 'No diagram loaded',
839
- code: 'NO_DIAGRAM',
840
- severity: 'error'
841
- }],
842
- warnings: []
843
- };
844
- }
845
- const link = this.diagram.getLink(linkId);
846
- if (!link) {
847
- return {
848
- valid: false,
849
- errors: [{
850
- path: `link.${linkId}`,
851
- message: `Link ${linkId} not found`,
852
- code: 'LINK_NOT_FOUND',
853
- severity: 'error'
854
- }],
855
- warnings: []
856
- };
857
- }
858
- return this.validationEngine.validateLink(link, this.diagram, options);
859
- }
860
- /**
861
- * Validate a specific port
862
- * @param portId Port ID to validate
863
- * @param nodeId Node ID containing the port
864
- * @param options Validation options
865
- * @returns Validation result with errors and warnings
866
- */
867
- validatePort(portId, nodeId, options) {
868
- if (!this.diagram) {
869
- return {
870
- valid: false,
871
- errors: [{
872
- path: `node.${nodeId}.port.${portId}`,
873
- message: 'No diagram loaded',
874
- code: 'NO_DIAGRAM',
875
- severity: 'error'
876
- }],
877
- warnings: []
878
- };
879
- }
880
- const node = this.diagram.getNode(nodeId);
881
- if (!node) {
882
- return {
883
- valid: false,
884
- errors: [{
885
- path: `node.${nodeId}.port.${portId}`,
886
- message: `Node ${nodeId} not found`,
887
- code: 'NODE_NOT_FOUND',
888
- severity: 'error'
889
- }],
890
- warnings: []
891
- };
892
- }
893
- const port = node.getPorts().find(p => p.id === portId);
894
- if (!port) {
895
- return {
896
- valid: false,
897
- errors: [{
898
- path: `node.${nodeId}.port.${portId}`,
899
- message: `Port ${portId} not found`,
900
- code: 'PORT_NOT_FOUND',
901
- severity: 'error'
902
- }],
903
- warnings: []
904
- };
905
- }
906
- return this.validationEngine.validatePort(port, node, options);
907
- }
908
- /**
909
- * Validate layout configuration for a group (Phase 3 - Layout validation)
910
- */
911
- validateLayout(groupId, options) {
912
- if (!this.diagram) {
913
- return {
914
- valid: false,
915
- errors: [{
916
- path: `group.${groupId}.layout`,
917
- message: 'No diagram loaded',
918
- code: 'NO_DIAGRAM',
919
- severity: 'error'
920
- }],
921
- warnings: []
922
- };
923
- }
924
- const group = this.diagram.getGroup(groupId);
925
- if (!group) {
926
- return {
927
- valid: false,
928
- errors: [{
929
- path: `group.${groupId}.layout`,
930
- message: `Group ${groupId} not found`,
931
- code: 'GROUP_NOT_FOUND',
932
- severity: 'error'
933
- }],
934
- warnings: []
935
- };
936
- }
937
- return this.validationEngine.validateLayout(group, this.diagram, options);
938
- }
939
- /**
940
- * Register a node type definition
941
- * @param definition Node type definition
942
- */
943
- registerNodeType(definition) {
944
- this.typeRegistry.registerNodeType(definition);
945
- }
946
- /**
947
- * Register a port type definition
948
- * @param definition Port type definition
949
- */
950
- registerPortType(definition) {
951
- this.typeRegistry.registerPortType(definition);
952
- }
953
- /**
954
- * Register a link type definition
955
- * @param definition Link type definition
956
- */
957
- registerLinkType(definition) {
958
- this.typeRegistry.registerLinkType(definition);
959
- }
960
- /**
961
- * Register a group type definition (Phase 2 - Group validation)
962
- * @param definition Group type definition
963
- */
964
- registerGroupType(definition) {
965
- this.typeRegistry.registerGroupType(definition);
966
- }
967
- /**
968
- * Enable real-time validation
969
- */
970
- enableRealTimeValidation() {
971
- this.validationEngine.enableRealTimeValidation();
972
- }
973
- /**
974
- * Disable real-time validation
975
- */
976
- disableRealTimeValidation() {
977
- this.validationEngine.disableRealTimeValidation();
978
- }
979
- /**
980
- * Check if real-time validation is enabled
981
- */
982
- isRealTimeValidationEnabled() {
983
- return this.validationEngine.isRealTimeValidationEnabled();
984
- }
985
- // ============================================================================
986
- // End Validation API
987
- // ============================================================================
988
- /**
989
- * Select nodes
990
- */
991
- selectNodes(nodeIds) {
992
- const selectedNodes = new Set(nodeIds);
993
- this.store.set('selectedNodes', selectedNodes);
994
- // Update node states
995
- if (this.diagram) {
996
- this.diagram.getNodes().forEach((node) => {
997
- node.setState({ selected: selectedNodes.has(node.id) });
998
- });
999
- }
1000
- this.eventBus.emit('selection:changed', { nodes: nodeIds });
1001
- }
1002
- /**
1003
- * Select links
1004
- */
1005
- selectLinks(linkIds) {
1006
- const selectedLinks = new Set(linkIds);
1007
- this.store.set('selectedLinks', selectedLinks);
1008
- // Update link states
1009
- if (this.diagram) {
1010
- this.diagram.getLinks().forEach((link) => {
1011
- link.setState(selectedLinks.has(link.id) ? 'selected' : 'default');
1012
- });
1013
- }
1014
- this.eventBus.emit('selection:changed', { links: linkIds });
1015
- }
1016
- /**
1017
- * Clear selection
1018
- */
1019
- clearSelection() {
1020
- this.selectNodes([]);
1021
- this.selectLinks([]);
1022
- this.eventBus.emit('selection:cleared');
1023
- }
1024
- /**
1025
- * Undo
1026
- */
1027
- undo() {
1028
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
1029
- yield this.commandManager.undo();
1030
- });
1031
- }
1032
- /**
1033
- * Redo
1034
- */
1035
- redo() {
1036
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
1037
- yield this.commandManager.redo();
1038
- });
1039
- }
1040
- /**
1041
- * Can undo
1042
- */
1043
- canUndo() {
1044
- return this.commandManager.canUndo();
1045
- }
1046
- /**
1047
- * Can redo
1048
- */
1049
- canRedo() {
1050
- return this.commandManager.canRedo();
1051
- }
1052
- /**
1053
- * Validate diagram
1054
- */
1055
- validate() {
1056
- if (!this.diagram) {
1057
- return {
1058
- valid: true,
1059
- errors: [],
1060
- warnings: [],
1061
- };
1062
- }
1063
- return this.validationEngine.validateDiagram(this.diagram);
1064
- }
1065
- /**
1066
- * Serialize diagram (with mode)
1067
- */
1068
- serialize() {
1069
- if (!this.diagram) {
1070
- return null;
1071
- }
1072
- const serialized = this.serializer.serialize(this.diagram);
1073
- // Include current mode
1074
- serialized.mode = this.modeManager.serialize();
1075
- return serialized;
1076
- }
1077
- /**
1078
- * Deserialize diagram (with mode)
1079
- */
1080
- deserialize(data, options) {
1081
- const diagram = this.serializer.deserialize(data, options);
1082
- this.setDiagram(diagram);
1083
- // Restore mode if present
1084
- this.modeManager.restore(data.mode);
1085
- return diagram;
1086
- }
1087
- /**
1088
- * Load diagram from JSON (with mode)
1089
- */
1090
- loadFromJSON(json, options) {
1091
- const data = typeof json === 'string' ? JSON.parse(json) : json;
1092
- return this.deserialize(data, options);
1093
- }
1094
- /**
1095
- * Save diagram to JSON
1096
- */
1097
- saveToJSON() {
1098
- const data = this.serialize();
1099
- return data ? JSON.stringify(data, null, 2) : null;
1100
- }
1101
- /**
1102
- * Register a plugin AND bring it to life.
1103
- *
1104
- * `PluginManager.register()` only RECORDS a plugin; `install()` and
1105
- * `activate()` are separate steps. Calling register alone — which both of
1106
- * this engine's entry points used to do — left every plugin permanently
1107
- * inert: its hooks never fired, though `getPlugin()` happily returned it.
1108
- * "Register a plugin" can only sensibly mean "make it run", so this drives
1109
- * the full lifecycle. A plugin that throws is reported and skipped rather
1110
- * than taking the host down with it.
1111
- */
1112
- registerPlugin(plugin) {
1113
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
1114
- var _a, _b;
1115
- const name = (_a = plugin.metadata) === null || _a === void 0 ? void 0 : _a.name;
1116
- this.pluginManager.register(plugin);
1117
- if (!name)
1118
- return;
1119
- try {
1120
- yield this.pluginManager.install(name);
1121
- yield this.pluginManager.activate(name);
1122
- }
1123
- catch (error) {
1124
- (_b = this.eventBus) === null || _b === void 0 ? void 0 : _b.emit('plugin:error', { name, error });
1125
- }
1126
- });
1127
- }
1128
- /**
1129
- * Get plugin
1130
- */
1131
- getPlugin(name) {
1132
- return this.pluginManager.get(name);
1133
- }
1134
- /**
1135
- * Set viewport
1136
- */
1137
- setViewport(viewport) {
1138
- this.store.set('viewport', viewport);
1139
- this.eventBus.emit('viewport:changed', viewport);
1140
- }
1141
- /**
1142
- * Set zoom
1143
- */
1144
- setZoom(zoom) {
1145
- const clampedZoom = Math.max(0.1, Math.min(5, zoom));
1146
- this.store.set('zoom', clampedZoom);
1147
- this.eventBus.emit('viewport:zoomed', clampedZoom);
1148
- }
1149
- /**
1150
- * Get performance report
1151
- */
1152
- getPerformanceReport() {
1153
- return this.performanceMonitor.getReport();
1154
- }
1155
- // ============================================================================
1156
- // Mode Management (Delegation to ModeManager)
1157
- // ============================================================================
1158
- /**
1159
- * Get current diagram mode
1160
- */
1161
- getMode() {
1162
- return this.modeManager.getMode();
1163
- }
1164
- /**
1165
- * Set diagram mode
1166
- */
1167
- setMode(mode) {
1168
- this.modeManager.setMode(mode);
1169
- this.syncReadonlyLock();
1170
- }
1171
- /**
1172
- * Wave 9 — Card 7. Push the mode's read-only verdict down onto the DOCUMENT.
1173
- *
1174
- * Before this wave `DiagramMode.VIEW` / `PRESENTATION` and `isReadOnlyMode()`
1175
- * existed, were documented as "all editing disabled" — and gated NOTHING. Not a
1176
- * command, not a model mutator, not the event binder. They were a boolean nobody
1177
- * asked. This is the line that makes the mode real: the model holds the lock, and
1178
- * the model is where mutation actually happens.
1179
- *
1180
- * Call it after any mode change, and whenever a diagram is attached (a diagram
1181
- * loaded into an engine that is ALREADY in presentation mode must come up locked,
1182
- * or read-only would depend on the order the host happened to call things in).
1183
- */
1184
- syncReadonlyLock() {
1185
- var _a;
1186
- (_a = this.diagram) === null || _a === void 0 ? void 0 : _a.setReadonly(this.modeManager.isReadOnlyMode());
1187
- }
1188
- /**
1189
- * Check if in designer mode
1190
- */
1191
- isDesignerMode() {
1192
- return this.modeManager.isDesignerMode();
1193
- }
1194
- /**
1195
- * Check if in running mode
1196
- */
1197
- isRunningMode() {
1198
- return this.modeManager.isRunningMode();
1199
- }
1200
- /**
1201
- * Check if in view mode
1202
- */
1203
- isViewMode() {
1204
- return this.modeManager.isViewMode();
1205
- }
1206
- /**
1207
- * Check if in debug mode
1208
- */
1209
- isDebugMode() {
1210
- return this.modeManager.isDebugMode();
1211
- }
1212
- /**
1213
- * Check if in presentation mode
1214
- */
1215
- isPresentationMode() {
1216
- return this.modeManager.isPresentationMode();
1217
- }
1218
- /**
1219
- * Check if in read-only mode (any mode except designer)
1220
- */
1221
- isReadOnlyMode() {
1222
- return this.modeManager.isReadOnlyMode();
1223
- }
1224
- /**
1225
- * Add mode transition guard
1226
- */
1227
- addModeGuard(name, guard) {
1228
- this.modeManager.addModeGuard(name, guard);
1229
- }
1230
- /**
1231
- * Remove mode transition guard
1232
- */
1233
- removeModeGuard(name) {
1234
- this.modeManager.removeModeGuard(name);
1235
- }
1236
- /**
1237
- * Clear all mode transition guards
1238
- */
1239
- clearModeGuards() {
1240
- this.modeManager.clearModeGuards();
1241
- }
1242
- /**
1243
- * Configure viewport settings for specific mode
1244
- */
1245
- configureModeViewport(mode, settings) {
1246
- this.modeManager.configureModeViewport(mode, settings);
1247
- }
1248
- /**
1249
- * Get viewport settings for specific mode
1250
- */
1251
- getModeViewportSettings(mode) {
1252
- return this.modeManager.getModeViewportSettings(mode);
1253
- }
1254
- /**
1255
- * Get mode history
1256
- */
1257
- getModeHistory() {
1258
- return this.modeManager.getModeHistory();
1259
- }
1260
- /**
1261
- * Clear mode history
1262
- */
1263
- clearModeHistory() {
1264
- this.modeManager.clearModeHistory();
1265
- }
1266
- /**
1267
- * Navigate to previous mode
1268
- */
1269
- previousMode() {
1270
- this.modeManager.previousMode();
1271
- }
1272
- /**
1273
- * Navigate to next mode
1274
- */
1275
- nextMode() {
1276
- this.modeManager.nextMode();
1277
- }
1278
- /**
1279
- * Push mode onto stack (save current, switch to new)
1280
- */
1281
- pushMode(mode) {
1282
- this.modeManager.pushMode(mode);
1283
- }
1284
- /**
1285
- * Pop mode from stack (return to previous)
1286
- */
1287
- popMode() {
1288
- this.modeManager.popMode();
1289
- }
1290
- /**
1291
- * Get mode analytics
1292
- */
1293
- getModeAnalytics() {
1294
- return this.modeManager.getModeAnalytics();
1295
- }
1296
- /**
1297
- * Register before mode change hook
1298
- */
1299
- beforeModeChange(hook) {
1300
- return this.modeManager.beforeModeChange(hook);
1301
- }
1302
- /**
1303
- * Register after mode change hook
1304
- */
1305
- afterModeChange(hook) {
1306
- return this.modeManager.afterModeChange(hook);
1307
- }
1308
- // wave14/model — `getNodeBehaviorForMode` DELETED along with NodeModel.behaviorOverrides.
1309
- // It had no caller outside its own spec; the real mode enforcement is the wave-9
1310
- // ReadonlyLock on the model (see models/readonly-lock.ts), which every mutator actually
1311
- // consults. (Its sibling getLinkBehaviorForMode below is equally caller-less — left in
1312
- // place because it is outside this card's chain, flagged for a future sweep.)
1313
- /**
1314
- * Get link behavior adjusted for current mode
1315
- */
1316
- getLinkBehaviorForMode(baseBehavior) {
1317
- const defaults = {
1318
- deletable: true,
1319
- selectable: true,
1320
- };
1321
- // Merge base behavior with defaults
1322
- const merged = Object.assign(Object.assign({}, defaults), baseBehavior);
1323
- // Apply mode restrictions
1324
- const currentMode = this.modeManager.getMode();
1325
- switch (currentMode) {
1326
- case DiagramMode_1.DiagramMode.DESIGNER:
1327
- // In designer mode, respect all base behavior settings
1328
- return merged;
1329
- case DiagramMode_1.DiagramMode.RUNNING:
1330
- case DiagramMode_1.DiagramMode.VIEW:
1331
- case DiagramMode_1.DiagramMode.DEBUG:
1332
- case DiagramMode_1.DiagramMode.PRESENTATION:
1333
- // In all other modes, disable editing but keep selectable
1334
- return {
1335
- deletable: false,
1336
- selectable: merged.selectable,
1337
- };
1338
- default:
1339
- return merged;
1340
- }
1341
- }
1342
- /**
1343
- * Initialize the engine
1344
- */
1345
- initialize() {
1346
- if (this.initialized) {
1347
- return;
1348
- }
1349
- this.initialized = true;
1350
- this.destroyed = false;
1351
- this.eventBus.emit('engine:initialized');
1352
- }
1353
- /**
1354
- * Get the store
1355
- */
1356
- getStore() {
1357
- return this.store;
1358
- }
1359
- /**
1360
- * Subscribe to events
1361
- */
1362
- on(event, listener) {
1363
- this.eventBus.on(event, listener);
1364
- }
1365
- /**
1366
- * Unsubscribe from events
1367
- */
1368
- off(event, listener) {
1369
- this.eventBus.off(event, listener);
1370
- }
1371
- /**
1372
- * Destroy engine
1373
- */
1374
- destroy() {
1375
- if (this.destroyed)
1376
- return;
1377
- this.destroyed = true;
1378
- // Emit destroyed event BEFORE removing listeners
1379
- this.eventBus.emit('engine:destroyed');
1380
- // Cleanup
1381
- if (this.diagram) {
1382
- this.detachDiagram(this.diagram);
1383
- }
1384
- // Reset mode through ModeManager
1385
- this.modeManager.restore(DiagramMode_1.DiagramMode.DESIGNER);
1386
- this.initialized = false;
1387
- // Note: PluginManager doesn't have destroy method yet
1388
- // this.pluginManager.destroy();
1389
- this.eventBus.removeAllListeners();
1390
- this.store.reset();
1391
- }
1392
- /**
1393
- * Configure systems
1394
- */
1395
- configureSystems() {
1396
- var _a, _b, _c;
1397
- // Configure command manager
1398
- if ((_a = this.config.history) === null || _a === void 0 ? void 0 : _a.maxCommands) {
1399
- this.commandManager.setMaxHistorySize(this.config.history.maxCommands);
1400
- }
1401
- // Configure validation
1402
- if ((_b = this.config.validation) === null || _b === void 0 ? void 0 : _b.realTime) {
1403
- this.validationEngine.enableRealTimeValidation();
1404
- }
1405
- // Configure performance monitoring
1406
- if ((_c = this.config.performance) === null || _c === void 0 ? void 0 : _c.warnThreshold) {
1407
- this.performanceMonitor.setWarnThreshold(this.config.performance.warnThreshold);
1408
- }
1409
- }
1410
- /**
1411
- * Install plugins
1412
- */
1413
- installPlugins() {
1414
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
1415
- if (this.config.plugins) {
1416
- // Same contract as registerPlugin(): a configured plugin is a LIVE one.
1417
- for (const plugin of this.config.plugins) {
1418
- yield this.registerPlugin(plugin);
1419
- }
1420
- }
1421
- });
1422
- }
1423
- /**
1424
- * Register a node as an obstacle in the routing engine
1425
- */
1426
- registerNodeAsObstacle(node) {
1427
- const obstacle = {
1428
- id: node.id,
1429
- x: node.position.x,
1430
- y: node.position.y,
1431
- width: node.size.width,
1432
- height: node.size.height,
1433
- };
1434
- this.routingEngine.addObstacle(obstacle);
1435
- }
1436
- /**
1437
- * Wave 5 (Edge routing) — Card 6: reconcile the shared ObstacleMap with the
1438
- * diagram's GROUP state, idempotently:
1439
- *
1440
- * - a COLLAPSED group (with geometry) is ONE solid obstacle;
1441
- * - members hidden under a collapsed group (at any depth) are NOT obstacles
1442
- * — they are not visible, and routing around invisible things produces
1443
- * inexplicable detours;
1444
- * - expanding restores the members and removes the group block.
1445
- *
1446
- * Runs on every group add/remove/collapse/expand. Public so the grouping
1447
- * feature (which owns collapse SEMANTICS but not the ObstacleMap) can force a
1448
- * reconcile after batch operations.
1449
- */
1450
- refreshGroupObstacles() {
1451
- if (!this.diagram)
1452
- return;
1453
- const groups = this.diagram.getGroups();
1454
- // ids of members hidden under a collapsed group at any depth
1455
- const hidden = new Set();
1456
- for (const g of groups) {
1457
- // a group's members are hidden if IT or any of its ancestors is collapsed
1458
- let cur = g;
1459
- let effectiveCollapsed = false;
1460
- const guard = new Set();
1461
- while (cur && !guard.has(cur.id)) {
1462
- guard.add(cur.id);
1463
- if (cur.isCollapsed) {
1464
- effectiveCollapsed = true;
1465
- break;
1466
- }
1467
- cur = cur.parentGroupId ? this.diagram.getGroup(cur.parentGroupId) : undefined;
1468
- }
1469
- if (!effectiveCollapsed)
1470
- continue;
1471
- for (const memberId of g.members)
1472
- hidden.add(memberId);
1473
- }
1474
- // hidden members: out of the map; visible ones: (re)registered
1475
- for (const node of this.diagram.getNodes()) {
1476
- if (hidden.has(node.id)) {
1477
- this.routingEngine.removeObstacle(node.id);
1478
- }
1479
- else {
1480
- this.routingEngine.updateObstacle({
1481
- id: node.id,
1482
- x: node.position.x,
1483
- y: node.position.y,
1484
- width: node.size.width,
1485
- height: node.size.height,
1486
- kind: 'node',
1487
- });
1488
- }
1489
- }
1490
- // group blocks: only VISIBLE collapsed groups block (a collapsed group
1491
- // nested inside another collapsed group is itself hidden)
1492
- for (const g of groups) {
1493
- const rect = this.groupObstacleRect(g);
1494
- if (g.isCollapsed && !hidden.has(g.id) && rect) {
1495
- this.routingEngine.updateObstacle(Object.assign(Object.assign({ id: g.id }, rect), { kind: 'group' }));
1496
- }
1497
- else {
1498
- this.routingEngine.removeObstacle(g.id);
1499
- }
1500
- }
1501
- }
1502
- groupObstacleRect(g) {
1503
- if (g.size) {
1504
- return { x: g.position.x, y: g.position.y, width: g.size.width, height: g.size.height };
1505
- }
1506
- if (g.bounds)
1507
- return Object.assign({}, g.bounds);
1508
- return null;
1509
- }
1510
- /**
1511
- * Update a node's obstacle when it moves or resizes
1512
- * Also invalidates all links so they recalculate paths with new obstacle positions
1513
- */
1514
- updateNodeObstacle(node) {
1515
- const obstacle = {
1516
- id: node.id,
1517
- x: node.position.x,
1518
- y: node.position.y,
1519
- width: node.size.width,
1520
- height: node.size.height,
1521
- };
1522
- this.routingEngine.updateObstacle(obstacle);
1523
- // NOTE: this method used to also mark EVERY link dirty "so they recalculate"
1524
- // — a sledgehammer that was dead code while the subscription bug hid it
1525
- // (see attachDiagram) and became a live perf regression the moment the fix
1526
- // woke it up: one node move invalidated every link VNode in the diagram.
1527
- // Link invalidation is owned by the renderer's per-frame route pre-pass +
1528
- // markLinksWhoseFrameChanged (wave 4), which re-renders exactly the links
1529
- // whose GEOMETRY actually changed.
1530
- }
1531
- /**
1532
- * Unregister a node obstacle when node is removed
1533
- */
1534
- unregisterNodeObstacle(nodeId) {
1535
- this.routingEngine.removeObstacle(nodeId);
1536
- }
1537
- /**
1538
- * Attach diagram
1539
- */
1540
- attachDiagram(diagram) {
1541
- // Subscribe to diagram events. Every subscription returns a disposer which
1542
- // we store so detachDiagram can unsubscribe the engine's own listeners
1543
- // without accumulating duplicates across attach/detach cycles.
1544
- this.diagramDisposers.push(diagram.on('node:added', (node) => {
1545
- this.eventBus.emit('node:added', node);
1546
- // Register node as obstacle for routing
1547
- this.registerNodeAsObstacle(node);
1548
- // Listen for node position/size changes
1549
- this.diagramDisposers.push(
1550
- // BUGFIX (wave 5, found by the nodes agent): NodeModel emits
1551
- // `change:position` (via trackChange) — never bare `position`. This
1552
- // listener had NEVER fired, so the shared ObstacleMap went stale on
1553
- // every node move; only the renderer's per-request obstacle list kept
1554
- // visible routing honest, while the a-star/dijkstra/visibility
1555
- // adapters — which read the SHARED map — routed around yesterday's
1556
- // positions.
1557
- node.on('change:position', () => {
1558
- this.updateNodeObstacle(node);
1559
- }));
1560
- this.diagramDisposers.push(node.on('change:size', () => {
1561
- this.updateNodeObstacle(node);
1562
- }));
1563
- }));
1564
- this.diagramDisposers.push(diagram.on('node:removed', (node) => {
1565
- this.eventBus.emit('node:removed', node);
1566
- // Unregister node obstacle
1567
- this.unregisterNodeObstacle(node.id);
1568
- }));
1569
- this.diagramDisposers.push(diagram.on('link:added', (link) => {
1570
- this.eventBus.emit('link:added', link);
1571
- // Wave 6 (Card 7): wiring up the last free port in a dynamic group must
1572
- // conjure the next one. This is the whole feature — a `dynamic` group
1573
- // whose allocator never runs is just a group.
1574
- this.reconcileDynamicPortsFor(link);
1575
- }));
1576
- // Wave 5 — Card 6: group state drives the obstacle map. `group:added` also
1577
- // subscribes to that group's own collapse/expand emitter (DiagramModel does
1578
- // not forward those); existing groups are wired below.
1579
- const wireGroup = (group) => {
1580
- this.diagramDisposers.push(group.on('collapsed', () => this.refreshGroupObstacles()));
1581
- this.diagramDisposers.push(group.on('expanded', () => this.refreshGroupObstacles()));
1582
- };
1583
- this.diagramDisposers.push(diagram.on('group:added', (group) => {
1584
- wireGroup(group);
1585
- this.refreshGroupObstacles();
1586
- }));
1587
- this.diagramDisposers.push(diagram.on('group:removed', () => this.refreshGroupObstacles()));
1588
- this.diagramDisposers.push(diagram.on('group:changed', () => this.refreshGroupObstacles()));
1589
- diagram.getGroups().forEach(wireGroup);
1590
- if (diagram.getGroups().length > 0)
1591
- this.refreshGroupObstacles();
1592
- this.diagramDisposers.push(diagram.on('link:removed', (link) => {
1593
- this.eventBus.emit('link:removed', link);
1594
- // Unwiring frees a port, which may leave the group with a SURPLUS of
1595
- // spares — the allocator retires the ones it spawned.
1596
- this.reconcileDynamicPortsFor(link);
1597
- }));
1598
- // Register all existing nodes as obstacles
1599
- diagram.getNodes().forEach((node) => {
1600
- this.registerNodeAsObstacle(node);
1601
- // Listen for node position/size changes
1602
- this.diagramDisposers.push(node.on('change:position', () => {
1603
- this.updateNodeObstacle(node);
1604
- }));
1605
- this.diagramDisposers.push(node.on('change:size', () => {
1606
- this.updateNodeObstacle(node);
1607
- }));
1608
- });
1609
- }
1610
- /**
1611
- * Detach diagram
1612
- */
1613
- detachDiagram(diagram) {
1614
- // Unregister all node obstacles from routing engine so the old diagram's
1615
- // nodes don't remain as obstacles affecting the newly attached diagram.
1616
- // This only touches the routing engine's obstacle registry, not the diagram.
1617
- diagram.getNodes().forEach((node) => {
1618
- this.unregisterNodeObstacle(node.id);
1619
- });
1620
- // Unsubscribe the engine's own listeners that were registered in
1621
- // attachDiagram. We deliberately do NOT clear() or otherwise mutate the old
1622
- // diagram: it must stay fully intact so it can be re-attached later with all
1623
- // of its nodes and links preserved. Disposing the stored handlers also
1624
- // prevents duplicate handlers from accumulating across attach/detach cycles.
1625
- for (const dispose of this.diagramDisposers) {
1626
- dispose();
1627
- }
1628
- this.diagramDisposers = [];
1629
- }
1630
- /**
1631
- * Find port in diagram
1632
- */
1633
- findPort(portId) {
1634
- if (!this.diagram) {
1635
- return undefined;
1636
- }
1637
- for (const node of this.diagram.getNodes()) {
1638
- const port = node.getPort(portId);
1639
- if (port) {
1640
- return port;
1641
- }
1642
- }
1643
- return undefined;
1644
- }
1645
- /**
1646
- * Get node that owns a port (Phase 1.6b)
1647
- */
1648
- getNodeForPort(portId) {
1649
- if (!this.diagram) {
1650
- return undefined;
1651
- }
1652
- for (const node of this.diagram.getNodes()) {
1653
- if (node.getPort(portId)) {
1654
- return node;
1655
- }
1656
- }
1657
- return undefined;
1658
- }
1659
- /**
1660
- * Get port position in global coordinates (Phase 1.6b)
1661
- * @param portId Port ID
1662
- * @returns Global position of the port
1663
- */
1664
- getPortGlobalPosition(portId) {
1665
- var _a, _b, _c, _d;
1666
- const port = this.findPort(portId);
1667
- if (!port) {
1668
- return { x: 0, y: 0 };
1669
- }
1670
- const node = this.getNodeForPort(portId);
1671
- if (!node) {
1672
- return { x: 0, y: 0 };
1673
- }
1674
- // Port position is normalized (0-1) relative to node size
1675
- const localPortPos = {
1676
- x: ((_b = (_a = port.position) === null || _a === void 0 ? void 0 : _a.x) !== null && _b !== void 0 ? _b : 0.5) * node.size.width,
1677
- y: ((_d = (_c = port.position) === null || _c === void 0 ? void 0 : _c.y) !== null && _d !== void 0 ? _d : 0.5) * node.size.height,
1678
- };
1679
- // Transform to global using node's global position
1680
- const nodeGlobalPos = node.getGlobalPosition();
1681
- return {
1682
- x: nodeGlobalPos.x + localPortPos.x,
1683
- y: nodeGlobalPos.y + localPortPos.y,
1684
- };
1685
- }
1686
- /**
1687
- * Compute link path using specified routing algorithm (Phase 1.6b)
1688
- * @param linkId Link ID
1689
- * @param algorithm Routing algorithm to use
1690
- * @param options Routing options
1691
- * @returns Array of points forming the path
1692
- */
1693
- computeLinkPath(linkId, algorithm, options = {}) {
1694
- var _a, _b;
1695
- const link = (_a = this.diagram) === null || _a === void 0 ? void 0 : _a.getLink(linkId);
1696
- if (!link) {
1697
- return [];
1698
- }
1699
- // Build obstacle map (excluding source and target nodes)
1700
- const sourceNode = this.getNodeForPort(link.sourcePortId);
1701
- const targetNode = this.getNodeForPort(link.targetPortId);
1702
- const excludeIds = [sourceNode === null || sourceNode === void 0 ? void 0 : sourceNode.id, targetNode === null || targetNode === void 0 ? void 0 : targetNode.id].filter((id) => id !== undefined);
1703
- const obstacleMap = ObstacleMapBuilder_1.ObstacleMapBuilder.fromDiagramExcluding(this.diagram, excludeIds, { margin: (_b = options.obstacleMargin) !== null && _b !== void 0 ? _b : 5 });
1704
- // Get port positions (in global coordinates)
1705
- const start = this.getPortGlobalPosition(link.sourcePortId);
1706
- const end = this.getPortGlobalPosition(link.targetPortId);
1707
- // Route based on algorithm
1708
- let points;
1709
- switch (algorithm) {
1710
- case 'straight': {
1711
- const router = new StraightRouter_1.StraightRouter();
1712
- const result = router.route({ start, end, obstacles: obstacleMap.getObstacles(), options });
1713
- points = (result === null || result === void 0 ? void 0 : result.points) || [start, end];
1714
- break;
1715
- }
1716
- case 'orthogonal': {
1717
- const router = new OrthogonalRouter_1.OrthogonalRouter();
1718
- const result = router.route({ start, end, obstacles: obstacleMap.getObstacles(), options });
1719
- points = (result === null || result === void 0 ? void 0 : result.points) || [start, end];
1720
- break;
1721
- }
1722
- case 'astar': {
1723
- const router = new AStarRouter_1.AStarRouter(obstacleMap, options);
1724
- points = router.route(start, end);
1725
- // Fallback to direct path if no path found
1726
- if (points.length === 0) {
1727
- points = [start, end];
1728
- }
1729
- break;
1730
- }
1731
- case 'dijkstra': {
1732
- const router = new DijkstraRouter_1.DijkstraRouter(obstacleMap, options);
1733
- points = router.route(start, end);
1734
- // Fallback to direct path if no path found
1735
- if (points.length === 0) {
1736
- points = [start, end];
1737
- }
1738
- break;
1739
- }
1740
- case 'visibility': {
1741
- const router = new VisibilityGraphRouter_1.VisibilityGraphRouter(obstacleMap, options);
1742
- points = router.route(start, end);
1743
- // Fallback to direct path if no path found
1744
- if (points.length === 0) {
1745
- points = [start, end];
1746
- }
1747
- break;
1748
- }
1749
- default:
1750
- throw new Error(`Unknown routing algorithm: ${algorithm}`);
1751
- }
1752
- return points;
1753
- }
1754
- /**
1755
- * Generate link path using RoutingEngine with obstacle avoidance
1756
- * This ensures the final link respects the routing algorithm setting (A*, none, etc.)
1757
- */
1758
- generateLinkPathWithRouting(link, sourcePos, targetPos, sourceDirection, targetDirection, sourceNode, targetNode) {
1759
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
1760
- // Get obstacles from diagram (INCLUDE ALL nodes, even source and target)
1761
- // The routing algorithm uses gap offset to ensure paths start/end outside node boundaries
1762
- const obstacles = [];
1763
- if (this.diagram) {
1764
- this.diagram.getNodes().forEach(node => {
1765
- // Include ALL nodes as obstacles - the gap offset ensures we start/end outside
1766
- obstacles.push({
1767
- id: node.id,
1768
- x: node.position.x,
1769
- y: node.position.y,
1770
- width: node.size.width,
1771
- height: node.size.height,
1772
- });
1773
- });
1774
- }
1775
- // Use the routing engine's default algorithm
1776
- const algorithm = this.routingEngine.getDefaultAlgorithm();
1777
- // Route the path with obstacle avoidance
1778
- // IMPORTANT: avoidObstacles should be based on whether obstacles exist, not on the algorithm
1779
- // - 'orthogonal' algorithm with avoidObstacles=true uses A* with orthogonal-only movement
1780
- // - 'a-star', 'dijkstra', etc. also use obstacle avoidance
1781
- // - 'straight' never avoids obstacles (direct line)
1782
- const shouldAvoidObstacles = obstacles.length > 0 && algorithm !== 'straight';
1783
- const routedPath = yield this.routingEngine.routeAsync({
1784
- start: sourcePos,
1785
- end: targetPos,
1786
- sourceDirection,
1787
- targetDirection,
1788
- obstacles,
1789
- options: {
1790
- algorithm,
1791
- avoidObstacles: shouldAvoidObstacles,
1792
- obstacleMargin: 20,
1793
- gridSize: 10, // Grid size for A* pathfinding
1794
- }
1795
- });
1796
- // Set the link points from the routed path.
1797
- // Wave 9 — Card 7: a SYSTEM write. These points are DERIVED from geometry the
1798
- // document already has; a read-only diagram must still route its links or it
1799
- // renders with no path at all. Not reachable from user input.
1800
- if (routedPath && routedPath.points.length > 0) {
1801
- const points = routedPath.points;
1802
- this.diagram
1803
- ? this.diagram.runSystemWrite(() => link.setPoints(points))
1804
- : link.setPoints(points);
1805
- }
1806
- else {
1807
- // Fallback to simple path generation if routing failed
1808
- link.generatePath(sourcePos, targetPos, sourceDirection, targetDirection);
1809
- }
1810
- });
1811
- }
1812
- /**
1813
- * Set layout service for diagram layouts
1814
- *
1815
- * @param service - Layout service instance
1816
- */
1817
- setLayoutService(service) {
1818
- this.layoutService = service;
1819
- }
1820
- /**
1821
- * The named-algorithm registry, with the built-ins already registered.
1822
- *
1823
- * THE BUG THIS CLOSES: `applyLayout()` below requires `setLayoutService()` —
1824
- * and NOTHING in the codebase ever called it (the only mention is a doc comment
1825
- * in layout/index.ts). So dagre, ELK, force, spectral and community — thousands
1826
- * of lines, several of them untested — were UNREACHABLE from the engine. That
1827
- * is the whole "auto-layout is fragmented" finding. Layout now works out of the
1828
- * box, with no setup call.
1829
- */
1830
- getLayoutRegistry() {
1831
- if (!this._layoutRegistry) {
1832
- // ONE factory, shared with the preset applicator: adapters, then the Card-2
1833
- // portfolio, then our layered engine, then the auto-selector (which takes the
1834
- // registry, so its candidate pool is whatever is actually registered).
1835
- this._layoutRegistry = (0, layout_registry_1.createDefaultLayoutRegistry)();
1836
- }
1837
- return this._layoutRegistry;
1838
- }
1839
- /**
1840
- * Lay out the whole diagram.
1841
- *
1842
- * await engine.layout('dagre', { direction: 'LR' });
1843
- *
1844
- * DETERMINISTIC and IDEMPOTENT: the same graph and seed produce byte-identical
1845
- * coordinates, and running it twice changes nothing the second time. (The seed
1846
- * defaults to a fixed constant, so an author who never thinks about seeds still
1847
- * gets the same picture on every reload; randomness is opt-in.)
1848
- *
1849
- * NOT to be confused with `DiagramModel.getLayoutManager()`, which answers a
1850
- * DIFFERENT question — "where should this ONE newly-added node go?" — and is a
1851
- * placement strategy, not a graph layout. The audit called them "two parallel
1852
- * stacks" and asked for them to be merged; they are not parallel, and merging
1853
- * them would force a single-node placer to pretend it can lay out a graph.
1854
- */
1855
- layout() {
1856
- return tslib_1.__awaiter(this, arguments, void 0, function* (name = layout_registry_1.DEFAULT_LAYOUT_NAME, options = {}) {
1857
- var _a, _b;
1858
- if (!this.diagram) {
1859
- throw new Error('No diagram loaded');
1860
- }
1861
- const registered = this.getLayoutRegistry().get(name);
1862
- if (!registered) {
1863
- const available = this.getLayoutRegistry().names().join(', ');
1864
- throw new Error(`Unknown layout '${name}'. Registered layouts: ${available}`);
1865
- }
1866
- const seed = (_a = options.seed) !== null && _a !== void 0 ? _a : rng_1.DEFAULT_LAYOUT_SEED;
1867
- // Snapshot BEFORE any positions are committed: every return path below must
1868
- // invalidate the routed polyline of links whose endpoints moved. See
1869
- // invalidateStaleLinkRoutes for why leaving them is a real, observed bug.
1870
- const positionsBeforeLayout = this.snapshotNodePositions();
1871
- // Wave 7 Card 4 — nested container layout. On by default whenever the
1872
- // diagram has containers, because the flat path is not just worse there, it
1873
- // is WRONG: it interleaves members of different groups and never updates a
1874
- // single group frame, so every container is left behind pointing at where
1875
- // its members used to be. Opt out with `nested: false`.
1876
- const hasGroups = this.diagram.getGroups().length > 0;
1877
- if (((_b = options.nested) !== null && _b !== void 0 ? _b : hasGroups) && hasGroups) {
1878
- const result = yield new CompoundLayoutService_1.CompoundLayoutService(this.diagram, {
1879
- defaultAlgorithm: name,
1880
- adapters: this.getLayoutRegistry().adapters(),
1881
- layoutTopLevel: true,
1882
- defaultPadding: options.containerPadding,
1883
- gridGap: options.groupSpacing,
1884
- layoutOptions: Object.assign(Object.assign({}, options), { seed }),
1885
- }).layout();
1886
- // CompoundLayoutService commits through setPosition/setFrame as it goes
1887
- // (it has to — each level reads the geometry the level below produced).
1888
- this.invalidateStaleLinkRoutes(positionsBeforeLayout);
1889
- return {
1890
- nodePositions: result.nodePositions,
1891
- bounds: result.bounds,
1892
- metadata: {
1893
- algorithm: name,
1894
- executionTime: 0,
1895
- nested: true,
1896
- containersLaidOut: result.laidOut,
1897
- containersSkipped: result.skipped,
1898
- containersCollapsed: result.collapsed,
1899
- },
1900
- algorithm: name,
1901
- seed,
1902
- // Card 3's run-status fields. A nested layout is a complete, synchronous
1903
- // walk of the container tree — it is never cut short, so it reports itself
1904
- // honestly as a finished single-pass run rather than leaving the caller to
1905
- // guess from `undefined`.
1906
- partial: false,
1907
- iteration: 1,
1908
- totalIterations: 1,
1909
- };
1910
- }
1911
- // ---- the flat path -----------------------------------------------------
1912
- //
1913
- // Card 3 routes it through the layout HOST, which runs the algorithm inline
1914
- // through the very same message loop a worker would run — so there is no second
1915
- // code path to drift, and a test proves the two produce byte-identical
1916
- // coordinates. (This replaces the direct runLayout() call: runLayout remains the
1917
- // shared apply-and-commit path used by the preset applicator, and the host
1918
- // commits through the same setPosition() route.)
1919
- // A hand-rolled RegisteredLayout is an opaque closure over a DiagramModel.
1920
- // A closure cannot cross a thread boundary, so it runs inline — not a
1921
- // policy, just physics. Every built-in exposes its adapter and takes the
1922
- // worker path below.
1923
- if (!registered.adapter) {
1924
- const result = yield registered.apply(this.diagram, Object.assign(Object.assign({}, options), { seed }));
1925
- this.commitLayoutPositions(result.nodePositions);
1926
- this.invalidateStaleLinkRoutes(positionsBeforeLayout);
1927
- return Object.assign(Object.assign({}, result), { algorithm: name, seed, partial: false, iteration: 1, totalIterations: 1 });
1928
- }
1929
- // Wave 7 Card 3: ONE path, whether or not a worker port is attached. The
1930
- // host runs the algorithm inline through the very same message loop the
1931
- // worker would run, so there is no second code path to drift — and a test
1932
- // proves the two produce byte-identical coordinates.
1933
- const graph = (0, layout_graph_1.serializeGraph)(this.diagram.getNodes(), this.diagram.getLinks());
1934
- const result = yield this.getLayoutHost().run(name, graph, (0, layout_registry_1.translateOptions)(name, Object.assign(Object.assign({}, options), { seed })), {
1935
- signal: options.signal,
1936
- onProgress: options.onProgress,
1937
- timeBudgetMs: options.timeBudgetMs,
1938
- sliceMs: options.sliceMs,
1939
- stopAfterIteration: options.stopAfterIteration,
1940
- });
1941
- this.commitLayoutPositions(result.nodePositions);
1942
- this.invalidateStaleLinkRoutes(positionsBeforeLayout);
1943
- return Object.assign(Object.assign({}, result), { algorithm: name, seed });
1944
- });
1945
- }
1946
- /**
1947
- * Wave 7 — Card 6: mental-map-preserving incremental layout.
1948
- *
1949
- * await engine.layoutIncremental({ changed: [newNode.id], budget: { maxPerNode: 60 } });
1950
- *
1951
- * Mermaid re-renders the whole diagram from scratch on every edit and destroys the
1952
- * user's spatial memory of their own diagram. This does the opposite:
1953
- *
1954
- * 1. everything outside the affected region becomes a Card-5 ANCHOR — an
1955
- * immovable obstacle the layout works AROUND (impossible before Card 5, when
1956
- * "constraints" were positions clamped after an unconstrained run);
1957
- * 2. the result is RE-ALIGNED onto the previous layout by matching centroids —
1958
- * exactly the translation that minimises squared displacement, because a
1959
- * layered layout is defined only up to translation, so one new node widening
1960
- * a rank slides the whole picture sideways and makes every node "move" while
1961
- * the drawing is unchanged;
1962
- * 3. movement is MEASURED against an explicit budget and reported.
1963
- *
1964
- * Returns a tween PLAN rather than animating: the engine says where things go at
1965
- * time t, the host drives t — which is what keeps this runnable in a worker, in
1966
- * SSR and in a test.
1967
- *
1968
- * ONE SEMANTIC, STATED PLAINLY. This runs the `layered` engine, because it is the
1969
- * only one that honours anchors DURING coordinate assignment. If the diagram's
1970
- * current positions came from a DIFFERENT engine, the first incremental pass
1971
- * necessarily re-draws it — and that is not a bug to paper over: "move as little
1972
- * as possible" is ill-posed across engines, because there is no meaningful small
1973
- * move between two engines' idea of the same graph.
1974
- */
1975
- layoutIncremental() {
1976
- return tslib_1.__awaiter(this, arguments, void 0, function* (options = {}) {
1977
- var _a, _b, _c, _d;
1978
- if (!this.diagram)
1979
- throw new Error('No diagram loaded');
1980
- // The baseline EXCLUDES the just-added nodes. A node the user has only now
1981
- // created has no meaningful "previous position" — it sits wherever the model
1982
- // defaulted it (usually 0,0). Counting it is not a cosmetic error in the report:
1983
- // it DRAGS THE CENTROID, so the re-alignment translates the whole diagram to
1984
- // accommodate a position that never meant anything.
1985
- const changed = new Set((_a = options.changed) !== null && _a !== void 0 ? _a : []);
1986
- const before = new Map(this.diagram
1987
- .getNodes()
1988
- .filter((n) => !changed.has(n.id))
1989
- .map((n) => [n.id, { x: n.position.x, y: n.position.y }]));
1990
- const semantic = (0, mental_map_1.constraintsForStrategy)(this.diagram, before, options);
1991
- const result = yield this.layout((_b = options.name) !== null && _b !== void 0 ? _b : 'layered', Object.assign(Object.assign({}, options), { semantic }));
1992
- // Re-align onto the previous picture — but ONLY when the layout was FREE.
1993
- // Alignment cancels the arbitrary translation of a free layout; if a node is
1994
- // anchored the frame of reference is already pinned, and translating on top of
1995
- // that DRAGS THE ANCHORED NODES, which is the one thing they exist to prevent.
1996
- const raw = new Map(result.nodePositions);
1997
- const anchored = Object.keys((_c = semantic.anchors) !== null && _c !== void 0 ? _c : {}).length > 0;
1998
- const naive = (0, mental_map_1.measureMovement)(before, raw, options.budget);
1999
- const aligned = anchored ? raw : (0, mental_map_1.alignToPrevious)(raw, before).positions;
2000
- const settled = (0, mental_map_1.measureMovement)(before, aligned, options.budget);
2001
- const movement = Object.assign(Object.assign({}, settled), { savedByAlignment: Math.max(0, naive.total - settled.total) });
2002
- // The alignment translation below moves nodes AGAIN after layout()'s own
2003
- // commit — so its own snapshot/invalidate pair, or the translated picture
2004
- // keeps polylines routed for the pre-alignment coordinates.
2005
- const beforeAlign = this.snapshotNodePositions();
2006
- for (const [id, p] of aligned) {
2007
- (_d = this.diagram.getNode(id)) === null || _d === void 0 ? void 0 : _d.setPosition(p.x, p.y);
2008
- }
2009
- this.invalidateStaleLinkRoutes(beforeAlign);
2010
- return Object.assign(Object.assign({}, result), { nodePositions: aligned, movement, tween: (0, mental_map_1.planTween)(before, aligned) });
2011
- });
2012
- }
2013
- /** Every node's current position, keyed by id — the pre-layout baseline. */
2014
- snapshotNodePositions() {
2015
- var _a, _b;
2016
- const snapshot = new Map();
2017
- for (const node of (_b = (_a = this.diagram) === null || _a === void 0 ? void 0 : _a.getNodes()) !== null && _b !== void 0 ? _b : []) {
2018
- snapshot.set(node.id, { x: node.position.x, y: node.position.y });
2019
- }
2020
- return snapshot;
2021
- }
2022
- /**
2023
- * THE FIX for the stale-polyline bug: layout moves NODES, but each link keeps
2024
- * the polyline it was routed on before. The renderer treats a non-empty
2025
- * `link.points` as painted geometry and edge LABELS are placed by walking it
2026
- * (LabelRenderer via `link.getPointAtPosition`) — so after `engine.layout()`
2027
- * the labels sat at PRE-layout midpoints, observed live as "yes"/"no"
2028
- * stranded off-canvas at the old world coordinates while the nodes moved.
2029
- *
2030
- * Emptying the polyline is the canonical "re-route me" state: the renderer's
2031
- * frame pre-pass recomputes the route from the CURRENT node/port geometry on
2032
- * the next paint, and `setPoints` marks the link dirty so the cached VNode
2033
- * cannot be reused. Only links whose endpoint nodes actually MOVED are
2034
- * touched — an anchored subgraph's links keep their (still valid) routes.
2035
- *
2036
- * Manual waypoints are cleared with the route, same as `setPathType` /
2037
- * `setRouter` do: they were authored against the pre-layout coordinates, and
2038
- * an empty polyline with the manual flag still set would send the renderer
2039
- * down its keep-the-interior-waypoints branch with no interior to keep.
2040
- */
2041
- invalidateStaleLinkRoutes(before) {
2042
- var _a, _b;
2043
- if (!this.diagram)
2044
- return;
2045
- const moved = new Set();
2046
- for (const node of this.diagram.getNodes()) {
2047
- const prev = before.get(node.id);
2048
- if (!prev || prev.x !== node.position.x || prev.y !== node.position.y) {
2049
- moved.add(node.id);
2050
- }
2051
- }
2052
- if (moved.size === 0)
2053
- return;
2054
- const nodeIdForPort = (portId) => { var _a; return (_a = this.diagram.getNodes().find((n) => n.getPorts().some((p) => p.id === portId))) === null || _a === void 0 ? void 0 : _a.id; };
2055
- for (const link of this.diagram.getLinks()) {
2056
- const sourceId = (_a = link.sourceNodeId) !== null && _a !== void 0 ? _a : nodeIdForPort(link.sourcePortId);
2057
- const targetId = (_b = link.targetNodeId) !== null && _b !== void 0 ? _b : nodeIdForPort(link.targetPortId);
2058
- if (!(sourceId && moved.has(sourceId)) && !(targetId && moved.has(targetId))) {
2059
- continue;
2060
- }
2061
- if (link.points.length > 0) {
2062
- link.setPoints([]);
2063
- }
2064
- if (link.getMetadata('hasManualWaypoints') === true) {
2065
- link.setMetadata('hasManualWaypoints', false);
2066
- }
2067
- }
2068
- }
2069
- /**
2070
- * Commit computed positions onto the real nodes.
2071
- *
2072
- * `setPosition()` rather than a raw write, so the spatial index, the routing
2073
- * obstacle map and the renderer all see the move — the wave-5 lesson: a
2074
- * subscription to an event nobody emits is a subscription to nothing.
2075
- *
2076
- * This is also the reason a partial result is USEFUL rather than merely
2077
- * honest: the best-so-far positions land on the diagram exactly like final
2078
- * ones, so a cancelled layout leaves a real, coherent picture behind.
2079
- */
2080
- commitLayoutPositions(nodePositions) {
2081
- var _a, _b;
2082
- for (const [nodeId, position] of nodePositions) {
2083
- (_b = (_a = this.diagram) === null || _a === void 0 ? void 0 : _a.getNode(nodeId)) === null || _b === void 0 ? void 0 : _b.setPosition(position.x, position.y);
2084
- }
2085
- }
2086
- /**
2087
- * Run layout off the main thread.
2088
- *
2089
- * The engine does NOT construct the Worker — that would bake one bundler's URL
2090
- * scheme into the engine, which is exactly what the old (never-instantiated)
2091
- * `LayoutWorkerPool` did with its hardcoded `/assets/workers/layout.worker.js`.
2092
- * The caller builds the worker however its toolchain likes and hands it in:
2093
- *
2094
- * const worker = new Worker(new URL('./layout.worker', import.meta.url),
2095
- * { type: 'module' });
2096
- * engine.setLayoutPort(worker as unknown as LayoutPort);
2097
- *
2098
- * Pass `undefined` to go back to running inline.
2099
- */
2100
- setLayoutPort(port) {
2101
- this.layoutPort = port;
2102
- this.layoutHost = undefined; // rebuilt lazily against the new port
2103
- }
2104
- getLayoutHost() {
2105
- if (!this.layoutHost) {
2106
- this.layoutHost = new layout_host_1.LayoutHost(this.layoutPort, {
2107
- // Inline runs resolve against the LIVE registry, so a layout registered
2108
- // at runtime (or a built-in that a host has replaced) is honoured. A
2109
- // real worker cannot: functions do not survive postMessage.
2110
- resolve: (layoutName) => { var _a; return (_a = this.getLayoutRegistry().get(layoutName)) === null || _a === void 0 ? void 0 : _a.adapter; },
2111
- });
2112
- }
2113
- return this.layoutHost;
2114
- }
2115
- /**
2116
- * Apply layout to current diagram
2117
- *
2118
- * @param config - Layout configuration
2119
- * @returns Layout result with positions and metadata
2120
- * @throws Error if no diagram is loaded or layout service is not initialized
2121
- * @deprecated Wave 7 Card 0 — use {@link layout} instead. This path requires a
2122
- * `setLayoutService()` call that nothing ever made, so it always threw.
2123
- */
2124
- applyLayout(config) {
2125
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
2126
- if (!this.diagram) {
2127
- throw new Error('No diagram loaded');
2128
- }
2129
- if (!this.layoutService) {
2130
- throw new Error('LayoutService not initialized. Call setLayoutService() first.');
2131
- }
2132
- return this.layoutService.applyLayout(this.diagram, config);
2133
- });
2134
- }
2135
- /**
2136
- * Quick helper: Apply Dagre layout
2137
- *
2138
- * @param options - Dagre layout options
2139
- * @param canvasDimensions - Optional canvas dimensions for viewport fitting
2140
- * @returns Layout result
2141
- */
2142
- applyDagreLayout(options, canvasDimensions) {
2143
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
2144
- return this.applyLayout({
2145
- adapter: 'dagre',
2146
- options,
2147
- animate: true,
2148
- fit: false, // Don't auto-fit by default to allow user control
2149
- canvasDimensions,
2150
- });
2151
- });
2152
- }
2153
- /**
2154
- * Quick helper: Apply ELK layout
2155
- *
2156
- * @param options - ELK layout options
2157
- * @param canvasDimensions - Optional canvas dimensions for viewport fitting
2158
- * @returns Layout result
2159
- */
2160
- applyELKLayout(options, canvasDimensions) {
2161
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
2162
- return this.applyLayout({
2163
- adapter: 'elk',
2164
- options,
2165
- animate: true,
2166
- fit: false, // Don't auto-fit by default to allow user control
2167
- canvasDimensions,
2168
- });
2169
- });
2170
- }
2171
- /**
2172
- * Cleanup and dispose of all resources
2173
- * Should be called when the engine is no longer needed
2174
- */
2175
- dispose() {
2176
- // Clear diagram
2177
- if (this.diagram) {
2178
- this.diagram.clear();
2179
- this.diagram = null;
2180
- }
2181
- // Clear command history
2182
- this.commandManager.clear();
2183
- // Clear performance data
2184
- this.performanceMonitor.clear();
2185
- // Clear clipboard
2186
- this.clipboardManager.clear();
2187
- }
2188
- }
2189
- exports.DiagramEngine = DiagramEngine;
2190
- //# sourceMappingURL=DiagramEngine.js.map