@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,1733 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.InteractionController = void 0;
4
- const engine_1 = require("@grafloria/engine");
5
- // Wave 6: THE port-position function — hit-test and magnet where you DRAW.
6
- const port_positioning_1 = require("../svg/port-positioning");
7
- const WaypointEditor_1 = require("./WaypointEditor");
8
- const ControlPointEditor_1 = require("./ControlPointEditor");
9
- const ArrowRenderer_1 = require("../svg/ArrowRenderer");
10
- const link_hit_test_1 = require("../svg/link-hit-test");
11
- // wave10/gallery: the HOST's connection-veto registry. See
12
- // installHostConnectionValidatorBridge() — the drag path never asked it.
13
- const tools_1 = require("../ext/tools");
14
- /**
15
- * InteractionController — the framework-agnostic interaction brain.
16
- *
17
- * Owns all pointer/keyboard-driven interaction LOGIC for a diagram: hover
18
- * detection, port connection dragging, link endpoint reconnection, inline label
19
- * repositioning, and waypoint / control-point editing.
20
- *
21
- * ## Framework contract
22
- *
23
- * This class answers **"WHAT changed?"** — never **"who should re-render?"**.
24
- * Every handler returns a boolean (or a value) telling the host whether a
25
- * re-render is warranted; the host framework decides how to act on that:
26
- *
27
- * - Angular → `cdr.markForCheck()` (see `InteractionHandlerService`)
28
- * - React → `setState` / `useSyncExternalStore`
29
- * - Vue → touch a `ref`
30
- * - Vanilla → call your own `render()`
31
- *
32
- * It therefore has **zero framework imports** (no Angular, no DOM beyond the
33
- * ambient `performance.now()` clock) and is instantiated with a plain `new`.
34
- * It takes WORLD coordinates only: converting client/screen pixels into world
35
- * space is the job of {@link ViewportController}, so this class never touches
36
- * an event, an element, or a bounding rect.
37
- *
38
- * Supports three interaction modes (driven by the engine's interaction config):
39
- * - DIRECT: Drag node body to move, drag port to connect
40
- * - DELIBERATE: Select node first, then drag to move
41
- * - SMART: Visio-style with hover-based port visibility
42
- *
43
- * The Angular `InteractionHandlerService` is a thin `@Injectable` subclass of
44
- * this class and adds no behaviour of its own.
45
- */
46
- class InteractionController {
47
- /**
48
- * Wave 9 — Card 7. Is the document locked?
49
- *
50
- * The InteractionController is the LAST place a read-only bypass could hide,
51
- * because it is the one layer that mutates the model DIRECTLY — it never touches
52
- * the CommandManager. Most of its writes now hit the model-level guards anyway,
53
- * but `moveControlPoint` writes `link.segments` as a RAW PUBLIC FIELD, which no
54
- * model guard can see. So the refusal has to be here as well.
55
- */
56
- isReadonlyEngine(engine) {
57
- var _a;
58
- return ((_a = engine === null || engine === void 0 ? void 0 : engine.getDiagram()) === null || _a === void 0 ? void 0 : _a.isReadonly()) === true;
59
- }
60
- /** Read-only probe for the methods that are handed a link but no engine. */
61
- isReadonlyLink(link) {
62
- var _a;
63
- return ((_a = link === null || link === void 0 ? void 0 : link.diagram) === null || _a === void 0 ? void 0 : _a.isReadonly()) === true;
64
- }
65
- /** Grow every hit target by `world` units (0 = mouse-precision, the default). */
66
- setHitSlop(world) {
67
- this.hitSlop = Math.max(0, world);
68
- }
69
- getHitSlop() {
70
- return this.hitSlop;
71
- }
72
- setLinkHitAreaWidth(width) {
73
- this.linkHitAreaWidthConfig = Math.max(0, width);
74
- }
75
- constructor() {
76
- /**
77
- * Shared arrow renderer used only for canonical arrow tip-offset geometry
78
- * when computing arrowhead hit anchors (see {@link buildLinkHitOptions}).
79
- */
80
- this.arrowRenderer = new ArrowRenderer_1.ArrowRenderer();
81
- /**
82
- * Wave 9 — Card 2. Extra hit radius in WORLD units, granted while a TOUCH
83
- * pointer owns the gesture (the binder sets it on touch down and clears it on
84
- * up). A 5px port is not hittable with a fingertip; this is what makes ports,
85
- * waypoints and control-point handles touch-sized without changing how any of
86
- * them RENDER — the visual stays crisp, only the catchment grows.
87
- *
88
- * World, not screen: every hit test here is world-space, so a screen-px slop
89
- * would shrink to nothing exactly when you are zoomed out and the targets are
90
- * already smallest.
91
- */
92
- this.hitSlop = 0;
93
- /**
94
- * The renderer's configured interaction-stroke width (`linkHitAreaWidth`).
95
- * The link grab distance derives from it so the painted invitation and the
96
- * accepted press stay the SAME geometry — createDiagram syncs it whenever
97
- * the host overrides the renderer default.
98
- */
99
- this.linkHitAreaWidthConfig = link_hit_test_1.DEFAULT_LINK_HIT_AREA_WIDTH;
100
- /**
101
- * Current hover state
102
- */
103
- this.hoveredNode = null;
104
- this.hoveredPort = null;
105
- this.hoveredLink = null;
106
- /**
107
- * Connection drag state
108
- */
109
- this.isConnecting = false;
110
- this.connectionSourcePort = null;
111
- /**
112
- * Link reconnection state
113
- */
114
- this.isReconnectingLink = false;
115
- this.reconnectingLink = null;
116
- this.reconnectingEndpoint = null;
117
- /** Wave 2: current cursor position while dragging a reconnecting endpoint. */
118
- this.reconnectingMousePoint = null;
119
- /**
120
- * Wave 2 (Edges & links): inline label drag-reposition state. While active,
121
- * mouse moves remap the cursor to a (position 0-1, offset) pair on the model
122
- * so the label survives re-routing. See {@link computeLabelDragUpdate}.
123
- */
124
- this.isDraggingLabel = false;
125
- this.editingLabelLink = null;
126
- this.editingLabelIndex = null;
127
- /**
128
- * Phase 2.3a: Waypoint editing state
129
- */
130
- this.isDraggingWaypoint = false;
131
- this.editingLink = null;
132
- this.editingWaypointIndex = null;
133
- /**
134
- * wave12: the link's points when a waypoint drag STARTED, so endWaypointDrag can commit
135
- * the whole gesture as one undoable SetLinkPointsCommand (FROM→TO). Absent between drags.
136
- */
137
- this.waypointDragStartPoints = null;
138
- this.waypointEditor = null;
139
- this.hoveredWaypointIndex = null;
140
- this.hoveredWaypointLink = null;
141
- /**
142
- * Phase 2.3b: Control point editing state
143
- */
144
- this.isDraggingControlPoint = false;
145
- this.editingControlPointLink = null;
146
- this.editingControlPointSegmentIndex = null;
147
- this.editingControlPointType = null;
148
- this.controlPointEditor = null;
149
- this.hoveredControlPointSegmentIndex = null;
150
- this.hoveredControlPointType = null;
151
- this.hoveredControlPointLink = null;
152
- /**
153
- * Phase 5: Performance optimization - debounce hover detection
154
- */
155
- this.hoverDebounceTimer = null;
156
- this.HOVER_DEBOUNCE_MS = 16; // ~60fps
157
- /**
158
- * Phase 5: Performance monitoring
159
- */
160
- this.performanceMetrics = {
161
- hoverDetectionTime: 0,
162
- connectionUpdateTime: 0,
163
- portHitTestTime: 0,
164
- };
165
- /**
166
- * Phase 5: Port hit test cache for performance
167
- */
168
- this.portHitCache = new Map();
169
- this.portHitCacheInvalidated = false;
170
- /**
171
- * ==========================================================================
172
- * wave10/gallery BUG FIX — `registerConnectionValidator` did not veto a DRAG.
173
- * ==========================================================================
174
- *
175
- * `ext/tools.ts` documents its registry as: "Validators registered here are
176
- * consulted wherever the renderer offers a connection", and its whole reason
177
- * for existing is that "a HOST had no way to inject 'an Order may not connect
178
- * to an Invoice'".
179
- *
180
- * It was consulted in exactly ONE place: `canConnectPorts()` in snapping.ts —
181
- * i.e. proximity-connect and keyboard-connect. The MOUSE DRAG, which is how
182
- * essentially every connection in every diagram ever made actually gets made,
183
- * never asked. You could register a validator that rejected every connection
184
- * in the graph, drag from a port to a port, and get the link.
185
- *
186
- * The engine has its own validator list on `ConnectionStateManager` — which
187
- * the drag DOES consult, and which also feeds `calculateValidTargets()`, so a
188
- * veto registered there also dims the invalid ports during the drag. So the
189
- * fix is a bridge, not a second enforcement point: forward the host registry
190
- * into the engine's list, once per engine. With no validators registered
191
- * `isValidConnection()` returns `{ valid: true }`, so the bridge costs a
192
- * function call on a path that is already doing a hit-test.
193
- */
194
- this.validatorBridgedEngines = new WeakSet();
195
- // Phase 2.3a: Initialize waypoint editor with default config
196
- this.waypointEditor = new WaypointEditor_1.WaypointEditor({
197
- snapToGrid: false,
198
- gridSize: 20,
199
- removeOnDoubleClick: true,
200
- handleRadius: 5,
201
- handleColor: '#3b82f6',
202
- handleStrokeColor: '#ffffff',
203
- minDistanceFromEndpoints: 30,
204
- clickDetectionRadius: 10,
205
- });
206
- // Phase 2.3b: Initialize control point editor with default config
207
- this.controlPointEditor = new ControlPointEditor_1.ControlPointEditor({
208
- snapToGrid: false,
209
- gridSize: 20,
210
- handleRadius: 6,
211
- handleColor: '#10b981',
212
- handleStrokeColor: '#ffffff',
213
- controlLineColor: '#6b7280',
214
- controlLineWidth: 1,
215
- controlLineDash: [5, 5],
216
- clickDetectionRadius: 10,
217
- showControlLines: true,
218
- symmetricControls: false,
219
- });
220
- }
221
- /**
222
- * Phase 5: Dispose and cleanup resources
223
- */
224
- dispose() {
225
- if (this.hoverDebounceTimer) {
226
- clearTimeout(this.hoverDebounceTimer);
227
- this.hoverDebounceTimer = null;
228
- }
229
- this.portHitCache.clear();
230
- this.hoveredNode = null;
231
- this.hoveredPort = null;
232
- this.hoveredLink = null;
233
- // BUGFIX (wave 3): `isConnecting` was never cleared here, so a disposed
234
- // controller reported `isInteracting() === true` forever — surfaced by the
235
- // first framework-free dispose test. Cleared alongside its source port.
236
- this.isConnecting = false;
237
- this.connectionSourcePort = null;
238
- this.reconnectingLink = null;
239
- this.reconnectingEndpoint = null;
240
- this.reconnectingMousePoint = null;
241
- this.isReconnectingLink = false;
242
- // Wave 2: Clean up label drag state
243
- this.isDraggingLabel = false;
244
- this.editingLabelLink = null;
245
- this.editingLabelIndex = null;
246
- // Phase 2.3a: Clean up waypoint editing state
247
- this.editingLink = null;
248
- this.editingWaypointIndex = null;
249
- this.isDraggingWaypoint = false;
250
- this.hoveredWaypointIndex = null;
251
- this.hoveredWaypointLink = null;
252
- // Phase 2.3b: Clean up control point editing state
253
- this.editingControlPointLink = null;
254
- this.editingControlPointSegmentIndex = null;
255
- this.editingControlPointType = null;
256
- this.isDraggingControlPoint = false;
257
- this.hoveredControlPointSegmentIndex = null;
258
- this.hoveredControlPointType = null;
259
- this.hoveredControlPointLink = null;
260
- }
261
- /**
262
- * Phase 5: Get performance metrics
263
- */
264
- getPerformanceMetrics() {
265
- return Object.assign({}, this.performanceMetrics);
266
- }
267
- /**
268
- * Phase 5: Invalidate port hit cache (call when nodes move or ports change)
269
- */
270
- invalidatePortHitCache() {
271
- this.portHitCacheInvalidated = true;
272
- }
273
- /**
274
- * Phase 3: Handle mouse move for hover detection
275
- * Phase 5: Enhanced with performance monitoring and validation
276
- * Updates hover states for nodes, ports, and links
277
- * CRITICAL FIX: Added comprehensive debugging
278
- */
279
- handleMouseMove(worldX, worldY, engine) {
280
- var _a, _b;
281
- // Phase 5: Validate inputs
282
- if (!engine || !isFinite(worldX) || !isFinite(worldY)) {
283
- return false;
284
- }
285
- const diagram = engine.getDiagram();
286
- if (!diagram)
287
- return false;
288
- // Phase 5: Performance monitoring
289
- const startTime = performance.now();
290
- const config = engine.getInteractionConfig();
291
- let needsRender = false;
292
- // Find what's under the cursor
293
- const nodeAtPosition = diagram.getNodeAtPosition(worldX, worldY);
294
- const portAtPosition = this.findPortAtPosition(worldX, worldY, diagram, engine);
295
- const linkAtPosition = this.findLinkAtPosition(worldX, worldY, diagram);
296
- // CRITICAL FIX: Debug logging for port detection
297
- const debugPortDetection = false; // Disabled - working correctly now
298
- if (debugPortDetection && (portAtPosition || nodeAtPosition)) {
299
- console.log('🔍 Hover detection:', {
300
- worldPos: { x: worldX.toFixed(1), y: worldY.toFixed(1) },
301
- node: (nodeAtPosition === null || nodeAtPosition === void 0 ? void 0 : nodeAtPosition.getMetadata('label')) || 'none',
302
- port: portAtPosition ? `${portAtPosition.side} (${portAtPosition.id})` : 'none',
303
- portVisibility: config.portVisibility,
304
- });
305
- }
306
- // Update node hover state. Hovering a node's CHROME (a drag-handle child)
307
- // is hovering the node: without the propagation, a window whose title bar
308
- // covers its top strip never reads as hovered there — so its hover-visible
309
- // ports never surfaced ("the port on the title" report, second half).
310
- const chromeParent = ((_b = (_a = nodeAtPosition === null || nodeAtPosition === void 0 ? void 0 : nodeAtPosition.behavior) === null || _a === void 0 ? void 0 : _a.dragHandler) === null || _b === void 0 ? void 0 : _b.isDragHandler) === true && nodeAtPosition.parentId
311
- ? diagram.getNode(nodeAtPosition.parentId)
312
- : null;
313
- const allNodes = diagram.getNodes();
314
- allNodes.forEach((node) => {
315
- const wasHovered = node.state.hovered;
316
- const isHovered = node === nodeAtPosition || node === chromeParent;
317
- if (wasHovered !== isHovered) {
318
- node.setState({ hovered: isHovered });
319
- needsRender = true;
320
- if (debugPortDetection) {
321
- console.log(` Node ${node.getMetadata('label')} hover: ${wasHovered} → ${isHovered}`);
322
- }
323
- }
324
- });
325
- // Update port hover state
326
- allNodes.forEach((node) => {
327
- node.getPorts().forEach((port) => {
328
- const wasHovered = port.isHovered;
329
- const isHovered = port === portAtPosition;
330
- if (wasHovered !== isHovered) {
331
- port.isHovered = isHovered;
332
- needsRender = true;
333
- // CRITICAL FIX: Mark node as dirty when port hover state changes
334
- // This forces the renderer to regenerate the port VNodes with updated styles
335
- node.markDirty('port-hover-changed');
336
- // TEMPORARY DEBUG: Always log port hover changes to see what's happening
337
- console.log(`🔘 Port ${port.side} hover: ${wasHovered} → ${isHovered}`, { nodeLabel: node.getMetadata('label') });
338
- }
339
- });
340
- });
341
- // Update link hover state
342
- const allLinks = diagram.getLinks();
343
- allLinks.forEach((link) => {
344
- const currentState = link.state;
345
- const isHovered = link === linkAtPosition;
346
- // Don't override selected/highlighted states with hover
347
- // Selected and highlighted links keep their state even when hovered
348
- if (currentState === 'selected' || currentState === 'highlighted') {
349
- return; // Keep current state, don't change to hovered
350
- }
351
- const wasHovered = currentState === 'hovered';
352
- if (wasHovered !== isHovered) {
353
- link.setState(isHovered ? 'hovered' : 'default');
354
- needsRender = true;
355
- }
356
- });
357
- // Store current hover state
358
- this.hoveredNode = nodeAtPosition || null;
359
- this.hoveredPort = portAtPosition;
360
- this.hoveredLink = linkAtPosition;
361
- // Phase 5: Track performance
362
- this.performanceMetrics.hoverDetectionTime = performance.now() - startTime;
363
- return needsRender;
364
- }
365
- /**
366
- * Phase 3: Handle connection drag update
367
- * Phase 5: Enhanced with performance monitoring and validation
368
- * Updates connection preview during drag
369
- */
370
- handleConnectionDrag(worldX, worldY, engine) {
371
- var _a;
372
- // Phase 5: Validate state and inputs
373
- if (!this.isConnecting || !this.connectionSourcePort) {
374
- return false;
375
- }
376
- if (!engine || !isFinite(worldX) || !isFinite(worldY)) {
377
- return false;
378
- }
379
- // Phase 5: Performance monitoring
380
- const startTime = performance.now();
381
- try {
382
- const connectionStateManager = engine.getConnectionStateManager();
383
- // Wave 6 (Card 6): MAGNET SNAP. Fall back from "the port under the cursor"
384
- // to "the nearest VALID port within the magnet radius", so a drag latches
385
- // on before the pointer is precisely over a 6px circle. The radius is the
386
- // engine's `snapToPortRadius`, and the candidate set is the SAME
387
- // valid-target set the highlight paints — the thing you can snap to is
388
- // exactly the thing lit up as snappable, which is the whole contract.
389
- const hoveredPort = (_a = this.hoveredPort) !== null && _a !== void 0 ? _a : this.findMagnetPort(worldX, worldY, engine);
390
- // Update connection state with current mouse position and hovered port
391
- connectionStateManager.updateConnection({ x: worldX, y: worldY }, hoveredPort || undefined);
392
- // Update port highlight states
393
- this.updatePortHighlights(engine);
394
- // Phase 5: Track performance
395
- this.performanceMetrics.connectionUpdateTime = performance.now() - startTime;
396
- return true;
397
- }
398
- catch (error) {
399
- // Phase 5: Error handling
400
- console.error('Error during connection drag:', error);
401
- this.cancelConnection(engine);
402
- return false;
403
- }
404
- }
405
- /**
406
- * Phase 3: Start connection from port
407
- * Phase 5: Enhanced with validation and error handling
408
- * CRITICAL FIX: Added detailed logging
409
- */
410
- startConnection(port, worldX, worldY, engine) {
411
- if (this.isReadonlyEngine(engine))
412
- return;
413
- // Phase 5: Validate inputs
414
- if (!port || !engine || !isFinite(worldX) || !isFinite(worldY)) {
415
- console.warn('❌ Invalid inputs for startConnection:', { port: !!port, engine: !!engine, worldX, worldY });
416
- return;
417
- }
418
- try {
419
- this.isConnecting = true;
420
- this.connectionSourcePort = port;
421
- const connectionStateManager = engine.getConnectionStateManager();
422
- connectionStateManager.startConnection(port, { x: worldX, y: worldY });
423
- console.debug('🔌 Connection started:', {
424
- portId: port.id,
425
- portType: port.type,
426
- portSide: port.side,
427
- position: { x: worldX.toFixed(1), y: worldY.toFixed(1) }
428
- });
429
- }
430
- catch (error) {
431
- // Phase 5: Error recovery
432
- console.error('❌ Error starting connection:', error);
433
- this.isConnecting = false;
434
- this.connectionSourcePort = null;
435
- }
436
- }
437
- /**
438
- * wave12/connect-ergonomics (gap 3) — Easy Connect: start a connection from a
439
- * node BODY, not a port glyph. Picks the source port nearest the press point
440
- * (so a drag off the right side starts from the right port) and begins the
441
- * normal connection drag from it. Returns false when the node has no port to
442
- * start from. The whole gesture then flows through the existing connection
443
- * pipeline (preview on move, {@link completeConnection} on drop).
444
- */
445
- startNodeBodyConnection(node, worldX, worldY, engine) {
446
- if (this.isReadonlyEngine(engine))
447
- return false;
448
- const port = this.nearestPortOnNode(node, worldX, worldY);
449
- if (!port)
450
- return false;
451
- this.startConnection(port, worldX, worldY, engine);
452
- return true;
453
- }
454
- /** The node's port whose drawn position is nearest `(worldX, worldY)`, or null. */
455
- nearestPortOnNode(node, worldX, worldY) {
456
- let best = null;
457
- let bestDistance = Infinity;
458
- for (const port of node.getPorts().values()) {
459
- const p = (0, port_positioning_1.portWorldPosition)(port, node);
460
- const distance = Math.hypot(worldX - p.x, worldY - p.y);
461
- if (distance < bestDistance) {
462
- bestDistance = distance;
463
- best = port;
464
- }
465
- }
466
- return best;
467
- }
468
- /**
469
- * Phase 3: Complete connection to target port
470
- * Phase 5: Enhanced with validation and error handling
471
- */
472
- completeConnection(engine) {
473
- var _a;
474
- if (this.isReadonlyEngine(engine))
475
- return false;
476
- // Phase 5: Validate state
477
- if (!this.isConnecting || !this.connectionSourcePort) {
478
- return false;
479
- }
480
- if (!engine) {
481
- console.warn('Invalid engine in completeConnection');
482
- this.cancelConnection(engine);
483
- return false;
484
- }
485
- try {
486
- const config = engine.getInteractionConfig();
487
- const connectionStateManager = engine.getConnectionStateManager();
488
- let targetPort = this.hoveredPort;
489
- // Smart mode: Auto-connect to nearest port if dropping on (or near) a node.
490
- //
491
- // wave8/culling — Card 2. This used to call `PortModel.findNearestPort`, and
492
- // it had TWO defects, both of which the spatial index fixes:
493
- //
494
- // 1. It searched exactly ONE node — `this.hoveredNode` — because searching
495
- // more meant walking every node in the diagram. So a drop that landed
496
- // NEAR a node instead of ON it connected to nothing. `findNearestPort`
497
- // asks the index, so the search is bounded by the snap radius rather than
498
- // by the scene, and a near miss now snaps.
499
- //
500
- // 2. It measured to the BOUNDING-BOX EDGE MIDPOINT (`getEdgePosition`) while
501
- // the renderer draws ports shape-aware. On any non-rect silhouette, or any
502
- // side carrying more than one port, it was snapping to a point several
503
- // pixels away from the circle the user could see. Wave 6 fixed exactly
504
- // this divergence for the port hit-test and the magnet — this path was
505
- // missed. Passing `portWorldPosition` is that fix: hit-test where we draw.
506
- // wave12 (gap 3): Easy Connect makes the whole TARGET node a handle too. A
507
- // release ANYWHERE over a node body — not just within the ~24px port-snap
508
- // radius smart mode uses — resolves the node under the cursor and picks its
509
- // nearest port. That is the difference from smart auto-connect: smart snaps
510
- // to a port near the drop; easy-connect accepts the node's whole silhouette.
511
- const smartAutoConnect = config.mode === 'smart' && config.enableSmartAutoConnect;
512
- if (!targetPort && (smartAutoConnect || config.enableEasyConnect)) {
513
- const diagram = engine.getDiagram();
514
- const dragState = connectionStateManager.getState();
515
- const pos = dragState.currentMousePosition;
516
- if (diagram && pos) {
517
- if (config.enableEasyConnect) {
518
- const sourceNode = this.connectionSourcePort
519
- ? diagram.getNodeByPortId(this.connectionSourcePort.id)
520
- : null;
521
- const overNode = diagram.getNodeAtPosition(pos.x, pos.y);
522
- if (overNode && overNode.id !== (sourceNode === null || sourceNode === void 0 ? void 0 : sourceNode.id)) {
523
- // Body-to-body: neither end named a port, so pick the NEAREST PAIR
524
- // across the two nodes — a centre press used to tie all four source
525
- // ports and 'top' won by iteration order, wiring side-by-side nodes
526
- // top→top as a long arc over both (live audit; the obvious wire is
527
- // right→left). An explicit source press near a specific port still
528
- // wins: we only re-seed when the pair's source genuinely differs.
529
- if (sourceNode) {
530
- let bestSource = null;
531
- let bestTarget = null;
532
- let bestDistance = Infinity;
533
- for (const s of sourceNode.getPorts().values()) {
534
- const sp = (0, port_positioning_1.portWorldPosition)(s, sourceNode);
535
- for (const t of overNode.getPorts().values()) {
536
- const tp = (0, port_positioning_1.portWorldPosition)(t, overNode);
537
- const d = Math.hypot(sp.x - tp.x, sp.y - tp.y);
538
- if (d < bestDistance) {
539
- bestDistance = d;
540
- bestSource = s;
541
- bestTarget = t;
542
- }
543
- }
544
- }
545
- if (bestSource && bestTarget) {
546
- if (bestSource !== this.connectionSourcePort) {
547
- // Re-seed the in-flight connection from the pair's source so
548
- // validation and the committed link both use it.
549
- connectionStateManager.startConnection(bestSource, pos);
550
- this.connectionSourcePort = bestSource;
551
- }
552
- targetPort = bestTarget;
553
- }
554
- }
555
- if (!targetPort) {
556
- targetPort = this.nearestPortOnNode(overNode, pos.x, pos.y);
557
- }
558
- }
559
- }
560
- // Smart-mode port snap (also the fallback when easy-connect found no node).
561
- if (!targetPort && smartAutoConnect) {
562
- const hit = diagram.findNearestPort(pos, {
563
- portPosition: (port, node) => (0, port_positioning_1.portWorldPosition)(port, node),
564
- });
565
- targetPort = (_a = hit === null || hit === void 0 ? void 0 : hit.port) !== null && _a !== void 0 ? _a : null;
566
- }
567
- }
568
- }
569
- // Complete connection if we have a valid target port
570
- let success = false;
571
- if (targetPort) {
572
- const result = connectionStateManager.completeConnection(targetPort);
573
- success = result.success;
574
- if (success) {
575
- console.debug('✅ Connection completed:', this.connectionSourcePort.id, '->', targetPort.id);
576
- }
577
- else {
578
- console.log('❌ Connection failed: Invalid connection');
579
- }
580
- }
581
- // Cleanup
582
- this.cancelConnection(engine);
583
- return success;
584
- }
585
- catch (error) {
586
- // Phase 5: Error recovery
587
- console.error('Error completing connection:', error);
588
- this.cancelConnection(engine);
589
- return false;
590
- }
591
- }
592
- /**
593
- * Phase 3: Cancel connection
594
- */
595
- cancelConnection(engine) {
596
- if (!this.isConnecting) {
597
- return;
598
- }
599
- const connectionStateManager = engine.getConnectionStateManager();
600
- connectionStateManager.cancelConnection();
601
- this.isConnecting = false;
602
- this.connectionSourcePort = null;
603
- // Clear port highlights
604
- this.clearPortHighlights(engine);
605
- console.debug('🚫 Connection cancelled');
606
- }
607
- /**
608
- * Phase 3 / Wave 2: Start link reconnection.
609
- *
610
- * Enters endpoint-drag mode: the dragged endpoint follows the cursor while
611
- * the OTHER endpoint stays put. Seeds the engine's {@link ReconnectionPreview}
612
- * so the renderer can draw a ghost link, and primes port validity highlights.
613
- */
614
- startLinkReconnection(link, endpoint, worldX, worldY, engine) {
615
- this.isReconnectingLink = true;
616
- this.reconnectingLink = link;
617
- this.reconnectingEndpoint = endpoint;
618
- this.reconnectingMousePoint = { x: worldX, y: worldY };
619
- // Select the endpoint on the link
620
- if (endpoint === 'source') {
621
- link.selectSourceEndpoint();
622
- }
623
- else {
624
- link.selectTargetEndpoint();
625
- }
626
- // Seed the live preview + validity highlights.
627
- engine.setReconnectionPreview({
628
- linkId: link.id,
629
- endpoint,
630
- mousePoint: { x: worldX, y: worldY },
631
- isValid: false,
632
- });
633
- this.updateReconnectPortHighlights(engine);
634
- console.debug(`🔗 Link reconnection started: ${endpoint} endpoint of link ${link.id}`);
635
- }
636
- /**
637
- * Wave 2: Update the in-progress endpoint reconnection as the cursor moves.
638
- *
639
- * Refreshes the ghost-preview endpoint, recomputes which ports are valid drop
640
- * targets (highlighting them), and reflects whether the currently hovered
641
- * port would be accepted. Returns true when a re-render is warranted.
642
- */
643
- updateLinkReconnection(worldX, worldY, engine) {
644
- if (!this.isReconnectingLink || !this.reconnectingLink || !this.reconnectingEndpoint) {
645
- return false;
646
- }
647
- if (!isFinite(worldX) || !isFinite(worldY)) {
648
- return false;
649
- }
650
- this.reconnectingMousePoint = { x: worldX, y: worldY };
651
- // Is the port under the cursor (if any) a legal drop target?
652
- const isValid = !!(this.hoveredPort &&
653
- this.isValidReconnectionTarget(this.reconnectingLink, this.reconnectingEndpoint, this.hoveredPort, engine));
654
- engine.setReconnectionPreview({
655
- linkId: this.reconnectingLink.id,
656
- endpoint: this.reconnectingEndpoint,
657
- mousePoint: { x: worldX, y: worldY },
658
- isValid,
659
- });
660
- this.updateReconnectPortHighlights(engine);
661
- return true;
662
- }
663
- /**
664
- * Wave 2: Is `candidatePort` a legal target for reconnecting `endpoint` of
665
- * `link`? The OTHER endpoint's port stays fixed; the candidate must differ
666
- * from it, live on a different node, be type-compatible (input↔output, or a
667
- * bidirectional port), and satisfy the connection-group rules. Pure w.r.t.
668
- * the passed models — the core of the reconnect-validation tests.
669
- */
670
- isValidReconnectionTarget(link, endpoint, candidatePort, engine) {
671
- const diagram = engine.getDiagram();
672
- if (!diagram)
673
- return false;
674
- // The stationary endpoint's port is the one that must stay connected.
675
- const fixedPortId = endpoint === 'source' ? link.targetPortId : link.sourcePortId;
676
- const fixedPort = diagram.getPortById(fixedPortId);
677
- if (!fixedPort)
678
- return false;
679
- // Can't drop back onto the fixed port, or onto its own node.
680
- if (candidatePort.id === fixedPortId)
681
- return false;
682
- const candidateNode = diagram.getNodeByPortId(candidatePort.id);
683
- const fixedNode = diagram.getNodeByPortId(fixedPortId);
684
- if (!candidateNode || !fixedNode)
685
- return false;
686
- if (candidateNode.id === fixedNode.id)
687
- return false;
688
- // Type compatibility: directional ports can't share a direction; a
689
- // bidirectional ('bi') port on either side lifts the restriction.
690
- const isBi = (p) => p.type === 'bi';
691
- if (!isBi(fixedPort) && !isBi(candidatePort) && fixedPort.type === candidatePort.type) {
692
- return false;
693
- }
694
- // Connection-group restriction (same seam the new-link flow validates on).
695
- return (0, engine_1.isConnectionAllowedByGroup)(fixedPort, candidatePort, engine);
696
- }
697
- /**
698
- * Wave 2: Highlight ports as valid/invalid drop targets during an endpoint
699
- * reconnection. Mirrors {@link updatePortHighlights} but uses the reconnect
700
- * validity rule instead of the {@link ConnectionStateManager} valid-target set
701
- * (which is empty during reconnection).
702
- */
703
- updateReconnectPortHighlights(engine) {
704
- const diagram = engine.getDiagram();
705
- if (!diagram || !this.reconnectingLink || !this.reconnectingEndpoint)
706
- return;
707
- diagram.getNodes().forEach((node) => {
708
- node.getPorts().forEach((port) => {
709
- const valid = this.isValidReconnectionTarget(this.reconnectingLink, this.reconnectingEndpoint, port, engine);
710
- const highlighted = valid && port === this.hoveredPort;
711
- if (port.isValidTarget !== valid || port.isHighlighted !== highlighted) {
712
- node.markDirty('port-highlight');
713
- }
714
- port.isValidTarget = valid;
715
- port.isHighlighted = highlighted;
716
- });
717
- });
718
- }
719
- /**
720
- * Phase 3 / Wave 2: Complete link reconnection.
721
- *
722
- * Drops the dragged endpoint on the hovered port. Rejects (and restores the
723
- * original connection) when there is no port under the cursor or the port
724
- * fails {@link isValidReconnectionTarget}.
725
- */
726
- completeLinkReconnection(engine) {
727
- var _a, _b;
728
- if (this.isReadonlyEngine(engine))
729
- return false;
730
- if (!this.isReconnectingLink || !this.reconnectingLink || !this.reconnectingEndpoint) {
731
- return false;
732
- }
733
- const targetPort = this.hoveredPort;
734
- // Reject: no drop target, or an invalid one → restore original connection.
735
- if (!targetPort ||
736
- !this.isValidReconnectionTarget(this.reconnectingLink, this.reconnectingEndpoint, targetPort, engine)) {
737
- console.debug('🚫 Link reconnection rejected: no valid target port');
738
- this.cancelLinkReconnection(engine);
739
- return false;
740
- }
741
- // Reconnect to new port
742
- const diagram = engine.getDiagram();
743
- if (!diagram) {
744
- this.cancelLinkReconnection(engine);
745
- return false;
746
- }
747
- // Find the node that owns the target port
748
- let targetNode;
749
- for (const node of diagram.getNodes()) {
750
- if (node.getPort(targetPort.id)) {
751
- targetNode = node;
752
- break;
753
- }
754
- }
755
- if (!targetNode) {
756
- console.log('❌ Link reconnection failed: Target node not found');
757
- this.cancelLinkReconnection(engine);
758
- return false;
759
- }
760
- // wave12: capture the OLD endpoint before mutating, so the reconnect is undoable. The
761
- // link still holds its original endpoint here — the reconnect call is on the next line.
762
- const endpoint = this.reconnectingEndpoint;
763
- const oldPortId = endpoint === 'source'
764
- ? this.reconnectingLink.sourcePortId
765
- : this.reconnectingLink.targetPortId;
766
- const oldNodeId = endpoint === 'source'
767
- ? this.reconnectingLink.sourceNodeId
768
- : this.reconnectingLink.targetNodeId;
769
- // Reconnect the link (live).
770
- if (endpoint === 'source') {
771
- this.reconnectingLink.reconnectSource(targetPort.id, targetNode.id);
772
- }
773
- else {
774
- this.reconnectingLink.reconnectTarget(targetPort.id, targetNode.id);
775
- }
776
- // …and record it as one undoable step. execute() re-applies the already-current new
777
- // endpoint (a no-op); undo restores the old. Only when the endpoint actually changed.
778
- if (oldPortId !== targetPort.id) {
779
- void engine.commandManager.execute(new engine_1.ReconnectLinkCommand(this.reconnectingLink.id, endpoint, targetPort.id, targetNode.id, oldPortId, oldNodeId));
780
- }
781
- // Recalculate link path
782
- const reconnectedSourceNode = this.findNodeForPort(this.reconnectingLink.sourcePortId, diagram);
783
- const reconnectedTargetNode = this.findNodeForPort(this.reconnectingLink.targetPortId, diagram);
784
- if (reconnectedSourceNode && reconnectedTargetNode) {
785
- const sourcePort = reconnectedSourceNode.getPort(this.reconnectingLink.sourcePortId);
786
- const reconnectedTargetPort = reconnectedTargetNode.getPort(this.reconnectingLink.targetPortId);
787
- if (sourcePort && reconnectedTargetPort) {
788
- const sourceBounds = reconnectedSourceNode.getBoundingBox();
789
- const targetBounds = reconnectedTargetNode.getBoundingBox();
790
- const sourcePoint = sourcePort.getAbsolutePosition(sourceBounds);
791
- const targetPoint = reconnectedTargetPort.getAbsolutePosition(targetBounds);
792
- // Get port directions for orthogonal routing
793
- const sourceDirection = (_a = sourcePort.alignment) === null || _a === void 0 ? void 0 : _a.side;
794
- const targetDirection = (_b = reconnectedTargetPort.alignment) === null || _b === void 0 ? void 0 : _b.side;
795
- this.reconnectingLink.generatePath(sourcePoint, targetPoint, sourceDirection, targetDirection);
796
- }
797
- }
798
- console.debug(`✅ Link reconnected: ${this.reconnectingEndpoint} endpoint to port ${targetPort.id}`);
799
- // Cleanup (clears preview + highlights + state)
800
- this.resetReconnectionState(engine);
801
- return true;
802
- }
803
- /**
804
- * Wave 2: Cancel an in-progress endpoint reconnection, restoring the link to
805
- * its original connection. Safe to call when not reconnecting.
806
- */
807
- cancelLinkReconnection(engine) {
808
- if (!this.isReconnectingLink)
809
- return;
810
- this.resetReconnectionState(engine);
811
- console.debug('🚫 Link reconnection cancelled');
812
- }
813
- /**
814
- * Wave 2: Tear down all reconnection state — deselect the link's endpoints,
815
- * clear the engine preview, and clear port highlights.
816
- */
817
- resetReconnectionState(engine) {
818
- var _a;
819
- (_a = this.reconnectingLink) === null || _a === void 0 ? void 0 : _a.deselectEndpoints();
820
- this.isReconnectingLink = false;
821
- this.reconnectingLink = null;
822
- this.reconnectingEndpoint = null;
823
- this.reconnectingMousePoint = null;
824
- engine.setReconnectionPreview(null);
825
- this.clearPortHighlights(engine);
826
- }
827
- // ============================================================================
828
- // Wave 2 (Edges & links): inline label drag-reposition
829
- // ============================================================================
830
- /**
831
- * Wave 2: Map a dragged world point to a model-space label placement.
832
- *
833
- * Returns the `{ position, offset }` to store on the label such that the
834
- * renderer draws it exactly under the cursor now AND it sticks to the same
835
- * fraction of the path after re-routing:
836
- * - `position` (0-1) = closest point on the path to the cursor;
837
- * - `offset` = cursor − on-path anchor at `position`.
838
- *
839
- * The offset is measured against the SAME anchor the renderer uses
840
- * ({@link LinkModel.getPointAtPosition}), so `getPointAtPosition(position) +
841
- * offset` reproduces the cursor by construction. Falls back to a direct
842
- * polyline projection over `link.points` when the model has no segments
843
- * (renderers sync `points` but leave `segments` stale). Returns null when the
844
- * link has no drawable path.
845
- */
846
- computeLabelDragUpdate(link, worldPoint) {
847
- var _a, _b;
848
- const points = link.points;
849
- if (!points || points.length < 2)
850
- return null;
851
- // Preferred: model's own segment-based projection.
852
- let t = (_b = (_a = link.getClosestPoint(worldPoint)) === null || _a === void 0 ? void 0 : _a.t) !== null && _b !== void 0 ? _b : null;
853
- // Fallback: project onto the raw points polyline (mirrors the polyline
854
- // fallback in getPointAtPosition, so anchors stay consistent).
855
- if (t === null) {
856
- t = this.closestPositionOnPolyline(points, worldPoint);
857
- }
858
- if (t === null)
859
- return null;
860
- const anchor = link.getPointAtPosition(t);
861
- if (!anchor)
862
- return null;
863
- return {
864
- position: t,
865
- offset: { x: worldPoint.x - anchor.x, y: worldPoint.y - anchor.y },
866
- };
867
- }
868
- /**
869
- * Arc-length position (0-1) of the closest point on a polyline to `query`.
870
- * Returns null for < 2 points. Matches the parametrization used by
871
- * {@link LinkModel.getPointAtPosition}'s polyline fallback and the
872
- * hit-test primitive.
873
- */
874
- closestPositionOnPolyline(points, query) {
875
- if (points.length < 2)
876
- return null;
877
- const segLengths = [];
878
- let total = 0;
879
- for (let i = 0; i < points.length - 1; i++) {
880
- const len = Math.hypot(points[i + 1].x - points[i].x, points[i + 1].y - points[i].y);
881
- segLengths.push(len);
882
- total += len;
883
- }
884
- if (total <= 0)
885
- return 0;
886
- let bestDist = Infinity;
887
- let bestArc = 0;
888
- let cumulative = 0;
889
- for (let i = 0; i < points.length - 1; i++) {
890
- const a = points[i];
891
- const b = points[i + 1];
892
- const dx = b.x - a.x;
893
- const dy = b.y - a.y;
894
- const lenSq = dx * dx + dy * dy;
895
- let s = lenSq === 0 ? 0 : ((query.x - a.x) * dx + (query.y - a.y) * dy) / lenSq;
896
- s = Math.max(0, Math.min(1, s));
897
- const cx = a.x + s * dx;
898
- const cy = a.y + s * dy;
899
- const dist = Math.hypot(query.x - cx, query.y - cy);
900
- if (dist < bestDist) {
901
- bestDist = dist;
902
- bestArc = cumulative + s * segLengths[i];
903
- }
904
- cumulative += segLengths[i];
905
- }
906
- return bestArc / total;
907
- }
908
- /**
909
- * Wave 2: Begin dragging label `labelIndex` of `link`.
910
- */
911
- startLabelDrag(link, labelIndex) {
912
- this.isDraggingLabel = true;
913
- this.editingLabelLink = link;
914
- this.editingLabelIndex = labelIndex;
915
- console.log(`🏷️ Started dragging label ${labelIndex} on link ${link.id}`);
916
- }
917
- /**
918
- * Wave 2: Move the dragging label to follow the cursor. Writes the remapped
919
- * `{ position, offset }` back onto the model so the label survives re-routing.
920
- * Returns true when a re-render is warranted.
921
- */
922
- moveLabelDrag(worldX, worldY) {
923
- if (this.isReadonlyLink(this.editingLabelLink))
924
- return false;
925
- if (!this.isDraggingLabel || !this.editingLabelLink || this.editingLabelIndex === null) {
926
- return false;
927
- }
928
- if (!isFinite(worldX) || !isFinite(worldY)) {
929
- return false;
930
- }
931
- const update = this.computeLabelDragUpdate(this.editingLabelLink, { x: worldX, y: worldY });
932
- if (!update)
933
- return false;
934
- this.editingLabelLink.updateLabel(this.editingLabelIndex, update);
935
- this.editingLabelLink.markDirty('label-dragged');
936
- return true;
937
- }
938
- /**
939
- * Wave 2: End the label drag.
940
- */
941
- endLabelDrag() {
942
- var _a;
943
- if (this.isDraggingLabel) {
944
- console.log(`🏷️ Ended dragging label ${this.editingLabelIndex} on link ${(_a = this.editingLabelLink) === null || _a === void 0 ? void 0 : _a.id}`);
945
- }
946
- this.isDraggingLabel = false;
947
- this.editingLabelLink = null;
948
- this.editingLabelIndex = null;
949
- }
950
- /**
951
- * Phase 3: Handle link selection
952
- * FIXED: Support multi-select with Ctrl key, deselect other links otherwise
953
- */
954
- selectLink(link, engine, multiSelect = false) {
955
- const diagram = engine.getDiagram();
956
- if (!diagram)
957
- return;
958
- if (!multiSelect) {
959
- // Clear node selections
960
- diagram.clearSelection();
961
- // Deselect all other links
962
- diagram.getLinks().forEach((l) => {
963
- if (l.id !== link.id && l.state === 'selected') {
964
- l.setState('default');
965
- }
966
- });
967
- }
968
- // Toggle or select this link
969
- if (multiSelect && link.state === 'selected') {
970
- link.setState('default');
971
- console.debug('🔗 Link deselected:', link.id);
972
- }
973
- else {
974
- link.setState('selected');
975
- console.debug('🔗 Link selected:', link.id);
976
- }
977
- }
978
- /**
979
- * Phase 3: Delete selected link
980
- */
981
- deleteSelectedLink(engine) {
982
- if (this.isReadonlyEngine(engine))
983
- return false;
984
- const diagram = engine.getDiagram();
985
- if (!diagram)
986
- return false;
987
- // Find selected link
988
- const selectedLink = diagram.getLinks().find((link) => link.state === 'selected');
989
- if (!selectedLink)
990
- return false;
991
- // Remove the link
992
- diagram.removeLink(selectedLink.id);
993
- console.log('🗑️ Link deleted:', selectedLink.id);
994
- return true;
995
- }
996
- /**
997
- * Find link at world position (public wrapper for hit testing)
998
- * Used for direct link selection without requiring hover state
999
- */
1000
- getLinkAtPosition(worldX, worldY, engine) {
1001
- const diagram = engine.getDiagram();
1002
- if (!diagram)
1003
- return null;
1004
- return this.findLinkAtPosition(worldX, worldY, diagram);
1005
- }
1006
- /**
1007
- * Part-aware public wrapper: like {@link getLinkAtPosition} but also reports
1008
- * WHICH sub-part of the link was hit (body / label / endpoint / arrow) plus
1009
- * local info. Foundation for later edge cards (label editing, endpoint
1010
- * reconnection, edge toolbar placement).
1011
- */
1012
- getLinkHitAtPosition(worldX, worldY, engine) {
1013
- const diagram = engine.getDiagram();
1014
- if (!diagram)
1015
- return null;
1016
- return this.findLinkHitAtPosition(worldX, worldY, diagram);
1017
- }
1018
- /**
1019
- * Phase 3: Get current interaction state
1020
- */
1021
- getState() {
1022
- return {
1023
- isConnecting: this.isConnecting,
1024
- isReconnectingLink: this.isReconnectingLink,
1025
- reconnectingEndpoint: this.reconnectingEndpoint,
1026
- reconnectingLink: this.reconnectingLink,
1027
- hoveredNode: this.hoveredNode,
1028
- hoveredPort: this.hoveredPort,
1029
- hoveredLink: this.hoveredLink,
1030
- // Wave 2: Label drag-reposition state
1031
- isDraggingLabel: this.isDraggingLabel,
1032
- editingLabelLink: this.editingLabelLink,
1033
- editingLabelIndex: this.editingLabelIndex,
1034
- // Phase 2.3a: Waypoint editing state
1035
- isDraggingWaypoint: this.isDraggingWaypoint,
1036
- editingLink: this.editingLink,
1037
- editingWaypointIndex: this.editingWaypointIndex,
1038
- hoveredWaypointIndex: this.hoveredWaypointIndex,
1039
- hoveredWaypointLink: this.hoveredWaypointLink,
1040
- // Phase 2.3b: Control point editing state
1041
- isDraggingControlPoint: this.isDraggingControlPoint,
1042
- editingControlPointLink: this.editingControlPointLink,
1043
- editingControlPointSegmentIndex: this.editingControlPointSegmentIndex,
1044
- editingControlPointType: this.editingControlPointType,
1045
- hoveredControlPointSegmentIndex: this.hoveredControlPointSegmentIndex,
1046
- hoveredControlPointType: this.hoveredControlPointType,
1047
- hoveredControlPointLink: this.hoveredControlPointLink,
1048
- };
1049
- }
1050
- /**
1051
- * Phase 3: Check if currently interacting
1052
- */
1053
- isInteracting() {
1054
- return this.isConnecting || this.isReconnectingLink || this.isDraggingWaypoint || this.isDraggingControlPoint || this.isDraggingLabel;
1055
- }
1056
- /**
1057
- * Phase 3: Get appropriate cursor for current state
1058
- */
1059
- getCursor(engine) {
1060
- if (this.isConnecting) {
1061
- return 'crosshair';
1062
- }
1063
- if (this.isReconnectingLink) {
1064
- return 'move';
1065
- }
1066
- if (this.hoveredPort) {
1067
- return 'crosshair';
1068
- }
1069
- if (this.hoveredLink) {
1070
- const config = engine.getInteractionConfig();
1071
- if (config.enableLinkReconnection && this.hoveredLink.state === 'selected') {
1072
- return 'pointer';
1073
- }
1074
- return 'pointer';
1075
- }
1076
- if (this.hoveredNode) {
1077
- const config = engine.getInteractionConfig();
1078
- if (config.mode === 'deliberate') {
1079
- // In deliberate mode, only show move cursor if node is selected
1080
- return this.hoveredNode.isSelected() ? 'move' : 'pointer';
1081
- }
1082
- return this.hoveredNode.isDraggable() ? 'pointer' : 'default';
1083
- }
1084
- return 'default';
1085
- }
1086
- // Private helper methods
1087
- /**
1088
- * Find port at world position
1089
- * Phase 5: Optimized with performance monitoring and early exit
1090
- * CRITICAL FIX: Accept engine parameter instead of calling diagram.getEngine()
1091
- */
1092
- findPortAtPosition(worldX, worldY, diagram, engine) {
1093
- var _a, _b, _c;
1094
- // Phase 5: Performance monitoring
1095
- const startTime = performance.now();
1096
- try {
1097
- const config = engine.getInteractionConfig();
1098
- const portRadius = config.portDefaultRadius * config.portHoverScaleFactor;
1099
- // + hitSlop: touch-sized targets (Wave 9 Card 2). 0 for a mouse.
1100
- const hitRadius = portRadius + 2 + this.hitSlop; // Add 2px tolerance
1101
- // Phase 5: Optimization - early exit if no nodes
1102
- const nodes = diagram.getNodes();
1103
- if (!nodes || nodes.length === 0) {
1104
- return null;
1105
- }
1106
- for (const node of nodes) {
1107
- // A drag-handle node is chrome: its ports are not hoverable, so a wire
1108
- // can never START there (the rules also refuse it as a TARGET).
1109
- if (((_b = (_a = node.behavior) === null || _a === void 0 ? void 0 : _a.dragHandler) === null || _b === void 0 ? void 0 : _b.isDragHandler) === true)
1110
- continue;
1111
- // connectable:false — the rules refuse this node as source AND target,
1112
- // and the renderer paints no glyph for it (shouldRenderPort). Hovering
1113
- // must agree, or an invisible port would still grab the cursor and
1114
- // start a wire the engine then refuses. Dashboard tiles are the case.
1115
- if (((_c = node.behavior) === null || _c === void 0 ? void 0 : _c.connectable) === false)
1116
- continue;
1117
- // CRITICAL FIX: Always check for port hits regardless of visibility mode
1118
- // Visibility affects RENDERING, not HIT DETECTION
1119
- // This fixes the chicken-and-egg problem where ports couldn't be hovered
1120
- // because the node wasn't hovered yet
1121
- // Phase 5: Optimization - rough node bounds check first
1122
- const nodeBounds = node.getBoundingBox();
1123
- const nodeExpandedBounds = {
1124
- left: nodeBounds.left - hitRadius,
1125
- right: nodeBounds.right + hitRadius,
1126
- top: nodeBounds.top - hitRadius,
1127
- bottom: nodeBounds.bottom + hitRadius,
1128
- };
1129
- // Skip node if mouse is not even near it
1130
- if (worldX < nodeExpandedBounds.left ||
1131
- worldX > nodeExpandedBounds.right ||
1132
- worldY < nodeExpandedBounds.top ||
1133
- worldY > nodeExpandedBounds.bottom) {
1134
- continue;
1135
- }
1136
- const portsMap = node.getPorts();
1137
- const ports = Array.from(portsMap.values());
1138
- for (const port of ports) {
1139
- // Wave 6 BUG FIX: this used `port.getAbsolutePosition(nodeBounds)`,
1140
- // which walks the BOUNDING BOX and lands on an edge midpoint — while
1141
- // the renderer draws the port with `getPortPositionForShape`. On any
1142
- // non-rect shape, and on any side with more than one port, the hit
1143
- // circle sat several pixels away from the glyph: you clicked the port
1144
- // you could see and hit nothing. Hit-test where you DRAW.
1145
- const portPos = (0, port_positioning_1.portWorldPosition)(port, node);
1146
- // Check if mouse is within port radius
1147
- const dx = worldX - portPos.x;
1148
- const dy = worldY - portPos.y;
1149
- const distanceSquared = dx * dx + dy * dy;
1150
- // Phase 5: Optimization - compare squared distances to avoid sqrt
1151
- if (distanceSquared <= hitRadius * hitRadius) {
1152
- // Occlusion: a port whose anchor a higher node covers is not in
1153
- // the picture (the renderer hides it via the same oracle) — it
1154
- // must not win the hover/press race THROUGH the covering node.
1155
- if (typeof diagram.isPointCoveredAbove === 'function' &&
1156
- diagram.isPointCoveredAbove(portPos.x, portPos.y, node.id)) {
1157
- continue;
1158
- }
1159
- return port;
1160
- }
1161
- }
1162
- }
1163
- return null;
1164
- }
1165
- finally {
1166
- // Phase 5: Track performance
1167
- this.performanceMetrics.portHitTestTime = performance.now() - startTime;
1168
- }
1169
- }
1170
- /**
1171
- * Find link at world position.
1172
- *
1173
- * Backward-compatible thin wrapper over {@link findLinkHitAtPosition}:
1174
- * existing callers that only ask "which link (if any) is under the cursor?"
1175
- * keep getting a `LinkModel | null`. Use `findLinkHitAtPosition` /
1176
- * `getLinkHitAtPosition` when you need to know WHICH sub-part was hit.
1177
- */
1178
- findLinkAtPosition(worldX, worldY, diagram) {
1179
- var _a, _b;
1180
- return (_b = (_a = this.findLinkHitAtPosition(worldX, worldY, diagram)) === null || _a === void 0 ? void 0 : _a.link) !== null && _b !== void 0 ? _b : null;
1181
- }
1182
- /**
1183
- * Part-aware link hit-test.
1184
- *
1185
- * Reports the link under the cursor AND which sub-part of it was hit
1186
- * (body / label / source|target-endpoint / source|target-arrow) plus local
1187
- * info: the label index for label hits, or the 0-1 position `t` along the
1188
- * path for body hits. Delegates the geometry to the pure `hitTestLink`
1189
- * primitive in `@grafloria/renderer` so the same logic backs both hit paths.
1190
- */
1191
- findLinkHitAtPosition(worldX, worldY, diagram) {
1192
- var _a, _b;
1193
- // The cross-backend link grab distance — PER LINK, derived from the same
1194
- // formula that sizes the painted hit-area stroke (max(config, stroke+8)/2,
1195
- // floored at DEFAULT_LINK_HIT_TOLERANCE). A flat 5 here left a dead ring
1196
- // between the DOM hit-area's edge and the accepted press: the cursor and
1197
- // native focus said "link", the press selected nothing (live report:
1198
- // "sometimes clicking around the line draws a rectangle").
1199
- const query = { x: worldX, y: worldY };
1200
- // NEAREST link wins, not the first in model order. Fan-out siblings share
1201
- // an anchor and run close together near it: first-in-order let an earlier
1202
- // sibling take a press landing ON a later sibling's ink (live report:
1203
- // fan-out edges near the shared source selected their neighbour). Ranked
1204
- // by body distance (falling back to the part's own distance) because at a
1205
- // shared anchor every sibling's endpoint HANDLE is equidistant — only the
1206
- // link actually under the cursor has body distance ~0.
1207
- let best = null;
1208
- let bestScore = Infinity;
1209
- for (const link of diagram.getLinks()) {
1210
- const points = link.points;
1211
- if (!points || points.length < 2)
1212
- continue;
1213
- const hitThreshold = (0, link_hit_test_1.linkBodyHitTolerance)(this.literalLinkStrokeWidth(link), this.linkHitAreaWidthConfig) +
1214
- this.hitSlop;
1215
- const hit = (0, link_hit_test_1.hitTestLink)(this.buildLinkHitOptions(link), query, hitThreshold);
1216
- if (!hit)
1217
- continue;
1218
- const score = Math.min((_a = hit.bodyDistance) !== null && _a !== void 0 ? _a : Infinity, (_b = hit.distance) !== null && _b !== void 0 ? _b : Infinity);
1219
- if (score < bestScore) {
1220
- bestScore = score;
1221
- best = Object.assign({ link }, hit);
1222
- }
1223
- }
1224
- return best;
1225
- }
1226
- /**
1227
- * The link's resolved numeric stroke width, mirroring the SVG renderer's
1228
- * `linkPaintLiterals` fallback: a theme-bound `var(--…)` width is not a
1229
- * number, so it falls back to 2 (the theme default) rather than NaN-ing the
1230
- * grab distance.
1231
- */
1232
- literalLinkStrokeWidth(link) {
1233
- var _a;
1234
- const width = (_a = link.style) === null || _a === void 0 ? void 0 : _a.strokeWidth;
1235
- return typeof width === 'number' && Number.isFinite(width) ? width : 2;
1236
- }
1237
- /**
1238
- * Translate a link model into the framework-agnostic geometry the pure
1239
- * `hitTestLink` primitive expects (routed points, label placements and
1240
- * endpoint / arrowhead anchors). Endpoints default to the path ends inside
1241
- * the primitive; arrowhead anchors are inset from those ends by the arrow's
1242
- * canonical tip offset so they line up with the rendered markers.
1243
- */
1244
- buildLinkHitOptions(link) {
1245
- var _a, _b;
1246
- const points = link.points;
1247
- const style = (_a = link.style) !== null && _a !== void 0 ? _a : {};
1248
- let labels = ((_b = link.labels) !== null && _b !== void 0 ? _b : []).map((label) => ({
1249
- position: label.position,
1250
- offset: label.offset,
1251
- }));
1252
- // The DISPLAY label dialect (`edges: [{label}]` → `metadata.label`) paints
1253
- // at the middle routed point but lived in no hit geometry at all — so the
1254
- // label a user could SEE on such an edge reported `body`, never `label`,
1255
- // and double-click-to-edit / label affordances could not fire on it.
1256
- // Synthesize its box at the renderer's own anchor (points[mid], expressed
1257
- // as the arc-length position the hit primitive expects).
1258
- if (labels.length === 0 && points.length >= 2 && link.getLabel()) {
1259
- const mid = Math.floor(points.length / 2);
1260
- let total = 0;
1261
- let toMid = 0;
1262
- for (let i = 1; i < points.length; i++) {
1263
- const seg = Math.hypot(points[i].x - points[i - 1].x, points[i].y - points[i - 1].y);
1264
- total += seg;
1265
- if (i <= mid)
1266
- toMid += seg;
1267
- }
1268
- if (total > 0)
1269
- labels = [{ position: toMid / total, offset: { x: 0, y: 0 } }];
1270
- }
1271
- return {
1272
- points,
1273
- labels,
1274
- // arrowHead renders at the target end, arrowTail at the source end.
1275
- sourceArrow: this.arrowAnchor(points, false, style.arrowTail),
1276
- targetArrow: this.arrowAnchor(points, true, style.arrowHead),
1277
- };
1278
- }
1279
- /**
1280
- * Anchor point for an arrowhead hit region: the terminal point moved inward
1281
- * along the last (or first) segment by the arrow's tip offset, matching where
1282
- * the marker actually sits. Returns null when there is no visible arrow.
1283
- */
1284
- arrowAnchor(points, atTarget, style) {
1285
- if (!style || style.type === 'none' || points.length < 2)
1286
- return null;
1287
- const offset = this.arrowRenderer.getTipOffset(style);
1288
- const tip = atTarget ? points[points.length - 1] : points[0];
1289
- const adjacent = atTarget ? points[points.length - 2] : points[1];
1290
- const dx = adjacent.x - tip.x;
1291
- const dy = adjacent.y - tip.y;
1292
- const len = Math.hypot(dx, dy) || 1;
1293
- return { x: tip.x + (dx / len) * offset, y: tip.y + (dy / len) * offset };
1294
- }
1295
- /**
1296
- * Wave 6 (Card 6): the nearest VALID target port within the magnet radius.
1297
- *
1298
- * "Valid" means the connection manager's valid-target set — the same set the
1299
- * highlight paints — so the magnet can never latch onto a port the drop would
1300
- * then reject. Returns null when nothing is in reach, leaving the drag free.
1301
- */
1302
- findMagnetPort(worldX, worldY, engine) {
1303
- var _a;
1304
- const diagram = engine.getDiagram();
1305
- if (!diagram)
1306
- return null;
1307
- const config = engine.getInteractionConfig();
1308
- const radius = config.snapToPortRadius;
1309
- if (!radius || radius <= 0)
1310
- return null;
1311
- const dragState = engine.getConnectionStateManager().getState();
1312
- if (!dragState.isConnecting || dragState.validTargetPorts.size === 0)
1313
- return null;
1314
- let best = null;
1315
- let bestDistance = Infinity;
1316
- for (const node of diagram.getNodes()) {
1317
- if (((_a = node.state) === null || _a === void 0 ? void 0 : _a.visible) === false)
1318
- continue;
1319
- for (const port of node.getPorts()) {
1320
- if (!dragState.validTargetPorts.has(port.id))
1321
- continue;
1322
- const position = (0, port_positioning_1.portWorldPosition)(port, node);
1323
- const distance = Math.hypot(worldX - position.x, worldY - position.y);
1324
- if (distance <= radius && distance < bestDistance) {
1325
- bestDistance = distance;
1326
- best = port;
1327
- }
1328
- }
1329
- }
1330
- return best;
1331
- }
1332
- /**
1333
- * Update port highlight states during connection.
1334
- *
1335
- * Wave 6 (Card 6): this method was already correct — and already dead. It
1336
- * loops over `dragState.validTargetPorts`, a set that NOTHING ever filled:
1337
- * `ConnectionStateManager.calculateValidTargets()` was a comment-only stub and
1338
- * `setValidTargets()` had no production caller. So the loop ran zero times,
1339
- * every frame, and only the hovered port ever lit up. The manager now computes
1340
- * the set for real, which is what finally brings this to life — plus the
1341
- * `highlightValidTargets` config flag, itself dead config until now (declared,
1342
- * defaulted true, written by the config panel, read by nobody).
1343
- */
1344
- updatePortHighlights(engine) {
1345
- const diagram = engine.getDiagram();
1346
- if (!diagram)
1347
- return;
1348
- const config = engine.getInteractionConfig();
1349
- const dragState = engine.getConnectionStateManager().getState();
1350
- // Clear all highlights first
1351
- diagram.getNodes().forEach((node) => {
1352
- node.getPorts().forEach((port) => {
1353
- port.isHighlighted = false;
1354
- port.isValidTarget = false;
1355
- });
1356
- });
1357
- // Highlight valid target ports
1358
- if (config.highlightValidTargets !== false) {
1359
- dragState.validTargetPorts.forEach((portId) => {
1360
- var _a, _b;
1361
- const port = this.findPortById(portId, diagram);
1362
- if (port) {
1363
- port.isValidTarget = true;
1364
- // A hidden port that is a live target must SURFACE — that is what the
1365
- // 'on-hover' / 'never' visibility modes key off, and it is the whole
1366
- // point of highlighting: you cannot drop on a port you cannot see.
1367
- const owner = (_a = diagram.getNodeByPortId) === null || _a === void 0 ? void 0 : _a.call(diagram, portId);
1368
- (_b = owner === null || owner === void 0 ? void 0 : owner.markDirty) === null || _b === void 0 ? void 0 : _b.call(owner, 'port-highlight');
1369
- }
1370
- });
1371
- }
1372
- // Highlight currently hovered port
1373
- if (this.hoveredPort && dragState.isOverValidTarget) {
1374
- this.hoveredPort.isHighlighted = true;
1375
- }
1376
- }
1377
- /**
1378
- * Clear all port highlights
1379
- */
1380
- clearPortHighlights(engine) {
1381
- const diagram = engine.getDiagram();
1382
- if (!diagram)
1383
- return;
1384
- diagram.getNodes().forEach((node) => {
1385
- let changed = false;
1386
- node.getPorts().forEach((port) => {
1387
- if (port.isHighlighted || port.isValidTarget)
1388
- changed = true;
1389
- port.isHighlighted = false;
1390
- port.isValidTarget = false;
1391
- });
1392
- // Bare flag writes bump no epoch — without this the teardown frame is
1393
- // skipped as idle and the green valid-target glow lingers after every
1394
- // Escape / invalid drop / empty drop (live audit, four ports pages).
1395
- if (changed)
1396
- node.markDirty('port-highlight-clear');
1397
- });
1398
- }
1399
- /**
1400
- * Find port by ID
1401
- */
1402
- findPortById(portId, diagram) {
1403
- for (const node of diagram.getNodes()) {
1404
- const port = node.getPort(portId);
1405
- if (port) {
1406
- return port;
1407
- }
1408
- }
1409
- return null;
1410
- }
1411
- /**
1412
- * Find node that owns a port
1413
- */
1414
- findNodeForPort(portId, diagram) {
1415
- for (const node of diagram.getNodes()) {
1416
- if (node.getPort(portId)) {
1417
- return node;
1418
- }
1419
- }
1420
- return undefined;
1421
- }
1422
- // ============================================================================
1423
- // Phase 2.3a: Waypoint Editing Methods
1424
- // ============================================================================
1425
- /**
1426
- * Hit test for waypoint handle at mouse position
1427
- * Returns the waypoint index if hit, null otherwise
1428
- */
1429
- hitTestWaypoint(mouseX, mouseY, link) {
1430
- if (!this.waypointEditor || !link.points || link.points.length < 3) {
1431
- return null;
1432
- }
1433
- const hit = this.waypointEditor.hitTestWaypoint(mouseX, mouseY, link.points, this.hitSlop);
1434
- return hit ? hit.waypointIndex : null;
1435
- }
1436
- /**
1437
- * Hit test for clicking on link path (to add waypoint)
1438
- */
1439
- hitTestPath(mouseX, mouseY, link) {
1440
- if (!this.waypointEditor || !link.points || link.points.length < 2) {
1441
- return false;
1442
- }
1443
- const hit = this.waypointEditor.hitTestPath(mouseX, mouseY, link.points, this.hitSlop);
1444
- return hit !== null;
1445
- }
1446
- /**
1447
- * Start dragging a waypoint
1448
- */
1449
- startWaypointDrag(waypointIndex, link) {
1450
- this.isDraggingWaypoint = true;
1451
- this.editingLink = link;
1452
- this.editingWaypointIndex = waypointIndex;
1453
- // wave12: snapshot the path BEFORE the drag so end can commit one undoable FROM→TO step.
1454
- this.waypointDragStartPoints = link.points.map((p) => (Object.assign({}, p)));
1455
- console.log(`🔵 Started dragging waypoint ${waypointIndex} on link ${link.id}`);
1456
- }
1457
- /**
1458
- * Move waypoint during drag
1459
- * The waypoint is just moved, orthogonal routing happens during rendering
1460
- */
1461
- moveWaypoint(worldX, worldY, engine) {
1462
- if (this.isReadonlyEngine(engine))
1463
- return false;
1464
- if (!this.isDraggingWaypoint || !this.editingLink || this.editingWaypointIndex === null || !this.waypointEditor) {
1465
- return false;
1466
- }
1467
- const newPosition = { x: worldX, y: worldY };
1468
- const newPoints = this.waypointEditor.moveWaypoint(this.editingWaypointIndex, newPosition, this.editingLink.points, this.editingLink.pathType);
1469
- if (newPoints) {
1470
- this.editingLink.setPoints(newPoints);
1471
- this.editingLink.setMetadata('hasManualWaypoints', true);
1472
- console.log(`🔵 Moved waypoint ${this.editingWaypointIndex} to (${worldX.toFixed(1)}, ${worldY.toFixed(1)})`);
1473
- return true;
1474
- }
1475
- return false;
1476
- }
1477
- /**
1478
- * End waypoint drag
1479
- */
1480
- endWaypointDrag(engine) {
1481
- var _a;
1482
- if (this.isDraggingWaypoint) {
1483
- console.log(`🔵 Ended dragging waypoint ${this.editingWaypointIndex} on link ${(_a = this.editingLink) === null || _a === void 0 ? void 0 : _a.id}`);
1484
- // wave12: commit the finished gesture as ONE undoable step. The live moveWaypoint
1485
- // already applied the final points, so SetLinkPointsCommand's execute() re-sets the
1486
- // already-current `to` (a no-op) and records one history entry; undo restores `from`.
1487
- // Same FROM→TO snapshot pattern as node-drag and group-drag. Only commit when the
1488
- // path actually changed — a click-with-no-drag must not litter the undo stack.
1489
- const link = this.editingLink;
1490
- const from = this.waypointDragStartPoints;
1491
- if (engine && link && from) {
1492
- const to = link.points.map((p) => (Object.assign({}, p)));
1493
- const changed = to.length !== from.length ||
1494
- to.some((p, i) => p.x !== from[i].x || p.y !== from[i].y);
1495
- if (changed) {
1496
- void engine.commandManager.execute(new engine_1.SetLinkPointsCommand(link.id, to, from));
1497
- }
1498
- }
1499
- }
1500
- this.isDraggingWaypoint = false;
1501
- this.editingLink = null;
1502
- this.editingWaypointIndex = null;
1503
- this.waypointDragStartPoints = null;
1504
- }
1505
- /**
1506
- * Add waypoint at click position on path
1507
- */
1508
- addWaypoint(clickX, clickY, link) {
1509
- if (this.isReadonlyLink(link))
1510
- return false;
1511
- if (!this.waypointEditor) {
1512
- return false;
1513
- }
1514
- const result = this.waypointEditor.addWaypointAtPosition(clickX, clickY, link.points);
1515
- if (result) {
1516
- link.setPoints(result.newPoints);
1517
- link.setMetadata('hasManualWaypoints', true);
1518
- console.log(`🟢 Added waypoint at index ${result.waypointIndex} on link ${link.id}`);
1519
- return true;
1520
- }
1521
- return false;
1522
- }
1523
- /**
1524
- * Remove waypoint at index
1525
- */
1526
- removeWaypoint(waypointIndex, link) {
1527
- if (this.isReadonlyLink(link))
1528
- return false;
1529
- if (!this.waypointEditor) {
1530
- return false;
1531
- }
1532
- const newPoints = this.waypointEditor.removeWaypoint(waypointIndex, link.points);
1533
- if (newPoints) {
1534
- link.setPoints(newPoints);
1535
- if (newPoints.length <= 2) {
1536
- link.setMetadata('hasManualWaypoints', false);
1537
- }
1538
- console.log(`🔴 Removed waypoint at index ${waypointIndex} from link ${link.id}`);
1539
- return true;
1540
- }
1541
- return false;
1542
- }
1543
- /**
1544
- * Update waypoint editor configuration
1545
- */
1546
- updateWaypointEditorConfig(config) {
1547
- if (this.waypointEditor) {
1548
- this.waypointEditor.updateConfig(config);
1549
- }
1550
- }
1551
- /**
1552
- * Synchronize editor configs with engine interaction config
1553
- * ADDED: Call this when engine config changes to update editor visuals
1554
- */
1555
- syncWithEngineConfig(engine) {
1556
- const config = engine.getInteractionConfig();
1557
- if (config.waypointEditor) {
1558
- this.updateWaypointEditorConfig(config.waypointEditor);
1559
- }
1560
- if (config.controlPointEditor) {
1561
- this.updateControlPointEditorConfig(config.controlPointEditor);
1562
- }
1563
- this.installHostConnectionValidatorBridge(engine);
1564
- }
1565
- installHostConnectionValidatorBridge(engine) {
1566
- var _a;
1567
- if (this.validatorBridgedEngines.has(engine))
1568
- return;
1569
- const manager = (_a = engine.getConnectionStateManager) === null || _a === void 0 ? void 0 : _a.call(engine);
1570
- if (!(manager === null || manager === void 0 ? void 0 : manager.addValidator))
1571
- return;
1572
- this.validatorBridgedEngines.add(engine);
1573
- manager.addValidator((source, target) => {
1574
- const diagram = engine.getDiagram();
1575
- const sourceNode = diagram === null || diagram === void 0 ? void 0 : diagram.getNodeByPortId(source.id);
1576
- const targetNode = diagram === null || diagram === void 0 ? void 0 : diagram.getNodeByPortId(target.id);
1577
- if (!sourceNode || !targetNode)
1578
- return true;
1579
- return (0, tools_1.isValidConnection)({
1580
- sourceNode,
1581
- sourcePort: source,
1582
- targetNode,
1583
- targetPort: target,
1584
- }).valid;
1585
- });
1586
- }
1587
- /**
1588
- * Update hovered waypoint (for Delete key support)
1589
- * Call this from mousemove to track which waypoint is under cursor
1590
- */
1591
- updateHoveredWaypoint(worldX, worldY, link) {
1592
- if (!link || !this.waypointEditor) {
1593
- this.hoveredWaypointIndex = null;
1594
- this.hoveredWaypointLink = null;
1595
- return;
1596
- }
1597
- const waypointIndex = this.hitTestWaypoint(worldX, worldY, link);
1598
- this.hoveredWaypointIndex = waypointIndex;
1599
- this.hoveredWaypointLink = waypointIndex !== null ? link : null;
1600
- }
1601
- /**
1602
- * Delete currently hovered waypoint (for Delete key)
1603
- */
1604
- deleteHoveredWaypoint() {
1605
- if (this.isReadonlyLink(this.hoveredLink))
1606
- return false;
1607
- if (this.hoveredWaypointIndex !== null && this.hoveredWaypointLink) {
1608
- const removed = this.removeWaypoint(this.hoveredWaypointIndex, this.hoveredWaypointLink);
1609
- if (removed) {
1610
- this.hoveredWaypointIndex = null;
1611
- this.hoveredWaypointLink = null;
1612
- return true;
1613
- }
1614
- }
1615
- return false;
1616
- }
1617
- // ============================================================================
1618
- // Phase 2.3b: Control Point Editing Methods
1619
- // ============================================================================
1620
- /**
1621
- * Hit test for control point handle at mouse position
1622
- * Returns the control point info if hit, null otherwise
1623
- */
1624
- hitTestControlPoint(mouseX, mouseY, link) {
1625
- if (!this.controlPointEditor || !link.segments || link.segments.length === 0) {
1626
- return null;
1627
- }
1628
- const hit = this.controlPointEditor.hitTestControlPoint(mouseX, mouseY, link.segments, this.hitSlop);
1629
- if (hit) {
1630
- return {
1631
- segmentIndex: hit.segmentIndex,
1632
- controlType: hit.controlType,
1633
- };
1634
- }
1635
- return null;
1636
- }
1637
- /**
1638
- * Start dragging a control point
1639
- */
1640
- startControlPointDrag(segmentIndex, controlType, link) {
1641
- this.isDraggingControlPoint = true;
1642
- this.editingControlPointLink = link;
1643
- this.editingControlPointSegmentIndex = segmentIndex;
1644
- this.editingControlPointType = controlType;
1645
- console.log(`🟢 Started dragging ${controlType} of segment ${segmentIndex} on link ${link.id}`);
1646
- }
1647
- /**
1648
- * Move control point during drag
1649
- */
1650
- moveControlPoint(worldX, worldY, engine) {
1651
- if (this.isReadonlyEngine(engine))
1652
- return false; // RAW segments write below — no model guard can see it
1653
- if (!this.isDraggingControlPoint ||
1654
- !this.editingControlPointLink ||
1655
- this.editingControlPointSegmentIndex === null ||
1656
- !this.editingControlPointType ||
1657
- !this.controlPointEditor) {
1658
- return false;
1659
- }
1660
- const newPosition = { x: worldX, y: worldY };
1661
- const newSegments = this.controlPointEditor.moveControlPoint(this.editingControlPointSegmentIndex, this.editingControlPointType, newPosition, this.editingControlPointLink.segments);
1662
- if (newSegments) {
1663
- this.editingControlPointLink.segments = newSegments;
1664
- // Mark link as dirty to trigger re-render with updated segments
1665
- this.editingControlPointLink.markDirty();
1666
- console.log(`🟢 Moved ${this.editingControlPointType} of segment ${this.editingControlPointSegmentIndex} to (${worldX.toFixed(1)}, ${worldY.toFixed(1)})`);
1667
- return true;
1668
- }
1669
- return false;
1670
- }
1671
- /**
1672
- * End control point drag
1673
- */
1674
- endControlPointDrag() {
1675
- var _a;
1676
- if (this.isDraggingControlPoint) {
1677
- console.log(`🟢 Ended dragging ${this.editingControlPointType} of segment ${this.editingControlPointSegmentIndex} on link ${(_a = this.editingControlPointLink) === null || _a === void 0 ? void 0 : _a.id}`);
1678
- }
1679
- this.isDraggingControlPoint = false;
1680
- this.editingControlPointLink = null;
1681
- this.editingControlPointSegmentIndex = null;
1682
- this.editingControlPointType = null;
1683
- }
1684
- /**
1685
- * Update control point editor configuration
1686
- */
1687
- updateControlPointEditorConfig(config) {
1688
- if (this.controlPointEditor) {
1689
- this.controlPointEditor.updateConfig(config);
1690
- }
1691
- }
1692
- /**
1693
- * Update hovered control point (for Delete key support)
1694
- * Call this from mousemove to track which control point is under cursor
1695
- */
1696
- updateHoveredControlPoint(worldX, worldY, link) {
1697
- if (!link || !this.controlPointEditor) {
1698
- this.hoveredControlPointSegmentIndex = null;
1699
- this.hoveredControlPointType = null;
1700
- this.hoveredControlPointLink = null;
1701
- return;
1702
- }
1703
- const hit = this.hitTestControlPoint(worldX, worldY, link);
1704
- if (hit) {
1705
- this.hoveredControlPointSegmentIndex = hit.segmentIndex;
1706
- this.hoveredControlPointType = hit.controlType;
1707
- this.hoveredControlPointLink = link;
1708
- }
1709
- else {
1710
- this.hoveredControlPointSegmentIndex = null;
1711
- this.hoveredControlPointType = null;
1712
- this.hoveredControlPointLink = null;
1713
- }
1714
- }
1715
- /**
1716
- * Reset control point to auto-generated position (for Delete key)
1717
- * This removes custom control point adjustment, reverting to default bezier
1718
- */
1719
- resetHoveredControlPoint() {
1720
- if (this.hoveredControlPointSegmentIndex !== null &&
1721
- this.hoveredControlPointType &&
1722
- this.hoveredControlPointLink) {
1723
- // For now, we don't support "deleting" control points
1724
- // Control points are intrinsic to bezier curves
1725
- // User would need to change pathType instead
1726
- console.log('⚠️ Control points cannot be deleted, only moved');
1727
- return false;
1728
- }
1729
- return false;
1730
- }
1731
- }
1732
- exports.InteractionController = InteractionController;
1733
- //# sourceMappingURL=interaction-controller.js.map