orcasvn-react-diagrams 0.2.0 → 0.2.1

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 (219) hide show
  1. package/README.md +88 -78
  2. package/ai/api-contract.json +205 -205
  3. package/ai/invariants.json +41 -41
  4. package/ai/manifest.json +34 -34
  5. package/displaybox/package.json +5 -0
  6. package/dist/cjs/displaybox.js +7214 -0
  7. package/dist/cjs/types/components/BBoxDebugger.d.ts +6 -0
  8. package/dist/cjs/types/components/CloseIcon.d.ts +6 -0
  9. package/dist/cjs/types/components/LinkDebugger.d.ts +8 -0
  10. package/dist/cjs/types/components/editor.d.ts +9 -0
  11. package/dist/cjs/types/components/elementShowbox.d.ts +3 -0
  12. package/dist/cjs/types/components/elements/dragDropHandlerElement.d.ts +7 -0
  13. package/dist/cjs/types/components/elements/element.d.ts +4 -0
  14. package/dist/cjs/types/components/elements/elementWrapper.d.ts +18 -0
  15. package/dist/cjs/types/components/links/elementLink.d.ts +4 -0
  16. package/dist/cjs/types/components/links/index.d.ts +2 -0
  17. package/dist/cjs/types/components/links/point.d.ts +11 -0
  18. package/dist/cjs/types/components/paper.d.ts +49 -0
  19. package/dist/cjs/types/components/ports/index.d.ts +2 -0
  20. package/dist/cjs/types/components/ports/port.d.ts +3 -0
  21. package/dist/cjs/types/components/shapeShowbox.d.ts +3 -0
  22. package/dist/cjs/types/components/shapes/circle.d.ts +9 -0
  23. package/dist/cjs/types/components/shapes/customShape.d.ts +7 -0
  24. package/dist/cjs/types/components/shapes/halfCircle.d.ts +9 -0
  25. package/dist/cjs/types/components/shapes/index.d.ts +7 -0
  26. package/dist/cjs/types/components/shapes/polygon.d.ts +8 -0
  27. package/dist/cjs/types/components/shapes/rectangle.d.ts +10 -0
  28. package/dist/cjs/types/components/shapes/rectangularFrame.d.ts +12 -0
  29. package/dist/cjs/types/components/shapes/shapeWrapper.d.ts +8 -0
  30. package/dist/cjs/types/components/svgUtilsShowbox.d.ts +3 -0
  31. package/dist/cjs/types/components/texts/index.d.ts +2 -0
  32. package/dist/cjs/types/components/texts/text.d.ts +4 -0
  33. package/dist/cjs/types/components/viewControls/ruler.d.ts +10 -0
  34. package/dist/cjs/types/components/viewControls/selectionFrame.d.ts +4 -0
  35. package/dist/cjs/types/contexts/editorConfigurationContext.d.ts +4 -0
  36. package/dist/cjs/types/contexts/paperEventEmitterContext.d.ts +45 -0
  37. package/dist/cjs/types/contexts/zoomContext.d.ts +16 -0
  38. package/dist/cjs/types/contexts/zoomPanContext.d.ts +23 -0
  39. package/dist/cjs/types/displaybox/index.d.ts +3 -0
  40. package/dist/cjs/types/hooks/useKeyboardCommands.d.ts +5 -0
  41. package/dist/cjs/types/hooks/useSelectionFrame.d.ts +6 -0
  42. package/dist/cjs/types/logs/Logger.d.ts +14 -0
  43. package/dist/cjs/types/logs/configureLogger.d.ts +4 -0
  44. package/dist/cjs/types/main.d.ts +8 -0
  45. package/dist/cjs/types/mocks/customPortWithBuiltinShape.d.ts +2 -0
  46. package/dist/cjs/types/mocks/diamondElement.d.ts +11 -0
  47. package/dist/cjs/types/mocks/editorContext.d.ts +2 -0
  48. package/dist/cjs/types/mocks/editorContextElementMoveAsPort.d.ts +2 -0
  49. package/dist/cjs/types/mocks/editorContextForOptimizeRerender.d.ts +2 -0
  50. package/dist/cjs/types/mocks/editorContextMultipleElements.d.ts +2 -0
  51. package/dist/cjs/types/mocks/editorContextSingleElement.d.ts +2 -0
  52. package/dist/cjs/types/mocks/editorContextSingleElementTestEvents.d.ts +2 -0
  53. package/dist/cjs/types/mocks/editorContextTriggerRenderElements.d.ts +2 -0
  54. package/dist/cjs/types/mocks/editorContextWithElementAnchorCenter.d.ts +2 -0
  55. package/dist/cjs/types/mocks/port1.d.ts +5 -0
  56. package/dist/cjs/types/mocks/port2.d.ts +5 -0
  57. package/dist/cjs/types/mocks/portIn.d.ts +4 -0
  58. package/dist/cjs/types/mocks/rectangularFrameElement.d.ts +11 -0
  59. package/dist/cjs/types/mocks/textsWithFlexBox.d.ts +2 -0
  60. package/dist/cjs/types/models/IEditorConfiguration.d.ts +7 -0
  61. package/dist/cjs/types/models/IEditorContext.d.ts +56 -0
  62. package/dist/cjs/types/models/IElement.d.ts +46 -0
  63. package/dist/cjs/types/models/IElementLink.d.ts +23 -0
  64. package/dist/cjs/types/models/IElementLinkProps.d.ts +31 -0
  65. package/dist/cjs/types/models/IElementProps.d.ts +36 -0
  66. package/dist/cjs/types/models/IElementSelectorProps.d.ts +25 -0
  67. package/dist/cjs/types/models/IFlexboxType.d.ts +20 -0
  68. package/dist/cjs/types/models/IPaperBounds.d.ts +6 -0
  69. package/dist/cjs/types/models/IPort.d.ts +13 -0
  70. package/dist/cjs/types/models/IPortProps.d.ts +31 -0
  71. package/dist/cjs/types/models/IResizability.d.ts +4 -0
  72. package/dist/cjs/types/models/IShape.d.ts +18 -0
  73. package/dist/cjs/types/models/IText.d.ts +20 -0
  74. package/dist/cjs/types/models/ITextProps.d.ts +25 -0
  75. package/dist/cjs/types/models/callbackTypes.d.ts +21 -0
  76. package/dist/cjs/types/models/enums/PositioningAnchor.d.ts +4 -0
  77. package/dist/cjs/types/models/enums/ResizingDirection.d.ts +10 -0
  78. package/dist/cjs/types/models/enums/SubObjectDirection.d.ts +4 -0
  79. package/dist/cjs/types/models/enums/TextAlign.d.ts +5 -0
  80. package/dist/cjs/types/models/enums/index.d.ts +4 -0
  81. package/dist/cjs/types/models/implementations/CustomPort.d.ts +7 -0
  82. package/dist/cjs/types/models/implementations/CustomPortFromJSXElement.d.ts +7 -0
  83. package/dist/cjs/types/models/implementations/CustomPortFromShape.d.ts +7 -0
  84. package/dist/cjs/types/models/implementations/EditorContext.d.ts +67 -0
  85. package/dist/cjs/types/models/implementations/Element.d.ts +61 -0
  86. package/dist/cjs/types/models/implementations/ElementLink.d.ts +25 -0
  87. package/dist/cjs/types/models/implementations/Port.d.ts +22 -0
  88. package/dist/cjs/types/models/implementations/Text.d.ts +20 -0
  89. package/dist/cjs/types/models/implementations/diamondElement.d.ts +11 -0
  90. package/dist/cjs/types/models/implementations/index.d.ts +6 -0
  91. package/dist/cjs/types/models/implementations/rectangularFrameElement.d.ts +11 -0
  92. package/dist/cjs/types/models/index.d.ts +19 -0
  93. package/dist/cjs/types/models/position.d.ts +4 -0
  94. package/dist/cjs/types/models/size.d.ts +4 -0
  95. package/dist/cjs/types/utils/constants.d.ts +54 -0
  96. package/dist/cjs/types/utils/elementLinkUtil.d.ts +2 -0
  97. package/dist/cjs/types/utils/generateUniqueId.d.ts +1 -0
  98. package/dist/cjs/types/utils/index.d.ts +9 -0
  99. package/dist/cjs/types/utils/lineUtil.d.ts +3 -0
  100. package/dist/cjs/types/utils/mathUtil.d.ts +6 -0
  101. package/dist/cjs/types/utils/pathUtil.d.ts +13 -0
  102. package/dist/cjs/types/utils/portSlideRailSVGUtil.d.ts +3 -0
  103. package/dist/cjs/types/utils/positionUtil.d.ts +55 -0
  104. package/dist/cjs/types/utils/svgUtil.d.ts +3 -0
  105. package/dist/displaybox.d.ts +368 -0
  106. package/dist/esm/displaybox.js +7212 -0
  107. package/dist/esm/displaybox.js.map +1 -0
  108. package/dist/esm/index.js.map +1 -1
  109. package/dist/esm/types/components/BBoxDebugger.d.ts +6 -0
  110. package/dist/esm/types/components/CloseIcon.d.ts +6 -0
  111. package/dist/esm/types/components/LinkDebugger.d.ts +8 -0
  112. package/dist/esm/types/components/editor.d.ts +9 -0
  113. package/dist/esm/types/components/elementShowbox.d.ts +3 -0
  114. package/dist/esm/types/components/elements/dragDropHandlerElement.d.ts +7 -0
  115. package/dist/esm/types/components/elements/element.d.ts +4 -0
  116. package/dist/esm/types/components/elements/elementWrapper.d.ts +18 -0
  117. package/dist/esm/types/components/links/elementLink.d.ts +4 -0
  118. package/dist/esm/types/components/links/index.d.ts +2 -0
  119. package/dist/esm/types/components/links/point.d.ts +11 -0
  120. package/dist/esm/types/components/paper.d.ts +49 -0
  121. package/dist/esm/types/components/ports/index.d.ts +2 -0
  122. package/dist/esm/types/components/ports/port.d.ts +3 -0
  123. package/dist/esm/types/components/shapeShowbox.d.ts +3 -0
  124. package/dist/esm/types/components/shapes/circle.d.ts +9 -0
  125. package/dist/esm/types/components/shapes/customShape.d.ts +7 -0
  126. package/dist/esm/types/components/shapes/halfCircle.d.ts +9 -0
  127. package/dist/esm/types/components/shapes/index.d.ts +7 -0
  128. package/dist/esm/types/components/shapes/polygon.d.ts +8 -0
  129. package/dist/esm/types/components/shapes/rectangle.d.ts +10 -0
  130. package/dist/esm/types/components/shapes/rectangularFrame.d.ts +12 -0
  131. package/dist/esm/types/components/shapes/shapeWrapper.d.ts +8 -0
  132. package/dist/esm/types/components/svgUtilsShowbox.d.ts +3 -0
  133. package/dist/esm/types/components/texts/index.d.ts +2 -0
  134. package/dist/esm/types/components/texts/text.d.ts +4 -0
  135. package/dist/esm/types/components/viewControls/ruler.d.ts +10 -0
  136. package/dist/esm/types/components/viewControls/selectionFrame.d.ts +4 -0
  137. package/dist/esm/types/contexts/editorConfigurationContext.d.ts +4 -0
  138. package/dist/esm/types/contexts/paperEventEmitterContext.d.ts +45 -0
  139. package/dist/esm/types/contexts/zoomContext.d.ts +16 -0
  140. package/dist/esm/types/contexts/zoomPanContext.d.ts +23 -0
  141. package/dist/esm/types/displaybox/index.d.ts +3 -0
  142. package/dist/esm/types/hooks/useKeyboardCommands.d.ts +5 -0
  143. package/dist/esm/types/hooks/useSelectionFrame.d.ts +6 -0
  144. package/dist/esm/types/logs/Logger.d.ts +14 -0
  145. package/dist/esm/types/logs/configureLogger.d.ts +4 -0
  146. package/dist/esm/types/main.d.ts +8 -0
  147. package/dist/esm/types/mocks/customPortWithBuiltinShape.d.ts +2 -0
  148. package/dist/esm/types/mocks/diamondElement.d.ts +11 -0
  149. package/dist/esm/types/mocks/editorContext.d.ts +2 -0
  150. package/dist/esm/types/mocks/editorContextElementMoveAsPort.d.ts +2 -0
  151. package/dist/esm/types/mocks/editorContextForOptimizeRerender.d.ts +2 -0
  152. package/dist/esm/types/mocks/editorContextMultipleElements.d.ts +2 -0
  153. package/dist/esm/types/mocks/editorContextSingleElement.d.ts +2 -0
  154. package/dist/esm/types/mocks/editorContextSingleElementTestEvents.d.ts +2 -0
  155. package/dist/esm/types/mocks/editorContextTriggerRenderElements.d.ts +2 -0
  156. package/dist/esm/types/mocks/editorContextWithElementAnchorCenter.d.ts +2 -0
  157. package/dist/esm/types/mocks/port1.d.ts +5 -0
  158. package/dist/esm/types/mocks/port2.d.ts +5 -0
  159. package/dist/esm/types/mocks/portIn.d.ts +4 -0
  160. package/dist/esm/types/mocks/rectangularFrameElement.d.ts +11 -0
  161. package/dist/esm/types/mocks/textsWithFlexBox.d.ts +2 -0
  162. package/dist/esm/types/models/IEditorConfiguration.d.ts +7 -0
  163. package/dist/esm/types/models/IEditorContext.d.ts +56 -0
  164. package/dist/esm/types/models/IElement.d.ts +46 -0
  165. package/dist/esm/types/models/IElementLink.d.ts +23 -0
  166. package/dist/esm/types/models/IElementLinkProps.d.ts +31 -0
  167. package/dist/esm/types/models/IElementProps.d.ts +36 -0
  168. package/dist/esm/types/models/IElementSelectorProps.d.ts +25 -0
  169. package/dist/esm/types/models/IFlexboxType.d.ts +20 -0
  170. package/dist/esm/types/models/IPaperBounds.d.ts +6 -0
  171. package/dist/esm/types/models/IPort.d.ts +13 -0
  172. package/dist/esm/types/models/IPortProps.d.ts +31 -0
  173. package/dist/esm/types/models/IResizability.d.ts +4 -0
  174. package/dist/esm/types/models/IShape.d.ts +18 -0
  175. package/dist/esm/types/models/IText.d.ts +20 -0
  176. package/dist/esm/types/models/ITextProps.d.ts +25 -0
  177. package/dist/esm/types/models/callbackTypes.d.ts +21 -0
  178. package/dist/esm/types/models/enums/PositioningAnchor.d.ts +4 -0
  179. package/dist/esm/types/models/enums/ResizingDirection.d.ts +10 -0
  180. package/dist/esm/types/models/enums/SubObjectDirection.d.ts +4 -0
  181. package/dist/esm/types/models/enums/TextAlign.d.ts +5 -0
  182. package/dist/esm/types/models/enums/index.d.ts +4 -0
  183. package/dist/esm/types/models/implementations/CustomPort.d.ts +7 -0
  184. package/dist/esm/types/models/implementations/CustomPortFromJSXElement.d.ts +7 -0
  185. package/dist/esm/types/models/implementations/CustomPortFromShape.d.ts +7 -0
  186. package/dist/esm/types/models/implementations/EditorContext.d.ts +67 -0
  187. package/dist/esm/types/models/implementations/Element.d.ts +61 -0
  188. package/dist/esm/types/models/implementations/ElementLink.d.ts +25 -0
  189. package/dist/esm/types/models/implementations/Port.d.ts +22 -0
  190. package/dist/esm/types/models/implementations/Text.d.ts +20 -0
  191. package/dist/esm/types/models/implementations/diamondElement.d.ts +11 -0
  192. package/dist/esm/types/models/implementations/index.d.ts +6 -0
  193. package/dist/esm/types/models/implementations/rectangularFrameElement.d.ts +11 -0
  194. package/dist/esm/types/models/index.d.ts +19 -0
  195. package/dist/esm/types/models/position.d.ts +4 -0
  196. package/dist/esm/types/models/size.d.ts +4 -0
  197. package/dist/esm/types/utils/constants.d.ts +54 -0
  198. package/dist/esm/types/utils/elementLinkUtil.d.ts +2 -0
  199. package/dist/esm/types/utils/generateUniqueId.d.ts +1 -0
  200. package/dist/esm/types/utils/index.d.ts +9 -0
  201. package/dist/esm/types/utils/lineUtil.d.ts +3 -0
  202. package/dist/esm/types/utils/mathUtil.d.ts +6 -0
  203. package/dist/esm/types/utils/pathUtil.d.ts +13 -0
  204. package/dist/esm/types/utils/portSlideRailSVGUtil.d.ts +3 -0
  205. package/dist/esm/types/utils/positionUtil.d.ts +55 -0
  206. package/dist/esm/types/utils/svgUtil.d.ts +3 -0
  207. package/docs/API_CONTRACT.md +144 -144
  208. package/docs/ARCHITECTURE.md +31 -31
  209. package/docs/CAPABILITIES.md +38 -38
  210. package/docs/COMMANDS_EVENTS.md +60 -60
  211. package/docs/DOCUMENTATION_WORKFLOW.md +29 -29
  212. package/docs/INDEX.md +41 -41
  213. package/docs/INTEGRATION_PLAYBOOK.md +54 -54
  214. package/docs/PORTING_CHECKLIST.md +58 -58
  215. package/docs/STATE_INVARIANTS.md +56 -56
  216. package/docs/fixtures/basic-linked-elements.json +52 -52
  217. package/docs/fixtures/empty-state.json +11 -11
  218. package/docs/fixtures/nested-layout.json +54 -54
  219. package/package.json +20 -7
package/README.md CHANGED
@@ -1,78 +1,88 @@
1
- # orcasvn-react-diagrams
2
-
3
- Diagram editor library with a Konva-backed editor (`createDiagramEditor`) and an engine-only API (`createDiagramEngine`).
4
-
5
- ## Install
6
-
7
- ```bash
8
- npm install orcasvn-react-diagrams
9
- ```
10
-
11
- Node engine for this repository/toolchain: `>=18.17.0 <19.0.0`.
12
-
13
- ## Quick Start
14
-
15
- ```ts
16
- import { createDiagramEditor } from 'orcasvn-react-diagrams';
17
-
18
- const editor = createDiagramEditor({
19
- container: document.getElementById('diagram-root') as HTMLDivElement,
20
- width: 960,
21
- height: 600,
22
- initialState: { elements: [], ports: [], links: [], texts: [] },
23
- });
24
-
25
- editor.addElement({
26
- id: 'node-1',
27
- position: { x: 80, y: 80 },
28
- size: { width: 160, height: 100 },
29
- shapeId: 'default',
30
- });
31
- ```
32
-
33
- ## API Docs
34
-
35
- - Human-first docs index: `docs/INDEX.md`
36
- - API contract: `docs/API_CONTRACT.md`
37
- - State invariants: `docs/STATE_INVARIANTS.md`
38
- - Integration: `docs/INTEGRATION_PLAYBOOK.md`
39
-
40
- Machine-readable docs shipped in npm package:
41
-
42
- - `ai/manifest.json`
43
- - `ai/api-contract.json`
44
- - `ai/invariants.json`
45
-
46
- UNPKG examples:
47
-
48
- - `https://unpkg.com/orcasvn-react-diagrams@<version>/ai/manifest.json`
49
- - `https://unpkg.com/orcasvn-react-diagrams@<version>/docs/INDEX.md`
50
-
51
- Node subpath export:
52
-
53
- - `orcasvn-react-diagrams/ai-manifest`
54
-
55
- ## External Drag And Drop
56
-
57
- ```ts
58
- const world = editor.clientToWorld(
59
- { x: event.clientX, y: event.clientY },
60
- stageContainer
61
- );
62
-
63
- editor.addElement({
64
- id,
65
- position: { x: world.x - width / 2, y: world.y - height / 2 },
66
- size: { width, height },
67
- shapeId,
68
- });
69
- ```
70
-
71
- ## Scripts (Repository Development)
72
-
73
- - `npm start`: run demo app.
74
- - `npm run start-doc`: serve `analysis/`.
75
- - `npm test`: run tests (watch mode).
76
- - `npm run typecheck`: run TypeScript checks.
77
- - `npm run build`: CRA build to `build/`.
78
- - `npm run rollup-build-lib`: library build to `dist/`.
1
+ # orcasvn-react-diagrams
2
+
3
+ Diagram editor library with a Konva-backed editor (`createDiagramEditor`) and an engine-only API (`createDiagramEngine`).
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ npm install orcasvn-react-diagrams
9
+ ```
10
+
11
+ Node engine for this repository/toolchain: `>=18.17.0 <19.0.0`.
12
+
13
+ ## Quick Start
14
+
15
+ ```ts
16
+ import { createDiagramEditor } from 'orcasvn-react-diagrams';
17
+
18
+ const editor = createDiagramEditor({
19
+ container: document.getElementById('diagram-root') as HTMLDivElement,
20
+ width: 960,
21
+ height: 600,
22
+ initialState: { elements: [], ports: [], links: [], texts: [] },
23
+ });
24
+
25
+ editor.addElement({
26
+ id: 'node-1',
27
+ position: { x: 80, y: 80 },
28
+ size: { width: 160, height: 100 },
29
+ shapeId: 'default',
30
+ });
31
+ ```
32
+
33
+ ## DisplayBox Review Surface
34
+
35
+ The published package also exposes the full demo review surface used by this repository's hosted example app:
36
+
37
+ ```ts
38
+ import { DisplayBox, demoTabs } from 'orcasvn-react-diagrams/displaybox';
39
+ ```
40
+
41
+ Use this entrypoint when you want to review the packaged demo scenarios from an installed npm dependency instead of importing repository source files directly.
42
+
43
+ ## API Docs
44
+
45
+ - Human-first docs index: `docs/INDEX.md`
46
+ - API contract: `docs/API_CONTRACT.md`
47
+ - State invariants: `docs/STATE_INVARIANTS.md`
48
+ - Integration: `docs/INTEGRATION_PLAYBOOK.md`
49
+
50
+ Machine-readable docs shipped in npm package:
51
+
52
+ - `ai/manifest.json`
53
+ - `ai/api-contract.json`
54
+ - `ai/invariants.json`
55
+
56
+ UNPKG examples:
57
+
58
+ - `https://unpkg.com/orcasvn-react-diagrams@<version>/ai/manifest.json`
59
+ - `https://unpkg.com/orcasvn-react-diagrams@<version>/docs/INDEX.md`
60
+
61
+ Node subpath export:
62
+
63
+ - `orcasvn-react-diagrams/ai-manifest`
64
+
65
+ ## External Drag And Drop
66
+
67
+ ```ts
68
+ const world = editor.clientToWorld(
69
+ { x: event.clientX, y: event.clientY },
70
+ stageContainer
71
+ );
72
+
73
+ editor.addElement({
74
+ id,
75
+ position: { x: world.x - width / 2, y: world.y - height / 2 },
76
+ size: { width, height },
77
+ shapeId,
78
+ });
79
+ ```
80
+
81
+ ## Scripts (Repository Development)
82
+
83
+ - `npm start`: run demo app.
84
+ - `npm run start-doc`: serve `analysis/`.
85
+ - `npm test`: run tests (watch mode).
86
+ - `npm run typecheck`: run TypeScript checks.
87
+ - `npm run build`: CRA build to `build/`.
88
+ - `npm run rollup-build-lib`: library build to `dist/`.
@@ -1,205 +1,205 @@
1
- {
2
- "schemaVersion": "1.1.0",
3
- "typeSource": "src/api/types.ts",
4
- "entrypoints": [
5
- {
6
- "name": "createDiagramEditor",
7
- "source": "src/api/createDiagramEditor.ts",
8
- "returns": "DiagramEditorHandle"
9
- },
10
- {
11
- "name": "createDiagramEngine",
12
- "source": "src/engine/DiagramEngine.ts",
13
- "returns": "DiagramEngineHandle"
14
- }
15
- ],
16
- "configs": {
17
- "diagramEditorConfig": {
18
- "required": {
19
- "container": "HTMLDivElement | string"
20
- },
21
- "optional": {
22
- "width": "number",
23
- "height": "number",
24
- "initialState": "DiagramState",
25
- "elementShapes": "SimpleShape[]",
26
- "portShapes": "SimpleShape[]",
27
- "panKey": "'Control' | 'Shift' | 'Alt' | 'Meta'",
28
- "onChange": "(event: EngineChangeEvent) => void",
29
- "onSelection": "(event: EngineSelectionEvent) => void"
30
- },
31
- "defaults": {
32
- "width": 900,
33
- "height": 560,
34
- "panKey": "Control"
35
- }
36
- },
37
- "diagramEngineConfig": {
38
- "required": {
39
- "renderer": "Renderer"
40
- },
41
- "optional": {
42
- "scheduler": "RenderScheduler",
43
- "router": "RouterStrategy",
44
- "snapper": "SnapStrategy",
45
- "shapeRegistry": "ShapeRegistry",
46
- "textMeasurer": "TextMeasurer"
47
- },
48
- "defaults": {
49
- "scheduler": "RenderScheduler",
50
- "router": "ObstacleRouter",
51
- "snapper": "DefaultSnapper",
52
- "shapeRegistry": "ShapeRegistry",
53
- "textMeasurer": "CanvasTextMeasurer"
54
- }
55
- }
56
- },
57
- "stateTypes": {
58
- "diagramState": {
59
- "required": [
60
- "elements",
61
- "ports",
62
- "links",
63
- "texts"
64
- ]
65
- },
66
- "elementData": {
67
- "required": [
68
- "id",
69
- "position",
70
- "size",
71
- "shapeId"
72
- ],
73
- "optional": [
74
- "style",
75
- "portIds",
76
- "textIds",
77
- "parentId",
78
- "moveMode",
79
- "anchorCenter",
80
- "layout"
81
- ],
82
- "defaults": {
83
- "portIds": [],
84
- "textIds": [],
85
- "parentId": null
86
- }
87
- },
88
- "portData": {
89
- "required": [
90
- "id",
91
- "elementId",
92
- "position"
93
- ],
94
- "optional": [
95
- "shapeId",
96
- "size",
97
- "style",
98
- "textIds",
99
- "moveMode",
100
- "anchorCenter"
101
- ],
102
- "defaults": {
103
- "textIds": [],
104
- "anchorCenter": true
105
- }
106
- },
107
- "linkData": {
108
- "required": [
109
- "id",
110
- "sourcePortId",
111
- "targetPortId",
112
- "points"
113
- ],
114
- "optional": [
115
- "routing",
116
- "style",
117
- "textIds"
118
- ],
119
- "defaults": {
120
- "routing": "auto",
121
- "textIds": []
122
- }
123
- },
124
- "textData": {
125
- "required": [
126
- "id",
127
- "content",
128
- "position"
129
- ],
130
- "optional": [
131
- "size",
132
- "style",
133
- "ownerId"
134
- ],
135
- "defaults": {
136
- "ownerId": null
137
- }
138
- },
139
- "elementLayoutDefaults": {
140
- "padding": 12,
141
- "gap": 12,
142
- "align": "center"
143
- }
144
- },
145
- "handleMethods": {
146
- "shared": [
147
- "load",
148
- "getState",
149
- "getViewport",
150
- "clientToWorld",
151
- "createOverlayShape",
152
- "on",
153
- "addElement",
154
- "moveElementTo",
155
- "resizeElement",
156
- "setElementLayout",
157
- "removeElement",
158
- "addPortToElement",
159
- "movePortTo",
160
- "removePort",
161
- "addLink",
162
- "updateLinkPoints",
163
- "setLinkRoutingMode",
164
- "rerouteAllLinks",
165
- "rerouteLinks",
166
- "removeLink",
167
- "addText",
168
- "updateText",
169
- "moveTextTo",
170
- "removeText",
171
- "setSelection",
172
- "setViewport",
173
- "setRouting",
174
- "setSnapping",
175
- "registerShape",
176
- "render"
177
- ],
178
- "editorOnly": [
179
- "resize",
180
- "destroy"
181
- ]
182
- },
183
- "events": {
184
- "change": "EngineChangeEvent",
185
- "selection": "EngineSelectionEvent",
186
- "config": "EngineConfigEvent",
187
- "element-drop": "ElementDropEvent",
188
- "elementDrop": "ElementDropEvent",
189
- "paperClick": "PaperClickEvent",
190
- "portMouseDown": "PortMouseEvent",
191
- "portMouseUp": "PortMouseEvent",
192
- "portMoved": "PortMovedEvent",
193
- "portSelected": "PortSelectedEvent",
194
- "elementClick": "ElementPointerEvent",
195
- "elementDragged": "ElementDropEvent",
196
- "elementMoved": "ElementMovedEvent",
197
- "elementResized": "ElementResizedEvent",
198
- "elementDeleted": "ElementDeletedEvent",
199
- "elementSelected": "ElementSelectedEvent",
200
- "elementLinkStarted": "ElementLinkStartedEvent",
201
- "elementLinkConnecting": "ElementLinkConnectingEvent",
202
- "elementLinkEnded": "ElementLinkEndedEvent",
203
- "textSelected": "TextSelectedEvent"
204
- }
205
- }
1
+ {
2
+ "schemaVersion": "1.1.0",
3
+ "typeSource": "src/api/types.ts",
4
+ "entrypoints": [
5
+ {
6
+ "name": "createDiagramEditor",
7
+ "source": "src/api/createDiagramEditor.ts",
8
+ "returns": "DiagramEditorHandle"
9
+ },
10
+ {
11
+ "name": "createDiagramEngine",
12
+ "source": "src/engine/DiagramEngine.ts",
13
+ "returns": "DiagramEngineHandle"
14
+ }
15
+ ],
16
+ "configs": {
17
+ "diagramEditorConfig": {
18
+ "required": {
19
+ "container": "HTMLDivElement | string"
20
+ },
21
+ "optional": {
22
+ "width": "number",
23
+ "height": "number",
24
+ "initialState": "DiagramState",
25
+ "elementShapes": "SimpleShape[]",
26
+ "portShapes": "SimpleShape[]",
27
+ "panKey": "'Control' | 'Shift' | 'Alt' | 'Meta'",
28
+ "onChange": "(event: EngineChangeEvent) => void",
29
+ "onSelection": "(event: EngineSelectionEvent) => void"
30
+ },
31
+ "defaults": {
32
+ "width": 900,
33
+ "height": 560,
34
+ "panKey": "Control"
35
+ }
36
+ },
37
+ "diagramEngineConfig": {
38
+ "required": {
39
+ "renderer": "Renderer"
40
+ },
41
+ "optional": {
42
+ "scheduler": "RenderScheduler",
43
+ "router": "RouterStrategy",
44
+ "snapper": "SnapStrategy",
45
+ "shapeRegistry": "ShapeRegistry",
46
+ "textMeasurer": "TextMeasurer"
47
+ },
48
+ "defaults": {
49
+ "scheduler": "RenderScheduler",
50
+ "router": "ObstacleRouter",
51
+ "snapper": "DefaultSnapper",
52
+ "shapeRegistry": "ShapeRegistry",
53
+ "textMeasurer": "CanvasTextMeasurer"
54
+ }
55
+ }
56
+ },
57
+ "stateTypes": {
58
+ "diagramState": {
59
+ "required": [
60
+ "elements",
61
+ "ports",
62
+ "links",
63
+ "texts"
64
+ ]
65
+ },
66
+ "elementData": {
67
+ "required": [
68
+ "id",
69
+ "position",
70
+ "size",
71
+ "shapeId"
72
+ ],
73
+ "optional": [
74
+ "style",
75
+ "portIds",
76
+ "textIds",
77
+ "parentId",
78
+ "moveMode",
79
+ "anchorCenter",
80
+ "layout"
81
+ ],
82
+ "defaults": {
83
+ "portIds": [],
84
+ "textIds": [],
85
+ "parentId": null
86
+ }
87
+ },
88
+ "portData": {
89
+ "required": [
90
+ "id",
91
+ "elementId",
92
+ "position"
93
+ ],
94
+ "optional": [
95
+ "shapeId",
96
+ "size",
97
+ "style",
98
+ "textIds",
99
+ "moveMode",
100
+ "anchorCenter"
101
+ ],
102
+ "defaults": {
103
+ "textIds": [],
104
+ "anchorCenter": true
105
+ }
106
+ },
107
+ "linkData": {
108
+ "required": [
109
+ "id",
110
+ "sourcePortId",
111
+ "targetPortId",
112
+ "points"
113
+ ],
114
+ "optional": [
115
+ "routing",
116
+ "style",
117
+ "textIds"
118
+ ],
119
+ "defaults": {
120
+ "routing": "auto",
121
+ "textIds": []
122
+ }
123
+ },
124
+ "textData": {
125
+ "required": [
126
+ "id",
127
+ "content",
128
+ "position"
129
+ ],
130
+ "optional": [
131
+ "size",
132
+ "style",
133
+ "ownerId"
134
+ ],
135
+ "defaults": {
136
+ "ownerId": null
137
+ }
138
+ },
139
+ "elementLayoutDefaults": {
140
+ "padding": 12,
141
+ "gap": 12,
142
+ "align": "center"
143
+ }
144
+ },
145
+ "handleMethods": {
146
+ "shared": [
147
+ "load",
148
+ "getState",
149
+ "getViewport",
150
+ "clientToWorld",
151
+ "createOverlayShape",
152
+ "on",
153
+ "addElement",
154
+ "moveElementTo",
155
+ "resizeElement",
156
+ "setElementLayout",
157
+ "removeElement",
158
+ "addPortToElement",
159
+ "movePortTo",
160
+ "removePort",
161
+ "addLink",
162
+ "updateLinkPoints",
163
+ "setLinkRoutingMode",
164
+ "rerouteAllLinks",
165
+ "rerouteLinks",
166
+ "removeLink",
167
+ "addText",
168
+ "updateText",
169
+ "moveTextTo",
170
+ "removeText",
171
+ "setSelection",
172
+ "setViewport",
173
+ "setRouting",
174
+ "setSnapping",
175
+ "registerShape",
176
+ "render"
177
+ ],
178
+ "editorOnly": [
179
+ "resize",
180
+ "destroy"
181
+ ]
182
+ },
183
+ "events": {
184
+ "change": "EngineChangeEvent",
185
+ "selection": "EngineSelectionEvent",
186
+ "config": "EngineConfigEvent",
187
+ "element-drop": "ElementDropEvent",
188
+ "elementDrop": "ElementDropEvent",
189
+ "paperClick": "PaperClickEvent",
190
+ "portMouseDown": "PortMouseEvent",
191
+ "portMouseUp": "PortMouseEvent",
192
+ "portMoved": "PortMovedEvent",
193
+ "portSelected": "PortSelectedEvent",
194
+ "elementClick": "ElementPointerEvent",
195
+ "elementDragged": "ElementDropEvent",
196
+ "elementMoved": "ElementMovedEvent",
197
+ "elementResized": "ElementResizedEvent",
198
+ "elementDeleted": "ElementDeletedEvent",
199
+ "elementSelected": "ElementSelectedEvent",
200
+ "elementLinkStarted": "ElementLinkStartedEvent",
201
+ "elementLinkConnecting": "ElementLinkConnectingEvent",
202
+ "elementLinkEnded": "ElementLinkEndedEvent",
203
+ "textSelected": "TextSelectedEvent"
204
+ }
205
+ }
@@ -1,41 +1,41 @@
1
- {
2
- "stateShape": [
3
- "elements[]",
4
- "ports[]",
5
- "links[]",
6
- "texts[]"
7
- ],
8
- "defaults": {
9
- "port.anchorCenter": true,
10
- "link.routing": "auto"
11
- },
12
- "entityRules": {
13
- "element": [
14
- "child element positions are parent-relative when parentId is set",
15
- "deleting an element removes its ports, links via ports, and owned texts"
16
- ],
17
- "port": [
18
- "port positions are relative to element",
19
- "moving a port can be constrained by moveMode/moveAxis/moveBounds"
20
- ],
21
- "link": [
22
- "manual routing preserves interior bend points on endpoint updates",
23
- "auto routing normalizes first/last points to source/target port world positions"
24
- ],
25
- "text": [
26
- "owner-bound text stores owner-relative position",
27
- "orphan owner references are tolerated as standalone world text"
28
- ]
29
- },
30
- "eventRules": [
31
- "mutations emit change with patches and full state snapshot",
32
- "setSelection emits selection plus derived selected entity events",
33
- "setViewport emits viewport patch without immediate render"
34
- ],
35
- "verificationTests": [
36
- "src/models/__tests__/DiagramModel.test.ts",
37
- "src/engine/__tests__/DiagramEngine.test.ts",
38
- "src/renderer/konva/__tests__/KonvaInteraction.test.ts"
39
- ]
40
- }
41
-
1
+ {
2
+ "stateShape": [
3
+ "elements[]",
4
+ "ports[]",
5
+ "links[]",
6
+ "texts[]"
7
+ ],
8
+ "defaults": {
9
+ "port.anchorCenter": true,
10
+ "link.routing": "auto"
11
+ },
12
+ "entityRules": {
13
+ "element": [
14
+ "child element positions are parent-relative when parentId is set",
15
+ "deleting an element removes its ports, links via ports, and owned texts"
16
+ ],
17
+ "port": [
18
+ "port positions are relative to element",
19
+ "moving a port can be constrained by moveMode/moveAxis/moveBounds"
20
+ ],
21
+ "link": [
22
+ "manual routing preserves interior bend points on endpoint updates",
23
+ "auto routing normalizes first/last points to source/target port world positions"
24
+ ],
25
+ "text": [
26
+ "owner-bound text stores owner-relative position",
27
+ "orphan owner references are tolerated as standalone world text"
28
+ ]
29
+ },
30
+ "eventRules": [
31
+ "mutations emit change with patches and full state snapshot",
32
+ "setSelection emits selection plus derived selected entity events",
33
+ "setViewport emits viewport patch without immediate render"
34
+ ],
35
+ "verificationTests": [
36
+ "src/models/__tests__/DiagramModel.test.ts",
37
+ "src/engine/__tests__/DiagramEngine.test.ts",
38
+ "src/renderer/konva/__tests__/KonvaInteraction.test.ts"
39
+ ]
40
+ }
41
+