@grafloria/element 0.3.18 → 0.3.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1148) hide show
  1. package/esm/src/index.js +295 -0
  2. package/esm/src/lib/dashboard-kit/dashboard.js +590 -0
  3. package/esm/src/lib/dashboard-kit/grid-binder.js +1633 -0
  4. package/esm/src/lib/dashboard-kit/grid-mapping.js +164 -0
  5. package/esm/src/lib/dashboard-kit/index.js +8 -0
  6. package/esm/src/lib/dashboard-kit/styles.js +205 -0
  7. package/esm/src/lib/dashboard-kit/widgets.js +379 -0
  8. package/esm/src/lib/diagram-kit/card.js +199 -0
  9. package/esm/src/lib/diagram-kit/editing.js +448 -0
  10. package/esm/src/lib/diagram-kit/er.js +160 -0
  11. package/esm/src/lib/diagram-kit/handles.js +312 -0
  12. package/esm/src/lib/diagram-kit/index.js +15 -0
  13. package/esm/src/lib/diagram-kit/join-guidance.js +322 -0
  14. package/esm/src/lib/diagram-kit/rows.js +144 -0
  15. package/esm/src/lib/diagram-kit/styles.js +118 -0
  16. package/esm/src/lib/diagram-kit/uml.js +135 -0
  17. package/esm/src/lib/diagram-kit/update.js +244 -0
  18. package/esm/src/lib/grafloria-flow-element.js +266 -0
  19. package/esm/src/lib/grafloria.js +69 -0
  20. package/esm/src/lib/load.js +252 -0
  21. package/esm/src/lib/node-type-registry.js +42 -0
  22. package/esm/src/lib/stencil-kit/builders.js +18 -0
  23. package/esm/src/lib/stencil-kit/card-builders.js +105 -0
  24. package/esm/src/lib/stencil-kit/index.js +9 -0
  25. package/esm/src/lib/stencil-kit/palette.js +427 -0
  26. package/esm/src/lib/stencil-kit/shape-data.js +537 -0
  27. package/esm/src/lib/stencil-kit/styles.js +126 -0
  28. package/package.json +13 -4
  29. package/src/index.d.ts +2 -1
  30. package/src/index.js +11 -2
  31. package/src/lib/dashboard-kit/grid-binder.js +16 -15
  32. package/src/lib/dashboard-kit/styles.js +9 -3
  33. package/src/lib/diagram-kit/index.d.ts +1 -0
  34. package/src/lib/diagram-kit/index.js +11 -1
  35. package/src/lib/diagram-kit/join-guidance.d.ts +116 -0
  36. package/src/lib/diagram-kit/join-guidance.js +331 -0
  37. package/src/lib/stencil-kit/palette.js +60 -6
  38. package/src/lib/stencil-kit/shape-data.d.ts +3 -2
  39. package/src/lib/stencil-kit/shape-data.js +323 -31
  40. package/src/lib/stencil-kit/styles.js +15 -0
  41. package/src/libs/element/src/index.d.ts +92 -0
  42. package/src/libs/element/src/index.js +576 -0
  43. package/src/libs/element/src/lib/dashboard-kit/dashboard.d.ts +345 -0
  44. package/src/libs/element/src/lib/dashboard-kit/dashboard.js +594 -0
  45. package/src/libs/element/src/lib/dashboard-kit/grid-binder.d.ts +277 -0
  46. package/src/libs/element/src/lib/dashboard-kit/grid-binder.js +1636 -0
  47. package/src/libs/element/src/lib/dashboard-kit/grid-mapping.d.ts +141 -0
  48. package/src/libs/element/src/lib/dashboard-kit/grid-mapping.js +176 -0
  49. package/src/libs/element/src/lib/dashboard-kit/index.d.ts +5 -0
  50. package/src/libs/element/src/lib/dashboard-kit/index.js +33 -0
  51. package/src/libs/element/src/lib/dashboard-kit/styles.d.ts +25 -0
  52. package/src/libs/element/src/lib/dashboard-kit/styles.js +209 -0
  53. package/src/libs/element/src/lib/dashboard-kit/widgets.d.ts +112 -0
  54. package/src/libs/element/src/lib/dashboard-kit/widgets.js +389 -0
  55. package/src/libs/element/src/lib/diagram-kit/card.d.ts +75 -0
  56. package/src/libs/element/src/lib/diagram-kit/card.js +209 -0
  57. package/src/libs/element/src/lib/diagram-kit/editing.d.ts +58 -0
  58. package/src/libs/element/src/lib/diagram-kit/editing.js +453 -0
  59. package/src/libs/element/src/lib/diagram-kit/er.d.ts +73 -0
  60. package/src/libs/element/src/lib/diagram-kit/er.js +163 -0
  61. package/src/libs/element/src/lib/diagram-kit/handles.d.ts +181 -0
  62. package/src/libs/element/src/lib/diagram-kit/handles.js +325 -0
  63. package/src/libs/element/src/lib/diagram-kit/index.d.ts +10 -0
  64. package/src/libs/element/src/lib/diagram-kit/index.js +55 -0
  65. package/src/libs/element/src/lib/diagram-kit/join-guidance.d.ts +116 -0
  66. package/src/libs/element/src/lib/diagram-kit/join-guidance.js +331 -0
  67. package/src/libs/element/src/lib/diagram-kit/rows.d.ts +53 -0
  68. package/src/libs/element/src/lib/diagram-kit/rows.js +147 -0
  69. package/src/libs/element/src/lib/diagram-kit/styles.d.ts +18 -0
  70. package/src/libs/element/src/lib/diagram-kit/styles.js +122 -0
  71. package/src/libs/element/src/lib/diagram-kit/uml.d.ts +59 -0
  72. package/src/libs/element/src/lib/diagram-kit/uml.js +138 -0
  73. package/src/libs/element/src/lib/diagram-kit/update.d.ts +133 -0
  74. package/src/libs/element/src/lib/diagram-kit/update.js +251 -0
  75. package/src/libs/element/src/lib/grafloria-flow-element.d.ts +48 -0
  76. package/src/libs/element/src/lib/grafloria-flow-element.js +271 -0
  77. package/src/libs/element/src/lib/grafloria.d.ts +72 -0
  78. package/src/libs/element/src/lib/grafloria.js +74 -0
  79. package/src/libs/element/src/lib/load.d.ts +72 -0
  80. package/src/libs/element/src/lib/load.js +255 -0
  81. package/src/libs/element/src/lib/node-type-registry.d.ts +39 -0
  82. package/src/libs/element/src/lib/node-type-registry.js +50 -0
  83. package/src/libs/element/src/lib/stencil-kit/builders.d.ts +45 -0
  84. package/src/libs/element/src/lib/stencil-kit/builders.js +24 -0
  85. package/src/libs/element/src/lib/stencil-kit/card-builders.d.ts +2 -0
  86. package/src/libs/element/src/lib/stencil-kit/card-builders.js +108 -0
  87. package/src/libs/element/src/lib/stencil-kit/index.d.ts +7 -0
  88. package/src/libs/element/src/lib/stencil-kit/index.js +19 -0
  89. package/src/libs/element/src/lib/stencil-kit/palette.d.ts +93 -0
  90. package/src/libs/element/src/lib/stencil-kit/palette.js +430 -0
  91. package/src/libs/element/src/lib/stencil-kit/shape-data.d.ts +28 -0
  92. package/src/libs/element/src/lib/stencil-kit/shape-data.js +540 -0
  93. package/src/libs/element/src/lib/stencil-kit/styles.d.ts +2 -0
  94. package/src/libs/element/src/lib/stencil-kit/styles.js +129 -0
  95. package/src/libs/engine/src/adapters/component-adapter.interface.d.ts +302 -0
  96. package/src/libs/engine/src/adapters/component-adapter.interface.js +84 -0
  97. package/src/libs/engine/src/adapters/index.d.ts +7 -0
  98. package/src/libs/engine/src/adapters/index.js +11 -0
  99. package/src/libs/engine/src/clipboard/ClipboardManager.d.ts +81 -0
  100. package/src/libs/engine/src/clipboard/ClipboardManager.js +108 -0
  101. package/src/libs/engine/src/clipboard/index.d.ts +1 -0
  102. package/src/libs/engine/src/clipboard/index.js +6 -0
  103. package/src/libs/engine/src/collab/apply-op.d.ts +42 -0
  104. package/src/libs/engine/src/collab/apply-op.js +939 -0
  105. package/src/libs/engine/src/collab/capture.d.ts +147 -0
  106. package/src/libs/engine/src/collab/capture.js +510 -0
  107. package/src/libs/engine/src/collab/index.d.ts +12 -0
  108. package/src/libs/engine/src/collab/index.js +84 -0
  109. package/src/libs/engine/src/collab/integrity.d.ts +178 -0
  110. package/src/libs/engine/src/collab/integrity.js +438 -0
  111. package/src/libs/engine/src/collab/lww.d.ts +47 -0
  112. package/src/libs/engine/src/collab/lww.js +188 -0
  113. package/src/libs/engine/src/collab/op-log.d.ts +50 -0
  114. package/src/libs/engine/src/collab/op-log.js +167 -0
  115. package/src/libs/engine/src/collab/op.d.ts +120 -0
  116. package/src/libs/engine/src/collab/op.js +118 -0
  117. package/src/libs/engine/src/collab/replica.d.ts +188 -0
  118. package/src/libs/engine/src/collab/replica.js +526 -0
  119. package/src/libs/engine/src/collab/undo.d.ts +106 -0
  120. package/src/libs/engine/src/collab/undo.js +388 -0
  121. package/src/libs/engine/src/commands/Command.d.ts +66 -0
  122. package/src/libs/engine/src/commands/Command.js +64 -0
  123. package/src/libs/engine/src/commands/CommandManager.d.ts +161 -0
  124. package/src/libs/engine/src/commands/CommandManager.js +417 -0
  125. package/src/libs/engine/src/commands/basic/AddGroupCommand.d.ts +13 -0
  126. package/src/libs/engine/src/commands/basic/AddGroupCommand.js +50 -0
  127. package/src/libs/engine/src/commands/basic/AddLinkCommand.d.ts +13 -0
  128. package/src/libs/engine/src/commands/basic/AddLinkCommand.js +50 -0
  129. package/src/libs/engine/src/commands/basic/AddNodeCommand.d.ts +13 -0
  130. package/src/libs/engine/src/commands/basic/AddNodeCommand.js +65 -0
  131. package/src/libs/engine/src/commands/basic/AddToGroupCommand.d.ts +12 -0
  132. package/src/libs/engine/src/commands/basic/AddToGroupCommand.js +73 -0
  133. package/src/libs/engine/src/commands/basic/AlignCommands.d.ts +42 -0
  134. package/src/libs/engine/src/commands/basic/AlignCommands.js +138 -0
  135. package/src/libs/engine/src/commands/basic/CollapseGroupCommand.d.ts +14 -0
  136. package/src/libs/engine/src/commands/basic/CollapseGroupCommand.js +70 -0
  137. package/src/libs/engine/src/commands/basic/CopyCommand.d.ts +29 -0
  138. package/src/libs/engine/src/commands/basic/CopyCommand.js +131 -0
  139. package/src/libs/engine/src/commands/basic/CutCommand.d.ts +49 -0
  140. package/src/libs/engine/src/commands/basic/CutCommand.js +68 -0
  141. package/src/libs/engine/src/commands/basic/DeleteSelectionCommand.d.ts +58 -0
  142. package/src/libs/engine/src/commands/basic/DeleteSelectionCommand.js +309 -0
  143. package/src/libs/engine/src/commands/basic/DuplicateCommand.d.ts +31 -0
  144. package/src/libs/engine/src/commands/basic/DuplicateCommand.js +232 -0
  145. package/src/libs/engine/src/commands/basic/ExpandGroupCommand.d.ts +12 -0
  146. package/src/libs/engine/src/commands/basic/ExpandGroupCommand.js +69 -0
  147. package/src/libs/engine/src/commands/basic/MoveGroupCommand.d.ts +46 -0
  148. package/src/libs/engine/src/commands/basic/MoveGroupCommand.js +77 -0
  149. package/src/libs/engine/src/commands/basic/MoveNodeCommand.d.ts +30 -0
  150. package/src/libs/engine/src/commands/basic/MoveNodeCommand.js +87 -0
  151. package/src/libs/engine/src/commands/basic/NodeZOrderCommands.d.ts +39 -0
  152. package/src/libs/engine/src/commands/basic/NodeZOrderCommands.js +120 -0
  153. package/src/libs/engine/src/commands/basic/PasteCommand.d.ts +33 -0
  154. package/src/libs/engine/src/commands/basic/PasteCommand.js +228 -0
  155. package/src/libs/engine/src/commands/basic/PortCommands.d.ts +22 -0
  156. package/src/libs/engine/src/commands/basic/PortCommands.js +85 -0
  157. package/src/libs/engine/src/commands/basic/ReconnectLinkCommand.d.ts +15 -0
  158. package/src/libs/engine/src/commands/basic/ReconnectLinkCommand.js +59 -0
  159. package/src/libs/engine/src/commands/basic/RemoveFromGroupCommand.d.ts +12 -0
  160. package/src/libs/engine/src/commands/basic/RemoveFromGroupCommand.js +64 -0
  161. package/src/libs/engine/src/commands/basic/RemoveGroupCommand.d.ts +12 -0
  162. package/src/libs/engine/src/commands/basic/RemoveGroupCommand.js +56 -0
  163. package/src/libs/engine/src/commands/basic/RemoveLinkCommand.d.ts +12 -0
  164. package/src/libs/engine/src/commands/basic/RemoveLinkCommand.js +57 -0
  165. package/src/libs/engine/src/commands/basic/RemoveNodeCommand.d.ts +23 -0
  166. package/src/libs/engine/src/commands/basic/RemoveNodeCommand.js +108 -0
  167. package/src/libs/engine/src/commands/basic/ResizeNodeCommand.d.ts +16 -0
  168. package/src/libs/engine/src/commands/basic/ResizeNodeCommand.js +81 -0
  169. package/src/libs/engine/src/commands/basic/RotateNodeCommand.d.ts +37 -0
  170. package/src/libs/engine/src/commands/basic/RotateNodeCommand.js +88 -0
  171. package/src/libs/engine/src/commands/basic/SetFlexItemCommand.d.ts +14 -0
  172. package/src/libs/engine/src/commands/basic/SetFlexItemCommand.js +74 -0
  173. package/src/libs/engine/src/commands/basic/SetGridItemCommand.d.ts +14 -0
  174. package/src/libs/engine/src/commands/basic/SetGridItemCommand.js +74 -0
  175. package/src/libs/engine/src/commands/basic/SetLayoutCommand.d.ts +16 -0
  176. package/src/libs/engine/src/commands/basic/SetLayoutCommand.js +80 -0
  177. package/src/libs/engine/src/commands/basic/SetLinkDisplayLabelCommand.d.ts +28 -0
  178. package/src/libs/engine/src/commands/basic/SetLinkDisplayLabelCommand.js +83 -0
  179. package/src/libs/engine/src/commands/basic/SetLinkLabelCommand.d.ts +24 -0
  180. package/src/libs/engine/src/commands/basic/SetLinkLabelCommand.js +81 -0
  181. package/src/libs/engine/src/commands/basic/SetLinkLabelsCommand.d.ts +14 -0
  182. package/src/libs/engine/src/commands/basic/SetLinkLabelsCommand.js +75 -0
  183. package/src/libs/engine/src/commands/basic/SetLinkPathTypeCommand.d.ts +14 -0
  184. package/src/libs/engine/src/commands/basic/SetLinkPathTypeCommand.js +77 -0
  185. package/src/libs/engine/src/commands/basic/SetLinkPointsCommand.d.ts +32 -0
  186. package/src/libs/engine/src/commands/basic/SetLinkPointsCommand.js +87 -0
  187. package/src/libs/engine/src/commands/basic/SetNodeDataCommand.d.ts +14 -0
  188. package/src/libs/engine/src/commands/basic/SetNodeDataCommand.js +93 -0
  189. package/src/libs/engine/src/commands/basic/SetNodeLabelCommand.d.ts +26 -0
  190. package/src/libs/engine/src/commands/basic/SetNodeLabelCommand.js +81 -0
  191. package/src/libs/engine/src/commands/basic/SetNodeShapeConfigCommand.d.ts +14 -0
  192. package/src/libs/engine/src/commands/basic/SetNodeShapeConfigCommand.js +69 -0
  193. package/src/libs/engine/src/commands/basic/SetNodeStyleCommand.d.ts +15 -0
  194. package/src/libs/engine/src/commands/basic/SetNodeStyleCommand.js +88 -0
  195. package/src/libs/engine/src/commands/basic/SetParentCommand.d.ts +13 -0
  196. package/src/libs/engine/src/commands/basic/SetParentCommand.js +109 -0
  197. package/src/libs/engine/src/commands/basic/SetStrokePointsCommand.d.ts +34 -0
  198. package/src/libs/engine/src/commands/basic/SetStrokePointsCommand.js +86 -0
  199. package/src/libs/engine/src/commands/basic/StrokeLifecycleCommands.d.ts +31 -0
  200. package/src/libs/engine/src/commands/basic/StrokeLifecycleCommands.js +88 -0
  201. package/src/libs/engine/src/commands/basic/UpdateLinkStyleCommand.d.ts +15 -0
  202. package/src/libs/engine/src/commands/basic/UpdateLinkStyleCommand.js +72 -0
  203. package/src/libs/engine/src/commands/basic/index.d.ts +41 -0
  204. package/src/libs/engine/src/commands/basic/index.js +52 -0
  205. package/src/libs/engine/src/commands/basic/remapNodePortIds.d.ts +23 -0
  206. package/src/libs/engine/src/commands/basic/remapNodePortIds.js +46 -0
  207. package/src/libs/engine/src/commands/basic/resolveLinkNodeIds.d.ts +31 -0
  208. package/src/libs/engine/src/commands/basic/resolveLinkNodeIds.js +49 -0
  209. package/src/libs/engine/src/commands/composite/BatchCommand.d.ts +19 -0
  210. package/src/libs/engine/src/commands/composite/BatchCommand.js +61 -0
  211. package/src/libs/engine/src/commands/composite/MacroCommand.d.ts +35 -0
  212. package/src/libs/engine/src/commands/composite/MacroCommand.js +87 -0
  213. package/src/libs/engine/src/commands/composite/index.d.ts +2 -0
  214. package/src/libs/engine/src/commands/composite/index.js +7 -0
  215. package/src/libs/engine/src/commands/index.d.ts +4 -0
  216. package/src/libs/engine/src/commands/index.js +9 -0
  217. package/src/libs/engine/src/comments/comment-store.d.ts +238 -0
  218. package/src/libs/engine/src/comments/comment-store.js +538 -0
  219. package/src/libs/engine/src/comments/index.d.ts +4 -0
  220. package/src/libs/engine/src/comments/index.js +31 -0
  221. package/src/libs/engine/src/comments/mentions.d.ts +52 -0
  222. package/src/libs/engine/src/comments/mentions.js +94 -0
  223. package/src/libs/engine/src/comments/read-state.d.ts +37 -0
  224. package/src/libs/engine/src/comments/read-state.js +105 -0
  225. package/src/libs/engine/src/comments/types.d.ts +154 -0
  226. package/src/libs/engine/src/comments/types.js +107 -0
  227. package/src/libs/engine/src/config/InteractionConfig.d.ts +330 -0
  228. package/src/libs/engine/src/config/InteractionConfig.js +154 -0
  229. package/src/libs/engine/src/config/index.d.ts +1 -0
  230. package/src/libs/engine/src/config/index.js +6 -0
  231. package/src/libs/engine/src/dsl/DSL.d.ts +197 -0
  232. package/src/libs/engine/src/dsl/DSL.js +564 -0
  233. package/src/libs/engine/src/dsl/advanced/StyleParser.d.ts +75 -0
  234. package/src/libs/engine/src/dsl/advanced/StyleParser.js +166 -0
  235. package/src/libs/engine/src/dsl/advanced/TemplateParser.d.ts +88 -0
  236. package/src/libs/engine/src/dsl/advanced/TemplateParser.js +226 -0
  237. package/src/libs/engine/src/dsl/advanced/index.d.ts +9 -0
  238. package/src/libs/engine/src/dsl/advanced/index.js +13 -0
  239. package/src/libs/engine/src/dsl/detector/LayoutDetector.d.ts +80 -0
  240. package/src/libs/engine/src/dsl/detector/LayoutDetector.js +333 -0
  241. package/src/libs/engine/src/dsl/extended/BPMNGenerator.d.ts +38 -0
  242. package/src/libs/engine/src/dsl/extended/BPMNGenerator.js +90 -0
  243. package/src/libs/engine/src/dsl/extended/BPMNParser.d.ts +83 -0
  244. package/src/libs/engine/src/dsl/extended/BPMNParser.js +198 -0
  245. package/src/libs/engine/src/dsl/extended/ERDGenerator.d.ts +38 -0
  246. package/src/libs/engine/src/dsl/extended/ERDGenerator.js +126 -0
  247. package/src/libs/engine/src/dsl/extended/ERDParser.d.ts +81 -0
  248. package/src/libs/engine/src/dsl/extended/ERDParser.js +161 -0
  249. package/src/libs/engine/src/dsl/extended/ERDTransformer.d.ts +43 -0
  250. package/src/libs/engine/src/dsl/extended/ERDTransformer.js +105 -0
  251. package/src/libs/engine/src/dsl/extended/UMLGenerator.d.ts +42 -0
  252. package/src/libs/engine/src/dsl/extended/UMLGenerator.js +157 -0
  253. package/src/libs/engine/src/dsl/extended/UMLParser.d.ts +99 -0
  254. package/src/libs/engine/src/dsl/extended/UMLParser.js +200 -0
  255. package/src/libs/engine/src/dsl/extended/index.d.ts +13 -0
  256. package/src/libs/engine/src/dsl/extended/index.js +27 -0
  257. package/src/libs/engine/src/dsl/generator/DSLFormatter.d.ts +87 -0
  258. package/src/libs/engine/src/dsl/generator/DSLFormatter.js +261 -0
  259. package/src/libs/engine/src/dsl/generator/DSLGenerator.d.ts +96 -0
  260. package/src/libs/engine/src/dsl/generator/DSLGenerator.js +328 -0
  261. package/src/libs/engine/src/dsl/generator/DiagramAnalyzer.d.ts +111 -0
  262. package/src/libs/engine/src/dsl/generator/DiagramAnalyzer.js +361 -0
  263. package/src/libs/engine/src/dsl/index.d.ts +35 -0
  264. package/src/libs/engine/src/dsl/index.js +64 -0
  265. package/src/libs/engine/src/dsl/lexer/Lexer.d.ts +117 -0
  266. package/src/libs/engine/src/dsl/lexer/Lexer.js +521 -0
  267. package/src/libs/engine/src/dsl/mermaid/MermaidClass.d.ts +136 -0
  268. package/src/libs/engine/src/dsl/mermaid/MermaidClass.js +429 -0
  269. package/src/libs/engine/src/dsl/mermaid/MermaidER.d.ts +118 -0
  270. package/src/libs/engine/src/dsl/mermaid/MermaidER.js +338 -0
  271. package/src/libs/engine/src/dsl/mermaid/MermaidState.d.ts +89 -0
  272. package/src/libs/engine/src/dsl/mermaid/MermaidState.js +613 -0
  273. package/src/libs/engine/src/dsl/mermaid/index.d.ts +10 -0
  274. package/src/libs/engine/src/dsl/mermaid/index.js +33 -0
  275. package/src/libs/engine/src/dsl/mermaid/layout.d.ts +70 -0
  276. package/src/libs/engine/src/dsl/mermaid/layout.js +162 -0
  277. package/src/libs/engine/src/dsl/mermaid/lines.d.ts +25 -0
  278. package/src/libs/engine/src/dsl/mermaid/lines.js +74 -0
  279. package/src/libs/engine/src/dsl/parser/Parser.d.ts +131 -0
  280. package/src/libs/engine/src/dsl/parser/Parser.js +725 -0
  281. package/src/libs/engine/src/dsl/sync/BidirectionalSync.d.ts +154 -0
  282. package/src/libs/engine/src/dsl/sync/BidirectionalSync.js +389 -0
  283. package/src/libs/engine/src/dsl/sync/IntegratedSyncManager.d.ts +128 -0
  284. package/src/libs/engine/src/dsl/sync/IntegratedSyncManager.js +244 -0
  285. package/src/libs/engine/src/dsl/sync/LayoutApplicator.d.ts +140 -0
  286. package/src/libs/engine/src/dsl/sync/LayoutApplicator.js +271 -0
  287. package/src/libs/engine/src/dsl/sync/SyncStateManager.d.ts +145 -0
  288. package/src/libs/engine/src/dsl/sync/SyncStateManager.js +253 -0
  289. package/src/libs/engine/src/dsl/sync/index.d.ts +13 -0
  290. package/src/libs/engine/src/dsl/sync/index.js +21 -0
  291. package/src/libs/engine/src/dsl/transformer/ASTTransformer.d.ts +150 -0
  292. package/src/libs/engine/src/dsl/transformer/ASTTransformer.js +605 -0
  293. package/src/libs/engine/src/dsl/types/ASTNode.d.ts +159 -0
  294. package/src/libs/engine/src/dsl/types/ASTNode.js +31 -0
  295. package/src/libs/engine/src/dsl/types/Token.d.ts +79 -0
  296. package/src/libs/engine/src/dsl/types/Token.js +84 -0
  297. package/src/libs/engine/src/engine/DiagramEngine.d.ts +917 -0
  298. package/src/libs/engine/src/engine/DiagramEngine.js +2190 -0
  299. package/src/libs/engine/src/engine/DiagramMode.d.ts +51 -0
  300. package/src/libs/engine/src/engine/DiagramMode.js +53 -0
  301. package/src/libs/engine/src/engine/DiagramModeTypes.d.ts +73 -0
  302. package/src/libs/engine/src/engine/DiagramModeTypes.js +4 -0
  303. package/src/libs/engine/src/engine/ModeManager.d.ts +155 -0
  304. package/src/libs/engine/src/engine/ModeManager.js +387 -0
  305. package/src/libs/engine/src/engine/index.d.ts +2 -0
  306. package/src/libs/engine/src/engine/index.js +7 -0
  307. package/src/libs/engine/src/events/EventBus.d.ts +106 -0
  308. package/src/libs/engine/src/events/EventBus.js +226 -0
  309. package/src/libs/engine/src/events/index.d.ts +1 -0
  310. package/src/libs/engine/src/events/index.js +6 -0
  311. package/src/libs/engine/src/index.d.ts +43 -0
  312. package/src/libs/engine/src/index.js +142 -0
  313. package/src/libs/engine/src/interaction/GroupCollapseService.d.ts +53 -0
  314. package/src/libs/engine/src/interaction/GroupCollapseService.js +274 -0
  315. package/src/libs/engine/src/interaction/GroupMembershipService.d.ts +107 -0
  316. package/src/libs/engine/src/interaction/GroupMembershipService.js +245 -0
  317. package/src/libs/engine/src/interaction/SemanticMembershipService.d.ts +28 -0
  318. package/src/libs/engine/src/interaction/SemanticMembershipService.js +168 -0
  319. package/src/libs/engine/src/interaction/SwimlaneService.d.ts +62 -0
  320. package/src/libs/engine/src/interaction/SwimlaneService.js +180 -0
  321. package/src/libs/engine/src/interaction/index.d.ts +4 -0
  322. package/src/libs/engine/src/interaction/index.js +9 -0
  323. package/src/libs/engine/src/interop/drawio/importDrawio.d.ts +52 -0
  324. package/src/libs/engine/src/interop/drawio/importDrawio.js +940 -0
  325. package/src/libs/engine/src/interop/drawio/index.d.ts +1 -0
  326. package/src/libs/engine/src/interop/drawio/index.js +12 -0
  327. package/src/libs/engine/src/interop/drawio/xml.d.ts +26 -0
  328. package/src/libs/engine/src/interop/drawio/xml.js +213 -0
  329. package/src/libs/engine/src/layout/CompoundLayoutService.d.ts +121 -0
  330. package/src/libs/engine/src/layout/CompoundLayoutService.js +616 -0
  331. package/src/libs/engine/src/layout/ILayoutAlgorithm.d.ts +120 -0
  332. package/src/libs/engine/src/layout/ILayoutAlgorithm.js +88 -0
  333. package/src/libs/engine/src/layout/LayoutManager.d.ts +155 -0
  334. package/src/libs/engine/src/layout/LayoutManager.js +640 -0
  335. package/src/libs/engine/src/layout/SmartSpacingCalculator.d.ts +62 -0
  336. package/src/libs/engine/src/layout/SmartSpacingCalculator.js +134 -0
  337. package/src/libs/engine/src/layout/ViewportTransform.d.ts +55 -0
  338. package/src/libs/engine/src/layout/ViewportTransform.js +118 -0
  339. package/src/libs/engine/src/layout/algorithms/ForceDirectedLayoutAlgorithm.d.ts +34 -0
  340. package/src/libs/engine/src/layout/algorithms/ForceDirectedLayoutAlgorithm.js +317 -0
  341. package/src/libs/engine/src/layout/algorithms/GridLayoutAlgorithm.d.ts +56 -0
  342. package/src/libs/engine/src/layout/algorithms/GridLayoutAlgorithm.js +223 -0
  343. package/src/libs/engine/src/layout/algorithms/HierarchicalLayoutAlgorithm.d.ts +60 -0
  344. package/src/libs/engine/src/layout/algorithms/HierarchicalLayoutAlgorithm.js +307 -0
  345. package/src/libs/engine/src/layout/algorithms/HybridLayoutAlgorithm.d.ts +62 -0
  346. package/src/libs/engine/src/layout/algorithms/HybridLayoutAlgorithm.js +324 -0
  347. package/src/libs/engine/src/layout/community-layout-adapter.d.ts +107 -0
  348. package/src/libs/engine/src/layout/community-layout-adapter.js +486 -0
  349. package/src/libs/engine/src/layout/component-packing.d.ts +98 -0
  350. package/src/libs/engine/src/layout/component-packing.js +307 -0
  351. package/src/libs/engine/src/layout/dagre-layout-adapter.d.ts +122 -0
  352. package/src/libs/engine/src/layout/dagre-layout-adapter.js +697 -0
  353. package/src/libs/engine/src/layout/edge-bundling.interface.d.ts +159 -0
  354. package/src/libs/engine/src/layout/edge-bundling.interface.js +379 -0
  355. package/src/libs/engine/src/layout/elk-layout-adapter.d.ts +121 -0
  356. package/src/libs/engine/src/layout/elk-layout-adapter.js +586 -0
  357. package/src/libs/engine/src/layout/elk-loader.d.ts +1 -0
  358. package/src/libs/engine/src/layout/elk-loader.js +24 -0
  359. package/src/libs/engine/src/layout/force-layout-adapter.d.ts +167 -0
  360. package/src/libs/engine/src/layout/force-layout-adapter.js +790 -0
  361. package/src/libs/engine/src/layout/grid-pack/grid-pack-engine.d.ts +323 -0
  362. package/src/libs/engine/src/layout/grid-pack/grid-pack-engine.js +685 -0
  363. package/src/libs/engine/src/layout/incremental/mental-map.d.ts +98 -0
  364. package/src/libs/engine/src/layout/incremental/mental-map.js +221 -0
  365. package/src/libs/engine/src/layout/incremental-layout.interface.d.ts +145 -0
  366. package/src/libs/engine/src/layout/incremental-layout.interface.js +300 -0
  367. package/src/libs/engine/src/layout/index.d.ts +83 -0
  368. package/src/libs/engine/src/layout/index.js +116 -0
  369. package/src/libs/engine/src/layout/layout-adapter.interface.d.ts +185 -0
  370. package/src/libs/engine/src/layout/layout-adapter.interface.js +10 -0
  371. package/src/libs/engine/src/layout/layout-auto-select.d.ts +160 -0
  372. package/src/libs/engine/src/layout/layout-auto-select.js +621 -0
  373. package/src/libs/engine/src/layout/layout-constraints.interface.d.ts +117 -0
  374. package/src/libs/engine/src/layout/layout-constraints.interface.js +138 -0
  375. package/src/libs/engine/src/layout/layout-graph.d.ts +70 -0
  376. package/src/libs/engine/src/layout/layout-graph.js +119 -0
  377. package/src/libs/engine/src/layout/layout-history.d.ts +147 -0
  378. package/src/libs/engine/src/layout/layout-history.js +258 -0
  379. package/src/libs/engine/src/layout/layout-host.d.ts +172 -0
  380. package/src/libs/engine/src/layout/layout-host.js +523 -0
  381. package/src/libs/engine/src/layout/layout-presets.d.ts +91 -0
  382. package/src/libs/engine/src/layout/layout-presets.js +333 -0
  383. package/src/libs/engine/src/layout/layout-quality-extended.d.ts +66 -0
  384. package/src/libs/engine/src/layout/layout-quality-extended.js +246 -0
  385. package/src/libs/engine/src/layout/layout-quality-metrics.d.ts +127 -0
  386. package/src/libs/engine/src/layout/layout-quality-metrics.js +466 -0
  387. package/src/libs/engine/src/layout/layout-registry.d.ts +309 -0
  388. package/src/libs/engine/src/layout/layout-registry.js +414 -0
  389. package/src/libs/engine/src/layout/layout.service.d.ts +100 -0
  390. package/src/libs/engine/src/layout/layout.service.js +216 -0
  391. package/src/libs/engine/src/layout/overlap-removal.d.ts +20 -0
  392. package/src/libs/engine/src/layout/overlap-removal.js +117 -0
  393. package/src/libs/engine/src/layout/port-aware-layout.interface.d.ts +232 -0
  394. package/src/libs/engine/src/layout/port-aware-layout.interface.js +413 -0
  395. package/src/libs/engine/src/layout/port-label-bridge.d.ts +77 -0
  396. package/src/libs/engine/src/layout/port-label-bridge.js +250 -0
  397. package/src/libs/engine/src/layout/portfolio-layouts.d.ts +53 -0
  398. package/src/libs/engine/src/layout/portfolio-layouts.js +388 -0
  399. package/src/libs/engine/src/layout/rng.d.ts +34 -0
  400. package/src/libs/engine/src/layout/rng.js +71 -0
  401. package/src/libs/engine/src/layout/spectral-layout-adapter.d.ts +72 -0
  402. package/src/libs/engine/src/layout/spectral-layout-adapter.js +379 -0
  403. package/src/libs/engine/src/layout/steppable-layout.d.ts +40 -0
  404. package/src/libs/engine/src/layout/steppable-layout.js +34 -0
  405. package/src/libs/engine/src/layout/subgraph-layout.interface.d.ts +269 -0
  406. package/src/libs/engine/src/layout/subgraph-layout.interface.js +452 -0
  407. package/src/libs/engine/src/layout/sugiyama/layered-layout.d.ts +9 -0
  408. package/src/libs/engine/src/layout/sugiyama/layered-layout.js +83 -0
  409. package/src/libs/engine/src/layout/sugiyama/sugiyama.d.ts +91 -0
  410. package/src/libs/engine/src/layout/sugiyama/sugiyama.js +797 -0
  411. package/src/libs/engine/src/layout/tree-layout.d.ts +43 -0
  412. package/src/libs/engine/src/layout/tree-layout.js +426 -0
  413. package/src/libs/engine/src/layout/types.d.ts +263 -0
  414. package/src/libs/engine/src/layout/types.js +6 -0
  415. package/src/libs/engine/src/lib/performance/mobile-performance.service.d.ts +43 -0
  416. package/src/libs/engine/src/lib/performance/mobile-performance.service.js +95 -0
  417. package/src/libs/engine/src/models/DiagramEntity.d.ts +174 -0
  418. package/src/libs/engine/src/models/DiagramEntity.js +366 -0
  419. package/src/libs/engine/src/models/DiagramModel.d.ts +960 -0
  420. package/src/libs/engine/src/models/DiagramModel.js +2416 -0
  421. package/src/libs/engine/src/models/GroupModel.d.ts +573 -0
  422. package/src/libs/engine/src/models/GroupModel.js +1373 -0
  423. package/src/libs/engine/src/models/LinkModel.d.ts +395 -0
  424. package/src/libs/engine/src/models/LinkModel.js +1045 -0
  425. package/src/libs/engine/src/models/NodeModel.d.ts +666 -0
  426. package/src/libs/engine/src/models/NodeModel.js +1512 -0
  427. package/src/libs/engine/src/models/PortModel.d.ts +292 -0
  428. package/src/libs/engine/src/models/PortModel.js +637 -0
  429. package/src/libs/engine/src/models/StrokeModel.d.ts +160 -0
  430. package/src/libs/engine/src/models/StrokeModel.js +387 -0
  431. package/src/libs/engine/src/models/index.d.ts +7 -0
  432. package/src/libs/engine/src/models/index.js +12 -0
  433. package/src/libs/engine/src/models/readonly-lock.d.ts +108 -0
  434. package/src/libs/engine/src/models/readonly-lock.js +125 -0
  435. package/src/libs/engine/src/performance/LRUCache.d.ts +78 -0
  436. package/src/libs/engine/src/performance/LRUCache.js +179 -0
  437. package/src/libs/engine/src/performance/PerformanceMonitor.d.ts +47 -0
  438. package/src/libs/engine/src/performance/PerformanceMonitor.js +112 -0
  439. package/src/libs/engine/src/performance/SpatialIndex.d.ts +157 -0
  440. package/src/libs/engine/src/performance/SpatialIndex.js +306 -0
  441. package/src/libs/engine/src/performance/index.d.ts +2 -0
  442. package/src/libs/engine/src/performance/index.js +7 -0
  443. package/src/libs/engine/src/plugins/PluginManager.d.ts +95 -0
  444. package/src/libs/engine/src/plugins/PluginManager.js +388 -0
  445. package/src/libs/engine/src/plugins/index.d.ts +1 -0
  446. package/src/libs/engine/src/plugins/index.js +6 -0
  447. package/src/libs/engine/src/ports/connection-rules.d.ts +32 -0
  448. package/src/libs/engine/src/ports/connection-rules.js +131 -0
  449. package/src/libs/engine/src/ports/dynamic-ports.d.ts +27 -0
  450. package/src/libs/engine/src/ports/dynamic-ports.js +135 -0
  451. package/src/libs/engine/src/ports/index.d.ts +5 -0
  452. package/src/libs/engine/src/ports/index.js +16 -0
  453. package/src/libs/engine/src/ports/port-groups.d.ts +43 -0
  454. package/src/libs/engine/src/ports/port-groups.js +185 -0
  455. package/src/libs/engine/src/ports/port-type-registry.d.ts +34 -0
  456. package/src/libs/engine/src/ports/port-type-registry.js +87 -0
  457. package/src/libs/engine/src/ports/port-types.d.ts +266 -0
  458. package/src/libs/engine/src/ports/port-types.js +30 -0
  459. package/src/libs/engine/src/rendering/HtmlTemplateRenderer.d.ts +136 -0
  460. package/src/libs/engine/src/rendering/HtmlTemplateRenderer.js +292 -0
  461. package/src/libs/engine/src/rendering/LemonadeJSRenderer.d.ts +160 -0
  462. package/src/libs/engine/src/rendering/LemonadeJSRenderer.js +362 -0
  463. package/src/libs/engine/src/rendering/index.d.ts +2 -0
  464. package/src/libs/engine/src/rendering/index.js +7 -0
  465. package/src/libs/engine/src/routing/LiveReroutingEngine.d.ts +75 -0
  466. package/src/libs/engine/src/routing/LiveReroutingEngine.js +173 -0
  467. package/src/libs/engine/src/routing/ObstacleIndex.d.ts +42 -0
  468. package/src/libs/engine/src/routing/ObstacleIndex.js +215 -0
  469. package/src/libs/engine/src/routing/ObstacleMap.d.ts +68 -0
  470. package/src/libs/engine/src/routing/ObstacleMap.js +312 -0
  471. package/src/libs/engine/src/routing/ObstacleMapBuilder.d.ts +28 -0
  472. package/src/libs/engine/src/routing/ObstacleMapBuilder.js +76 -0
  473. package/src/libs/engine/src/routing/PathSimplifier.d.ts +119 -0
  474. package/src/libs/engine/src/routing/PathSimplifier.js +224 -0
  475. package/src/libs/engine/src/routing/RoutingEngine.d.ts +118 -0
  476. package/src/libs/engine/src/routing/RoutingEngine.js +546 -0
  477. package/src/libs/engine/src/routing/algorithms/AStarRouter.d.ts +90 -0
  478. package/src/libs/engine/src/routing/algorithms/AStarRouter.js +331 -0
  479. package/src/libs/engine/src/routing/algorithms/DijkstraRouter.d.ts +74 -0
  480. package/src/libs/engine/src/routing/algorithms/DijkstraRouter.js +297 -0
  481. package/src/libs/engine/src/routing/algorithms/ElkRouter.d.ts +34 -0
  482. package/src/libs/engine/src/routing/algorithms/ElkRouter.js +210 -0
  483. package/src/libs/engine/src/routing/algorithms/ManhattanRouter.d.ts +18 -0
  484. package/src/libs/engine/src/routing/algorithms/ManhattanRouter.js +224 -0
  485. package/src/libs/engine/src/routing/algorithms/OrthogonalRouter.d.ts +173 -0
  486. package/src/libs/engine/src/routing/algorithms/OrthogonalRouter.js +1092 -0
  487. package/src/libs/engine/src/routing/algorithms/StraightRouter.d.ts +8 -0
  488. package/src/libs/engine/src/routing/algorithms/StraightRouter.js +53 -0
  489. package/src/libs/engine/src/routing/algorithms/VisibilityGraphRouter.d.ts +59 -0
  490. package/src/libs/engine/src/routing/algorithms/VisibilityGraphRouter.js +258 -0
  491. package/src/libs/engine/src/routing/global/GlobalRouteSolver.d.ts +64 -0
  492. package/src/libs/engine/src/routing/global/GlobalRouteSolver.js +334 -0
  493. package/src/libs/engine/src/routing/global/solver-host.d.ts +65 -0
  494. package/src/libs/engine/src/routing/global/solver-host.js +87 -0
  495. package/src/libs/engine/src/routing/index.d.ts +15 -0
  496. package/src/libs/engine/src/routing/index.js +20 -0
  497. package/src/libs/engine/src/routing/types.d.ts +161 -0
  498. package/src/libs/engine/src/routing/types.js +4 -0
  499. package/src/libs/engine/src/selection/SelectionManager.d.ts +161 -0
  500. package/src/libs/engine/src/selection/SelectionManager.js +483 -0
  501. package/src/libs/engine/src/selection/index.d.ts +1 -0
  502. package/src/libs/engine/src/selection/index.js +6 -0
  503. package/src/libs/engine/src/serialization/DiagramMigrations.d.ts +41 -0
  504. package/src/libs/engine/src/serialization/DiagramMigrations.js +124 -0
  505. package/src/libs/engine/src/serialization/DiagramValidator.d.ts +20 -0
  506. package/src/libs/engine/src/serialization/DiagramValidator.js +136 -0
  507. package/src/libs/engine/src/serialization/DocumentEnvelope.d.ts +53 -0
  508. package/src/libs/engine/src/serialization/DocumentEnvelope.js +111 -0
  509. package/src/libs/engine/src/serialization/Incremental.d.ts +77 -0
  510. package/src/libs/engine/src/serialization/Incremental.js +227 -0
  511. package/src/libs/engine/src/serialization/Serializer.d.ts +29 -0
  512. package/src/libs/engine/src/serialization/Serializer.js +45 -0
  513. package/src/libs/engine/src/serialization/Subgraph.d.ts +51 -0
  514. package/src/libs/engine/src/serialization/Subgraph.js +172 -0
  515. package/src/libs/engine/src/serialization/TextFormat.d.ts +71 -0
  516. package/src/libs/engine/src/serialization/TextFormat.js +261 -0
  517. package/src/libs/engine/src/state/ConnectionStateManager.d.ts +178 -0
  518. package/src/libs/engine/src/state/ConnectionStateManager.js +319 -0
  519. package/src/libs/engine/src/state/DiagramStore.d.ts +134 -0
  520. package/src/libs/engine/src/state/DiagramStore.js +372 -0
  521. package/src/libs/engine/src/state/index.d.ts +2 -0
  522. package/src/libs/engine/src/state/index.js +7 -0
  523. package/src/libs/engine/src/sync/awareness.d.ts +91 -0
  524. package/src/libs/engine/src/sync/awareness.js +221 -0
  525. package/src/libs/engine/src/sync/batcher.d.ts +84 -0
  526. package/src/libs/engine/src/sync/batcher.js +0 -0
  527. package/src/libs/engine/src/sync/causal-buffer.d.ts +81 -0
  528. package/src/libs/engine/src/sync/causal-buffer.js +199 -0
  529. package/src/libs/engine/src/sync/index.d.ts +20 -0
  530. package/src/libs/engine/src/sync/index.js +41 -0
  531. package/src/libs/engine/src/sync/protocol.d.ts +74 -0
  532. package/src/libs/engine/src/sync/protocol.js +39 -0
  533. package/src/libs/engine/src/sync/sync-adapter.d.ts +243 -0
  534. package/src/libs/engine/src/sync/sync-adapter.js +524 -0
  535. package/src/libs/engine/src/sync/transport.d.ts +30 -0
  536. package/src/libs/engine/src/sync/transport.js +28 -0
  537. package/src/libs/engine/src/sync/transports/broadcast-channel.d.ts +39 -0
  538. package/src/libs/engine/src/sync/transports/broadcast-channel.js +117 -0
  539. package/src/libs/engine/src/sync/transports/memory.d.ts +38 -0
  540. package/src/libs/engine/src/sync/transports/memory.js +111 -0
  541. package/src/libs/engine/src/sync/transports/unreliable.d.ts +59 -0
  542. package/src/libs/engine/src/sync/transports/unreliable.js +153 -0
  543. package/src/libs/engine/src/sync/transports/websocket.d.ts +60 -0
  544. package/src/libs/engine/src/sync/transports/websocket.js +210 -0
  545. package/src/libs/engine/src/sync/version-vector.d.ts +47 -0
  546. package/src/libs/engine/src/sync/version-vector.js +218 -0
  547. package/src/libs/engine/src/template-library/common-templates.d.ts +46 -0
  548. package/src/libs/engine/src/template-library/common-templates.js +395 -0
  549. package/src/libs/engine/src/template-library/data-viz-templates.d.ts +52 -0
  550. package/src/libs/engine/src/template-library/data-viz-templates.js +471 -0
  551. package/src/libs/engine/src/template-library/erd-templates.d.ts +71 -0
  552. package/src/libs/engine/src/template-library/erd-templates.js +773 -0
  553. package/src/libs/engine/src/template-library/index.d.ts +141 -0
  554. package/src/libs/engine/src/template-library/index.js +271 -0
  555. package/src/libs/engine/src/template-library/integration.d.ts +80 -0
  556. package/src/libs/engine/src/template-library/integration.js +141 -0
  557. package/src/libs/engine/src/template-library/workflow-templates.d.ts +52 -0
  558. package/src/libs/engine/src/template-library/workflow-templates.js +438 -0
  559. package/src/libs/engine/src/templates/NodeFactory.d.ts +118 -0
  560. package/src/libs/engine/src/templates/NodeFactory.js +436 -0
  561. package/src/libs/engine/src/templates/NodeTemplate.d.ts +342 -0
  562. package/src/libs/engine/src/templates/NodeTemplate.js +13 -0
  563. package/src/libs/engine/src/templates/TemplateLoader.d.ts +46 -0
  564. package/src/libs/engine/src/templates/TemplateLoader.js +114 -0
  565. package/src/libs/engine/src/templates/TemplateRegistry.d.ts +70 -0
  566. package/src/libs/engine/src/templates/TemplateRegistry.js +128 -0
  567. package/src/libs/engine/src/templates/generated/bpmn/bpmn-business-rule-task.template.d.ts +11 -0
  568. package/src/libs/engine/src/templates/generated/bpmn/bpmn-business-rule-task.template.js +123 -0
  569. package/src/libs/engine/src/templates/generated/bpmn/bpmn-end-event.template.d.ts +11 -0
  570. package/src/libs/engine/src/templates/generated/bpmn/bpmn-end-event.template.js +123 -0
  571. package/src/libs/engine/src/templates/generated/bpmn/bpmn-error-event.template.d.ts +11 -0
  572. package/src/libs/engine/src/templates/generated/bpmn/bpmn-error-event.template.js +123 -0
  573. package/src/libs/engine/src/templates/generated/bpmn/bpmn-exclusive-gateway.template.d.ts +11 -0
  574. package/src/libs/engine/src/templates/generated/bpmn/bpmn-exclusive-gateway.template.js +124 -0
  575. package/src/libs/engine/src/templates/generated/bpmn/bpmn-inclusive-gateway.template.d.ts +11 -0
  576. package/src/libs/engine/src/templates/generated/bpmn/bpmn-inclusive-gateway.template.js +123 -0
  577. package/src/libs/engine/src/templates/generated/bpmn/bpmn-intermediate-event.template.d.ts +11 -0
  578. package/src/libs/engine/src/templates/generated/bpmn/bpmn-intermediate-event.template.js +124 -0
  579. package/src/libs/engine/src/templates/generated/bpmn/bpmn-manual-task.template.d.ts +11 -0
  580. package/src/libs/engine/src/templates/generated/bpmn/bpmn-manual-task.template.js +123 -0
  581. package/src/libs/engine/src/templates/generated/bpmn/bpmn-message-event.template.d.ts +11 -0
  582. package/src/libs/engine/src/templates/generated/bpmn/bpmn-message-event.template.js +122 -0
  583. package/src/libs/engine/src/templates/generated/bpmn/bpmn-parallel-gateway.template.d.ts +11 -0
  584. package/src/libs/engine/src/templates/generated/bpmn/bpmn-parallel-gateway.template.js +125 -0
  585. package/src/libs/engine/src/templates/generated/bpmn/bpmn-script-task.template.d.ts +11 -0
  586. package/src/libs/engine/src/templates/generated/bpmn/bpmn-script-task.template.js +123 -0
  587. package/src/libs/engine/src/templates/generated/bpmn/bpmn-service-task.template.d.ts +11 -0
  588. package/src/libs/engine/src/templates/generated/bpmn/bpmn-service-task.template.js +123 -0
  589. package/src/libs/engine/src/templates/generated/bpmn/bpmn-start-event.template.d.ts +11 -0
  590. package/src/libs/engine/src/templates/generated/bpmn/bpmn-start-event.template.js +123 -0
  591. package/src/libs/engine/src/templates/generated/bpmn/bpmn-task.template.d.ts +11 -0
  592. package/src/libs/engine/src/templates/generated/bpmn/bpmn-task.template.js +152 -0
  593. package/src/libs/engine/src/templates/generated/bpmn/bpmn-timer-event.template.d.ts +11 -0
  594. package/src/libs/engine/src/templates/generated/bpmn/bpmn-timer-event.template.js +123 -0
  595. package/src/libs/engine/src/templates/generated/bpmn/bpmn-user-task.template.d.ts +11 -0
  596. package/src/libs/engine/src/templates/generated/bpmn/bpmn-user-task.template.js +123 -0
  597. package/src/libs/engine/src/templates/generated/bpmn/index.d.ts +15 -0
  598. package/src/libs/engine/src/templates/generated/bpmn/index.js +34 -0
  599. package/src/libs/engine/src/templates/generated/erd/erd-associative-entity.template.d.ts +11 -0
  600. package/src/libs/engine/src/templates/generated/erd/erd-associative-entity.template.js +152 -0
  601. package/src/libs/engine/src/templates/generated/erd/erd-attribute.template.d.ts +11 -0
  602. package/src/libs/engine/src/templates/generated/erd/erd-attribute.template.js +122 -0
  603. package/src/libs/engine/src/templates/generated/erd/erd-bridge-entity.template.d.ts +11 -0
  604. package/src/libs/engine/src/templates/generated/erd/erd-bridge-entity.template.js +151 -0
  605. package/src/libs/engine/src/templates/generated/erd/erd-composite-attribute.template.d.ts +11 -0
  606. package/src/libs/engine/src/templates/generated/erd/erd-composite-attribute.template.js +122 -0
  607. package/src/libs/engine/src/templates/generated/erd/erd-derived-attribute.template.d.ts +11 -0
  608. package/src/libs/engine/src/templates/generated/erd/erd-derived-attribute.template.js +122 -0
  609. package/src/libs/engine/src/templates/generated/erd/erd-discriminator.template.d.ts +11 -0
  610. package/src/libs/engine/src/templates/generated/erd/erd-discriminator.template.js +123 -0
  611. package/src/libs/engine/src/templates/generated/erd/erd-entity.template.d.ts +11 -0
  612. package/src/libs/engine/src/templates/generated/erd/erd-entity.template.js +149 -0
  613. package/src/libs/engine/src/templates/generated/erd/erd-isa.template.d.ts +11 -0
  614. package/src/libs/engine/src/templates/generated/erd/erd-isa.template.js +123 -0
  615. package/src/libs/engine/src/templates/generated/erd/erd-key-attribute.template.d.ts +11 -0
  616. package/src/libs/engine/src/templates/generated/erd/erd-key-attribute.template.js +122 -0
  617. package/src/libs/engine/src/templates/generated/erd/erd-multivalued-attribute.template.d.ts +11 -0
  618. package/src/libs/engine/src/templates/generated/erd/erd-multivalued-attribute.template.js +122 -0
  619. package/src/libs/engine/src/templates/generated/erd/erd-optional-attribute.template.d.ts +11 -0
  620. package/src/libs/engine/src/templates/generated/erd/erd-optional-attribute.template.js +122 -0
  621. package/src/libs/engine/src/templates/generated/erd/erd-partial-key.template.d.ts +11 -0
  622. package/src/libs/engine/src/templates/generated/erd/erd-partial-key.template.js +123 -0
  623. package/src/libs/engine/src/templates/generated/erd/erd-relationship.template.d.ts +11 -0
  624. package/src/libs/engine/src/templates/generated/erd/erd-relationship.template.js +121 -0
  625. package/src/libs/engine/src/templates/generated/erd/erd-subtype.template.d.ts +11 -0
  626. package/src/libs/engine/src/templates/generated/erd/erd-subtype.template.js +123 -0
  627. package/src/libs/engine/src/templates/generated/erd/erd-supertype.template.d.ts +11 -0
  628. package/src/libs/engine/src/templates/generated/erd/erd-supertype.template.js +123 -0
  629. package/src/libs/engine/src/templates/generated/erd/erd-table.template.d.ts +11 -0
  630. package/src/libs/engine/src/templates/generated/erd/erd-table.template.js +123 -0
  631. package/src/libs/engine/src/templates/generated/erd/erd-view.template.d.ts +11 -0
  632. package/src/libs/engine/src/templates/generated/erd/erd-view.template.js +123 -0
  633. package/src/libs/engine/src/templates/generated/erd/erd-weak-entity.template.d.ts +11 -0
  634. package/src/libs/engine/src/templates/generated/erd/erd-weak-entity.template.js +149 -0
  635. package/src/libs/engine/src/templates/generated/erd/erd-weak-relationship.template.d.ts +11 -0
  636. package/src/libs/engine/src/templates/generated/erd/erd-weak-relationship.template.js +122 -0
  637. package/src/libs/engine/src/templates/generated/erd/index.d.ts +19 -0
  638. package/src/libs/engine/src/templates/generated/erd/index.js +42 -0
  639. package/src/libs/engine/src/templates/generated/flowchart/flowchart-connector.template.d.ts +11 -0
  640. package/src/libs/engine/src/templates/generated/flowchart/flowchart-connector.template.js +123 -0
  641. package/src/libs/engine/src/templates/generated/flowchart/flowchart-data.template.d.ts +11 -0
  642. package/src/libs/engine/src/templates/generated/flowchart/flowchart-data.template.js +123 -0
  643. package/src/libs/engine/src/templates/generated/flowchart/flowchart-decision.template.d.ts +11 -0
  644. package/src/libs/engine/src/templates/generated/flowchart/flowchart-decision.template.js +123 -0
  645. package/src/libs/engine/src/templates/generated/flowchart/flowchart-delay.template.d.ts +11 -0
  646. package/src/libs/engine/src/templates/generated/flowchart/flowchart-delay.template.js +124 -0
  647. package/src/libs/engine/src/templates/generated/flowchart/flowchart-display.template.d.ts +11 -0
  648. package/src/libs/engine/src/templates/generated/flowchart/flowchart-display.template.js +124 -0
  649. package/src/libs/engine/src/templates/generated/flowchart/flowchart-document.template.d.ts +11 -0
  650. package/src/libs/engine/src/templates/generated/flowchart/flowchart-document.template.js +123 -0
  651. package/src/libs/engine/src/templates/generated/flowchart/flowchart-manual-input.template.d.ts +11 -0
  652. package/src/libs/engine/src/templates/generated/flowchart/flowchart-manual-input.template.js +123 -0
  653. package/src/libs/engine/src/templates/generated/flowchart/flowchart-manual-operation.template.d.ts +11 -0
  654. package/src/libs/engine/src/templates/generated/flowchart/flowchart-manual-operation.template.js +122 -0
  655. package/src/libs/engine/src/templates/generated/flowchart/flowchart-merge.template.d.ts +11 -0
  656. package/src/libs/engine/src/templates/generated/flowchart/flowchart-merge.template.js +122 -0
  657. package/src/libs/engine/src/templates/generated/flowchart/flowchart-or.template.d.ts +11 -0
  658. package/src/libs/engine/src/templates/generated/flowchart/flowchart-or.template.js +123 -0
  659. package/src/libs/engine/src/templates/generated/flowchart/flowchart-predefined-process.template.d.ts +11 -0
  660. package/src/libs/engine/src/templates/generated/flowchart/flowchart-predefined-process.template.js +123 -0
  661. package/src/libs/engine/src/templates/generated/flowchart/flowchart-preparation.template.d.ts +11 -0
  662. package/src/libs/engine/src/templates/generated/flowchart/flowchart-preparation.template.js +123 -0
  663. package/src/libs/engine/src/templates/generated/flowchart/flowchart-process.template.d.ts +11 -0
  664. package/src/libs/engine/src/templates/generated/flowchart/flowchart-process.template.js +122 -0
  665. package/src/libs/engine/src/templates/generated/flowchart/flowchart-stored-data.template.d.ts +11 -0
  666. package/src/libs/engine/src/templates/generated/flowchart/flowchart-stored-data.template.js +123 -0
  667. package/src/libs/engine/src/templates/generated/flowchart/flowchart-summing-junction.template.d.ts +11 -0
  668. package/src/libs/engine/src/templates/generated/flowchart/flowchart-summing-junction.template.js +124 -0
  669. package/src/libs/engine/src/templates/generated/flowchart/flowchart-terminal.template.d.ts +11 -0
  670. package/src/libs/engine/src/templates/generated/flowchart/flowchart-terminal.template.js +124 -0
  671. package/src/libs/engine/src/templates/generated/flowchart/index.d.ts +16 -0
  672. package/src/libs/engine/src/templates/generated/flowchart/index.js +36 -0
  673. package/src/libs/engine/src/templates/generated/index.d.ts +9 -0
  674. package/src/libs/engine/src/templates/generated/index.js +13 -0
  675. package/src/libs/engine/src/templates/generated/register.d.ts +23 -0
  676. package/src/libs/engine/src/templates/generated/register.js +31 -0
  677. package/src/libs/engine/src/templates/generated/uml/index.d.ts +30 -0
  678. package/src/libs/engine/src/templates/generated/uml/index.js +64 -0
  679. package/src/libs/engine/src/templates/generated/uml/uml-abstract-class.template.d.ts +11 -0
  680. package/src/libs/engine/src/templates/generated/uml/uml-abstract-class.template.js +204 -0
  681. package/src/libs/engine/src/templates/generated/uml/uml-activation.template.d.ts +11 -0
  682. package/src/libs/engine/src/templates/generated/uml/uml-activation.template.js +124 -0
  683. package/src/libs/engine/src/templates/generated/uml/uml-activity-partition.template.d.ts +11 -0
  684. package/src/libs/engine/src/templates/generated/uml/uml-activity-partition.template.js +124 -0
  685. package/src/libs/engine/src/templates/generated/uml/uml-activity.template.d.ts +11 -0
  686. package/src/libs/engine/src/templates/generated/uml/uml-activity.template.js +123 -0
  687. package/src/libs/engine/src/templates/generated/uml/uml-actor.template.d.ts +11 -0
  688. package/src/libs/engine/src/templates/generated/uml/uml-actor.template.js +123 -0
  689. package/src/libs/engine/src/templates/generated/uml/uml-class.template.d.ts +11 -0
  690. package/src/libs/engine/src/templates/generated/uml/uml-class.template.js +204 -0
  691. package/src/libs/engine/src/templates/generated/uml/uml-collaboration.template.d.ts +11 -0
  692. package/src/libs/engine/src/templates/generated/uml/uml-collaboration.template.js +122 -0
  693. package/src/libs/engine/src/templates/generated/uml/uml-component.template.d.ts +11 -0
  694. package/src/libs/engine/src/templates/generated/uml/uml-component.template.js +122 -0
  695. package/src/libs/engine/src/templates/generated/uml/uml-datatype.template.d.ts +11 -0
  696. package/src/libs/engine/src/templates/generated/uml/uml-datatype.template.js +204 -0
  697. package/src/libs/engine/src/templates/generated/uml/uml-decision.template.d.ts +11 -0
  698. package/src/libs/engine/src/templates/generated/uml/uml-decision.template.js +124 -0
  699. package/src/libs/engine/src/templates/generated/uml/uml-enum.template.d.ts +11 -0
  700. package/src/libs/engine/src/templates/generated/uml/uml-enum.template.js +204 -0
  701. package/src/libs/engine/src/templates/generated/uml/uml-final-node.template.d.ts +11 -0
  702. package/src/libs/engine/src/templates/generated/uml/uml-final-node.template.js +124 -0
  703. package/src/libs/engine/src/templates/generated/uml/uml-final-state.template.d.ts +11 -0
  704. package/src/libs/engine/src/templates/generated/uml/uml-final-state.template.js +124 -0
  705. package/src/libs/engine/src/templates/generated/uml/uml-fork.template.d.ts +11 -0
  706. package/src/libs/engine/src/templates/generated/uml/uml-fork.template.js +125 -0
  707. package/src/libs/engine/src/templates/generated/uml/uml-initial-node.template.d.ts +11 -0
  708. package/src/libs/engine/src/templates/generated/uml/uml-initial-node.template.js +123 -0
  709. package/src/libs/engine/src/templates/generated/uml/uml-initial-state.template.d.ts +11 -0
  710. package/src/libs/engine/src/templates/generated/uml/uml-initial-state.template.js +123 -0
  711. package/src/libs/engine/src/templates/generated/uml/uml-interface.template.d.ts +11 -0
  712. package/src/libs/engine/src/templates/generated/uml/uml-interface.template.js +204 -0
  713. package/src/libs/engine/src/templates/generated/uml/uml-join.template.d.ts +11 -0
  714. package/src/libs/engine/src/templates/generated/uml/uml-join.template.js +125 -0
  715. package/src/libs/engine/src/templates/generated/uml/uml-lifeline.template.d.ts +11 -0
  716. package/src/libs/engine/src/templates/generated/uml/uml-lifeline.template.js +123 -0
  717. package/src/libs/engine/src/templates/generated/uml/uml-merge.template.d.ts +11 -0
  718. package/src/libs/engine/src/templates/generated/uml/uml-merge.template.js +122 -0
  719. package/src/libs/engine/src/templates/generated/uml/uml-node.template.d.ts +11 -0
  720. package/src/libs/engine/src/templates/generated/uml/uml-node.template.js +122 -0
  721. package/src/libs/engine/src/templates/generated/uml/uml-note.template.d.ts +11 -0
  722. package/src/libs/engine/src/templates/generated/uml/uml-note.template.js +123 -0
  723. package/src/libs/engine/src/templates/generated/uml/uml-object.template.d.ts +11 -0
  724. package/src/libs/engine/src/templates/generated/uml/uml-object.template.js +204 -0
  725. package/src/libs/engine/src/templates/generated/uml/uml-package.template.d.ts +11 -0
  726. package/src/libs/engine/src/templates/generated/uml/uml-package.template.js +123 -0
  727. package/src/libs/engine/src/templates/generated/uml/uml-part.template.d.ts +11 -0
  728. package/src/libs/engine/src/templates/generated/uml/uml-part.template.js +122 -0
  729. package/src/libs/engine/src/templates/generated/uml/uml-port.template.d.ts +11 -0
  730. package/src/libs/engine/src/templates/generated/uml/uml-port.template.js +123 -0
  731. package/src/libs/engine/src/templates/generated/uml/uml-primitive-type.template.d.ts +11 -0
  732. package/src/libs/engine/src/templates/generated/uml/uml-primitive-type.template.js +204 -0
  733. package/src/libs/engine/src/templates/generated/uml/uml-signal.template.d.ts +11 -0
  734. package/src/libs/engine/src/templates/generated/uml/uml-signal.template.js +123 -0
  735. package/src/libs/engine/src/templates/generated/uml/uml-state.template.d.ts +11 -0
  736. package/src/libs/engine/src/templates/generated/uml/uml-state.template.js +123 -0
  737. package/src/libs/engine/src/templates/generated/uml/uml-use-case.template.d.ts +11 -0
  738. package/src/libs/engine/src/templates/generated/uml/uml-use-case.template.js +122 -0
  739. package/src/libs/engine/src/templates/index.d.ts +12 -0
  740. package/src/libs/engine/src/templates/index.js +27 -0
  741. package/src/libs/engine/src/templates/stencils.d.ts +45 -0
  742. package/src/libs/engine/src/templates/stencils.js +85 -0
  743. package/src/libs/engine/src/types/domain/bpmn.d.ts +25 -0
  744. package/src/libs/engine/src/types/domain/bpmn.js +313 -0
  745. package/src/libs/engine/src/types/domain/erd.d.ts +29 -0
  746. package/src/libs/engine/src/types/domain/erd.js +394 -0
  747. package/src/libs/engine/src/types/domain/flowchart.d.ts +26 -0
  748. package/src/libs/engine/src/types/domain/flowchart.js +434 -0
  749. package/src/libs/engine/src/types/domain/index.d.ts +4 -0
  750. package/src/libs/engine/src/types/domain/index.js +9 -0
  751. package/src/libs/engine/src/types/domain/uml.d.ts +40 -0
  752. package/src/libs/engine/src/types/domain/uml.js +758 -0
  753. package/src/libs/engine/src/types/event.types.d.ts +142 -0
  754. package/src/libs/engine/src/types/event.types.js +96 -0
  755. package/src/libs/engine/src/types/geometry.types.d.ts +84 -0
  756. package/src/libs/engine/src/types/geometry.types.js +16 -0
  757. package/src/libs/engine/src/types/index.d.ts +7 -0
  758. package/src/libs/engine/src/types/index.js +14 -0
  759. package/src/libs/engine/src/types/layout.types.d.ts +148 -0
  760. package/src/libs/engine/src/types/layout.types.js +28 -0
  761. package/src/libs/engine/src/types/model.types.d.ts +378 -0
  762. package/src/libs/engine/src/types/model.types.js +4 -0
  763. package/src/libs/engine/src/types/performance.types.d.ts +109 -0
  764. package/src/libs/engine/src/types/performance.types.js +122 -0
  765. package/src/libs/engine/src/types/plugin.types.d.ts +30 -0
  766. package/src/libs/engine/src/types/plugin.types.js +4 -0
  767. package/src/libs/engine/src/utils/deep-clone.d.ts +9 -0
  768. package/src/libs/engine/src/utils/deep-clone.js +123 -0
  769. package/src/libs/engine/src/utils/geometry.d.ts +45 -0
  770. package/src/libs/engine/src/utils/geometry.js +241 -0
  771. package/src/libs/engine/src/utils/id.d.ts +22 -0
  772. package/src/libs/engine/src/utils/id.js +44 -0
  773. package/src/libs/engine/src/utils/index.d.ts +3 -0
  774. package/src/libs/engine/src/utils/index.js +8 -0
  775. package/src/libs/engine/src/utils/transform.d.ts +84 -0
  776. package/src/libs/engine/src/utils/transform.js +200 -0
  777. package/src/libs/engine/src/validation/ConnectionGroupValidator.d.ts +22 -0
  778. package/src/libs/engine/src/validation/ConnectionGroupValidator.js +56 -0
  779. package/src/libs/engine/src/validation/TypeRegistry.d.ts +179 -0
  780. package/src/libs/engine/src/validation/TypeRegistry.js +358 -0
  781. package/src/libs/engine/src/validation/ValidationEngine.d.ts +79 -0
  782. package/src/libs/engine/src/validation/ValidationEngine.js +1150 -0
  783. package/src/libs/engine/src/validation/index.d.ts +3 -0
  784. package/src/libs/engine/src/validation/index.js +8 -0
  785. package/src/libs/renderer/src/a11y/diagram-outline.d.ts +93 -0
  786. package/src/libs/renderer/src/a11y/diagram-outline.js +0 -0
  787. package/src/libs/renderer/src/a11y/focus-containment.d.ts +90 -0
  788. package/src/libs/renderer/src/a11y/focus-containment.js +173 -0
  789. package/src/libs/renderer/src/a11y/graph-topology.d.ts +70 -0
  790. package/src/libs/renderer/src/a11y/graph-topology.js +0 -0
  791. package/src/libs/renderer/src/a11y/index.d.ts +26 -0
  792. package/src/libs/renderer/src/a11y/index.js +30 -0
  793. package/src/libs/renderer/src/a11y/live-region.d.ts +83 -0
  794. package/src/libs/renderer/src/a11y/live-region.js +170 -0
  795. package/src/libs/renderer/src/a11y/outline-view.d.ts +62 -0
  796. package/src/libs/renderer/src/a11y/outline-view.js +158 -0
  797. package/src/libs/renderer/src/a11y/reduced-motion.d.ts +48 -0
  798. package/src/libs/renderer/src/a11y/reduced-motion.js +223 -0
  799. package/src/libs/renderer/src/a11y/semantics.d.ts +76 -0
  800. package/src/libs/renderer/src/a11y/semantics.js +229 -0
  801. package/src/libs/renderer/src/canvas/canvas-context.d.ts +167 -0
  802. package/src/libs/renderer/src/canvas/canvas-context.js +267 -0
  803. package/src/libs/renderer/src/canvas/canvas-renderer.d.ts +194 -0
  804. package/src/libs/renderer/src/canvas/canvas-renderer.js +600 -0
  805. package/src/libs/renderer/src/canvas/dirty-region.d.ts +56 -0
  806. package/src/libs/renderer/src/canvas/dirty-region.js +171 -0
  807. package/src/libs/renderer/src/canvas/index.d.ts +16 -0
  808. package/src/libs/renderer/src/canvas/index.js +79 -0
  809. package/src/libs/renderer/src/canvas/path-geometry.d.ts +112 -0
  810. package/src/libs/renderer/src/canvas/path-geometry.js +673 -0
  811. package/src/libs/renderer/src/canvas/render-backend.d.ts +133 -0
  812. package/src/libs/renderer/src/canvas/render-backend.js +339 -0
  813. package/src/libs/renderer/src/canvas/style-resolution.d.ts +101 -0
  814. package/src/libs/renderer/src/canvas/style-resolution.js +466 -0
  815. package/src/libs/renderer/src/canvas/tier-policy.d.ts +33 -0
  816. package/src/libs/renderer/src/canvas/tier-policy.js +89 -0
  817. package/src/libs/renderer/src/canvas/vnode-painter.d.ts +154 -0
  818. package/src/libs/renderer/src/canvas/vnode-painter.js +649 -0
  819. package/src/libs/renderer/src/comments/comment-overlay.d.ts +56 -0
  820. package/src/libs/renderer/src/comments/comment-overlay.js +127 -0
  821. package/src/libs/renderer/src/comments/comment-panel.d.ts +45 -0
  822. package/src/libs/renderer/src/comments/comment-panel.js +287 -0
  823. package/src/libs/renderer/src/comments/comment-pins.d.ts +34 -0
  824. package/src/libs/renderer/src/comments/comment-pins.js +227 -0
  825. package/src/libs/renderer/src/comments/index.d.ts +3 -0
  826. package/src/libs/renderer/src/comments/index.js +17 -0
  827. package/src/libs/renderer/src/export/assets.d.ts +96 -0
  828. package/src/libs/renderer/src/export/assets.js +350 -0
  829. package/src/libs/renderer/src/export/batch.d.ts +49 -0
  830. package/src/libs/renderer/src/export/batch.js +95 -0
  831. package/src/libs/renderer/src/export/bounds.d.ts +81 -0
  832. package/src/libs/renderer/src/export/bounds.js +367 -0
  833. package/src/libs/renderer/src/export/capture-host.d.ts +39 -0
  834. package/src/libs/renderer/src/export/capture-host.js +1259 -0
  835. package/src/libs/renderer/src/export/custom-nodes.d.ts +88 -0
  836. package/src/libs/renderer/src/export/custom-nodes.js +237 -0
  837. package/src/libs/renderer/src/export/index.d.ts +14 -0
  838. package/src/libs/renderer/src/export/index.js +30 -0
  839. package/src/libs/renderer/src/export/node-raster.d.ts +60 -0
  840. package/src/libs/renderer/src/export/node-raster.js +161 -0
  841. package/src/libs/renderer/src/export/pagination.d.ts +116 -0
  842. package/src/libs/renderer/src/export/pagination.js +245 -0
  843. package/src/libs/renderer/src/export/pdf/flate.d.ts +13 -0
  844. package/src/libs/renderer/src/export/pdf/flate.js +287 -0
  845. package/src/libs/renderer/src/export/pdf/index.d.ts +4 -0
  846. package/src/libs/renderer/src/export/pdf/index.js +15 -0
  847. package/src/libs/renderer/src/export/pdf/pdf-export.d.ts +64 -0
  848. package/src/libs/renderer/src/export/pdf/pdf-export.js +1076 -0
  849. package/src/libs/renderer/src/export/pdf/pdf-path.d.ts +17 -0
  850. package/src/libs/renderer/src/export/pdf/pdf-path.js +85 -0
  851. package/src/libs/renderer/src/export/pdf/pdf-primitives.d.ts +115 -0
  852. package/src/libs/renderer/src/export/pdf/pdf-primitives.js +338 -0
  853. package/src/libs/renderer/src/export/pdf/png.d.ts +25 -0
  854. package/src/libs/renderer/src/export/pdf/png.js +596 -0
  855. package/src/libs/renderer/src/export/raster.d.ts +42 -0
  856. package/src/libs/renderer/src/export/raster.js +126 -0
  857. package/src/libs/renderer/src/export/round-trip.d.ts +83 -0
  858. package/src/libs/renderer/src/export/round-trip.js +432 -0
  859. package/src/libs/renderer/src/export/scope.d.ts +16 -0
  860. package/src/libs/renderer/src/export/scope.js +69 -0
  861. package/src/libs/renderer/src/export/style-flattener.d.ts +23 -0
  862. package/src/libs/renderer/src/export/style-flattener.js +144 -0
  863. package/src/libs/renderer/src/export/svg-export.d.ts +123 -0
  864. package/src/libs/renderer/src/export/svg-export.js +178 -0
  865. package/src/libs/renderer/src/export/vnode-serializer.d.ts +75 -0
  866. package/src/libs/renderer/src/export/vnode-serializer.js +344 -0
  867. package/src/libs/renderer/src/ext/capabilities.d.ts +178 -0
  868. package/src/libs/renderer/src/ext/capabilities.js +22 -0
  869. package/src/libs/renderer/src/ext/capability-factory.d.ts +44 -0
  870. package/src/libs/renderer/src/ext/capability-factory.js +194 -0
  871. package/src/libs/renderer/src/ext/components/attach.d.ts +66 -0
  872. package/src/libs/renderer/src/ext/components/attach.js +112 -0
  873. package/src/libs/renderer/src/ext/components/background.d.ts +84 -0
  874. package/src/libs/renderer/src/ext/components/background.js +202 -0
  875. package/src/libs/renderer/src/ext/components/controls.d.ts +49 -0
  876. package/src/libs/renderer/src/ext/components/controls.js +144 -0
  877. package/src/libs/renderer/src/ext/components/minimap.d.ts +78 -0
  878. package/src/libs/renderer/src/ext/components/minimap.js +326 -0
  879. package/src/libs/renderer/src/ext/diagram-registry.d.ts +109 -0
  880. package/src/libs/renderer/src/ext/diagram-registry.js +303 -0
  881. package/src/libs/renderer/src/ext/disposable.d.ts +51 -0
  882. package/src/libs/renderer/src/ext/disposable.js +104 -0
  883. package/src/libs/renderer/src/ext/extension-host.d.ts +144 -0
  884. package/src/libs/renderer/src/ext/extension-host.js +272 -0
  885. package/src/libs/renderer/src/ext/index.d.ts +62 -0
  886. package/src/libs/renderer/src/ext/index.js +91 -0
  887. package/src/libs/renderer/src/ext/link-pipeline.d.ts +195 -0
  888. package/src/libs/renderer/src/ext/link-pipeline.js +431 -0
  889. package/src/libs/renderer/src/ext/manifest.d.ts +73 -0
  890. package/src/libs/renderer/src/ext/manifest.js +149 -0
  891. package/src/libs/renderer/src/ext/node-component.d.ts +114 -0
  892. package/src/libs/renderer/src/ext/node-component.js +290 -0
  893. package/src/libs/renderer/src/ext/plugins-loader.d.ts +1 -0
  894. package/src/libs/renderer/src/ext/plugins-loader.js +18 -0
  895. package/src/libs/renderer/src/ext/portal.d.ts +129 -0
  896. package/src/libs/renderer/src/ext/portal.js +267 -0
  897. package/src/libs/renderer/src/ext/public-api.d.ts +101 -0
  898. package/src/libs/renderer/src/ext/public-api.js +201 -0
  899. package/src/libs/renderer/src/ext/registry-scope.d.ts +93 -0
  900. package/src/libs/renderer/src/ext/registry-scope.js +142 -0
  901. package/src/libs/renderer/src/ext/tools.d.ts +164 -0
  902. package/src/libs/renderer/src/ext/tools.js +170 -0
  903. package/src/libs/renderer/src/index.d.ts +34 -0
  904. package/src/libs/renderer/src/index.js +108 -0
  905. package/src/libs/renderer/src/instance/create-diagram.d.ts +385 -0
  906. package/src/libs/renderer/src/instance/create-diagram.js +1150 -0
  907. package/src/libs/renderer/src/instance/diagram-instance.d.ts +48 -0
  908. package/src/libs/renderer/src/instance/diagram-instance.js +51 -0
  909. package/src/libs/renderer/src/instance/dom-event-binder.d.ts +394 -0
  910. package/src/libs/renderer/src/instance/dom-event-binder.js +2104 -0
  911. package/src/libs/renderer/src/instance/index.d.ts +5 -0
  912. package/src/libs/renderer/src/instance/index.js +13 -0
  913. package/src/libs/renderer/src/instance/layers.d.ts +31 -0
  914. package/src/libs/renderer/src/instance/layers.js +43 -0
  915. package/src/libs/renderer/src/instance/model-input.d.ts +229 -0
  916. package/src/libs/renderer/src/instance/model-input.js +325 -0
  917. package/src/libs/renderer/src/instance/render-scheduler.d.ts +79 -0
  918. package/src/libs/renderer/src/instance/render-scheduler.js +96 -0
  919. package/src/libs/renderer/src/instance/wheel-scroll-yield.d.ts +38 -0
  920. package/src/libs/renderer/src/instance/wheel-scroll-yield.js +118 -0
  921. package/src/libs/renderer/src/interaction/ControlPointEditor.d.ts +160 -0
  922. package/src/libs/renderer/src/interaction/ControlPointEditor.js +360 -0
  923. package/src/libs/renderer/src/interaction/WaypointEditor.d.ts +133 -0
  924. package/src/libs/renderer/src/interaction/WaypointEditor.js +263 -0
  925. package/src/libs/renderer/src/interaction/highlighters.d.ts +88 -0
  926. package/src/libs/renderer/src/interaction/highlighters.js +212 -0
  927. package/src/libs/renderer/src/interaction/in-place-editor.d.ts +63 -0
  928. package/src/libs/renderer/src/interaction/in-place-editor.js +141 -0
  929. package/src/libs/renderer/src/interaction/index.d.ts +11 -0
  930. package/src/libs/renderer/src/interaction/index.js +29 -0
  931. package/src/libs/renderer/src/interaction/ink-overlay.d.ts +53 -0
  932. package/src/libs/renderer/src/interaction/ink-overlay.js +154 -0
  933. package/src/libs/renderer/src/interaction/interaction-controller.d.ts +555 -0
  934. package/src/libs/renderer/src/interaction/interaction-controller.js +1733 -0
  935. package/src/libs/renderer/src/interaction/keyboard-navigation.d.ts +223 -0
  936. package/src/libs/renderer/src/interaction/keyboard-navigation.js +885 -0
  937. package/src/libs/renderer/src/interaction/selection-tools.d.ts +343 -0
  938. package/src/libs/renderer/src/interaction/selection-tools.js +918 -0
  939. package/src/libs/renderer/src/interaction/snapping.d.ts +210 -0
  940. package/src/libs/renderer/src/interaction/snapping.js +569 -0
  941. package/src/libs/renderer/src/interaction/touch-gestures.d.ts +160 -0
  942. package/src/libs/renderer/src/interaction/touch-gestures.js +549 -0
  943. package/src/libs/renderer/src/interaction/whiteboard-tools.d.ts +171 -0
  944. package/src/libs/renderer/src/interaction/whiteboard-tools.js +476 -0
  945. package/src/libs/renderer/src/lazy/host-culling.d.ts +116 -0
  946. package/src/libs/renderer/src/lazy/host-culling.js +135 -0
  947. package/src/libs/renderer/src/lazy/index.d.ts +7 -0
  948. package/src/libs/renderer/src/lazy/index.js +28 -0
  949. package/src/libs/renderer/src/lazy/progressive-mounter.d.ts +80 -0
  950. package/src/libs/renderer/src/lazy/progressive-mounter.js +264 -0
  951. package/src/libs/renderer/src/lazy/types.d.ts +43 -0
  952. package/src/libs/renderer/src/lazy/types.js +14 -0
  953. package/src/libs/renderer/src/lazy/view-lifecycle.d.ts +97 -0
  954. package/src/libs/renderer/src/lazy/view-lifecycle.js +221 -0
  955. package/src/libs/renderer/src/perf/index.d.ts +2 -0
  956. package/src/libs/renderer/src/perf/index.js +7 -0
  957. package/src/libs/renderer/src/perf/perf-hud.d.ts +46 -0
  958. package/src/libs/renderer/src/perf/perf-hud.js +105 -0
  959. package/src/libs/renderer/src/perf/quality-governor.d.ts +77 -0
  960. package/src/libs/renderer/src/perf/quality-governor.js +154 -0
  961. package/src/libs/renderer/src/platform/index.d.ts +1 -0
  962. package/src/libs/renderer/src/platform/index.js +5 -0
  963. package/src/libs/renderer/src/platform/platform.d.ts +34 -0
  964. package/src/libs/renderer/src/platform/platform.js +64 -0
  965. package/src/libs/renderer/src/presence/bind-presence.d.ts +51 -0
  966. package/src/libs/renderer/src/presence/bind-presence.js +144 -0
  967. package/src/libs/renderer/src/presence/index.d.ts +4 -0
  968. package/src/libs/renderer/src/presence/index.js +18 -0
  969. package/src/libs/renderer/src/presence/presence-overlay.d.ts +121 -0
  970. package/src/libs/renderer/src/presence/presence-overlay.js +465 -0
  971. package/src/libs/renderer/src/presentation/index.d.ts +3 -0
  972. package/src/libs/renderer/src/presentation/index.js +14 -0
  973. package/src/libs/renderer/src/presentation/presentation.d.ts +94 -0
  974. package/src/libs/renderer/src/presentation/presentation.js +158 -0
  975. package/src/libs/renderer/src/presentation/viewport-channel.d.ts +78 -0
  976. package/src/libs/renderer/src/presentation/viewport-channel.js +86 -0
  977. package/src/libs/renderer/src/services/animation-lifecycle.d.ts +153 -0
  978. package/src/libs/renderer/src/services/animation-lifecycle.js +326 -0
  979. package/src/libs/renderer/src/services/animation-performance.service.d.ts +191 -0
  980. package/src/libs/renderer/src/services/animation-performance.service.js +371 -0
  981. package/src/libs/renderer/src/services/animation-sequencer.d.ts +226 -0
  982. package/src/libs/renderer/src/services/animation-sequencer.js +379 -0
  983. package/src/libs/renderer/src/services/animation.service.d.ts +182 -0
  984. package/src/libs/renderer/src/services/animation.service.js +858 -0
  985. package/src/libs/renderer/src/services/custom-animation-registry.d.ts +182 -0
  986. package/src/libs/renderer/src/services/custom-animation-registry.js +361 -0
  987. package/src/libs/renderer/src/ssr/index.d.ts +1 -0
  988. package/src/libs/renderer/src/ssr/index.js +6 -0
  989. package/src/libs/renderer/src/ssr/render-to-static.d.ts +91 -0
  990. package/src/libs/renderer/src/ssr/render-to-static.js +81 -0
  991. package/src/libs/renderer/src/svg/ArrowRenderer.d.ts +159 -0
  992. package/src/libs/renderer/src/svg/ArrowRenderer.js +723 -0
  993. package/src/libs/renderer/src/svg/JumpPointDetector.d.ts +79 -0
  994. package/src/libs/renderer/src/svg/JumpPointDetector.js +176 -0
  995. package/src/libs/renderer/src/svg/JumpPointRenderer.d.ts +59 -0
  996. package/src/libs/renderer/src/svg/JumpPointRenderer.js +309 -0
  997. package/src/libs/renderer/src/svg/LabelRenderer.d.ts +76 -0
  998. package/src/libs/renderer/src/svg/LabelRenderer.js +273 -0
  999. package/src/libs/renderer/src/svg/auto-size.d.ts +76 -0
  1000. package/src/libs/renderer/src/svg/auto-size.js +142 -0
  1001. package/src/libs/renderer/src/svg/channel-nudging.d.ts +34 -0
  1002. package/src/libs/renderer/src/svg/channel-nudging.js +226 -0
  1003. package/src/libs/renderer/src/svg/edge-optimizer.d.ts +228 -0
  1004. package/src/libs/renderer/src/svg/edge-optimizer.js +606 -0
  1005. package/src/libs/renderer/src/svg/edge-templates.d.ts +152 -0
  1006. package/src/libs/renderer/src/svg/edge-templates.js +233 -0
  1007. package/src/libs/renderer/src/svg/html-node.d.ts +50 -0
  1008. package/src/libs/renderer/src/svg/html-node.js +214 -0
  1009. package/src/libs/renderer/src/svg/index.d.ts +25 -0
  1010. package/src/libs/renderer/src/svg/index.js +32 -0
  1011. package/src/libs/renderer/src/svg/link-fanout.d.ts +127 -0
  1012. package/src/libs/renderer/src/svg/link-fanout.js +333 -0
  1013. package/src/libs/renderer/src/svg/link-hit-test.d.ts +142 -0
  1014. package/src/libs/renderer/src/svg/link-hit-test.js +182 -0
  1015. package/src/libs/renderer/src/svg/motion-tracker.d.ts +18 -0
  1016. package/src/libs/renderer/src/svg/motion-tracker.js +71 -0
  1017. package/src/libs/renderer/src/svg/node-sizing.d.ts +51 -0
  1018. package/src/libs/renderer/src/svg/node-sizing.js +65 -0
  1019. package/src/libs/renderer/src/svg/node-toolbar.d.ts +30 -0
  1020. package/src/libs/renderer/src/svg/node-toolbar.js +45 -0
  1021. package/src/libs/renderer/src/svg/notation-shapes.d.ts +2 -0
  1022. package/src/libs/renderer/src/svg/notation-shapes.js +126 -0
  1023. package/src/libs/renderer/src/svg/paint-servers.d.ts +49 -0
  1024. package/src/libs/renderer/src/svg/paint-servers.js +225 -0
  1025. package/src/libs/renderer/src/svg/panel.d.ts +115 -0
  1026. package/src/libs/renderer/src/svg/panel.js +353 -0
  1027. package/src/libs/renderer/src/svg/path-outline.d.ts +35 -0
  1028. package/src/libs/renderer/src/svg/path-outline.js +134 -0
  1029. package/src/libs/renderer/src/svg/port-glyph.d.ts +27 -0
  1030. package/src/libs/renderer/src/svg/port-glyph.js +97 -0
  1031. package/src/libs/renderer/src/svg/port-label.d.ts +74 -0
  1032. package/src/libs/renderer/src/svg/port-label.js +201 -0
  1033. package/src/libs/renderer/src/svg/port-layout.d.ts +50 -0
  1034. package/src/libs/renderer/src/svg/port-layout.js +212 -0
  1035. package/src/libs/renderer/src/svg/port-positioning.d.ts +33 -0
  1036. package/src/libs/renderer/src/svg/port-positioning.js +101 -0
  1037. package/src/libs/renderer/src/svg/port-spots.d.ts +69 -0
  1038. package/src/libs/renderer/src/svg/port-spots.js +154 -0
  1039. package/src/libs/renderer/src/svg/route-memo.d.ts +63 -0
  1040. package/src/libs/renderer/src/svg/route-memo.js +206 -0
  1041. package/src/libs/renderer/src/svg/route-solver-bridge.d.ts +48 -0
  1042. package/src/libs/renderer/src/svg/route-solver-bridge.js +151 -0
  1043. package/src/libs/renderer/src/svg/shape-registry.d.ts +189 -0
  1044. package/src/libs/renderer/src/svg/shape-registry.js +1104 -0
  1045. package/src/libs/renderer/src/svg/stroke-layer.d.ts +36 -0
  1046. package/src/libs/renderer/src/svg/stroke-layer.js +183 -0
  1047. package/src/libs/renderer/src/svg/svg-renderer.d.ts +1737 -0
  1048. package/src/libs/renderer/src/svg/svg-renderer.js +7772 -0
  1049. package/src/libs/renderer/src/svg/text-block.d.ts +54 -0
  1050. package/src/libs/renderer/src/svg/text-block.js +171 -0
  1051. package/src/libs/renderer/src/themes/color-mode.d.ts +81 -0
  1052. package/src/libs/renderer/src/themes/color-mode.js +158 -0
  1053. package/src/libs/renderer/src/themes/contrast.d.ts +67 -0
  1054. package/src/libs/renderer/src/themes/contrast.js +215 -0
  1055. package/src/libs/renderer/src/themes/default-dark-theme.d.ts +6 -0
  1056. package/src/libs/renderer/src/themes/default-dark-theme.js +126 -0
  1057. package/src/libs/renderer/src/themes/default-light-theme.d.ts +6 -0
  1058. package/src/libs/renderer/src/themes/default-light-theme.js +168 -0
  1059. package/src/libs/renderer/src/themes/default-theme-set.d.ts +10 -0
  1060. package/src/libs/renderer/src/themes/default-theme-set.js +25 -0
  1061. package/src/libs/renderer/src/themes/high-contrast-theme.d.ts +5 -0
  1062. package/src/libs/renderer/src/themes/high-contrast-theme.js +170 -0
  1063. package/src/libs/renderer/src/themes/index.d.ts +22 -0
  1064. package/src/libs/renderer/src/themes/index.js +93 -0
  1065. package/src/libs/renderer/src/themes/style-cascade.d.ts +23 -0
  1066. package/src/libs/renderer/src/themes/style-cascade.js +194 -0
  1067. package/src/libs/renderer/src/themes/style-registry.d.ts +40 -0
  1068. package/src/libs/renderer/src/themes/style-registry.js +129 -0
  1069. package/src/libs/renderer/src/themes/theme-a11y.d.ts +65 -0
  1070. package/src/libs/renderer/src/themes/theme-a11y.js +256 -0
  1071. package/src/libs/renderer/src/themes/theme-css.d.ts +30 -0
  1072. package/src/libs/renderer/src/themes/theme-css.js +304 -0
  1073. package/src/libs/renderer/src/themes/theme-ref.d.ts +63 -0
  1074. package/src/libs/renderer/src/themes/theme-ref.js +206 -0
  1075. package/src/libs/renderer/src/themes/theme-vars.d.ts +49 -0
  1076. package/src/libs/renderer/src/themes/theme-vars.js +112 -0
  1077. package/src/libs/renderer/src/themes/token-bridge.d.ts +62 -0
  1078. package/src/libs/renderer/src/themes/token-bridge.js +354 -0
  1079. package/src/libs/renderer/src/types/geometry.types.d.ts +10 -0
  1080. package/src/libs/renderer/src/types/geometry.types.js +3 -0
  1081. package/src/libs/renderer/src/types/index.d.ts +5 -0
  1082. package/src/libs/renderer/src/types/index.js +14 -0
  1083. package/src/libs/renderer/src/types/property-schema/conditions.d.ts +96 -0
  1084. package/src/libs/renderer/src/types/property-schema/conditions.js +8 -0
  1085. package/src/libs/renderer/src/types/property-schema/editor-types.d.ts +310 -0
  1086. package/src/libs/renderer/src/types/property-schema/editor-types.js +8 -0
  1087. package/src/libs/renderer/src/types/property-schema/groups.d.ts +58 -0
  1088. package/src/libs/renderer/src/types/property-schema/groups.js +8 -0
  1089. package/src/libs/renderer/src/types/property-schema/index.d.ts +101 -0
  1090. package/src/libs/renderer/src/types/property-schema/index.js +98 -0
  1091. package/src/libs/renderer/src/types/property-schema/property-definition.d.ts +117 -0
  1092. package/src/libs/renderer/src/types/property-schema/property-definition.js +8 -0
  1093. package/src/libs/renderer/src/types/property-schema/schema.d.ts +108 -0
  1094. package/src/libs/renderer/src/types/property-schema/schema.js +8 -0
  1095. package/src/libs/renderer/src/types/property-schema/validation.d.ts +181 -0
  1096. package/src/libs/renderer/src/types/property-schema/validation.js +8 -0
  1097. package/src/libs/renderer/src/types/renderer.interface.d.ts +623 -0
  1098. package/src/libs/renderer/src/types/renderer.interface.js +3 -0
  1099. package/src/libs/renderer/src/types/theme.types.d.ts +305 -0
  1100. package/src/libs/renderer/src/types/theme.types.js +3 -0
  1101. package/src/libs/renderer/src/types/vnode.types.d.ts +139 -0
  1102. package/src/libs/renderer/src/types/vnode.types.js +3 -0
  1103. package/src/libs/renderer/src/utils/animation-presets.d.ts +310 -0
  1104. package/src/libs/renderer/src/utils/animation-presets.js +406 -0
  1105. package/src/libs/renderer/src/utils/animation-priority.d.ts +118 -0
  1106. package/src/libs/renderer/src/utils/animation-priority.js +258 -0
  1107. package/src/libs/renderer/src/utils/animation-utils.d.ts +159 -0
  1108. package/src/libs/renderer/src/utils/animation-utils.js +323 -0
  1109. package/src/libs/renderer/src/utils/lru-cache.d.ts +34 -0
  1110. package/src/libs/renderer/src/utils/lru-cache.js +72 -0
  1111. package/src/libs/renderer/src/viewport/index.d.ts +1 -0
  1112. package/src/libs/renderer/src/viewport/index.js +6 -0
  1113. package/src/libs/renderer/src/viewport/viewport-controller.d.ts +198 -0
  1114. package/src/libs/renderer/src/viewport/viewport-controller.js +315 -0
  1115. package/src/libs/renderer/src/vnode/container-id-generator.d.ts +94 -0
  1116. package/src/libs/renderer/src/vnode/container-id-generator.js +110 -0
  1117. package/src/libs/renderer/src/vnode/foreign-object.d.ts +157 -0
  1118. package/src/libs/renderer/src/vnode/foreign-object.js +167 -0
  1119. package/src/libs/renderer/src/vnode/index.d.ts +56 -0
  1120. package/src/libs/renderer/src/vnode/index.js +78 -0
  1121. package/src/libs/renderer/src/vnode/patch.d.ts +189 -0
  1122. package/src/libs/renderer/src/vnode/patch.js +564 -0
  1123. package/src/index.js.map +0 -1
  1124. package/src/lib/dashboard-kit/dashboard.js.map +0 -1
  1125. package/src/lib/dashboard-kit/grid-binder.js.map +0 -1
  1126. package/src/lib/dashboard-kit/grid-mapping.js.map +0 -1
  1127. package/src/lib/dashboard-kit/index.js.map +0 -1
  1128. package/src/lib/dashboard-kit/styles.js.map +0 -1
  1129. package/src/lib/dashboard-kit/widgets.js.map +0 -1
  1130. package/src/lib/diagram-kit/card.js.map +0 -1
  1131. package/src/lib/diagram-kit/editing.js.map +0 -1
  1132. package/src/lib/diagram-kit/er.js.map +0 -1
  1133. package/src/lib/diagram-kit/handles.js.map +0 -1
  1134. package/src/lib/diagram-kit/index.js.map +0 -1
  1135. package/src/lib/diagram-kit/rows.js.map +0 -1
  1136. package/src/lib/diagram-kit/styles.js.map +0 -1
  1137. package/src/lib/diagram-kit/uml.js.map +0 -1
  1138. package/src/lib/diagram-kit/update.js.map +0 -1
  1139. package/src/lib/grafloria-flow-element.js.map +0 -1
  1140. package/src/lib/grafloria.js.map +0 -1
  1141. package/src/lib/load.js.map +0 -1
  1142. package/src/lib/node-type-registry.js.map +0 -1
  1143. package/src/lib/stencil-kit/builders.js.map +0 -1
  1144. package/src/lib/stencil-kit/card-builders.js.map +0 -1
  1145. package/src/lib/stencil-kit/index.js.map +0 -1
  1146. package/src/lib/stencil-kit/palette.js.map +0 -1
  1147. package/src/lib/stencil-kit/shape-data.js.map +0 -1
  1148. package/src/lib/stencil-kit/styles.js.map +0 -1
@@ -0,0 +1,1092 @@
1
+ "use strict";
2
+ // OrthogonalRouter - Right-angle routing with obstacle avoidance
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.OrthogonalRouter = void 0;
5
+ const ObstacleIndex_1 = require("../ObstacleIndex");
6
+ /**
7
+ * Wave 8 — Card 6. Below this many obstacles a linear scan beats a hash lookup,
8
+ * and building an index would cost more than it saves. Above it, the scan is
9
+ * what made a one-node drag take 5.5 seconds.
10
+ */
11
+ const INDEX_THRESHOLD = 24;
12
+ /**
13
+ * OrthogonalRouter creates paths with only 90-degree angles
14
+ * Supports obstacle avoidance using A* on a grid
15
+ */
16
+ class OrthogonalRouter {
17
+ /**
18
+ * The index for this obstacle set: the caller's if it prepared one (the
19
+ * engine does), otherwise ours. Returns null for a set small enough that
20
+ * scanning it is genuinely cheaper.
21
+ */
22
+ static indexFor(obstacles, provided) {
23
+ if (provided)
24
+ return provided;
25
+ if (obstacles.length < INDEX_THRESHOLD)
26
+ return null;
27
+ let idx = OrthogonalRouter.indexCache.get(obstacles);
28
+ if (!idx) {
29
+ idx = new ObstacleIndex_1.ObstacleIndex(obstacles);
30
+ OrthogonalRouter.indexCache.set(obstacles, idx);
31
+ }
32
+ return idx;
33
+ }
34
+ getName() {
35
+ return 'orthogonal';
36
+ }
37
+ route(request) {
38
+ var _a, _b;
39
+ const { start, end, obstacles = [], options = {}, sourceDirection, targetDirection } = request;
40
+ const index = OrthogonalRouter.indexFor(obstacles, request.obstacleIndex);
41
+ // Handle same start and end point
42
+ if (start.x === end.x && start.y === end.y) {
43
+ return {
44
+ points: [{ x: start.x, y: start.y }],
45
+ totalLength: 0,
46
+ bendCount: 0,
47
+ cost: 0,
48
+ segments: [],
49
+ };
50
+ }
51
+ const bendCost = (_b = (_a = options.costs) === null || _a === void 0 ? void 0 : _a.bends) !== null && _b !== void 0 ? _b : 10;
52
+ // Card 1: an explicit jetty upgrades the stub contract from best-effort to
53
+ // GUARANTEED — and lets floating (direction-less) anchors derive exit sides
54
+ // from the geometry instead of taking the stub-less midline fallback.
55
+ const jetty = options.jetty;
56
+ let srcDir = sourceDirection;
57
+ let tgtDir = targetDirection;
58
+ if (jetty !== undefined) {
59
+ if (!srcDir)
60
+ srcDir = OrthogonalRouter.deriveExitSide(start, end);
61
+ if (!tgtDir)
62
+ tgtDir = OrthogonalRouter.deriveExitSide(end, start);
63
+ }
64
+ // The jetty guarantee holds on WHICHEVER branch produced the route: simple,
65
+ // A*-avoidance, or the collision fallback.
66
+ const withJetty = (path) => jetty !== undefined ? this.enforceJetty(path, start, end, srcDir, tgtDir, jetty, bendCost) : path;
67
+ // SMART ROUTING: Always calculate a simple orthogonal path first
68
+ const simplePath = this.simpleOrthogonalRoute(start, end, options.gridSize, bendCost, srcDir, tgtDir, jetty);
69
+ // If no obstacles provided, return the simple path
70
+ if (obstacles.length === 0) {
71
+ return withJetty(simplePath);
72
+ }
73
+ // Check if the simple path intersects any obstacles
74
+ const hasCollision = this.pathIntersectsObstacles(simplePath.points, obstacles, index);
75
+ if (!hasCollision) {
76
+ // Path is clear, use the simple routing
77
+ return withJetty(simplePath);
78
+ }
79
+ // Path has collisions - use A* pathfinding for obstacle avoidance
80
+ if (options.avoidObstacles) {
81
+ const avoidancePath = this.avoidObstaclesRoute(start, end, obstacles, options, srcDir, tgtDir, index);
82
+ if (avoidancePath) {
83
+ return withJetty(avoidancePath);
84
+ }
85
+ }
86
+ // Fallback: return simple path even with collisions
87
+ // (visual indicator that routing needs manual waypoints)
88
+ return withJetty(simplePath);
89
+ }
90
+ /**
91
+ * Card 1: the exit side a FLOATING anchor should use, derived from where the
92
+ * other endpoint is — dominant axis first, ties break horizontal (matching
93
+ * the midline fallback's own axis choice, so the derived route agrees with
94
+ * what the undirected route would have preferred).
95
+ */
96
+ static deriveExitSide(from, toward) {
97
+ const dx = toward.x - from.x;
98
+ const dy = toward.y - from.y;
99
+ if (Math.abs(dx) >= Math.abs(dy))
100
+ return dx >= 0 ? 'right' : 'left';
101
+ return dy >= 0 ? 'bottom' : 'top';
102
+ }
103
+ /**
104
+ * Card 1: guarantee the route leaves/enters PERPENDICULAR to the port side
105
+ * for at least `jetty` px before the first/after the last bend.
106
+ *
107
+ * The simple route's gap logic shrinks stubs on short links (its gapOffset
108
+ * clamp), and the A* grid can snap the first elbow closer than the stub — so
109
+ * the guarantee is enforced as a post-pass: if the first segment along the
110
+ * port direction is shorter than the jetty (or points the wrong way), a stub
111
+ * point is inserted at start + dir·jetty and the joint is re-orthogonalised
112
+ * by routing the old interior through the stub's far ordinate. Same for the
113
+ * target end, mirrored.
114
+ */
115
+ enforceJetty(path, start, end, sourceDirection, targetDirection, jetty, bendCost) {
116
+ if (jetty <= 0 || path.points.length < 2)
117
+ return path;
118
+ const fixEnd = (pts, anchor, dir) => {
119
+ if (!dir || pts.length < 2)
120
+ return pts;
121
+ const v = dir === 'left' ? { x: -1, y: 0 }
122
+ : dir === 'right' ? { x: 1, y: 0 }
123
+ : dir === 'top' ? { x: 0, y: -1 }
124
+ : { x: 0, y: 1 };
125
+ const stub = { x: anchor.x + v.x * jetty, y: anchor.y + v.y * jetty };
126
+ const first = pts[0];
127
+ const second = pts[1];
128
+ // Does the existing first segment already satisfy the contract?
129
+ const seg = { x: second.x - first.x, y: second.y - first.y };
130
+ const along = seg.x * v.x + seg.y * v.y; // signed length along the port normal
131
+ const perpendicular = v.x !== 0 ? seg.y === 0 : seg.x === 0;
132
+ if (perpendicular && along >= jetty)
133
+ return pts;
134
+ // Insert the stub, then re-orthogonalise the joint. Points of the old
135
+ // route lying ON the anchor→stub segment are SUBSUMED by the stub, not
136
+ // detoured around — otherwise a collinear-but-short stub would rebuild as
137
+ // an out-and-back run on the same line, which the collinear merge then
138
+ // collapses straight back to the too-short original (the exact failure
139
+ // mode the obstacle-avoidance test caught: A* grid-snaps its last elbow
140
+ // inside the jetty window).
141
+ let rest = pts.slice(1);
142
+ const onStubSegment = (q) => {
143
+ if (v.x !== 0) {
144
+ if (q.y !== anchor.y)
145
+ return false;
146
+ const t = (q.x - anchor.x) * v.x; // signed distance along the stub
147
+ return t >= 0 && t <= jetty;
148
+ }
149
+ if (q.x !== anchor.x)
150
+ return false;
151
+ const t = (q.y - anchor.y) * v.y;
152
+ return t >= 0 && t <= jetty;
153
+ };
154
+ // never subsume the far anchor itself — a fully-collinear straight link
155
+ // must keep its endpoint.
156
+ while (rest.length > 1 && onStubSegment(rest[0]))
157
+ rest = rest.slice(1);
158
+ const joint = v.x !== 0
159
+ ? { x: stub.x, y: rest[0].y } // horizontal stub: drop vertically to the old route
160
+ : { x: rest[0].x, y: stub.y }; // vertical stub: run horizontally to the old route
161
+ const rebuilt = [first, stub, joint, ...rest];
162
+ // Collapse duplicates/collinear runs the insertion may have created.
163
+ return this.mergeCollinearPoints(this.removeDuplicatePoints(rebuilt));
164
+ };
165
+ let pts = fixEnd(path.points.map((p) => (Object.assign({}, p))), start, sourceDirection);
166
+ pts = fixEnd(pts.slice().reverse(), end, targetDirection).reverse();
167
+ const totalLength = this.calculatePathLength(pts);
168
+ const bendCount = Math.max(0, pts.length - 2);
169
+ return {
170
+ points: pts,
171
+ totalLength,
172
+ bendCount,
173
+ cost: totalLength + bendCount * bendCost,
174
+ segments: this.calculateSegments(pts),
175
+ };
176
+ }
177
+ /**
178
+ * Simple orthogonal route - exact implementation of React Flow's getSmoothStepPath
179
+ * Based on React Flow's smoothstep-edge.ts getPoints() function
180
+ * Handles all edge cases: opposite ports, same ports, mixed ports
181
+ *
182
+ * CRITICAL: The offset determines how far the line moves away from the port
183
+ * before making turns. A larger offset creates more spacing from nodes.
184
+ */
185
+ simpleOrthogonalRoute(start, end, gridSize, bendCost = 10, sourceDirection, targetDirection, jetty) {
186
+ // No port directions at all: route through the midline (classic HVH/VHV,
187
+ // the React Flow default for undirected points). The gap-point logic below
188
+ // assumes port directions and emits stub artifacts without them.
189
+ if (!sourceDirection && !targetDirection) {
190
+ let pts;
191
+ if (start.x === end.x || start.y === end.y) {
192
+ pts = [Object.assign({}, start), Object.assign({}, end)];
193
+ }
194
+ else if (Math.abs(end.x - start.x) >= Math.abs(end.y - start.y)) {
195
+ const midX = (start.x + end.x) / 2;
196
+ pts = [Object.assign({}, start), { x: midX, y: start.y }, { x: midX, y: end.y }, Object.assign({}, end)];
197
+ }
198
+ else {
199
+ const midY = (start.y + end.y) / 2;
200
+ pts = [Object.assign({}, start), { x: start.x, y: midY }, { x: end.x, y: midY }, Object.assign({}, end)];
201
+ }
202
+ if (gridSize && gridSize > 1) {
203
+ // Interior points share one snapped ordinate, so segments stay orthogonal
204
+ for (let i = 1; i < pts.length - 1; i++) {
205
+ pts[i] = {
206
+ x: Math.round(pts[i].x / gridSize) * gridSize,
207
+ y: Math.round(pts[i].y / gridSize) * gridSize,
208
+ };
209
+ }
210
+ }
211
+ const merged = this.mergeCollinearPoints(this.removeDuplicatePoints(pts));
212
+ const totalLength = this.calculatePathLength(merged);
213
+ const bendCount = Math.max(0, merged.length - 2);
214
+ return {
215
+ points: merged,
216
+ totalLength,
217
+ bendCount,
218
+ cost: totalLength + bendCount * bendCost,
219
+ segments: this.calculateSegments(merged),
220
+ };
221
+ }
222
+ // CRITICAL OFFSET: This determines the "breathing room" around nodes
223
+ // Match React Flow's exact offset value for visual consistency.
224
+ // Card 1: an explicit jetty replaces it (enforceJetty then GUARANTEES it).
225
+ const offset = jetty !== null && jetty !== void 0 ? jetty : 20;
226
+ // Get direction vectors for source and target
227
+ const sourceDir = this.getDirectionVector(sourceDirection);
228
+ const targetDir = this.getDirectionVector(targetDirection);
229
+ // Calculate gapped points (moved away from port in port direction)
230
+ const sourceGapped = {
231
+ x: start.x + sourceDir.x * offset,
232
+ y: start.y + sourceDir.y * offset
233
+ };
234
+ const targetGapped = {
235
+ x: end.x + targetDir.x * offset,
236
+ y: end.y + targetDir.y * offset
237
+ };
238
+ // Determine primary routing direction (React Flow line 86-92)
239
+ const dir = this.getRoutingDirection(sourceGapped, sourceDirection, targetGapped);
240
+ const dirAccessor = dir.x !== 0 ? 'x' : 'y';
241
+ const currDir = dir[dirAccessor];
242
+ let points = [];
243
+ const sourceGapOffset = { x: 0, y: 0 };
244
+ const targetGapOffset = { x: 0, y: 0 };
245
+ // React Flow line 107: Check if handles are opposite
246
+ if (sourceDir[dirAccessor] * targetDir[dirAccessor] === -1) {
247
+ // CASE 1: Opposite handle positions (e.g., Left -> Right, Top -> Bottom)
248
+ // Use Z-shape routing with center point
249
+ //
250
+ // SMART ROUTING: When ports are opposite, we create a "bent" path that routes
251
+ // around potential node collisions. The bend happens at the midpoint, creating
252
+ // a visual "elbow" that clearly shows the connection path.
253
+ let centerX, centerY;
254
+ if (dirAccessor === 'x') {
255
+ // Horizontal routing (e.g., Left -> Right, Right -> Left)
256
+ // CRITICAL FIX: Detect overshoot scenario
257
+ // When routing right-to-left but sourceGapped is already to the right of targetGapped,
258
+ // using the midpoint would cause the path to overshoot and penetrate the target node.
259
+ // Instead, clamp the bend to the source edge to route around the side.
260
+ const isOvershooting = (sourceDir.x > 0 && sourceGapped.x > targetGapped.x) ||
261
+ (sourceDir.x < 0 && sourceGapped.x < targetGapped.x);
262
+ if (isOvershooting) {
263
+ // Overshoot detected: Place bend at source edge, not midpoint
264
+ // This makes the path exit the source, turn immediately, and route around the side
265
+ centerX = sourceGapped.x;
266
+ }
267
+ else {
268
+ // Normal case: Use midpoint
269
+ centerX = (sourceGapped.x + targetGapped.x) / 2;
270
+ }
271
+ // For horizontal routing, we keep Y at source/target levels to create clear steps
272
+ centerY = (sourceGapped.y + targetGapped.y) / 2;
273
+ }
274
+ else {
275
+ // Vertical routing (e.g., Top -> Bottom, Bottom -> Top)
276
+ // CRITICAL FIX: Detect overshoot scenario for vertical routing
277
+ const isOvershooting = (sourceDir.y > 0 && sourceGapped.y > targetGapped.y) ||
278
+ (sourceDir.y < 0 && sourceGapped.y < targetGapped.y);
279
+ if (isOvershooting) {
280
+ // Overshoot detected: Place bend at source edge
281
+ centerY = sourceGapped.y;
282
+ }
283
+ else {
284
+ // Normal case: Use midpoint
285
+ centerY = (sourceGapped.y + targetGapped.y) / 2;
286
+ }
287
+ // For vertical routing, we keep X at source/target levels to create clear steps
288
+ centerX = (sourceGapped.x + targetGapped.x) / 2;
289
+ }
290
+ // React Flow lines 123-140: Choose between vertical and horizontal split
291
+ // This creates the characteristic "step" pattern
292
+ const verticalSplit = [
293
+ { x: centerX, y: sourceGapped.y },
294
+ { x: centerX, y: targetGapped.y },
295
+ ];
296
+ const horizontalSplit = [
297
+ { x: sourceGapped.x, y: centerY },
298
+ { x: targetGapped.x, y: centerY },
299
+ ];
300
+ if (sourceDir[dirAccessor] === currDir) {
301
+ points = dirAccessor === 'x' ? verticalSplit : horizontalSplit;
302
+ }
303
+ else {
304
+ points = dirAccessor === 'x' ? horizontalSplit : verticalSplit;
305
+ }
306
+ }
307
+ else {
308
+ // CASE 2: Same or perpendicular handle positions
309
+ // Use L-shape routing
310
+ // React Flow lines 144-145: Define the two L-shape options
311
+ const sourceTarget = [{ x: sourceGapped.x, y: targetGapped.y }];
312
+ const targetSource = [{ x: targetGapped.x, y: sourceGapped.y }];
313
+ // React Flow lines 147-151: Choose L-shape direction
314
+ if (dirAccessor === 'x') {
315
+ points = sourceDir.x === currDir ? targetSource : sourceTarget;
316
+ }
317
+ else {
318
+ points = sourceDir.y === currDir ? sourceTarget : targetSource;
319
+ }
320
+ // React Flow lines 153-165: Handle same position ports that are too close
321
+ if (sourceDirection === targetDirection) {
322
+ const diff = Math.abs(start[dirAccessor] - end[dirAccessor]);
323
+ if (diff <= offset) {
324
+ const gapOffset = Math.min(offset - 1, offset - diff);
325
+ if (sourceDir[dirAccessor] === currDir) {
326
+ sourceGapOffset[dirAccessor] = (sourceGapped[dirAccessor] > start[dirAccessor] ? -1 : 1) * gapOffset;
327
+ }
328
+ else {
329
+ targetGapOffset[dirAccessor] = (targetGapped[dirAccessor] > end[dirAccessor] ? -1 : 1) * gapOffset;
330
+ }
331
+ }
332
+ }
333
+ // React Flow lines 168-180: Handle mixed handle positions (e.g., Right -> Bottom)
334
+ if (sourceDirection !== targetDirection) {
335
+ const dirAccessorOpposite = dirAccessor === 'x' ? 'y' : 'x';
336
+ const isSameDir = sourceDir[dirAccessor] === targetDir[dirAccessorOpposite];
337
+ const sourceGtTargetOppo = sourceGapped[dirAccessorOpposite] > targetGapped[dirAccessorOpposite];
338
+ const sourceLtTargetOppo = sourceGapped[dirAccessorOpposite] < targetGapped[dirAccessorOpposite];
339
+ const flipSourceTarget = (sourceDir[dirAccessor] === 1 && ((!isSameDir && sourceGtTargetOppo) || (isSameDir && sourceLtTargetOppo))) ||
340
+ (sourceDir[dirAccessor] !== 1 && ((!isSameDir && sourceLtTargetOppo) || (isSameDir && sourceGtTargetOppo)));
341
+ if (flipSourceTarget) {
342
+ points = dirAccessor === 'x' ? sourceTarget : targetSource;
343
+ }
344
+ }
345
+ }
346
+ // Build path points
347
+ const sourceGapPoint = { x: sourceGapped.x + sourceGapOffset.x, y: sourceGapped.y + sourceGapOffset.y };
348
+ const targetGapPoint = { x: targetGapped.x + targetGapOffset.x, y: targetGapped.y + targetGapOffset.y };
349
+ // CRITICAL FIX: Ensure first and last segments are orthogonal
350
+ // Check if start->sourceGapPoint creates a diagonal (non-orthogonal) segment
351
+ const firstSegmentIsOrthogonal = (start.x === sourceGapPoint.x) || (start.y === sourceGapPoint.y);
352
+ const lastSegmentIsOrthogonal = (end.x === targetGapPoint.x) || (end.y === targetGapPoint.y);
353
+ // Build path: only include start/end if they create orthogonal segments
354
+ const pathPoints = [];
355
+ if (firstSegmentIsOrthogonal) {
356
+ pathPoints.push(start);
357
+ }
358
+ pathPoints.push(sourceGapPoint);
359
+ pathPoints.push(...points);
360
+ pathPoints.push(targetGapPoint);
361
+ if (lastSegmentIsOrthogonal) {
362
+ pathPoints.push(end);
363
+ }
364
+ // Snap to grid if specified
365
+ // CRITICAL FIX: Do NOT snap the first and last points (port positions)
366
+ // Only snap intermediate waypoints to prevent mismatch with port positions
367
+ if (gridSize && gridSize > 1) {
368
+ pathPoints.forEach((p, index) => {
369
+ // Skip first and last points - they must stay at exact port positions
370
+ if (index === 0 || index === pathPoints.length - 1) {
371
+ return;
372
+ }
373
+ p.x = Math.round(p.x / gridSize) * gridSize;
374
+ p.y = Math.round(p.y / gridSize) * gridSize;
375
+ });
376
+ // CRITICAL FIX: After grid snapping, ensure first and last segments remain orthogonal
377
+ // Grid snapping intermediate points can create diagonal segments with unsnapped endpoints
378
+ if (pathPoints.length >= 2) {
379
+ // Fix first segment: ensure point[1] is orthogonal to point[0] (start)
380
+ const start = pathPoints[0];
381
+ const firstIntermediate = pathPoints[1];
382
+ const firstIsHorizontal = start.y === firstIntermediate.y;
383
+ const firstIsVertical = start.x === firstIntermediate.x;
384
+ if (!firstIsHorizontal && !firstIsVertical) {
385
+ // Determine which direction to align based on source direction or infer from geometry
386
+ let alignedHorizontally = false;
387
+ let alignedVertically = false;
388
+ if (sourceDirection === 'left' || sourceDirection === 'right') {
389
+ // Horizontal port - make first segment horizontal
390
+ firstIntermediate.y = start.y;
391
+ alignedHorizontally = true;
392
+ }
393
+ else if (sourceDirection === 'top' || sourceDirection === 'bottom') {
394
+ // Vertical port - make first segment vertical
395
+ firstIntermediate.x = start.x;
396
+ alignedVertically = true;
397
+ }
398
+ else {
399
+ // Direction unknown - infer from start/end relative positions
400
+ const deltaX = Math.abs(end.x - start.x);
401
+ const deltaY = Math.abs(end.y - start.y);
402
+ if (deltaX > deltaY) {
403
+ firstIntermediate.y = start.y;
404
+ alignedHorizontally = true;
405
+ }
406
+ else {
407
+ firstIntermediate.x = start.x;
408
+ alignedVertically = true;
409
+ }
410
+ }
411
+ // CRITICAL FIX: Propagate alignment to all intermediate points (not just first one)
412
+ // This fixes the issue where point 2, 3, etc. still have wrong coordinates after grid snap
413
+ if (pathPoints.length > 3) {
414
+ for (let i = 2; i < pathPoints.length - 1; i++) {
415
+ if (alignedHorizontally && pathPoints[i].y !== start.y) {
416
+ pathPoints[i].y = start.y;
417
+ }
418
+ else if (alignedVertically && pathPoints[i].x !== start.x) {
419
+ pathPoints[i].x = start.x;
420
+ }
421
+ }
422
+ }
423
+ }
424
+ // Fix last segment: ensure point[n-2] is orthogonal to point[n-1] (end)
425
+ if (pathPoints.length >= 3) {
426
+ const end = pathPoints[pathPoints.length - 1];
427
+ const lastIntermediate = pathPoints[pathPoints.length - 2];
428
+ const lastIsHorizontal = lastIntermediate.y === end.y;
429
+ const lastIsVertical = lastIntermediate.x === end.x;
430
+ if (!lastIsHorizontal && !lastIsVertical) {
431
+ // Determine which direction to align based on target direction or infer from geometry
432
+ if (targetDirection === 'left' || targetDirection === 'right') {
433
+ // Horizontal port - make last segment horizontal
434
+ lastIntermediate.y = end.y;
435
+ }
436
+ else if (targetDirection === 'top' || targetDirection === 'bottom') {
437
+ // Vertical port - make last segment vertical
438
+ lastIntermediate.x = end.x;
439
+ }
440
+ else {
441
+ // Direction unknown - infer from start/end relative positions
442
+ const deltaX = Math.abs(end.x - start.x);
443
+ const deltaY = Math.abs(end.y - start.y);
444
+ if (deltaX > deltaY) {
445
+ // Endpoints are more horizontally separated - likely horizontal port
446
+ lastIntermediate.y = end.y;
447
+ }
448
+ else {
449
+ // Endpoints are more vertically separated - likely vertical port
450
+ lastIntermediate.x = end.x;
451
+ }
452
+ }
453
+ }
454
+ }
455
+ }
456
+ }
457
+ // Remove duplicate consecutive points, then merge collinear runs — the
458
+ // gap-point construction can emit out-and-back stubs (A→B→A) and split
459
+ // straight lines into multiple segments
460
+ const uniquePoints = this.mergeCollinearPoints(this.removeDuplicatePoints(pathPoints));
461
+ const totalLength = this.calculatePathLength(uniquePoints);
462
+ const bendCount = uniquePoints.length - 2;
463
+ return {
464
+ points: uniquePoints,
465
+ totalLength,
466
+ bendCount: Math.max(0, bendCount),
467
+ cost: totalLength + bendCount * bendCost,
468
+ segments: this.calculateSegments(uniquePoints),
469
+ };
470
+ }
471
+ /**
472
+ * Merge collinear consecutive points. Because the kept path lies on the
473
+ * same line the removed points did, this also collapses out-and-back
474
+ * excursions (backtracking stubs) without changing route coverage.
475
+ */
476
+ mergeCollinearPoints(points) {
477
+ if (points.length <= 2)
478
+ return points;
479
+ const out = [points[0]];
480
+ for (let i = 1; i < points.length; i++) {
481
+ const q = points[i];
482
+ while (out.length >= 2) {
483
+ const a = out[out.length - 2];
484
+ const b = out[out.length - 1];
485
+ const cross = (b.x - a.x) * (q.y - b.y) - (b.y - a.y) * (q.x - b.x);
486
+ if (Math.abs(cross) < 1e-6)
487
+ out.pop();
488
+ else
489
+ break;
490
+ }
491
+ const tail = out[out.length - 1];
492
+ if (Math.abs(q.x - tail.x) > 1e-9 || Math.abs(q.y - tail.y) > 1e-9) {
493
+ out.push(q);
494
+ }
495
+ }
496
+ return out;
497
+ }
498
+ /**
499
+ * Check if we can use a direct straight line between ports
500
+ * This happens when ports are aligned and facing each other directly
501
+ */
502
+ canUseDirectLine(start, end, sourceDirection, targetDirection, _sourceOffset, _targetOffset) {
503
+ if (!sourceDirection || !targetDirection)
504
+ return false;
505
+ const tolerance = 2; // pixels
506
+ // Check if horizontally aligned (same Y)
507
+ const horizontallyAligned = Math.abs(start.y - end.y) < tolerance;
508
+ // Check if vertically aligned (same X)
509
+ const verticallyAligned = Math.abs(start.x - end.x) < tolerance;
510
+ // For horizontal alignment, ports should face left/right
511
+ if (horizontallyAligned) {
512
+ const horizontalPorts = ((sourceDirection === 'left' || sourceDirection === 'right') &&
513
+ (targetDirection === 'left' || targetDirection === 'right'));
514
+ // Check if they face each other
515
+ const facingEachOther = ((sourceDirection === 'right' && targetDirection === 'left' && start.x < end.x) ||
516
+ (sourceDirection === 'left' && targetDirection === 'right' && start.x > end.x));
517
+ return horizontalPorts && facingEachOther;
518
+ }
519
+ // For vertical alignment, ports should face top/bottom
520
+ if (verticallyAligned) {
521
+ const verticalPorts = ((sourceDirection === 'top' || sourceDirection === 'bottom') &&
522
+ (targetDirection === 'top' || targetDirection === 'bottom'));
523
+ // Check if they face each other
524
+ const facingEachOther = ((sourceDirection === 'bottom' && targetDirection === 'top' && start.y < end.y) ||
525
+ (sourceDirection === 'top' && targetDirection === 'bottom' && start.y > end.y));
526
+ return verticalPorts && facingEachOther;
527
+ }
528
+ return false;
529
+ }
530
+ /**
531
+ * Simplify orthogonal path by removing redundant collinear points
532
+ * ONLY removes points that are on the same straight line (horizontal or vertical)
533
+ * This preserves proper orthogonal (right-angle) routing
534
+ */
535
+ simplifyOrthogonalPath(points) {
536
+ if (points.length <= 2)
537
+ return points;
538
+ const simplified = [points[0]];
539
+ const tolerance = 0.1; // Very tight tolerance for orthogonal alignment
540
+ for (let i = 1; i < points.length - 1; i++) {
541
+ const prev = simplified[simplified.length - 1]; // Use last point in simplified array
542
+ const curr = points[i];
543
+ const next = points[i + 1];
544
+ // Check if prev, curr, next are collinear (on same horizontal or vertical line)
545
+ const isHorizontalLine = Math.abs(prev.y - curr.y) < tolerance &&
546
+ Math.abs(curr.y - next.y) < tolerance;
547
+ const isVerticalLine = Math.abs(prev.x - curr.x) < tolerance &&
548
+ Math.abs(curr.x - next.x) < tolerance;
549
+ // Only skip this point if it's truly collinear (on same straight line)
550
+ // This removes redundant intermediate points but keeps all bends
551
+ if (!isHorizontalLine && !isVerticalLine) {
552
+ simplified.push(curr);
553
+ }
554
+ }
555
+ simplified.push(points[points.length - 1]);
556
+ return simplified;
557
+ }
558
+ /**
559
+ * Apply gap offset in the direction the port points
560
+ */
561
+ applyGapOffset(point, direction, offset) {
562
+ if (!direction)
563
+ return point;
564
+ switch (direction) {
565
+ case 'left':
566
+ return { x: point.x - offset, y: point.y };
567
+ case 'right':
568
+ return { x: point.x + offset, y: point.y };
569
+ case 'top':
570
+ return { x: point.x, y: point.y - offset };
571
+ case 'bottom':
572
+ return { x: point.x, y: point.y + offset };
573
+ }
574
+ }
575
+ /**
576
+ * Get direction vector for a port direction (React Flow style)
577
+ */
578
+ getDirectionVector(direction) {
579
+ if (!direction)
580
+ return { x: 0, y: 0 };
581
+ switch (direction) {
582
+ case 'left':
583
+ return { x: -1, y: 0 };
584
+ case 'right':
585
+ return { x: 1, y: 0 };
586
+ case 'top':
587
+ return { x: 0, y: -1 };
588
+ case 'bottom':
589
+ return { x: 0, y: 1 };
590
+ }
591
+ }
592
+ /**
593
+ * Determine routing direction based on source/target positions (React Flow logic)
594
+ */
595
+ getRoutingDirection(source, sourcePosition, target) {
596
+ if (!sourcePosition)
597
+ return { x: 1, y: 0 };
598
+ // For horizontal ports (left/right), determine X direction
599
+ if (sourcePosition === 'left' || sourcePosition === 'right') {
600
+ return source.x < target.x ? { x: 1, y: 0 } : { x: -1, y: 0 };
601
+ }
602
+ // For vertical ports (top/bottom), determine Y direction
603
+ return source.y < target.y ? { x: 0, y: 1 } : { x: 0, y: -1 };
604
+ }
605
+ /**
606
+ * Determine if we need Z-shape routing (vs L-shape)
607
+ * Z-shape is needed when ports point toward each other or in same direction
608
+ */
609
+ needsZShape(sourceDir, targetDir, sourceOffset, targetOffset) {
610
+ if (!sourceDir || !targetDir)
611
+ return false;
612
+ // Ports pointing opposite directions (toward each other)
613
+ const oppositeDirections = ((sourceDir === 'left' && targetDir === 'right') ||
614
+ (sourceDir === 'right' && targetDir === 'left') ||
615
+ (sourceDir === 'top' && targetDir === 'bottom') ||
616
+ (sourceDir === 'bottom' && targetDir === 'top'));
617
+ // Ports pointing same direction
618
+ const sameDirection = sourceDir === targetDir;
619
+ return oppositeDirections || sameDirection;
620
+ }
621
+ /**
622
+ * Calculate L-shape midpoint (one bend)
623
+ */
624
+ calculateLShapeMidpoint(sourceOffset, targetOffset, sourceDir, targetDir) {
625
+ // For L-shape, decide whether to go horizontal-then-vertical or vertical-then-horizontal
626
+ // Based on which port direction is dominant
627
+ const isSourceHorizontal = sourceDir === 'left' || sourceDir === 'right';
628
+ const isTargetHorizontal = targetDir === 'left' || targetDir === 'right';
629
+ if (isSourceHorizontal && !isTargetHorizontal) {
630
+ // Source is horizontal, target is vertical: horizontal first
631
+ return { x: targetOffset.x, y: sourceOffset.y };
632
+ }
633
+ else if (!isSourceHorizontal && isTargetHorizontal) {
634
+ // Source is vertical, target is horizontal: vertical first
635
+ return { x: sourceOffset.x, y: targetOffset.y };
636
+ }
637
+ else {
638
+ // Both same orientation - choose based on distance
639
+ const dx = Math.abs(targetOffset.x - sourceOffset.x);
640
+ const dy = Math.abs(targetOffset.y - sourceOffset.y);
641
+ if (dx > dy) {
642
+ return { x: targetOffset.x, y: sourceOffset.y };
643
+ }
644
+ else {
645
+ return { x: sourceOffset.x, y: targetOffset.y };
646
+ }
647
+ }
648
+ }
649
+ /**
650
+ * Calculate Z-shape midpoints (two bends)
651
+ */
652
+ calculateZShapeMidpoints(sourceOffset, targetOffset, sourceDir, targetDir) {
653
+ const isSourceHorizontal = sourceDir === 'left' || sourceDir === 'right';
654
+ if (isSourceHorizontal) {
655
+ // Horizontal source: H-V-H routing
656
+ const midX = (sourceOffset.x + targetOffset.x) / 2;
657
+ return [
658
+ { x: midX, y: sourceOffset.y },
659
+ { x: midX, y: targetOffset.y }
660
+ ];
661
+ }
662
+ else {
663
+ // Vertical source: V-H-V routing
664
+ const midY = (sourceOffset.y + targetOffset.y) / 2;
665
+ return [
666
+ { x: sourceOffset.x, y: midY },
667
+ { x: targetOffset.x, y: midY }
668
+ ];
669
+ }
670
+ }
671
+ /**
672
+ * Orthogonal routing with obstacle avoidance using A*
673
+ */
674
+ avoidObstaclesRoute(start, end, obstacles, options, sourceDirection, targetDirection, index) {
675
+ var _a, _b, _c, _d, _e, _f, _g;
676
+ const gridSize = (_a = options.gridSize) !== null && _a !== void 0 ? _a : 10;
677
+ const margin = (_b = options.obstacleMargin) !== null && _b !== void 0 ? _b : 20; // Margin around obstacles
678
+ const maxIterations = (_c = options.maxIterations) !== null && _c !== void 0 ? _c : 10000;
679
+ const gapOffset = 30; // Distance to move away from port (must be > margin to clear obstacle boundary)
680
+ // Apply gap offset to move away from ports before pathfinding
681
+ // This ensures paths don't start/end directly on node borders
682
+ const sourceOffset = this.applyGapOffset(start, sourceDirection, gapOffset);
683
+ const targetOffset = this.applyGapOffset(end, targetDirection, gapOffset);
684
+ // Snap offset points to grid for A* pathfinding
685
+ let gridStart = this.snapToGrid(sourceOffset, gridSize);
686
+ let gridEnd = this.snapToGrid(targetOffset, gridSize);
687
+ // CRITICAL FIX: Validate start/end points are not inside obstacles
688
+ // If grid snapping moved them into an obstacle, adjust outward
689
+ if (this.collidesWithObstacles(gridStart, obstacles, margin, index)) {
690
+ console.debug(`⚠️ Grid start point inside obstacle, adjusting...`);
691
+ gridStart = this.findNearestValidPoint(gridStart, sourceDirection, obstacles, margin, gridSize, index);
692
+ }
693
+ if (this.collidesWithObstacles(gridEnd, obstacles, margin, index)) {
694
+ console.debug(`⚠️ Grid end point inside obstacle, adjusting...`);
695
+ gridEnd = this.findNearestValidPoint(gridEnd, targetDirection, obstacles, margin, gridSize, index);
696
+ }
697
+ // Use A* to find path between offset points
698
+ const path = this.aStarPathfinding(gridStart, gridEnd, obstacles, gridSize, margin, maxIterations, index);
699
+ if (!path || path.length === 0) {
700
+ // IMPROVED: Log why pathfinding failed and what we're doing
701
+ console.debug(`⚠️ A* pathfinding failed for link routing:`, {
702
+ start: gridStart,
703
+ end: gridEnd,
704
+ obstacleCount: obstacles.length,
705
+ gridSize,
706
+ margin
707
+ });
708
+ console.debug(` Falling back to simple orthogonal route (no obstacle avoidance)`);
709
+ // Fallback to simple route if pathfinding fails
710
+ return this.simpleOrthogonalRoute(start, end, gridSize, (_e = (_d = options.costs) === null || _d === void 0 ? void 0 : _d.bends) !== null && _e !== void 0 ? _e : 10, sourceDirection, targetDirection);
711
+ }
712
+ // Prepend actual start point and append actual end point
713
+ // This ensures the path connects to the exact port positions
714
+ const fullPath = [
715
+ { x: start.x, y: start.y },
716
+ ...path,
717
+ { x: end.x, y: end.y }
718
+ ];
719
+ // Remove duplicate consecutive points
720
+ const uniquePath = this.mergeCollinearPoints(this.removeDuplicatePoints(fullPath));
721
+ const totalLength = this.calculatePathLength(uniquePath);
722
+ const bendCount = this.countBends(uniquePath);
723
+ const bendCost = (_g = (_f = options.costs) === null || _f === void 0 ? void 0 : _f.bends) !== null && _g !== void 0 ? _g : 10;
724
+ return {
725
+ points: uniquePath,
726
+ totalLength,
727
+ bendCount,
728
+ cost: totalLength + bendCount * bendCost,
729
+ segments: this.calculateSegments(uniquePath),
730
+ };
731
+ }
732
+ /**
733
+ * A* pathfinding on a grid with improved obstacle avoidance
734
+ */
735
+ aStarPathfinding(start, end, obstacles, gridSize, margin, maxIterations, index) {
736
+ var _a, _b, _c;
737
+ const openSet = new Set();
738
+ const closedSet = new Set();
739
+ const cameFrom = new Map();
740
+ const gScore = new Map();
741
+ const fScore = new Map();
742
+ const startKey = this.pointToKey(start);
743
+ const endKey = this.pointToKey(end);
744
+ openSet.add(startKey);
745
+ gScore.set(startKey, 0);
746
+ fScore.set(startKey, this.heuristic(start, end));
747
+ let iterations = 0;
748
+ while (openSet.size > 0 && iterations < maxIterations) {
749
+ iterations++;
750
+ // Find node with lowest fScore
751
+ let currentKey = '';
752
+ let lowestF = Infinity;
753
+ for (const key of openSet) {
754
+ const f = (_a = fScore.get(key)) !== null && _a !== void 0 ? _a : Infinity;
755
+ if (f < lowestF) {
756
+ lowestF = f;
757
+ currentKey = key;
758
+ }
759
+ }
760
+ if (!currentKey)
761
+ break;
762
+ const current = this.keyToPoint(currentKey);
763
+ // Reached goal
764
+ if (currentKey === endKey) {
765
+ const path = this.reconstructPath(cameFrom, current);
766
+ // Simplify the A* path to remove unnecessary waypoints
767
+ return this.simplifyOrthogonalPath(path);
768
+ }
769
+ openSet.delete(currentKey);
770
+ closedSet.add(currentKey);
771
+ // Check neighbors (4-directional: up, down, left, right)
772
+ const neighbors = this.getOrthogonalNeighbors(current, gridSize);
773
+ for (const neighbor of neighbors) {
774
+ const neighborKey = this.pointToKey(neighbor);
775
+ if (closedSet.has(neighborKey))
776
+ continue;
777
+ // Check if neighbor collides with obstacle
778
+ if (this.collidesWithObstacles(neighbor, obstacles, margin, index)) {
779
+ closedSet.add(neighborKey);
780
+ continue;
781
+ }
782
+ // Calculate movement cost with penalty for direction changes
783
+ let movementCost = gridSize;
784
+ // Add bend penalty if direction changed from previous segment
785
+ const parent = cameFrom.get(currentKey);
786
+ if (parent) {
787
+ const prevDir = this.getDirection(parent, current);
788
+ const nextDir = this.getDirection(current, neighbor);
789
+ if (prevDir !== nextDir) {
790
+ movementCost += gridSize * 0.5; // Penalty for bends to favor straighter paths
791
+ }
792
+ }
793
+ const tentativeG = ((_b = gScore.get(currentKey)) !== null && _b !== void 0 ? _b : Infinity) + movementCost;
794
+ if (!openSet.has(neighborKey)) {
795
+ openSet.add(neighborKey);
796
+ }
797
+ else if (tentativeG >= ((_c = gScore.get(neighborKey)) !== null && _c !== void 0 ? _c : Infinity)) {
798
+ continue;
799
+ }
800
+ cameFrom.set(neighborKey, current);
801
+ gScore.set(neighborKey, tentativeG);
802
+ fScore.set(neighborKey, tentativeG + this.heuristic(neighbor, end));
803
+ }
804
+ }
805
+ // No path found
806
+ return null;
807
+ }
808
+ /**
809
+ * Reconstruct path from A* came-from map
810
+ */
811
+ reconstructPath(cameFrom, current) {
812
+ const path = [current];
813
+ let currentKey = this.pointToKey(current);
814
+ while (cameFrom.has(currentKey)) {
815
+ const point = cameFrom.get(currentKey);
816
+ path.unshift(point);
817
+ currentKey = this.pointToKey(point);
818
+ }
819
+ return path;
820
+ }
821
+ /**
822
+ * Manhattan distance heuristic
823
+ */
824
+ heuristic(a, b) {
825
+ return Math.abs(a.x - b.x) + Math.abs(a.y - b.y);
826
+ }
827
+ /**
828
+ * Get 4-directional orthogonal neighbors
829
+ */
830
+ getOrthogonalNeighbors(point, gridSize) {
831
+ return [
832
+ { x: point.x + gridSize, y: point.y }, // Right
833
+ { x: point.x - gridSize, y: point.y }, // Left
834
+ { x: point.x, y: point.y + gridSize }, // Down
835
+ { x: point.x, y: point.y - gridSize }, // Up
836
+ ];
837
+ }
838
+ /**
839
+ * Check if point collides with any obstacle
840
+ * FIXED: Use inclusive bounds to prevent paths grazing obstacle edges
841
+ */
842
+ collidesWithObstacles(point, obstacles, margin, index) {
843
+ // Wave 8 — Card 6: THE hot path. A* asks this once per neighbour of every
844
+ // cell it expands, and the linear scan below made that O(scene) — 1.87
845
+ // BILLION aabb tests in one measured 5k-node drag frame. The index answers
846
+ // with the identical predicate, looking only at obstacles near the point.
847
+ if (index)
848
+ return index.collides(point.x, point.y, margin);
849
+ for (const obstacle of obstacles) {
850
+ // Expand obstacle boundaries by margin to create safe zone around obstacles
851
+ const minX = obstacle.x - margin;
852
+ const maxX = obstacle.x + obstacle.width + margin;
853
+ const minY = obstacle.y - margin;
854
+ const maxY = obstacle.y + obstacle.height + margin;
855
+ // FIXED: Use >= and <= (inclusive) instead of > and < (exclusive)
856
+ // This ensures points ON the boundary are also considered colliding
857
+ if (point.x >= minX &&
858
+ point.x <= maxX &&
859
+ point.y >= minY &&
860
+ point.y <= maxY) {
861
+ return true;
862
+ }
863
+ }
864
+ return false;
865
+ }
866
+ /**
867
+ * Check if any segment of the path intersects with obstacles
868
+ * This determines if we need to use A* pathfinding
869
+ */
870
+ pathIntersectsObstacles(points, obstacles, index) {
871
+ if (obstacles.length === 0)
872
+ return false;
873
+ // Check each line segment of the path
874
+ for (let i = 1; i < points.length; i++) {
875
+ const p1 = points[i - 1];
876
+ const p2 = points[i];
877
+ // Wave 8 — Card 6: only obstacles whose rect can reach this segment's
878
+ // bounding box are candidates; the exact test below is unchanged, so the
879
+ // answer is unchanged. (A segment can only meet a rect inside the
880
+ // segment's own bbox, so the narrowing loses nothing.)
881
+ const candidates = index
882
+ ? index.queryBox(Math.min(p1.x, p2.x), Math.min(p1.y, p2.y), Math.max(p1.x, p2.x), Math.max(p1.y, p2.y))
883
+ : obstacles;
884
+ // Check if this segment intersects any obstacle
885
+ for (const obstacle of candidates) {
886
+ const rect = {
887
+ x: obstacle.x,
888
+ y: obstacle.y,
889
+ width: obstacle.width,
890
+ height: obstacle.height
891
+ };
892
+ if (this.lineIntersectsRectangle(p1, p2, rect)) {
893
+ return true;
894
+ }
895
+ }
896
+ }
897
+ return false;
898
+ }
899
+ /**
900
+ * Check if a line segment intersects with a rectangle
901
+ */
902
+ lineIntersectsRectangle(p1, p2, rect) {
903
+ const left = rect.x;
904
+ const right = rect.x + rect.width;
905
+ const top = rect.y;
906
+ const bottom = rect.y + rect.height;
907
+ // Check if either endpoint is inside the rectangle
908
+ if (this.pointInRectangle(p1, rect) || this.pointInRectangle(p2, rect)) {
909
+ return true;
910
+ }
911
+ // Check intersection with each edge of the rectangle
912
+ const edges = [
913
+ { x1: left, y1: top, x2: right, y2: top }, // top edge
914
+ { x1: right, y1: top, x2: right, y2: bottom }, // right edge
915
+ { x1: left, y1: bottom, x2: right, y2: bottom }, // bottom edge
916
+ { x1: left, y1: top, x2: left, y2: bottom }, // left edge
917
+ ];
918
+ for (const edge of edges) {
919
+ if (this.lineSegmentsIntersect(p1, p2, { x: edge.x1, y: edge.y1 }, { x: edge.x2, y: edge.y2 })) {
920
+ return true;
921
+ }
922
+ }
923
+ return false;
924
+ }
925
+ /**
926
+ * Check if a point is inside a rectangle
927
+ */
928
+ pointInRectangle(p, rect) {
929
+ return (p.x >= rect.x &&
930
+ p.x <= rect.x + rect.width &&
931
+ p.y >= rect.y &&
932
+ p.y <= rect.y + rect.height);
933
+ }
934
+ /**
935
+ * Check if two line segments intersect
936
+ * Using the cross product method
937
+ */
938
+ lineSegmentsIntersect(p1, p2, p3, p4) {
939
+ const ccw = (a, b, c) => {
940
+ return (c.y - a.y) * (b.x - a.x) > (b.y - a.y) * (c.x - a.x);
941
+ };
942
+ return ccw(p1, p3, p4) !== ccw(p2, p3, p4) && ccw(p1, p2, p3) !== ccw(p1, p2, p4);
943
+ }
944
+ /**
945
+ * Snap point to grid
946
+ */
947
+ snapToGrid(point, gridSize) {
948
+ return {
949
+ x: Math.round(point.x / gridSize) * gridSize,
950
+ y: Math.round(point.y / gridSize) * gridSize,
951
+ };
952
+ }
953
+ /**
954
+ * Find nearest valid point outside obstacles
955
+ * Searches outward from point in the given direction until finding a valid position
956
+ */
957
+ findNearestValidPoint(point, direction, obstacles, margin, gridSize, index) {
958
+ // Try moving outward in the port direction to find a valid point
959
+ const maxAttempts = 10;
960
+ let current = Object.assign({}, point);
961
+ for (let i = 1; i <= maxAttempts; i++) {
962
+ // Move one grid step in the port direction
963
+ switch (direction) {
964
+ case 'left':
965
+ current.x -= gridSize;
966
+ break;
967
+ case 'right':
968
+ current.x += gridSize;
969
+ break;
970
+ case 'top':
971
+ current.y -= gridSize;
972
+ break;
973
+ case 'bottom':
974
+ current.y += gridSize;
975
+ break;
976
+ default:
977
+ // No direction specified, try moving in all directions
978
+ const candidates = [
979
+ { x: point.x + i * gridSize, y: point.y },
980
+ { x: point.x - i * gridSize, y: point.y },
981
+ { x: point.x, y: point.y + i * gridSize },
982
+ { x: point.x, y: point.y - i * gridSize },
983
+ ];
984
+ for (const candidate of candidates) {
985
+ if (!this.collidesWithObstacles(candidate, obstacles, margin, index)) {
986
+ return candidate;
987
+ }
988
+ }
989
+ continue;
990
+ }
991
+ // Check if this position is valid
992
+ if (!this.collidesWithObstacles(current, obstacles, margin, index)) {
993
+ return current;
994
+ }
995
+ }
996
+ // If all attempts failed, return original point (pathfinding will fail, but at least we tried)
997
+ console.debug(` ✗ Could not find valid point after ${maxAttempts} attempts, using original`);
998
+ return point;
999
+ }
1000
+ /**
1001
+ * Convert point to map key
1002
+ */
1003
+ pointToKey(point) {
1004
+ return `${point.x},${point.y}`;
1005
+ }
1006
+ /**
1007
+ * Convert map key to point
1008
+ */
1009
+ keyToPoint(key) {
1010
+ const [x, y] = key.split(',').map(Number);
1011
+ return { x, y };
1012
+ }
1013
+ /**
1014
+ * Calculate total path length
1015
+ */
1016
+ calculatePathLength(points) {
1017
+ let length = 0;
1018
+ for (let i = 0; i < points.length - 1; i++) {
1019
+ const dx = points[i + 1].x - points[i].x;
1020
+ const dy = points[i + 1].y - points[i].y;
1021
+ length += Math.sqrt(dx * dx + dy * dy);
1022
+ }
1023
+ return length;
1024
+ }
1025
+ /**
1026
+ * Count bends in path
1027
+ */
1028
+ countBends(points) {
1029
+ if (points.length < 3)
1030
+ return 0;
1031
+ let bends = 0;
1032
+ for (let i = 1; i < points.length - 1; i++) {
1033
+ const prev = points[i - 1];
1034
+ const curr = points[i];
1035
+ const next = points[i + 1];
1036
+ // Check if direction changed
1037
+ const dir1 = this.getDirection(prev, curr);
1038
+ const dir2 = this.getDirection(curr, next);
1039
+ if (dir1 !== dir2) {
1040
+ bends++;
1041
+ }
1042
+ }
1043
+ return bends;
1044
+ }
1045
+ /**
1046
+ * Get direction between two points ('h' or 'v')
1047
+ */
1048
+ getDirection(a, b) {
1049
+ return Math.abs(b.x - a.x) > Math.abs(b.y - a.y) ? 'h' : 'v';
1050
+ }
1051
+ /**
1052
+ * Remove duplicate consecutive points
1053
+ */
1054
+ removeDuplicatePoints(points) {
1055
+ const result = [];
1056
+ for (let i = 0; i < points.length; i++) {
1057
+ if (i === 0 || points[i].x !== points[i - 1].x || points[i].y !== points[i - 1].y) {
1058
+ result.push(Object.assign({}, points[i]));
1059
+ }
1060
+ }
1061
+ return result;
1062
+ }
1063
+ /**
1064
+ * Calculate segments from points
1065
+ */
1066
+ calculateSegments(points) {
1067
+ const segments = [];
1068
+ for (let i = 0; i < points.length - 1; i++) {
1069
+ const start = points[i];
1070
+ const end = points[i + 1];
1071
+ const dx = end.x - start.x;
1072
+ const dy = end.y - start.y;
1073
+ const length = Math.sqrt(dx * dx + dy * dy);
1074
+ const angle = (Math.atan2(dy, dx) * 180) / Math.PI;
1075
+ segments.push({
1076
+ start: Object.assign({}, start),
1077
+ end: Object.assign({}, end),
1078
+ length,
1079
+ angle,
1080
+ });
1081
+ }
1082
+ return segments;
1083
+ }
1084
+ }
1085
+ exports.OrthogonalRouter = OrthogonalRouter;
1086
+ /**
1087
+ * Wave 8 — Card 6: indexes memoised on the obstacle ARRAY's identity, so the
1088
+ * whole frame's links share one index instead of rebuilding it per link.
1089
+ * Weak, so an obstacle set dies with the frame that made it.
1090
+ */
1091
+ OrthogonalRouter.indexCache = new WeakMap();
1092
+ //# sourceMappingURL=OrthogonalRouter.js.map