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
@@ -1,6 +1,4 @@
1
- import React$1, { CSSProperties } from 'react';
2
-
3
- declare const DisplayBox: () => React$1.JSX.Element;
1
+ import { CSSProperties } from 'react';
4
2
 
5
3
  type Point = {
6
4
  x: number;
@@ -24,6 +22,101 @@ type DiagramContainer = {
24
22
  getBoundingClientRect: () => ClientRectLike;
25
23
  };
26
24
  type MoveConstraint = 'free' | 'inside' | 'border';
25
+ type BorderSide = 'left' | 'right' | 'top' | 'bottom';
26
+ type HostAnchorPreset = 'vertices' | 'cardinal';
27
+ type PortAnchor = {
28
+ id: string;
29
+ position: Point;
30
+ side?: BorderSide;
31
+ normal?: Point;
32
+ meta?: Record<string, unknown>;
33
+ };
34
+ type PortAnchorConstraint = {
35
+ preset: HostAnchorPreset;
36
+ fallback?: 'nearest';
37
+ };
38
+ type ResolvePortAnchorsOptions = {
39
+ preset: HostAnchorPreset;
40
+ };
41
+ type ShapeVertexTarget = {
42
+ id: string;
43
+ position: Point;
44
+ };
45
+ type ShapeEdgeTarget = {
46
+ id: string;
47
+ start: Point;
48
+ end: Point;
49
+ midpoint: Point;
50
+ };
51
+ declare enum EllipseMidPoint {
52
+ top = "top",
53
+ right = "right",
54
+ bottom = "bottom",
55
+ left = "left"
56
+ }
57
+ type ShapeEllipseMidPointTarget = {
58
+ id: EllipseMidPoint;
59
+ ellipseMidPoint: EllipseMidPoint;
60
+ position: Point;
61
+ };
62
+ type ShapeHoverGeometry = {
63
+ vertices: ShapeVertexTarget[];
64
+ edges: ShapeEdgeTarget[];
65
+ };
66
+ type HoverControlIcon = {
67
+ svgPath: string;
68
+ size?: Size;
69
+ style?: Record<string, unknown>;
70
+ };
71
+ type ShapeControlTargetKind = 'vertex' | 'edge' | 'midpoint' | 'ellipse-midpoint';
72
+ type ShapeControlVisibilityTrigger = 'element-hover' | 'target-hover';
73
+ type ShapeControlDefinition = {
74
+ id: string;
75
+ targetKind: ShapeControlTargetKind;
76
+ icon: HoverControlIcon;
77
+ targetIndices?: number[];
78
+ ellipseMidPoints?: EllipseMidPoint | EllipseMidPoint[];
79
+ allowAllTargets?: boolean;
80
+ visibilityTriggers?: ShapeControlVisibilityTrigger[];
81
+ lineStyle?: Record<string, unknown>;
82
+ tolerance?: number;
83
+ };
84
+ /**
85
+ * @deprecated Use ShapeControlDefinition with targetKind='edge'.
86
+ */
87
+ type EdgeHoverControl = {
88
+ kind: 'edge';
89
+ icon: HoverControlIcon;
90
+ lineStyle?: Record<string, unknown>;
91
+ tolerance?: number;
92
+ };
93
+ /**
94
+ * @deprecated Use ShapeControlDefinition with targetKind='vertex'.
95
+ */
96
+ type VertexHoverControl = {
97
+ kind: 'vertex';
98
+ icon: HoverControlIcon;
99
+ tolerance?: number;
100
+ };
101
+ type ElementShapeHoverControls = {
102
+ controls?: ShapeControlDefinition[];
103
+ /**
104
+ * @deprecated Legacy singleton edge control. Use controls[] instead.
105
+ */
106
+ edge?: EdgeHoverControl;
107
+ /**
108
+ * @deprecated Legacy singleton vertex control. Use controls[] instead.
109
+ */
110
+ vertex?: VertexHoverControl;
111
+ /**
112
+ * @deprecated Legacy resolution preference for singleton edge/vertex controls.
113
+ */
114
+ priority?: 'vertex-first';
115
+ };
116
+ type ElementPortMovementPolicy = {
117
+ moveMode: MoveConstraint | 'anchors';
118
+ anchorConstraint?: PortAnchorConstraint;
119
+ };
27
120
  type LinkRoutingMode = 'auto' | 'manual';
28
121
  type AnchorReference = 'top-left' | 'center';
29
122
  type RerouteLinksOptions = {
@@ -31,6 +124,11 @@ type RerouteLinksOptions = {
31
124
  };
32
125
  type ElementLayoutMode = 'manual' | 'horizontal' | 'vertical';
33
126
  type ElementLayoutAlign = 'start' | 'center' | 'end';
127
+ type ElementLayoutChildFitMainAxis = 'none' | 'distribute';
128
+ type ElementLayoutChildFitCrossAxis = 'none' | 'stretch';
129
+ type TextLayoutBoundsMode = 'owner-width' | 'owner-box' | 'fixed';
130
+ type TextLayoutWrapMode = 'none' | 'word' | 'char';
131
+ type TextLayoutOverflowMode = 'clip' | 'ellipsis-end' | 'ellipsis-middle' | 'ellipsis-start';
34
132
  type ElementLayout = {
35
133
  mode: ElementLayoutMode;
36
134
  padding?: number | {
@@ -39,6 +137,18 @@ type ElementLayout = {
39
137
  };
40
138
  gap?: number;
41
139
  align?: ElementLayoutAlign;
140
+ childFitMainAxis?: ElementLayoutChildFitMainAxis;
141
+ childFitCrossAxis?: ElementLayoutChildFitCrossAxis;
142
+ childFitMinSize?: Partial<Size>;
143
+ childFitMaxSize?: Partial<Size>;
144
+ };
145
+ type TextLayout = {
146
+ boundsMode?: TextLayoutBoundsMode;
147
+ wrap?: TextLayoutWrapMode;
148
+ overflow?: TextLayoutOverflowMode;
149
+ padding?: number;
150
+ maxLines?: number;
151
+ fixedSize?: Size;
42
152
  };
43
153
  type ElementDropEvent = {
44
154
  elementId: string;
@@ -72,6 +182,7 @@ type ElementData = {
72
182
  moveMode?: MoveConstraint;
73
183
  anchorCenter?: boolean;
74
184
  layout?: ElementLayout;
185
+ portMovement?: ElementPortMovementPolicy;
75
186
  };
76
187
  type PortData = {
77
188
  id: string;
@@ -83,6 +194,8 @@ type PortData = {
83
194
  textIds?: string[];
84
195
  moveMode?: MoveConstraint;
85
196
  anchorCenter?: boolean;
197
+ orientToHostBorder?: boolean;
198
+ currentAnchorId?: string;
86
199
  };
87
200
  type ShapeDrawContext = {
88
201
  ctx: CanvasRenderingContext2D;
@@ -104,6 +217,10 @@ type TextData = {
104
217
  size?: Size;
105
218
  style?: Record<string, unknown>;
106
219
  ownerId?: string | null;
220
+ layout?: TextLayout;
221
+ displayContent?: string;
222
+ displayOffset?: Point;
223
+ displayClipSize?: Size;
107
224
  };
108
225
  type DiagramState = {
109
226
  elements: ElementData[];
@@ -176,6 +293,26 @@ type ElementResizedEvent = {
176
293
  type ElementDeletedEvent = {
177
294
  elementId: string;
178
295
  };
296
+ type PortDeletedEvent = {
297
+ portId: string;
298
+ elementId: string;
299
+ };
300
+ type LinkDeletedEvent = {
301
+ linkId: string;
302
+ sourcePortId: string;
303
+ targetPortId: string;
304
+ };
305
+ type TextDeletedEvent = {
306
+ textId: string;
307
+ ownerId?: string | null;
308
+ };
309
+ type TextUpdatedEvent = {
310
+ textId: string;
311
+ ownerId?: string | null;
312
+ content: string;
313
+ displayContent: string;
314
+ reason: 'content' | 'layout';
315
+ };
179
316
  type ElementLinkStartedEvent = {
180
317
  sourcePortId: string;
181
318
  sourceElementId: string;
@@ -222,6 +359,10 @@ type EngineEventMap = {
222
359
  elementMoved: ElementMovedEvent;
223
360
  elementResized: ElementResizedEvent;
224
361
  elementDeleted: ElementDeletedEvent;
362
+ portDeleted: PortDeletedEvent;
363
+ linkDeleted: LinkDeletedEvent;
364
+ textDeleted: TextDeletedEvent;
365
+ textUpdated: TextUpdatedEvent;
225
366
  elementSelected: ElementSelectedEvent;
226
367
  elementLinkStarted: ElementLinkStartedEvent;
227
368
  elementLinkConnecting: ElementLinkConnectingEvent;
@@ -266,10 +407,16 @@ type DiagramEngineHandle = {
266
407
  setSnapping: (snapper: unknown) => void;
267
408
  registerShape: (shape: {
268
409
  id: string;
410
+ baseRotation?: number;
269
411
  draw?: (context: ShapeDrawContext) => void;
270
412
  createNode?: (model: ElementData | PortData) => unknown;
271
413
  svgPath?: string;
272
414
  svgSize?: Size;
415
+ projectToBorder?: (point: Point, rect: Rect) => Point;
416
+ resolveBorderSide?: (point: Point, rect: Rect) => BorderSide;
417
+ resolvePortAnchors?: (rect: Rect, options: ResolvePortAnchorsOptions) => PortAnchor[];
418
+ resolveHoverGeometry?: (rect: Rect) => ShapeHoverGeometry | undefined;
419
+ resolveEllipseMidPoints?: (rect: Rect) => ShapeEllipseMidPointTarget[] | undefined;
273
420
  }) => void;
274
421
  render: () => void;
275
422
  };
@@ -296,13 +443,16 @@ interface RouterStrategy {
296
443
  route(source: Point, target: Point, context?: RouteContext): Point[];
297
444
  }
298
445
 
446
+ type BuiltInShapeKind = 'rect' | 'circle' | 'ellipse' | 'diamond' | 'triangle' | 'pentagon' | 'hexagon';
447
+
299
448
  type SimpleShape = {
300
449
  id: string;
301
- kind: 'rect' | 'circle' | 'diamond' | 'triangle';
450
+ kind: BuiltInShapeKind;
302
451
  style?: Record<string, unknown>;
303
452
  };
304
453
  type DiagramEditorHandle = DiagramEngineHandle & {
305
454
  resize: (width: number, height: number) => void;
455
+ setElementShapeHoverControls: (controls?: ElementShapeHoverControls) => void;
306
456
  destroy: () => void;
307
457
  };
308
458
 
@@ -363,6 +513,20 @@ type DisplayBoxMetrics = {
363
513
  snapEnabled: boolean;
364
514
  };
365
515
 
516
+ declare const baseElementShapes: SimpleShape[];
517
+ declare const basePortShapes: SimpleShape[];
518
+ declare const customGalleryShapes: SimpleShape[];
519
+ declare const externalToolboxItems: ToolboxItem[];
520
+ declare const defaultGhostSize: {
521
+ width: number;
522
+ height: number;
523
+ };
524
+ declare const defaultSvgPath = "M10 10 H110 V90 H10 Z";
525
+ declare const defaultSvgPathSize: {
526
+ width: number;
527
+ height: number;
528
+ };
529
+
366
530
  declare const demoTabs: DemoDefinition[];
367
531
 
368
- export { type DemoAction, type DemoActionHelpers, type DemoConfig, type DemoDefinition, type DiagramCounts, DisplayBox, type DisplayBoxMetrics, type ToolboxItem, type ViewportSnapshot, demoTabs };
532
+ export { type DemoAction, type DemoActionHelpers, type DemoConfig, type DemoDefinition, type DiagramCounts, type DisplayBoxMetrics, type ToolboxItem, type ViewportSnapshot, baseElementShapes, basePortShapes, customGalleryShapes, defaultGhostSize, defaultSvgPath, defaultSvgPathSize, demoTabs, externalToolboxItems };
package/dist/index.d.ts CHANGED
@@ -20,6 +20,130 @@ type DiagramContainer = {
20
20
  getBoundingClientRect: () => ClientRectLike;
21
21
  };
22
22
  type MoveConstraint = 'free' | 'inside' | 'border';
23
+ type BorderSide$1 = 'left' | 'right' | 'top' | 'bottom';
24
+ type HostAnchorPreset = 'vertices' | 'cardinal';
25
+ type PortAnchor = {
26
+ id: string;
27
+ position: Point;
28
+ side?: BorderSide$1;
29
+ normal?: Point;
30
+ meta?: Record<string, unknown>;
31
+ };
32
+ type PortAnchorConstraint = {
33
+ preset: HostAnchorPreset;
34
+ fallback?: 'nearest';
35
+ };
36
+ type ResolvePortAnchorsOptions = {
37
+ preset: HostAnchorPreset;
38
+ };
39
+ type ShapeVertexTarget = {
40
+ id: string;
41
+ position: Point;
42
+ };
43
+ type ShapeEdgeTarget = {
44
+ id: string;
45
+ start: Point;
46
+ end: Point;
47
+ midpoint: Point;
48
+ };
49
+ declare enum EllipseMidPoint {
50
+ top = "top",
51
+ right = "right",
52
+ bottom = "bottom",
53
+ left = "left"
54
+ }
55
+ type ShapeEllipseMidPointTarget = {
56
+ id: EllipseMidPoint;
57
+ ellipseMidPoint: EllipseMidPoint;
58
+ position: Point;
59
+ };
60
+ type ShapeHoverGeometry = {
61
+ vertices: ShapeVertexTarget[];
62
+ edges: ShapeEdgeTarget[];
63
+ };
64
+ type HoverControlIcon = {
65
+ svgPath: string;
66
+ size?: Size;
67
+ style?: Record<string, unknown>;
68
+ };
69
+ type ShapeControlTargetKind = 'vertex' | 'edge' | 'midpoint' | 'ellipse-midpoint';
70
+ type ShapeControlVisibilityTrigger = 'element-hover' | 'target-hover';
71
+ type ShapeControlDefinition = {
72
+ id: string;
73
+ targetKind: ShapeControlTargetKind;
74
+ icon: HoverControlIcon;
75
+ targetIndices?: number[];
76
+ ellipseMidPoints?: EllipseMidPoint | EllipseMidPoint[];
77
+ allowAllTargets?: boolean;
78
+ visibilityTriggers?: ShapeControlVisibilityTrigger[];
79
+ lineStyle?: Record<string, unknown>;
80
+ tolerance?: number;
81
+ };
82
+ /**
83
+ * @deprecated Use ShapeControlDefinition with targetKind='edge'.
84
+ */
85
+ type EdgeHoverControl = {
86
+ kind: 'edge';
87
+ icon: HoverControlIcon;
88
+ lineStyle?: Record<string, unknown>;
89
+ tolerance?: number;
90
+ };
91
+ /**
92
+ * @deprecated Use ShapeControlDefinition with targetKind='vertex'.
93
+ */
94
+ type VertexHoverControl = {
95
+ kind: 'vertex';
96
+ icon: HoverControlIcon;
97
+ tolerance?: number;
98
+ };
99
+ type ElementShapeHoverControls = {
100
+ controls?: ShapeControlDefinition[];
101
+ /**
102
+ * @deprecated Legacy singleton edge control. Use controls[] instead.
103
+ */
104
+ edge?: EdgeHoverControl;
105
+ /**
106
+ * @deprecated Legacy singleton vertex control. Use controls[] instead.
107
+ */
108
+ vertex?: VertexHoverControl;
109
+ /**
110
+ * @deprecated Legacy resolution preference for singleton edge/vertex controls.
111
+ */
112
+ priority?: 'vertex-first';
113
+ };
114
+ type ElementShapeControlEventType = 'click' | 'drag-start' | 'drag-move' | 'drag-end';
115
+ type ElementShapeControlDragEvent = {
116
+ sessionId: string;
117
+ startPointer: EnginePointerInfo;
118
+ delta: Point;
119
+ };
120
+ type ElementShapeHoverControlInteractionEvent = {
121
+ eventType: ElementShapeControlEventType;
122
+ controlId: string;
123
+ elementId: string;
124
+ targetKind: ShapeControlTargetKind;
125
+ targetIndex: number;
126
+ pointer: EnginePointerInfo;
127
+ edge?: ShapeEdgeTarget;
128
+ vertex?: ShapeVertexTarget;
129
+ ellipseMidPoint?: EllipseMidPoint;
130
+ drag?: ElementShapeControlDragEvent;
131
+ };
132
+ /**
133
+ * @deprecated Use ElementShapeHoverControlInteractionEvent with eventType='click'.
134
+ */
135
+ type ElementShapeHoverControlActivationEvent = {
136
+ controlKind: 'edge' | 'vertex';
137
+ elementId: string;
138
+ targetId: string;
139
+ pointer: EnginePointerInfo;
140
+ edge?: ShapeEdgeTarget;
141
+ vertex?: ShapeVertexTarget;
142
+ };
143
+ type ElementPortMovementPolicy = {
144
+ moveMode: MoveConstraint | 'anchors';
145
+ anchorConstraint?: PortAnchorConstraint;
146
+ };
23
147
  type LinkRoutingMode = 'auto' | 'manual';
24
148
  type AnchorReference = 'top-left' | 'center';
25
149
  type RerouteLinksOptions = {
@@ -27,6 +151,11 @@ type RerouteLinksOptions = {
27
151
  };
28
152
  type ElementLayoutMode = 'manual' | 'horizontal' | 'vertical';
29
153
  type ElementLayoutAlign = 'start' | 'center' | 'end';
154
+ type ElementLayoutChildFitMainAxis = 'none' | 'distribute';
155
+ type ElementLayoutChildFitCrossAxis = 'none' | 'stretch';
156
+ type TextLayoutBoundsMode = 'owner-width' | 'owner-box' | 'fixed';
157
+ type TextLayoutWrapMode = 'none' | 'word' | 'char';
158
+ type TextLayoutOverflowMode = 'clip' | 'ellipsis-end' | 'ellipsis-middle' | 'ellipsis-start';
30
159
  type ElementLayout = {
31
160
  mode: ElementLayoutMode;
32
161
  padding?: number | {
@@ -35,6 +164,18 @@ type ElementLayout = {
35
164
  };
36
165
  gap?: number;
37
166
  align?: ElementLayoutAlign;
167
+ childFitMainAxis?: ElementLayoutChildFitMainAxis;
168
+ childFitCrossAxis?: ElementLayoutChildFitCrossAxis;
169
+ childFitMinSize?: Partial<Size>;
170
+ childFitMaxSize?: Partial<Size>;
171
+ };
172
+ type TextLayout = {
173
+ boundsMode?: TextLayoutBoundsMode;
174
+ wrap?: TextLayoutWrapMode;
175
+ overflow?: TextLayoutOverflowMode;
176
+ padding?: number;
177
+ maxLines?: number;
178
+ fixedSize?: Size;
38
179
  };
39
180
  type ElementDropEvent = {
40
181
  elementId: string;
@@ -68,6 +209,7 @@ type ElementData = {
68
209
  moveMode?: MoveConstraint;
69
210
  anchorCenter?: boolean;
70
211
  layout?: ElementLayout;
212
+ portMovement?: ElementPortMovementPolicy;
71
213
  };
72
214
  type PortData = {
73
215
  id: string;
@@ -79,6 +221,8 @@ type PortData = {
79
221
  textIds?: string[];
80
222
  moveMode?: MoveConstraint;
81
223
  anchorCenter?: boolean;
224
+ orientToHostBorder?: boolean;
225
+ currentAnchorId?: string;
82
226
  };
83
227
  type ShapeDrawContext = {
84
228
  ctx: CanvasRenderingContext2D;
@@ -100,6 +244,10 @@ type TextData = {
100
244
  size?: Size;
101
245
  style?: Record<string, unknown>;
102
246
  ownerId?: string | null;
247
+ layout?: TextLayout;
248
+ displayContent?: string;
249
+ displayOffset?: Point;
250
+ displayClipSize?: Size;
103
251
  };
104
252
  type DiagramState = {
105
253
  elements: ElementData[];
@@ -172,6 +320,26 @@ type ElementResizedEvent = {
172
320
  type ElementDeletedEvent = {
173
321
  elementId: string;
174
322
  };
323
+ type PortDeletedEvent = {
324
+ portId: string;
325
+ elementId: string;
326
+ };
327
+ type LinkDeletedEvent = {
328
+ linkId: string;
329
+ sourcePortId: string;
330
+ targetPortId: string;
331
+ };
332
+ type TextDeletedEvent = {
333
+ textId: string;
334
+ ownerId?: string | null;
335
+ };
336
+ type TextUpdatedEvent = {
337
+ textId: string;
338
+ ownerId?: string | null;
339
+ content: string;
340
+ displayContent: string;
341
+ reason: 'content' | 'layout';
342
+ };
175
343
  type ElementLinkStartedEvent = {
176
344
  sourcePortId: string;
177
345
  sourceElementId: string;
@@ -218,6 +386,10 @@ type EngineEventMap = {
218
386
  elementMoved: ElementMovedEvent;
219
387
  elementResized: ElementResizedEvent;
220
388
  elementDeleted: ElementDeletedEvent;
389
+ portDeleted: PortDeletedEvent;
390
+ linkDeleted: LinkDeletedEvent;
391
+ textDeleted: TextDeletedEvent;
392
+ textUpdated: TextUpdatedEvent;
221
393
  elementSelected: ElementSelectedEvent;
222
394
  elementLinkStarted: ElementLinkStartedEvent;
223
395
  elementLinkConnecting: ElementLinkConnectingEvent;
@@ -262,10 +434,16 @@ type DiagramEngineHandle = {
262
434
  setSnapping: (snapper: unknown) => void;
263
435
  registerShape: (shape: {
264
436
  id: string;
437
+ baseRotation?: number;
265
438
  draw?: (context: ShapeDrawContext) => void;
266
439
  createNode?: (model: ElementData | PortData) => unknown;
267
440
  svgPath?: string;
268
441
  svgSize?: Size;
442
+ projectToBorder?: (point: Point, rect: Rect) => Point;
443
+ resolveBorderSide?: (point: Point, rect: Rect) => BorderSide$1;
444
+ resolvePortAnchors?: (rect: Rect, options: ResolvePortAnchorsOptions) => PortAnchor[];
445
+ resolveHoverGeometry?: (rect: Rect) => ShapeHoverGeometry | undefined;
446
+ resolveEllipseMidPoints?: (rect: Rect) => ShapeEllipseMidPointTarget[] | undefined;
269
447
  }) => void;
270
448
  render: () => void;
271
449
  };
@@ -282,6 +460,7 @@ declare class ElementModel {
282
460
  moveMode?: MoveConstraint;
283
461
  anchorCenter?: boolean;
284
462
  layout?: ElementData['layout'];
463
+ portMovement?: ElementData['portMovement'];
285
464
  constructor(data: ElementData);
286
465
  setPosition(position: Point): void;
287
466
  setSize(size: Size): void;
@@ -326,8 +505,11 @@ declare class PortModel {
326
505
  textIds: string[];
327
506
  moveMode?: MoveConstraint;
328
507
  anchorCenter?: boolean;
508
+ orientToHostBorder: boolean;
509
+ currentAnchorId?: string;
329
510
  constructor(data: PortData);
330
511
  setPosition(position: Point): void;
512
+ setCurrentAnchorId(currentAnchorId?: string): void;
331
513
  addText(textId: string): void;
332
514
  removeText(textId: string): void;
333
515
  toData(): PortData;
@@ -340,9 +522,17 @@ declare class TextModel {
340
522
  size?: Size;
341
523
  style?: Record<string, unknown>;
342
524
  ownerId?: string | null;
525
+ layout?: TextData['layout'];
526
+ displayContent?: string;
527
+ displayOffset?: Point;
528
+ displayClipSize?: Size;
343
529
  constructor(data: TextData);
344
530
  setContent(content: string): void;
345
531
  setSize(size: Size): void;
532
+ setDisplayContent(content: string): void;
533
+ setDisplayOffset(offset: Point | undefined): void;
534
+ setDisplayClipSize(size: Size | undefined): void;
535
+ setLayout(layout: TextData['layout']): void;
346
536
  setPosition(position: Point): void;
347
537
  toData(): TextData;
348
538
  }
@@ -374,6 +564,7 @@ declare class DiagramModel {
374
564
  removeElement(id: string): void;
375
565
  addPort(data: PortData): PortModel;
376
566
  movePort(id: string, position: Point): void;
567
+ setPortCurrentAnchorId(id: string, currentAnchorId?: string): void;
377
568
  removePort(id: string): void;
378
569
  addLink(data: LinkData): LinkModel;
379
570
  updateLinkPoints(id: string, points: Point[]): void;
@@ -426,8 +617,32 @@ interface SnapStrategy {
426
617
  snap(point: Point): Point;
427
618
  }
428
619
 
620
+ type BorderSide = 'left' | 'right' | 'top' | 'bottom';
621
+
622
+ type ShapeNodeSizeUpdateContext = {
623
+ size: {
624
+ width: number;
625
+ height: number;
626
+ };
627
+ anchorCenter: boolean;
628
+ updateOffsetX: boolean;
629
+ updateOffsetY: boolean;
630
+ getNodeAttr: <T = unknown>(key: string) => T | undefined;
631
+ };
632
+ type ShapeNodeSizeUpdater = (context: ShapeNodeSizeUpdateContext) => Record<string, unknown>;
633
+ type ShapeResizeHandle = 'nw' | 'ne' | 'sw' | 'se';
634
+ type ShapeResizeNormalizeContext = {
635
+ element: ElementData;
636
+ handle: ShapeResizeHandle;
637
+ minSize: number;
638
+ proposal: {
639
+ width: number;
640
+ height: number;
641
+ };
642
+ };
429
643
  type ShapeDefinition = {
430
644
  id: string;
645
+ baseRotation?: number;
431
646
  draw?: (context: ShapeDrawContext) => void;
432
647
  createNode?: (model: ElementData | PortData) => unknown;
433
648
  svgPath?: string;
@@ -435,6 +650,16 @@ type ShapeDefinition = {
435
650
  width: number;
436
651
  height: number;
437
652
  };
653
+ sizeUpdater?: ShapeNodeSizeUpdater;
654
+ normalizeResize?: (context: ShapeResizeNormalizeContext) => {
655
+ width: number;
656
+ height: number;
657
+ };
658
+ projectToBorder?: (point: Point, rect: Rect) => Point;
659
+ resolveBorderSide?: (point: Point, rect: Rect) => BorderSide;
660
+ resolvePortAnchors?: (rect: Rect, options: ResolvePortAnchorsOptions) => PortAnchor[];
661
+ resolveHoverGeometry?: (rect: Rect) => ShapeHoverGeometry | undefined;
662
+ resolveEllipseMidPoints?: (rect: Rect) => ShapeEllipseMidPointTarget[] | undefined;
438
663
  };
439
664
  declare class ShapeRegistry {
440
665
  private shapes;
@@ -457,9 +682,11 @@ type DiagramEngineConfig = {
457
682
  };
458
683
  declare const createDiagramEngine: (config: DiagramEngineConfig) => DiagramEngineHandle;
459
684
 
685
+ type BuiltInShapeKind = 'rect' | 'circle' | 'ellipse' | 'diamond' | 'triangle' | 'pentagon' | 'hexagon';
686
+
460
687
  type SimpleShape = {
461
688
  id: string;
462
- kind: 'rect' | 'circle' | 'diamond' | 'triangle';
689
+ kind: BuiltInShapeKind;
463
690
  style?: Record<string, unknown>;
464
691
  };
465
692
  type DiagramEditorConfig = {
@@ -470,13 +697,17 @@ type DiagramEditorConfig = {
470
697
  elementShapes?: SimpleShape[];
471
698
  portShapes?: SimpleShape[];
472
699
  panKey?: 'Control' | 'Shift' | 'Alt' | 'Meta';
700
+ elementShapeHoverControls?: ElementShapeHoverControls;
701
+ onElementShapeHoverControlInteraction?: (event: ElementShapeHoverControlInteractionEvent) => void;
702
+ onElementShapeHoverControlActivated?: (event: ElementShapeHoverControlActivationEvent) => void;
473
703
  onChange?: (event: EngineChangeEvent) => void;
474
704
  onSelection?: (event: EngineSelectionEvent) => void;
475
705
  };
476
706
  type DiagramEditorHandle = DiagramEngineHandle & {
477
707
  resize: (width: number, height: number) => void;
708
+ setElementShapeHoverControls: (controls?: ElementShapeHoverControls) => void;
478
709
  destroy: () => void;
479
710
  };
480
711
  declare const createDiagramEditor: (config: DiagramEditorConfig) => DiagramEditorHandle;
481
712
 
482
- export { type AnchorReference, type ClientRectLike, type DiagramContainer, type DiagramEditorConfig, type DiagramEditorHandle, type DiagramEngineHandle, type DiagramPatch, type DiagramState, type ElementData, type ElementDeletedEvent, type ElementDropEvent, type ElementLayout, type ElementLayoutAlign, type ElementLayoutMode, type ElementLinkConnectingEvent, type ElementLinkEndedEvent, type ElementLinkStartedEvent, type ElementMovedEvent, type ElementPointerEvent, type ElementResizedEvent, type ElementSelectedEvent, type EngineChangeEvent, type EngineConfigEvent, type EngineEventMap, type EnginePointerInfo, type EngineSelectionEvent, type LinkData, type LinkRoutingMode, type MoveConstraint, type OverlayShapeConfig, type OverlayShapeHandle, type PaperClickEvent, type Point, type PortData, type PortMouseEvent, type PortMovedEvent, type PortSelectedEvent, type Rect, type RerouteLinksOptions, type ShapeDrawContext, type SimpleShape, type Size, type TextData, type TextSelectedEvent, createDiagramEditor, createDiagramEngine };
713
+ export { type AnchorReference, type BorderSide$1 as BorderSide, type ClientRectLike, type DiagramContainer, type DiagramEditorConfig, type DiagramEditorHandle, type DiagramEngineHandle, type DiagramPatch, type DiagramState, type EdgeHoverControl, type ElementData, type ElementDeletedEvent, type ElementDropEvent, type ElementLayout, type ElementLayoutAlign, type ElementLayoutChildFitCrossAxis, type ElementLayoutChildFitMainAxis, type ElementLayoutMode, type ElementLinkConnectingEvent, type ElementLinkEndedEvent, type ElementLinkStartedEvent, type ElementMovedEvent, type ElementPointerEvent, type ElementPortMovementPolicy, type ElementResizedEvent, type ElementSelectedEvent, type ElementShapeControlDragEvent, type ElementShapeControlEventType, type ElementShapeHoverControlActivationEvent, type ElementShapeHoverControlInteractionEvent, type ElementShapeHoverControls, EllipseMidPoint, type EngineChangeEvent, type EngineConfigEvent, type EngineEventMap, type EnginePointerInfo, type EngineSelectionEvent, type HostAnchorPreset, type HoverControlIcon, type LinkData, type LinkDeletedEvent, type LinkRoutingMode, type MoveConstraint, type OverlayShapeConfig, type OverlayShapeHandle, type PaperClickEvent, type Point, type PortAnchor, type PortAnchorConstraint, type PortData, type PortDeletedEvent, type PortMouseEvent, type PortMovedEvent, type PortSelectedEvent, type Rect, type RerouteLinksOptions, type ResolvePortAnchorsOptions, type ShapeControlDefinition, type ShapeControlTargetKind, type ShapeControlVisibilityTrigger, type ShapeDrawContext, type ShapeEdgeTarget, type ShapeEllipseMidPointTarget, type ShapeHoverGeometry, type ShapeVertexTarget, type SimpleShape, type Size, type TextData, type TextDeletedEvent, type TextLayout, type TextLayoutBoundsMode, type TextLayoutOverflowMode, type TextLayoutWrapMode, type TextSelectedEvent, type TextUpdatedEvent, type VertexHoverControl, createDiagramEditor, createDiagramEngine };