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.
- package/README.md +88 -78
- package/ai/api-contract.json +205 -205
- package/ai/invariants.json +41 -41
- package/ai/manifest.json +34 -34
- package/displaybox/package.json +5 -0
- package/dist/cjs/displaybox.js +7214 -0
- package/dist/cjs/types/components/BBoxDebugger.d.ts +6 -0
- package/dist/cjs/types/components/CloseIcon.d.ts +6 -0
- package/dist/cjs/types/components/LinkDebugger.d.ts +8 -0
- package/dist/cjs/types/components/editor.d.ts +9 -0
- package/dist/cjs/types/components/elementShowbox.d.ts +3 -0
- package/dist/cjs/types/components/elements/dragDropHandlerElement.d.ts +7 -0
- package/dist/cjs/types/components/elements/element.d.ts +4 -0
- package/dist/cjs/types/components/elements/elementWrapper.d.ts +18 -0
- package/dist/cjs/types/components/links/elementLink.d.ts +4 -0
- package/dist/cjs/types/components/links/index.d.ts +2 -0
- package/dist/cjs/types/components/links/point.d.ts +11 -0
- package/dist/cjs/types/components/paper.d.ts +49 -0
- package/dist/cjs/types/components/ports/index.d.ts +2 -0
- package/dist/cjs/types/components/ports/port.d.ts +3 -0
- package/dist/cjs/types/components/shapeShowbox.d.ts +3 -0
- package/dist/cjs/types/components/shapes/circle.d.ts +9 -0
- package/dist/cjs/types/components/shapes/customShape.d.ts +7 -0
- package/dist/cjs/types/components/shapes/halfCircle.d.ts +9 -0
- package/dist/cjs/types/components/shapes/index.d.ts +7 -0
- package/dist/cjs/types/components/shapes/polygon.d.ts +8 -0
- package/dist/cjs/types/components/shapes/rectangle.d.ts +10 -0
- package/dist/cjs/types/components/shapes/rectangularFrame.d.ts +12 -0
- package/dist/cjs/types/components/shapes/shapeWrapper.d.ts +8 -0
- package/dist/cjs/types/components/svgUtilsShowbox.d.ts +3 -0
- package/dist/cjs/types/components/texts/index.d.ts +2 -0
- package/dist/cjs/types/components/texts/text.d.ts +4 -0
- package/dist/cjs/types/components/viewControls/ruler.d.ts +10 -0
- package/dist/cjs/types/components/viewControls/selectionFrame.d.ts +4 -0
- package/dist/cjs/types/contexts/editorConfigurationContext.d.ts +4 -0
- package/dist/cjs/types/contexts/paperEventEmitterContext.d.ts +45 -0
- package/dist/cjs/types/contexts/zoomContext.d.ts +16 -0
- package/dist/cjs/types/contexts/zoomPanContext.d.ts +23 -0
- package/dist/cjs/types/displaybox/index.d.ts +3 -0
- package/dist/cjs/types/hooks/useKeyboardCommands.d.ts +5 -0
- package/dist/cjs/types/hooks/useSelectionFrame.d.ts +6 -0
- package/dist/cjs/types/logs/Logger.d.ts +14 -0
- package/dist/cjs/types/logs/configureLogger.d.ts +4 -0
- package/dist/cjs/types/main.d.ts +8 -0
- package/dist/cjs/types/mocks/customPortWithBuiltinShape.d.ts +2 -0
- package/dist/cjs/types/mocks/diamondElement.d.ts +11 -0
- package/dist/cjs/types/mocks/editorContext.d.ts +2 -0
- package/dist/cjs/types/mocks/editorContextElementMoveAsPort.d.ts +2 -0
- package/dist/cjs/types/mocks/editorContextForOptimizeRerender.d.ts +2 -0
- package/dist/cjs/types/mocks/editorContextMultipleElements.d.ts +2 -0
- package/dist/cjs/types/mocks/editorContextSingleElement.d.ts +2 -0
- package/dist/cjs/types/mocks/editorContextSingleElementTestEvents.d.ts +2 -0
- package/dist/cjs/types/mocks/editorContextTriggerRenderElements.d.ts +2 -0
- package/dist/cjs/types/mocks/editorContextWithElementAnchorCenter.d.ts +2 -0
- package/dist/cjs/types/mocks/port1.d.ts +5 -0
- package/dist/cjs/types/mocks/port2.d.ts +5 -0
- package/dist/cjs/types/mocks/portIn.d.ts +4 -0
- package/dist/cjs/types/mocks/rectangularFrameElement.d.ts +11 -0
- package/dist/cjs/types/mocks/textsWithFlexBox.d.ts +2 -0
- package/dist/cjs/types/models/IEditorConfiguration.d.ts +7 -0
- package/dist/cjs/types/models/IEditorContext.d.ts +56 -0
- package/dist/cjs/types/models/IElement.d.ts +46 -0
- package/dist/cjs/types/models/IElementLink.d.ts +23 -0
- package/dist/cjs/types/models/IElementLinkProps.d.ts +31 -0
- package/dist/cjs/types/models/IElementProps.d.ts +36 -0
- package/dist/cjs/types/models/IElementSelectorProps.d.ts +25 -0
- package/dist/cjs/types/models/IFlexboxType.d.ts +20 -0
- package/dist/cjs/types/models/IPaperBounds.d.ts +6 -0
- package/dist/cjs/types/models/IPort.d.ts +13 -0
- package/dist/cjs/types/models/IPortProps.d.ts +31 -0
- package/dist/cjs/types/models/IResizability.d.ts +4 -0
- package/dist/cjs/types/models/IShape.d.ts +18 -0
- package/dist/cjs/types/models/IText.d.ts +20 -0
- package/dist/cjs/types/models/ITextProps.d.ts +25 -0
- package/dist/cjs/types/models/callbackTypes.d.ts +21 -0
- package/dist/cjs/types/models/enums/PositioningAnchor.d.ts +4 -0
- package/dist/cjs/types/models/enums/ResizingDirection.d.ts +10 -0
- package/dist/cjs/types/models/enums/SubObjectDirection.d.ts +4 -0
- package/dist/cjs/types/models/enums/TextAlign.d.ts +5 -0
- package/dist/cjs/types/models/enums/index.d.ts +4 -0
- package/dist/cjs/types/models/implementations/CustomPort.d.ts +7 -0
- package/dist/cjs/types/models/implementations/CustomPortFromJSXElement.d.ts +7 -0
- package/dist/cjs/types/models/implementations/CustomPortFromShape.d.ts +7 -0
- package/dist/cjs/types/models/implementations/EditorContext.d.ts +67 -0
- package/dist/cjs/types/models/implementations/Element.d.ts +61 -0
- package/dist/cjs/types/models/implementations/ElementLink.d.ts +25 -0
- package/dist/cjs/types/models/implementations/Port.d.ts +22 -0
- package/dist/cjs/types/models/implementations/Text.d.ts +20 -0
- package/dist/cjs/types/models/implementations/diamondElement.d.ts +11 -0
- package/dist/cjs/types/models/implementations/index.d.ts +6 -0
- package/dist/cjs/types/models/implementations/rectangularFrameElement.d.ts +11 -0
- package/dist/cjs/types/models/index.d.ts +19 -0
- package/dist/cjs/types/models/position.d.ts +4 -0
- package/dist/cjs/types/models/size.d.ts +4 -0
- package/dist/cjs/types/utils/constants.d.ts +54 -0
- package/dist/cjs/types/utils/elementLinkUtil.d.ts +2 -0
- package/dist/cjs/types/utils/generateUniqueId.d.ts +1 -0
- package/dist/cjs/types/utils/index.d.ts +9 -0
- package/dist/cjs/types/utils/lineUtil.d.ts +3 -0
- package/dist/cjs/types/utils/mathUtil.d.ts +6 -0
- package/dist/cjs/types/utils/pathUtil.d.ts +13 -0
- package/dist/cjs/types/utils/portSlideRailSVGUtil.d.ts +3 -0
- package/dist/cjs/types/utils/positionUtil.d.ts +55 -0
- package/dist/cjs/types/utils/svgUtil.d.ts +3 -0
- package/dist/displaybox.d.ts +368 -0
- package/dist/esm/displaybox.js +7212 -0
- package/dist/esm/displaybox.js.map +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/components/BBoxDebugger.d.ts +6 -0
- package/dist/esm/types/components/CloseIcon.d.ts +6 -0
- package/dist/esm/types/components/LinkDebugger.d.ts +8 -0
- package/dist/esm/types/components/editor.d.ts +9 -0
- package/dist/esm/types/components/elementShowbox.d.ts +3 -0
- package/dist/esm/types/components/elements/dragDropHandlerElement.d.ts +7 -0
- package/dist/esm/types/components/elements/element.d.ts +4 -0
- package/dist/esm/types/components/elements/elementWrapper.d.ts +18 -0
- package/dist/esm/types/components/links/elementLink.d.ts +4 -0
- package/dist/esm/types/components/links/index.d.ts +2 -0
- package/dist/esm/types/components/links/point.d.ts +11 -0
- package/dist/esm/types/components/paper.d.ts +49 -0
- package/dist/esm/types/components/ports/index.d.ts +2 -0
- package/dist/esm/types/components/ports/port.d.ts +3 -0
- package/dist/esm/types/components/shapeShowbox.d.ts +3 -0
- package/dist/esm/types/components/shapes/circle.d.ts +9 -0
- package/dist/esm/types/components/shapes/customShape.d.ts +7 -0
- package/dist/esm/types/components/shapes/halfCircle.d.ts +9 -0
- package/dist/esm/types/components/shapes/index.d.ts +7 -0
- package/dist/esm/types/components/shapes/polygon.d.ts +8 -0
- package/dist/esm/types/components/shapes/rectangle.d.ts +10 -0
- package/dist/esm/types/components/shapes/rectangularFrame.d.ts +12 -0
- package/dist/esm/types/components/shapes/shapeWrapper.d.ts +8 -0
- package/dist/esm/types/components/svgUtilsShowbox.d.ts +3 -0
- package/dist/esm/types/components/texts/index.d.ts +2 -0
- package/dist/esm/types/components/texts/text.d.ts +4 -0
- package/dist/esm/types/components/viewControls/ruler.d.ts +10 -0
- package/dist/esm/types/components/viewControls/selectionFrame.d.ts +4 -0
- package/dist/esm/types/contexts/editorConfigurationContext.d.ts +4 -0
- package/dist/esm/types/contexts/paperEventEmitterContext.d.ts +45 -0
- package/dist/esm/types/contexts/zoomContext.d.ts +16 -0
- package/dist/esm/types/contexts/zoomPanContext.d.ts +23 -0
- package/dist/esm/types/displaybox/index.d.ts +3 -0
- package/dist/esm/types/hooks/useKeyboardCommands.d.ts +5 -0
- package/dist/esm/types/hooks/useSelectionFrame.d.ts +6 -0
- package/dist/esm/types/logs/Logger.d.ts +14 -0
- package/dist/esm/types/logs/configureLogger.d.ts +4 -0
- package/dist/esm/types/main.d.ts +8 -0
- package/dist/esm/types/mocks/customPortWithBuiltinShape.d.ts +2 -0
- package/dist/esm/types/mocks/diamondElement.d.ts +11 -0
- package/dist/esm/types/mocks/editorContext.d.ts +2 -0
- package/dist/esm/types/mocks/editorContextElementMoveAsPort.d.ts +2 -0
- package/dist/esm/types/mocks/editorContextForOptimizeRerender.d.ts +2 -0
- package/dist/esm/types/mocks/editorContextMultipleElements.d.ts +2 -0
- package/dist/esm/types/mocks/editorContextSingleElement.d.ts +2 -0
- package/dist/esm/types/mocks/editorContextSingleElementTestEvents.d.ts +2 -0
- package/dist/esm/types/mocks/editorContextTriggerRenderElements.d.ts +2 -0
- package/dist/esm/types/mocks/editorContextWithElementAnchorCenter.d.ts +2 -0
- package/dist/esm/types/mocks/port1.d.ts +5 -0
- package/dist/esm/types/mocks/port2.d.ts +5 -0
- package/dist/esm/types/mocks/portIn.d.ts +4 -0
- package/dist/esm/types/mocks/rectangularFrameElement.d.ts +11 -0
- package/dist/esm/types/mocks/textsWithFlexBox.d.ts +2 -0
- package/dist/esm/types/models/IEditorConfiguration.d.ts +7 -0
- package/dist/esm/types/models/IEditorContext.d.ts +56 -0
- package/dist/esm/types/models/IElement.d.ts +46 -0
- package/dist/esm/types/models/IElementLink.d.ts +23 -0
- package/dist/esm/types/models/IElementLinkProps.d.ts +31 -0
- package/dist/esm/types/models/IElementProps.d.ts +36 -0
- package/dist/esm/types/models/IElementSelectorProps.d.ts +25 -0
- package/dist/esm/types/models/IFlexboxType.d.ts +20 -0
- package/dist/esm/types/models/IPaperBounds.d.ts +6 -0
- package/dist/esm/types/models/IPort.d.ts +13 -0
- package/dist/esm/types/models/IPortProps.d.ts +31 -0
- package/dist/esm/types/models/IResizability.d.ts +4 -0
- package/dist/esm/types/models/IShape.d.ts +18 -0
- package/dist/esm/types/models/IText.d.ts +20 -0
- package/dist/esm/types/models/ITextProps.d.ts +25 -0
- package/dist/esm/types/models/callbackTypes.d.ts +21 -0
- package/dist/esm/types/models/enums/PositioningAnchor.d.ts +4 -0
- package/dist/esm/types/models/enums/ResizingDirection.d.ts +10 -0
- package/dist/esm/types/models/enums/SubObjectDirection.d.ts +4 -0
- package/dist/esm/types/models/enums/TextAlign.d.ts +5 -0
- package/dist/esm/types/models/enums/index.d.ts +4 -0
- package/dist/esm/types/models/implementations/CustomPort.d.ts +7 -0
- package/dist/esm/types/models/implementations/CustomPortFromJSXElement.d.ts +7 -0
- package/dist/esm/types/models/implementations/CustomPortFromShape.d.ts +7 -0
- package/dist/esm/types/models/implementations/EditorContext.d.ts +67 -0
- package/dist/esm/types/models/implementations/Element.d.ts +61 -0
- package/dist/esm/types/models/implementations/ElementLink.d.ts +25 -0
- package/dist/esm/types/models/implementations/Port.d.ts +22 -0
- package/dist/esm/types/models/implementations/Text.d.ts +20 -0
- package/dist/esm/types/models/implementations/diamondElement.d.ts +11 -0
- package/dist/esm/types/models/implementations/index.d.ts +6 -0
- package/dist/esm/types/models/implementations/rectangularFrameElement.d.ts +11 -0
- package/dist/esm/types/models/index.d.ts +19 -0
- package/dist/esm/types/models/position.d.ts +4 -0
- package/dist/esm/types/models/size.d.ts +4 -0
- package/dist/esm/types/utils/constants.d.ts +54 -0
- package/dist/esm/types/utils/elementLinkUtil.d.ts +2 -0
- package/dist/esm/types/utils/generateUniqueId.d.ts +1 -0
- package/dist/esm/types/utils/index.d.ts +9 -0
- package/dist/esm/types/utils/lineUtil.d.ts +3 -0
- package/dist/esm/types/utils/mathUtil.d.ts +6 -0
- package/dist/esm/types/utils/pathUtil.d.ts +13 -0
- package/dist/esm/types/utils/portSlideRailSVGUtil.d.ts +3 -0
- package/dist/esm/types/utils/positionUtil.d.ts +55 -0
- package/dist/esm/types/utils/svgUtil.d.ts +3 -0
- package/docs/API_CONTRACT.md +144 -144
- package/docs/ARCHITECTURE.md +31 -31
- package/docs/CAPABILITIES.md +38 -38
- package/docs/COMMANDS_EVENTS.md +60 -60
- package/docs/DOCUMENTATION_WORKFLOW.md +29 -29
- package/docs/INDEX.md +41 -41
- package/docs/INTEGRATION_PLAYBOOK.md +54 -54
- package/docs/PORTING_CHECKLIST.md +58 -58
- package/docs/STATE_INVARIANTS.md +56 -56
- package/docs/fixtures/basic-linked-elements.json +52 -52
- package/docs/fixtures/empty-state.json +11 -11
- package/docs/fixtures/nested-layout.json +54 -54
- 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
|
-
##
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
- `
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
- `
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
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/`.
|
package/ai/api-contract.json
CHANGED
|
@@ -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
|
+
}
|
package/ai/invariants.json
CHANGED
|
@@ -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
|
+
|