orcasvn-react-diagrams 0.2.1 → 0.2.2

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 (335) hide show
  1. package/README.md +99 -88
  2. package/ai/api-contract.json +257 -205
  3. package/ai/invariants.json +43 -41
  4. package/ai/manifest.json +34 -34
  5. package/dist/cjs/{displaybox.js → examples.js} +5974 -1413
  6. package/dist/cjs/index.js +3889 -1112
  7. package/dist/cjs/types/api/createDiagramEditor.d.ts +7 -2
  8. package/dist/cjs/types/api/types.d.ts +178 -0
  9. package/dist/cjs/types/displaybox/demos/DeletionEventsDemoTab.d.ts +3 -0
  10. package/dist/cjs/types/displaybox/demos/ShapeHoverControlsDemoTab.d.ts +3 -0
  11. package/dist/cjs/types/displaybox/demos/TextLayoutDemoTab.d.ts +3 -0
  12. package/dist/cjs/types/displaybox/demos/deletionEventsDemo.d.ts +2 -0
  13. package/dist/cjs/types/displaybox/demos/rotatedCreationDemo.d.ts +2 -0
  14. package/dist/cjs/types/displaybox/demos/roundedRectRadiusDemo.d.ts +2 -0
  15. package/dist/cjs/types/displaybox/demos/shapeBorderMovementDemo.d.ts +2 -0
  16. package/dist/cjs/types/displaybox/demos/shapeHoverControlsDemo.d.ts +10 -0
  17. package/dist/cjs/types/displaybox/demos/textDemo.d.ts +4 -0
  18. package/dist/cjs/types/displaybox/useDemoEditor.d.ts +5 -2
  19. package/dist/cjs/types/engine/AutoLayoutService.d.ts +24 -0
  20. package/dist/cjs/types/engine/DiagramEngine.d.ts +32 -14
  21. package/dist/cjs/types/engine/EngineCommands.d.ts +4 -1
  22. package/dist/cjs/types/engine/LinkRoutingService.d.ts +35 -0
  23. package/dist/cjs/types/engine/MutationPipeline.d.ts +23 -0
  24. package/dist/cjs/types/engine/TextLayoutService.d.ts +40 -0
  25. package/dist/cjs/types/examples/index.d.ts +2 -0
  26. package/dist/cjs/types/measure/textStyleDefaults.d.ts +9 -0
  27. package/dist/cjs/types/models/DiagramModel.d.ts +1 -0
  28. package/dist/cjs/types/models/ElementModel.d.ts +1 -0
  29. package/dist/cjs/types/models/PortModel.d.ts +3 -0
  30. package/dist/cjs/types/models/TextModel.d.ts +8 -0
  31. package/dist/cjs/types/renderer/RenderTypes.d.ts +34 -1
  32. package/dist/cjs/types/renderer/konva/KonvaHitTester.d.ts +1 -1
  33. package/dist/cjs/types/renderer/konva/KonvaInteraction.d.ts +53 -3
  34. package/dist/cjs/types/renderer/konva/KonvaNodeFactory.d.ts +18 -1
  35. package/dist/cjs/types/renderer/konva/KonvaRenderer.d.ts +49 -2
  36. package/dist/cjs/types/shapes/BuiltInShapes.d.ts +107 -0
  37. package/dist/cjs/types/shapes/__tests__/BuiltInShapes.test.d.ts +1 -0
  38. package/dist/cjs/types/shapes/index.d.ts +1 -0
  39. package/dist/cjs/types/utils/__tests__/borderGeometry.test.d.ts +1 -0
  40. package/dist/cjs/types/utils/borderGeometry.d.ts +6 -0
  41. package/dist/cjs/types/utils/geometry.d.ts +22 -0
  42. package/dist/esm/{displaybox.js → examples.js} +5969 -1414
  43. package/dist/esm/examples.js.map +1 -0
  44. package/dist/esm/index.js +3890 -1113
  45. package/dist/esm/index.js.map +1 -1
  46. package/dist/esm/types/api/createDiagramEditor.d.ts +7 -2
  47. package/dist/esm/types/api/types.d.ts +178 -0
  48. package/dist/esm/types/displaybox/demos/DeletionEventsDemoTab.d.ts +3 -0
  49. package/dist/esm/types/displaybox/demos/ShapeHoverControlsDemoTab.d.ts +3 -0
  50. package/dist/esm/types/displaybox/demos/TextLayoutDemoTab.d.ts +3 -0
  51. package/dist/esm/types/displaybox/demos/deletionEventsDemo.d.ts +2 -0
  52. package/dist/esm/types/displaybox/demos/rotatedCreationDemo.d.ts +2 -0
  53. package/dist/esm/types/displaybox/demos/roundedRectRadiusDemo.d.ts +2 -0
  54. package/dist/esm/types/displaybox/demos/shapeBorderMovementDemo.d.ts +2 -0
  55. package/dist/esm/types/displaybox/demos/shapeHoverControlsDemo.d.ts +10 -0
  56. package/dist/esm/types/displaybox/demos/textDemo.d.ts +4 -0
  57. package/dist/esm/types/displaybox/useDemoEditor.d.ts +5 -2
  58. package/dist/esm/types/engine/AutoLayoutService.d.ts +24 -0
  59. package/dist/esm/types/engine/DiagramEngine.d.ts +32 -14
  60. package/dist/esm/types/engine/EngineCommands.d.ts +4 -1
  61. package/dist/esm/types/engine/LinkRoutingService.d.ts +35 -0
  62. package/dist/esm/types/engine/MutationPipeline.d.ts +23 -0
  63. package/dist/esm/types/engine/TextLayoutService.d.ts +40 -0
  64. package/dist/esm/types/examples/index.d.ts +2 -0
  65. package/dist/esm/types/measure/textStyleDefaults.d.ts +9 -0
  66. package/dist/esm/types/models/DiagramModel.d.ts +1 -0
  67. package/dist/esm/types/models/ElementModel.d.ts +1 -0
  68. package/dist/esm/types/models/PortModel.d.ts +3 -0
  69. package/dist/esm/types/models/TextModel.d.ts +8 -0
  70. package/dist/esm/types/renderer/RenderTypes.d.ts +34 -1
  71. package/dist/esm/types/renderer/konva/KonvaHitTester.d.ts +1 -1
  72. package/dist/esm/types/renderer/konva/KonvaInteraction.d.ts +53 -3
  73. package/dist/esm/types/renderer/konva/KonvaNodeFactory.d.ts +18 -1
  74. package/dist/esm/types/renderer/konva/KonvaRenderer.d.ts +49 -2
  75. package/dist/esm/types/shapes/BuiltInShapes.d.ts +107 -0
  76. package/dist/esm/types/shapes/__tests__/BuiltInShapes.test.d.ts +1 -0
  77. package/dist/esm/types/shapes/index.d.ts +1 -0
  78. package/dist/esm/types/utils/__tests__/borderGeometry.test.d.ts +1 -0
  79. package/dist/esm/types/utils/borderGeometry.d.ts +6 -0
  80. package/dist/esm/types/utils/geometry.d.ts +22 -0
  81. package/dist/{displaybox.d.ts → examples.d.ts} +169 -5
  82. package/dist/index.d.ts +233 -2
  83. package/docs/API_CONTRACT.md +200 -144
  84. package/docs/ARCHITECTURE.md +32 -31
  85. package/docs/CAPABILITIES.md +40 -38
  86. package/docs/COMMANDS_EVENTS.md +65 -60
  87. package/docs/DOCUMENTATION_WORKFLOW.md +27 -29
  88. package/docs/INDEX.md +41 -41
  89. package/docs/INTEGRATION_PLAYBOOK.md +56 -54
  90. package/docs/PORTING_CHECKLIST.md +59 -58
  91. package/docs/STATE_INVARIANTS.md +60 -56
  92. package/docs/fixtures/basic-linked-elements.json +52 -52
  93. package/docs/fixtures/empty-state.json +11 -11
  94. package/docs/fixtures/nested-layout.json +54 -54
  95. package/package.json +13 -16
  96. package/src/displaybox/demos/AutoLayoutDemoTab.tsx +501 -0
  97. package/src/displaybox/demos/DeletionEventsDemoTab.tsx +147 -0
  98. package/src/displaybox/demos/EngineEventsDemoTab.tsx +151 -0
  99. package/src/displaybox/demos/EventHandlersDemoTab.tsx +110 -0
  100. package/src/displaybox/demos/ExternalDragDropDemoTab.tsx +261 -0
  101. package/src/displaybox/demos/LinkCancelDemoTab.tsx +238 -0
  102. package/src/displaybox/demos/ObstacleRoutingDemoTab.tsx +30 -0
  103. package/src/displaybox/demos/ShapeHoverControlsDemoTab.tsx +558 -0
  104. package/src/displaybox/demos/SimpleDemo.tsx +73 -0
  105. package/src/displaybox/demos/SvgPathDemoTab.tsx +327 -0
  106. package/src/displaybox/demos/TextLayoutDemoTab.tsx +386 -0
  107. package/src/displaybox/demos/autoLayoutDemo.ts +111 -0
  108. package/src/displaybox/demos/basicDemo.ts +131 -0
  109. package/src/displaybox/demos/childConstraintsDemo.ts +65 -0
  110. package/src/displaybox/demos/customDemo.ts +59 -0
  111. package/src/displaybox/demos/deletionEventsDemo.ts +91 -0
  112. package/src/displaybox/demos/engineEventsDemo.ts +64 -0
  113. package/src/displaybox/demos/eventHandlersDemo.ts +41 -0
  114. package/src/displaybox/demos/externalDragDropDemo.ts +28 -0
  115. package/src/displaybox/demos/gridOverlayDemo.ts +50 -0
  116. package/src/displaybox/demos/index.tsx +217 -0
  117. package/src/displaybox/demos/linkBendHandlesDemo.ts +143 -0
  118. package/src/displaybox/demos/linkCancelDemo.ts +56 -0
  119. package/src/displaybox/demos/linkPortCreationDemo.ts +46 -0
  120. package/src/displaybox/demos/multiLevelTreeDemo.ts +120 -0
  121. package/src/displaybox/demos/multipleElementsDemo.ts +62 -0
  122. package/src/displaybox/demos/nestedDemo.ts +78 -0
  123. package/src/displaybox/demos/obstacleRoutingDemo.ts +176 -0
  124. package/src/displaybox/demos/portBorderDemo.ts +98 -0
  125. package/src/displaybox/demos/portConstraintsDemo.ts +175 -0
  126. package/src/displaybox/demos/rotatedCreationDemo.ts +185 -0
  127. package/src/displaybox/demos/roundedRectRadiusDemo.ts +93 -0
  128. package/src/displaybox/demos/routingDemo.ts +57 -0
  129. package/src/displaybox/demos/selectionDemo.ts +49 -0
  130. package/src/displaybox/demos/shapeBorderMovementDemo.ts +126 -0
  131. package/src/displaybox/demos/shapeGalleryDemo.ts +73 -0
  132. package/src/displaybox/demos/shapeHoverControlsDemo.ts +172 -0
  133. package/src/displaybox/demos/shared.ts +161 -0
  134. package/src/displaybox/demos/svgPathDemo.ts +71 -0
  135. package/src/displaybox/demos/textDemo.ts +62 -0
  136. package/src/displaybox/types.ts +66 -0
  137. package/src/examples/index.ts +21 -0
  138. package/displaybox/package.json +0 -5
  139. package/dist/cjs/types/components/BBoxDebugger.d.ts +0 -6
  140. package/dist/cjs/types/components/CloseIcon.d.ts +0 -6
  141. package/dist/cjs/types/components/LinkDebugger.d.ts +0 -8
  142. package/dist/cjs/types/components/editor.d.ts +0 -9
  143. package/dist/cjs/types/components/elementShowbox.d.ts +0 -3
  144. package/dist/cjs/types/components/elements/dragDropHandlerElement.d.ts +0 -7
  145. package/dist/cjs/types/components/elements/element.d.ts +0 -4
  146. package/dist/cjs/types/components/elements/elementWrapper.d.ts +0 -18
  147. package/dist/cjs/types/components/links/elementLink.d.ts +0 -4
  148. package/dist/cjs/types/components/links/index.d.ts +0 -2
  149. package/dist/cjs/types/components/links/point.d.ts +0 -11
  150. package/dist/cjs/types/components/paper.d.ts +0 -49
  151. package/dist/cjs/types/components/ports/index.d.ts +0 -2
  152. package/dist/cjs/types/components/ports/port.d.ts +0 -3
  153. package/dist/cjs/types/components/shapeShowbox.d.ts +0 -3
  154. package/dist/cjs/types/components/shapes/circle.d.ts +0 -9
  155. package/dist/cjs/types/components/shapes/customShape.d.ts +0 -7
  156. package/dist/cjs/types/components/shapes/halfCircle.d.ts +0 -9
  157. package/dist/cjs/types/components/shapes/index.d.ts +0 -7
  158. package/dist/cjs/types/components/shapes/polygon.d.ts +0 -8
  159. package/dist/cjs/types/components/shapes/rectangle.d.ts +0 -10
  160. package/dist/cjs/types/components/shapes/rectangularFrame.d.ts +0 -12
  161. package/dist/cjs/types/components/shapes/shapeWrapper.d.ts +0 -8
  162. package/dist/cjs/types/components/svgUtilsShowbox.d.ts +0 -3
  163. package/dist/cjs/types/components/texts/index.d.ts +0 -2
  164. package/dist/cjs/types/components/texts/text.d.ts +0 -4
  165. package/dist/cjs/types/components/viewControls/ruler.d.ts +0 -10
  166. package/dist/cjs/types/components/viewControls/selectionFrame.d.ts +0 -4
  167. package/dist/cjs/types/contexts/editorConfigurationContext.d.ts +0 -4
  168. package/dist/cjs/types/contexts/paperEventEmitterContext.d.ts +0 -45
  169. package/dist/cjs/types/contexts/zoomContext.d.ts +0 -16
  170. package/dist/cjs/types/contexts/zoomPanContext.d.ts +0 -23
  171. package/dist/cjs/types/displaybox/index.d.ts +0 -3
  172. package/dist/cjs/types/hooks/useKeyboardCommands.d.ts +0 -5
  173. package/dist/cjs/types/hooks/useSelectionFrame.d.ts +0 -6
  174. package/dist/cjs/types/logs/Logger.d.ts +0 -14
  175. package/dist/cjs/types/logs/configureLogger.d.ts +0 -4
  176. package/dist/cjs/types/main.d.ts +0 -8
  177. package/dist/cjs/types/mocks/customPortWithBuiltinShape.d.ts +0 -2
  178. package/dist/cjs/types/mocks/diamondElement.d.ts +0 -11
  179. package/dist/cjs/types/mocks/editorContext.d.ts +0 -2
  180. package/dist/cjs/types/mocks/editorContextElementMoveAsPort.d.ts +0 -2
  181. package/dist/cjs/types/mocks/editorContextForOptimizeRerender.d.ts +0 -2
  182. package/dist/cjs/types/mocks/editorContextMultipleElements.d.ts +0 -2
  183. package/dist/cjs/types/mocks/editorContextSingleElement.d.ts +0 -2
  184. package/dist/cjs/types/mocks/editorContextSingleElementTestEvents.d.ts +0 -2
  185. package/dist/cjs/types/mocks/editorContextTriggerRenderElements.d.ts +0 -2
  186. package/dist/cjs/types/mocks/editorContextWithElementAnchorCenter.d.ts +0 -2
  187. package/dist/cjs/types/mocks/port1.d.ts +0 -5
  188. package/dist/cjs/types/mocks/port2.d.ts +0 -5
  189. package/dist/cjs/types/mocks/portIn.d.ts +0 -4
  190. package/dist/cjs/types/mocks/rectangularFrameElement.d.ts +0 -11
  191. package/dist/cjs/types/mocks/textsWithFlexBox.d.ts +0 -2
  192. package/dist/cjs/types/models/IEditorConfiguration.d.ts +0 -7
  193. package/dist/cjs/types/models/IEditorContext.d.ts +0 -56
  194. package/dist/cjs/types/models/IElement.d.ts +0 -46
  195. package/dist/cjs/types/models/IElementLink.d.ts +0 -23
  196. package/dist/cjs/types/models/IElementLinkProps.d.ts +0 -31
  197. package/dist/cjs/types/models/IElementProps.d.ts +0 -36
  198. package/dist/cjs/types/models/IElementSelectorProps.d.ts +0 -25
  199. package/dist/cjs/types/models/IFlexboxType.d.ts +0 -20
  200. package/dist/cjs/types/models/IPaperBounds.d.ts +0 -6
  201. package/dist/cjs/types/models/IPort.d.ts +0 -13
  202. package/dist/cjs/types/models/IPortProps.d.ts +0 -31
  203. package/dist/cjs/types/models/IResizability.d.ts +0 -4
  204. package/dist/cjs/types/models/IShape.d.ts +0 -18
  205. package/dist/cjs/types/models/IText.d.ts +0 -20
  206. package/dist/cjs/types/models/ITextProps.d.ts +0 -25
  207. package/dist/cjs/types/models/callbackTypes.d.ts +0 -21
  208. package/dist/cjs/types/models/enums/PositioningAnchor.d.ts +0 -4
  209. package/dist/cjs/types/models/enums/ResizingDirection.d.ts +0 -10
  210. package/dist/cjs/types/models/enums/SubObjectDirection.d.ts +0 -4
  211. package/dist/cjs/types/models/enums/TextAlign.d.ts +0 -5
  212. package/dist/cjs/types/models/enums/index.d.ts +0 -4
  213. package/dist/cjs/types/models/implementations/CustomPort.d.ts +0 -7
  214. package/dist/cjs/types/models/implementations/CustomPortFromJSXElement.d.ts +0 -7
  215. package/dist/cjs/types/models/implementations/CustomPortFromShape.d.ts +0 -7
  216. package/dist/cjs/types/models/implementations/EditorContext.d.ts +0 -67
  217. package/dist/cjs/types/models/implementations/Element.d.ts +0 -61
  218. package/dist/cjs/types/models/implementations/ElementLink.d.ts +0 -25
  219. package/dist/cjs/types/models/implementations/Port.d.ts +0 -22
  220. package/dist/cjs/types/models/implementations/Text.d.ts +0 -20
  221. package/dist/cjs/types/models/implementations/diamondElement.d.ts +0 -11
  222. package/dist/cjs/types/models/implementations/index.d.ts +0 -6
  223. package/dist/cjs/types/models/implementations/rectangularFrameElement.d.ts +0 -11
  224. package/dist/cjs/types/models/index.d.ts +0 -19
  225. package/dist/cjs/types/models/position.d.ts +0 -4
  226. package/dist/cjs/types/models/size.d.ts +0 -4
  227. package/dist/cjs/types/utils/constants.d.ts +0 -54
  228. package/dist/cjs/types/utils/elementLinkUtil.d.ts +0 -2
  229. package/dist/cjs/types/utils/generateUniqueId.d.ts +0 -1
  230. package/dist/cjs/types/utils/index.d.ts +0 -9
  231. package/dist/cjs/types/utils/lineUtil.d.ts +0 -3
  232. package/dist/cjs/types/utils/mathUtil.d.ts +0 -6
  233. package/dist/cjs/types/utils/pathUtil.d.ts +0 -13
  234. package/dist/cjs/types/utils/portSlideRailSVGUtil.d.ts +0 -3
  235. package/dist/cjs/types/utils/positionUtil.d.ts +0 -55
  236. package/dist/cjs/types/utils/svgUtil.d.ts +0 -3
  237. package/dist/esm/displaybox.js.map +0 -1
  238. package/dist/esm/types/components/BBoxDebugger.d.ts +0 -6
  239. package/dist/esm/types/components/CloseIcon.d.ts +0 -6
  240. package/dist/esm/types/components/LinkDebugger.d.ts +0 -8
  241. package/dist/esm/types/components/editor.d.ts +0 -9
  242. package/dist/esm/types/components/elementShowbox.d.ts +0 -3
  243. package/dist/esm/types/components/elements/dragDropHandlerElement.d.ts +0 -7
  244. package/dist/esm/types/components/elements/element.d.ts +0 -4
  245. package/dist/esm/types/components/elements/elementWrapper.d.ts +0 -18
  246. package/dist/esm/types/components/links/elementLink.d.ts +0 -4
  247. package/dist/esm/types/components/links/index.d.ts +0 -2
  248. package/dist/esm/types/components/links/point.d.ts +0 -11
  249. package/dist/esm/types/components/paper.d.ts +0 -49
  250. package/dist/esm/types/components/ports/index.d.ts +0 -2
  251. package/dist/esm/types/components/ports/port.d.ts +0 -3
  252. package/dist/esm/types/components/shapeShowbox.d.ts +0 -3
  253. package/dist/esm/types/components/shapes/circle.d.ts +0 -9
  254. package/dist/esm/types/components/shapes/customShape.d.ts +0 -7
  255. package/dist/esm/types/components/shapes/halfCircle.d.ts +0 -9
  256. package/dist/esm/types/components/shapes/index.d.ts +0 -7
  257. package/dist/esm/types/components/shapes/polygon.d.ts +0 -8
  258. package/dist/esm/types/components/shapes/rectangle.d.ts +0 -10
  259. package/dist/esm/types/components/shapes/rectangularFrame.d.ts +0 -12
  260. package/dist/esm/types/components/shapes/shapeWrapper.d.ts +0 -8
  261. package/dist/esm/types/components/svgUtilsShowbox.d.ts +0 -3
  262. package/dist/esm/types/components/texts/index.d.ts +0 -2
  263. package/dist/esm/types/components/texts/text.d.ts +0 -4
  264. package/dist/esm/types/components/viewControls/ruler.d.ts +0 -10
  265. package/dist/esm/types/components/viewControls/selectionFrame.d.ts +0 -4
  266. package/dist/esm/types/contexts/editorConfigurationContext.d.ts +0 -4
  267. package/dist/esm/types/contexts/paperEventEmitterContext.d.ts +0 -45
  268. package/dist/esm/types/contexts/zoomContext.d.ts +0 -16
  269. package/dist/esm/types/contexts/zoomPanContext.d.ts +0 -23
  270. package/dist/esm/types/displaybox/index.d.ts +0 -3
  271. package/dist/esm/types/hooks/useKeyboardCommands.d.ts +0 -5
  272. package/dist/esm/types/hooks/useSelectionFrame.d.ts +0 -6
  273. package/dist/esm/types/logs/Logger.d.ts +0 -14
  274. package/dist/esm/types/logs/configureLogger.d.ts +0 -4
  275. package/dist/esm/types/main.d.ts +0 -8
  276. package/dist/esm/types/mocks/customPortWithBuiltinShape.d.ts +0 -2
  277. package/dist/esm/types/mocks/diamondElement.d.ts +0 -11
  278. package/dist/esm/types/mocks/editorContext.d.ts +0 -2
  279. package/dist/esm/types/mocks/editorContextElementMoveAsPort.d.ts +0 -2
  280. package/dist/esm/types/mocks/editorContextForOptimizeRerender.d.ts +0 -2
  281. package/dist/esm/types/mocks/editorContextMultipleElements.d.ts +0 -2
  282. package/dist/esm/types/mocks/editorContextSingleElement.d.ts +0 -2
  283. package/dist/esm/types/mocks/editorContextSingleElementTestEvents.d.ts +0 -2
  284. package/dist/esm/types/mocks/editorContextTriggerRenderElements.d.ts +0 -2
  285. package/dist/esm/types/mocks/editorContextWithElementAnchorCenter.d.ts +0 -2
  286. package/dist/esm/types/mocks/port1.d.ts +0 -5
  287. package/dist/esm/types/mocks/port2.d.ts +0 -5
  288. package/dist/esm/types/mocks/portIn.d.ts +0 -4
  289. package/dist/esm/types/mocks/rectangularFrameElement.d.ts +0 -11
  290. package/dist/esm/types/mocks/textsWithFlexBox.d.ts +0 -2
  291. package/dist/esm/types/models/IEditorConfiguration.d.ts +0 -7
  292. package/dist/esm/types/models/IEditorContext.d.ts +0 -56
  293. package/dist/esm/types/models/IElement.d.ts +0 -46
  294. package/dist/esm/types/models/IElementLink.d.ts +0 -23
  295. package/dist/esm/types/models/IElementLinkProps.d.ts +0 -31
  296. package/dist/esm/types/models/IElementProps.d.ts +0 -36
  297. package/dist/esm/types/models/IElementSelectorProps.d.ts +0 -25
  298. package/dist/esm/types/models/IFlexboxType.d.ts +0 -20
  299. package/dist/esm/types/models/IPaperBounds.d.ts +0 -6
  300. package/dist/esm/types/models/IPort.d.ts +0 -13
  301. package/dist/esm/types/models/IPortProps.d.ts +0 -31
  302. package/dist/esm/types/models/IResizability.d.ts +0 -4
  303. package/dist/esm/types/models/IShape.d.ts +0 -18
  304. package/dist/esm/types/models/IText.d.ts +0 -20
  305. package/dist/esm/types/models/ITextProps.d.ts +0 -25
  306. package/dist/esm/types/models/callbackTypes.d.ts +0 -21
  307. package/dist/esm/types/models/enums/PositioningAnchor.d.ts +0 -4
  308. package/dist/esm/types/models/enums/ResizingDirection.d.ts +0 -10
  309. package/dist/esm/types/models/enums/SubObjectDirection.d.ts +0 -4
  310. package/dist/esm/types/models/enums/TextAlign.d.ts +0 -5
  311. package/dist/esm/types/models/enums/index.d.ts +0 -4
  312. package/dist/esm/types/models/implementations/CustomPort.d.ts +0 -7
  313. package/dist/esm/types/models/implementations/CustomPortFromJSXElement.d.ts +0 -7
  314. package/dist/esm/types/models/implementations/CustomPortFromShape.d.ts +0 -7
  315. package/dist/esm/types/models/implementations/EditorContext.d.ts +0 -67
  316. package/dist/esm/types/models/implementations/Element.d.ts +0 -61
  317. package/dist/esm/types/models/implementations/ElementLink.d.ts +0 -25
  318. package/dist/esm/types/models/implementations/Port.d.ts +0 -22
  319. package/dist/esm/types/models/implementations/Text.d.ts +0 -20
  320. package/dist/esm/types/models/implementations/diamondElement.d.ts +0 -11
  321. package/dist/esm/types/models/implementations/index.d.ts +0 -6
  322. package/dist/esm/types/models/implementations/rectangularFrameElement.d.ts +0 -11
  323. package/dist/esm/types/models/index.d.ts +0 -19
  324. package/dist/esm/types/models/position.d.ts +0 -4
  325. package/dist/esm/types/models/size.d.ts +0 -4
  326. package/dist/esm/types/utils/constants.d.ts +0 -54
  327. package/dist/esm/types/utils/elementLinkUtil.d.ts +0 -2
  328. package/dist/esm/types/utils/generateUniqueId.d.ts +0 -1
  329. package/dist/esm/types/utils/index.d.ts +0 -9
  330. package/dist/esm/types/utils/lineUtil.d.ts +0 -3
  331. package/dist/esm/types/utils/mathUtil.d.ts +0 -6
  332. package/dist/esm/types/utils/pathUtil.d.ts +0 -13
  333. package/dist/esm/types/utils/portSlideRailSVGUtil.d.ts +0 -3
  334. package/dist/esm/types/utils/positionUtil.d.ts +0 -55
  335. package/dist/esm/types/utils/svgUtil.d.ts +0 -3
@@ -0,0 +1,238 @@
1
+ import React, { useEffect, useMemo, useRef, useState } from 'react';
2
+ import type { ElementLinkConnectingEvent, ElementLinkEndedEvent } from '../../api';
3
+ import DisplayBoxControls from '../DisplayBoxControls';
4
+ import DisplayBoxStage from '../DisplayBoxStage';
5
+ import useDemoControls from '../useDemoControls';
6
+ import useDemoEditor from '../useDemoEditor';
7
+ import useOffsetSequence from '../useOffsetSequence';
8
+ import type { DemoActionHelpers } from '../types';
9
+ import { linkCancelDemoConfig } from './linkCancelDemo';
10
+
11
+ type LinkEndedWithMeta = ElementLinkEndedEvent & { cancelledByHost?: boolean };
12
+ type LinkConnectingSnapshot = Omit<ElementLinkConnectingEvent, 'cancel'>;
13
+
14
+ const badgeStyle: React.CSSProperties = {
15
+ display: 'inline-flex',
16
+ alignItems: 'center',
17
+ gap: 8,
18
+ padding: '6px 10px',
19
+ borderRadius: 10,
20
+ fontWeight: 600,
21
+ background: '#f3f4f6',
22
+ border: '1px solid #d0d5dd',
23
+ };
24
+
25
+ const LinkCancelDemo = () => {
26
+ const demo = linkCancelDemoConfig;
27
+ const { containerRef, editorRef, diagramState, selection, snapEnabled, setSnapEnabled } = useDemoEditor({
28
+ createState: demo.createState,
29
+ elementShapes: demo.elementShapes,
30
+ portShapes: demo.portShapes,
31
+ });
32
+
33
+ const nextOffset = useOffsetSequence();
34
+ const actionHelpers: DemoActionHelpers = useMemo(() => ({ nextOffset }), [nextOffset]);
35
+
36
+ const controls = useDemoControls({
37
+ demo,
38
+ editorRef,
39
+ diagramState,
40
+ selection,
41
+ snapEnabled,
42
+ setSnapEnabled,
43
+ actionHelpers,
44
+ });
45
+
46
+ const [lastEvent, setLastEvent] = useState<LinkEndedWithMeta | null>(null);
47
+ const [history, setHistory] = useState<LinkEndedWithMeta[]>([]);
48
+ const [hostCancels, setHostCancels] = useState<boolean>(true);
49
+ const [lastConnecting, setLastConnecting] = useState<LinkConnectingSnapshot | null>(null);
50
+ const cancelledByHostRef = useRef(false);
51
+
52
+ useEffect(() => {
53
+ const editor = editorRef.current;
54
+ if (!editor) return undefined;
55
+ setLastEvent(null);
56
+ setHistory([]);
57
+ return editor.on('elementLinkEnded', (payload) => {
58
+ const withMeta: LinkEndedWithMeta = {
59
+ ...payload,
60
+ cancelledByHost: payload.cancelled && cancelledByHostRef.current,
61
+ };
62
+ cancelledByHostRef.current = false;
63
+ setLastEvent(withMeta);
64
+ setHistory((prev) => [withMeta, ...prev].slice(0, 6));
65
+ });
66
+ }, [editorRef]);
67
+
68
+ useEffect(() => {
69
+ const editor = editorRef.current;
70
+ if (!editor) return undefined;
71
+ setLastConnecting(null);
72
+ return editor.on('elementLinkConnecting', (payload) => {
73
+ cancelledByHostRef.current = false;
74
+ if (hostCancels) {
75
+ payload.cancel();
76
+ cancelledByHostRef.current = true;
77
+ }
78
+ setLastConnecting({
79
+ sourcePortId: payload.sourcePortId,
80
+ sourceElementId: payload.sourceElementId,
81
+ targetPortId: payload.targetPortId,
82
+ targetElementId: payload.targetElementId,
83
+ cancelled: payload.cancelled,
84
+ });
85
+ });
86
+ }, [editorRef, hostCancels]);
87
+
88
+ const statusLabel = lastEvent
89
+ ? lastEvent.cancelled
90
+ ? lastEvent.cancelledByHost
91
+ ? 'Cancelled by host'
92
+ : 'Cancelled'
93
+ : 'Link created'
94
+ : 'Awaiting drag';
95
+ const statusColor = lastEvent ? (lastEvent.cancelled ? '#b42318' : '#027a48') : '#444';
96
+ const statusTone = lastEvent ? (lastEvent.cancelled ? '#fee4e2' : '#eaf6ec') : '#f3f4f6';
97
+
98
+ return (
99
+ <section>
100
+ <div style={{ marginBottom: 12 }}>
101
+ <h2 style={{ marginTop: 0, marginBottom: 4 }}>{demo.title}</h2>
102
+ <p style={{ marginTop: 0 }}>
103
+ Start a link drag from the left port and enter the right port area to complete immediately (before mouse
104
+ up). Drop on empty canvas to cancel. Use the toggle to simulate host-driven cancellation; payloads from
105
+ <code> elementLinkConnecting</code> and <code>elementLinkEnded</code> appear below.
106
+ </p>
107
+ </div>
108
+ <DisplayBoxControls
109
+ actions={demo.actions}
110
+ snapEnabled={controls.snapEnabled}
111
+ selectedLinkRouting={controls.selectedLinkRouting}
112
+ canToggleLinkRouting={controls.canToggleLinkRouting}
113
+ onReload={controls.handleReload}
114
+ onZoomIn={controls.handleZoomIn}
115
+ onZoomOut={controls.handleZoomOut}
116
+ onResetViewport={controls.handleResetViewport}
117
+ onToggleSnap={controls.handleToggleSnap}
118
+ onManualRender={controls.handleManualRender}
119
+ onToggleLinkRouting={controls.handleToggleLinkRouting}
120
+ onAction={controls.handleAction}
121
+ />
122
+ <div style={{ display: 'grid', gap: 12, marginBottom: 12 }}>
123
+ <div style={{ display: 'flex', flexWrap: 'wrap', gap: 12, alignItems: 'center' }}>
124
+ <span style={{ ...badgeStyle, background: statusTone, color: statusColor, borderColor: statusColor }}>
125
+ <span
126
+ style={{
127
+ width: 10,
128
+ height: 10,
129
+ borderRadius: '50%',
130
+ background: statusColor,
131
+ display: 'inline-block',
132
+ }}
133
+ />
134
+ {statusLabel}
135
+ </span>
136
+ <label style={{ display: 'inline-flex', alignItems: 'center', gap: 8, fontSize: 13 }}>
137
+ <input
138
+ type="checkbox"
139
+ checked={hostCancels}
140
+ onChange={(event) => setHostCancels(event.target.checked)}
141
+ />
142
+ Cancel link drops from host
143
+ </label>
144
+ {lastEvent && (
145
+ <div style={{ fontSize: 12, color: '#333' }}>
146
+ {lastEvent.cancelled
147
+ ? lastEvent.cancelledByHost
148
+ ? 'Host cancelled this drop.'
149
+ : 'Drop missed a valid port.'
150
+ : `Link ${lastEvent.linkId ?? '(generated)'} connected ${lastEvent.sourcePortId} → ${lastEvent.targetPortId}`}
151
+ </div>
152
+ )}
153
+ </div>
154
+ <div style={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 12 }}>
155
+ <div>
156
+ <label style={{ display: 'block', fontWeight: 600, marginBottom: 6 }}>Latest connecting payload</label>
157
+ <textarea
158
+ readOnly
159
+ value={lastConnecting ? JSON.stringify(lastConnecting, null, 2) : ''}
160
+ placeholder="Hover a destination port to see elementLinkConnecting."
161
+ style={{
162
+ width: '100%',
163
+ minHeight: 170,
164
+ padding: '8px 10px',
165
+ borderRadius: 8,
166
+ border: '1px solid #d0d5dd',
167
+ background: '#fff',
168
+ fontFamily:
169
+ 'ui-monospace, SFMono-Regular, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace',
170
+ fontSize: 12,
171
+ resize: 'vertical',
172
+ }}
173
+ />
174
+ </div>
175
+ <div>
176
+ <label style={{ display: 'block', fontWeight: 600, marginBottom: 6 }}>Latest ended payload</label>
177
+ <textarea
178
+ readOnly
179
+ value={lastEvent ? JSON.stringify(lastEvent, null, 2) : ''}
180
+ placeholder="Drag a link to see the payload."
181
+ style={{
182
+ width: '100%',
183
+ minHeight: 170,
184
+ padding: '8px 10px',
185
+ borderRadius: 8,
186
+ border: '1px solid #d0d5dd',
187
+ background: '#fff',
188
+ fontFamily:
189
+ 'ui-monospace, SFMono-Regular, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace',
190
+ fontSize: 12,
191
+ resize: 'vertical',
192
+ }}
193
+ />
194
+ </div>
195
+ <div>
196
+ <label style={{ display: 'block', fontWeight: 600, marginBottom: 6 }}>Recent drags</label>
197
+ <div
198
+ style={{
199
+ display: 'grid',
200
+ gap: 8,
201
+ padding: 8,
202
+ borderRadius: 8,
203
+ border: '1px solid #e0e0e0',
204
+ background: '#fafafa',
205
+ }}
206
+ >
207
+ {history.length === 0 && <div style={{ color: '#666', fontSize: 12 }}>No drags yet.</div>}
208
+ {history.map((event, index) => (
209
+ <div
210
+ key={`${event.sourcePortId}-${event.targetPortId ?? 'none'}-${index}`}
211
+ style={{
212
+ padding: 8,
213
+ borderRadius: 6,
214
+ background: event.cancelled ? '#fff4f3' : '#f1f8f4',
215
+ border: `1px solid ${event.cancelled ? '#f2b8b5' : '#b9dfc7'}`,
216
+ fontSize: 12,
217
+ }}
218
+ >
219
+ <div style={{ fontWeight: 600, marginBottom: 4 }}>
220
+ {event.cancelled ? (event.cancelledByHost ? 'Cancelled by host' : 'Cancelled') : 'Created'} —{' '}
221
+ {new Date().toLocaleTimeString()}
222
+ </div>
223
+ <div>sourcePortId: {event.sourcePortId}</div>
224
+ <div>targetPortId: {event.targetPortId ?? '—'}</div>
225
+ <div>linkId: {event.linkId ?? '—'}</div>
226
+ {event.targetElementId && <div>targetElementId: {event.targetElementId}</div>}
227
+ </div>
228
+ ))}
229
+ </div>
230
+ </div>
231
+ </div>
232
+ </div>
233
+ <DisplayBoxStage containerRef={containerRef} />
234
+ </section>
235
+ );
236
+ };
237
+
238
+ export default LinkCancelDemo;
@@ -0,0 +1,30 @@
1
+ import React from 'react';
2
+ import SimpleDemo from './SimpleDemo';
3
+ import { obstacleRoutingDemoConfig } from './obstacleRoutingDemo';
4
+
5
+ const ObstacleRoutingDemo = () => (
6
+ <SimpleDemo
7
+ demo={obstacleRoutingDemoConfig}
8
+ beforeStage={
9
+ <div
10
+ style={{
11
+ marginBottom: 12,
12
+ padding: '10px 12px',
13
+ borderRadius: 8,
14
+ border: '1px solid #2d2d2d',
15
+ background: '#f4f4f4',
16
+ }}
17
+ >
18
+ <strong>Expected routing behavior</strong>
19
+ <ul style={{ margin: '6px 0 0 16px' }}>
20
+ <li>Links between top nodes should route around the blocking element.</li>
21
+ <li>Sibling links inside a shared parent should ignore the parent as an obstacle.</li>
22
+ <li>Parent-child links should stay within the parent and avoid the child interior when ports are on edges.</li>
23
+ <li>Grandchild links should ignore shared ancestors (parent + grandparent containers).</li>
24
+ </ul>
25
+ </div>
26
+ }
27
+ />
28
+ );
29
+
30
+ export default ObstacleRoutingDemo;