@nice2dev/ui-diagrams 1.0.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.
- package/CHANGELOG.md +64 -0
- package/README.md +49 -0
- package/dist/__tests__/DiagramModel.test.d.ts +2 -0
- package/dist/__tests__/DiagramModel.test.d.ts.map +1 -0
- package/dist/__tests__/animationEngine.test.d.ts +2 -0
- package/dist/__tests__/animationEngine.test.d.ts.map +1 -0
- package/dist/__tests__/businessVisualizers.test.d.ts +2 -0
- package/dist/__tests__/businessVisualizers.test.d.ts.map +1 -0
- package/dist/__tests__/dataBinding.test.d.ts +2 -0
- package/dist/__tests__/dataBinding.test.d.ts.map +1 -0
- package/dist/__tests__/diagramTemplateGallery.test.d.ts +2 -0
- package/dist/__tests__/diagramTemplateGallery.test.d.ts.map +1 -0
- package/dist/__tests__/exportEngine.test.d.ts +2 -0
- package/dist/__tests__/exportEngine.test.d.ts.map +1 -0
- package/dist/__tests__/i18n-locales.test.d.ts +2 -0
- package/dist/__tests__/i18n-locales.test.d.ts.map +1 -0
- package/dist/__tests__/layoutEngine.test.d.ts +2 -0
- package/dist/__tests__/layoutEngine.test.d.ts.map +1 -0
- package/dist/__tests__/serialization.test.d.ts +2 -0
- package/dist/__tests__/serialization.test.d.ts.map +1 -0
- package/dist/__tests__/setup.d.ts +2 -0
- package/dist/__tests__/setup.d.ts.map +1 -0
- package/dist/__tests__/snapGrid.test.d.ts +2 -0
- package/dist/__tests__/snapGrid.test.d.ts.map +1 -0
- package/dist/__tests__/sprint24-diagrams.test.d.ts +2 -0
- package/dist/__tests__/sprint24-diagrams.test.d.ts.map +1 -0
- package/dist/components/AnimationTimeline.d.ts +21 -0
- package/dist/components/AnimationTimeline.d.ts.map +1 -0
- package/dist/components/DiagramCanvas.d.ts +54 -0
- package/dist/components/DiagramCanvas.d.ts.map +1 -0
- package/dist/components/DiagramCellRenderer.d.ts +36 -0
- package/dist/components/DiagramCellRenderer.d.ts.map +1 -0
- package/dist/components/DiagramMinimap.d.ts +17 -0
- package/dist/components/DiagramMinimap.d.ts.map +1 -0
- package/dist/components/DiagramPropertyPanel.d.ts +13 -0
- package/dist/components/DiagramPropertyPanel.d.ts.map +1 -0
- package/dist/components/DiagramToolbar.d.ts +65 -0
- package/dist/components/DiagramToolbar.d.ts.map +1 -0
- package/dist/components/NiceDatabaseSchemaViewer.d.ts +77 -0
- package/dist/components/NiceDatabaseSchemaViewer.d.ts.map +1 -0
- package/dist/components/NiceDecisionTreeEditor.d.ts +126 -0
- package/dist/components/NiceDecisionTreeEditor.d.ts.map +1 -0
- package/dist/components/NiceDependencyGraph.d.ts +104 -0
- package/dist/components/NiceDependencyGraph.d.ts.map +1 -0
- package/dist/components/NiceDiagramEditor.d.ts +24 -0
- package/dist/components/NiceDiagramEditor.d.ts.map +1 -0
- package/dist/components/NiceDiagramViewer.d.ts +19 -0
- package/dist/components/NiceDiagramViewer.d.ts.map +1 -0
- package/dist/components/NiceNetworkTopology.d.ts +125 -0
- package/dist/components/NiceNetworkTopology.d.ts.map +1 -0
- package/dist/components/NiceOrgChartVisualizer.d.ts +91 -0
- package/dist/components/NiceOrgChartVisualizer.d.ts.map +1 -0
- package/dist/components/NiceProcessMiningDiagram.d.ts +84 -0
- package/dist/components/NiceProcessMiningDiagram.d.ts.map +1 -0
- package/dist/components/NiceWorkflowVisualizer.d.ts +70 -0
- package/dist/components/NiceWorkflowVisualizer.d.ts.map +1 -0
- package/dist/components/collaborativeDiagram.d.ts +253 -0
- package/dist/components/collaborativeDiagram.d.ts.map +1 -0
- package/dist/components/diagramAdapters.d.ts +80 -0
- package/dist/components/diagramAdapters.d.ts.map +1 -0
- package/dist/components/diagramTemplates.d.ts +62 -0
- package/dist/components/diagramTemplates.d.ts.map +1 -0
- package/dist/components/shapeRegistry.d.ts +134 -0
- package/dist/components/shapeRegistry.d.ts.map +1 -0
- package/dist/components/snapGuides.d.ts +167 -0
- package/dist/components/snapGuides.d.ts.map +1 -0
- package/dist/components/workflowIntegrations.d.ts +280 -0
- package/dist/components/workflowIntegrations.d.ts.map +1 -0
- package/dist/core/DiagramModel.d.ts +56 -0
- package/dist/core/DiagramModel.d.ts.map +1 -0
- package/dist/core/animationEngine.d.ts +40 -0
- package/dist/core/animationEngine.d.ts.map +1 -0
- package/dist/core/conditionalStyling.d.ts +151 -0
- package/dist/core/conditionalStyling.d.ts.map +1 -0
- package/dist/core/dataBinding.d.ts +21 -0
- package/dist/core/dataBinding.d.ts.map +1 -0
- package/dist/core/diagramComments.d.ts +208 -0
- package/dist/core/diagramComments.d.ts.map +1 -0
- package/dist/core/diagramParticleEngine.d.ts +96 -0
- package/dist/core/diagramParticleEngine.d.ts.map +1 -0
- package/dist/core/diagramSearch.d.ts +169 -0
- package/dist/core/diagramSearch.d.ts.map +1 -0
- package/dist/core/diagramStylePresets.d.ts +56 -0
- package/dist/core/diagramStylePresets.d.ts.map +1 -0
- package/dist/core/diagramTemplateGallery.d.ts +27 -0
- package/dist/core/diagramTemplateGallery.d.ts.map +1 -0
- package/dist/core/diagramVersioning.d.ts +124 -0
- package/dist/core/diagramVersioning.d.ts.map +1 -0
- package/dist/core/exportEngine.d.ts +11 -0
- package/dist/core/exportEngine.d.ts.map +1 -0
- package/dist/core/i18n.d.ts +19 -0
- package/dist/core/i18n.d.ts.map +1 -0
- package/dist/core/layoutEngine.d.ts +10 -0
- package/dist/core/layoutEngine.d.ts.map +1 -0
- package/dist/core/serialization.d.ts +16 -0
- package/dist/core/serialization.d.ts.map +1 -0
- package/dist/core/snapGrid.d.ts +51 -0
- package/dist/core/snapGrid.d.ts.map +1 -0
- package/dist/hooks/useDiagramEditor.d.ts +64 -0
- package/dist/hooks/useDiagramEditor.d.ts.map +1 -0
- package/dist/index.cjs +3484 -0
- package/dist/index.d.ts +35 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.mjs +58661 -0
- package/dist/style.css +1 -0
- package/dist/types/diagramTypes.d.ts +410 -0
- package/dist/types/diagramTypes.d.ts.map +1 -0
- package/package.json +59 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# @nice2dev/ui-diagrams — Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to the diagram editor package.
|
|
4
|
+
|
|
5
|
+
## [0.2.0] — 2026-03-25
|
|
6
|
+
|
|
7
|
+
### Added (FAZA 1.1)
|
|
8
|
+
|
|
9
|
+
- **NiceDiagramEditor** — full-featured diagram editor:
|
|
10
|
+
- Canvas with pan/zoom, minimap
|
|
11
|
+
- Node creation/editing, edge routing (kliknię-port, dnd)
|
|
12
|
+
- 8 diagram types: flowchart, org chart, mind map, BPMN, ER, sequence, state machine, network topology
|
|
13
|
+
- Auto-layout: dagre, force-directed, grid, radial, tree
|
|
14
|
+
- Animation timeline, data binding from DataSource
|
|
15
|
+
- Export: SVG, PNG, PDF, .ndd.json, Mermaid
|
|
16
|
+
- Import: .ndd.json, Mermaid, draw.io XML
|
|
17
|
+
- **NiceDiagramViewer** — read-only viewer with auto-play animations, tooltips, fullscreen
|
|
18
|
+
- **Business visualizers**: NiceWorkflowVisualizer, NiceDatabaseSchemaViewer, NiceOrgChartVisualizer, NiceProcessMiningDiagram, NiceDependencyGraph, NiceNetworkTopology, NiceDecisionTreeEditor
|
|
19
|
+
- **Collaborative editing** — multi-user CRDT/op-log with visible cursors
|
|
20
|
+
- **Versioning** — history with diff (node added/removed/moved/restyled)
|
|
21
|
+
- **Comments / annotations** — sticky notes, @mentions, resolve
|
|
22
|
+
- **Templates gallery** — ready-made templates per diagram type
|
|
23
|
+
- **Snap to grid + alignment guides**
|
|
24
|
+
- **Custom node shapes** — SVG/React component shape registry
|
|
25
|
+
- **Conditional styling** — data-driven colors (e.g. red if SLA > threshold)
|
|
26
|
+
- **Search & filter** — node search by name/type, layer filtering
|
|
27
|
+
- **DiagramCellRenderer** — mini-diagram in DataGrid cells with expand-to-modal
|
|
28
|
+
- AI layout suggestions via `useAIDiagramLayout`
|
|
29
|
+
|
|
30
|
+
### Tests
|
|
31
|
+
|
|
32
|
+
- 11 unit tests + E2E tests (editor, viewer, workflow, org, deps, network, decision tree)
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## [0.1.0] — 2025-06-01
|
|
37
|
+
|
|
38
|
+
Initial beta release with `.ndd.json` format specification.
|
|
39
|
+
|
|
40
|
+
All notable changes to `@nice2dev/ui-diagrams` will be documented in this file.
|
|
41
|
+
|
|
42
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
43
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## [0.1.0] — 2026-03-18
|
|
48
|
+
|
|
49
|
+
### 📊 Initial Release
|
|
50
|
+
|
|
51
|
+
First release of `@nice2dev/ui-diagrams` — a diagram editor and viewer suite for React.
|
|
52
|
+
|
|
53
|
+
### Features
|
|
54
|
+
|
|
55
|
+
- **NiceDiagramEditor** — full-featured diagram editor with drag-and-drop nodes, edge routing, zoom/pan, undo/redo, snap-to-grid, groups, and multi-select
|
|
56
|
+
- **NiceDiagramViewer** — read-only diagram viewer with zoom/pan and auto-fit
|
|
57
|
+
- **NiceWorkflowVisualizer** — step-based workflow visualization with status indicators, auto-layout, and animated transitions
|
|
58
|
+
- **NiceOrgChartVisualizer** — hierarchical org chart with status badges, expand/collapse, and search
|
|
59
|
+
- **NiceDependencyGraph** — package dependency graph with color-coded version ranges and circular dependency detection
|
|
60
|
+
- **NiceNetworkTopology** — network topology visualizer with device icons, connection status, and traffic animation
|
|
61
|
+
- **NiceDecisionTreeEditor** — interactive decision tree editor with yes/no branches, condition evaluation, and collapse/expand
|
|
62
|
+
- **Animation system** — liquid flow, particle effects, and style presets for edges and nodes
|
|
63
|
+
- **i18n** — full internationalization support via NiceI18nProvider
|
|
64
|
+
- **Theming** — CSS custom properties with light/dark mode support
|
package/README.md
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# @nice2dev/ui-diagrams
|
|
2
|
+
|
|
3
|
+
> Full-featured diagram editor & viewer for React — flowchart, BPMN, ER, org chart, mind map, sequence, state machine, network topology.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
### NiceDiagramEditor
|
|
8
|
+
- Canvas with pan/zoom (scroll wheel, pinch, minimap)
|
|
9
|
+
- Node CRUD — drag, resize, double-click edit, custom shapes (SVG/React)
|
|
10
|
+
- Edge creation — click port → drag to target port
|
|
11
|
+
- Toolbar — select, add node/edge, group, delete, undo/redo
|
|
12
|
+
- Property panel — node style (shape, color, border, font, icon), edge style (line, color, arrow)
|
|
13
|
+
- Auto-layout — dagre hierarchical, force-directed, grid, radial, tree
|
|
14
|
+
- Animations timeline — entry/exit/highlight per element
|
|
15
|
+
- Data binding — DataSource → auto-generated diagram (e.g., org chart from employee table)
|
|
16
|
+
- Export — SVG, PNG, PDF, `.ndd.json`, Mermaid
|
|
17
|
+
- Import — `.ndd.json`, Mermaid, draw.io XML (basic)
|
|
18
|
+
- i18n (10+ languages) + theming (light/dark, custom CSS variables)
|
|
19
|
+
|
|
20
|
+
### NiceDiagramViewer
|
|
21
|
+
- Read-only with pan/zoom
|
|
22
|
+
- Auto-play animations (step-by-step sequence)
|
|
23
|
+
- Interactive tooltips on hover
|
|
24
|
+
- Fullscreen + print mode
|
|
25
|
+
|
|
26
|
+
### Business Integrations
|
|
27
|
+
- **NiceWorkflowVisualizer** — auto-generate from workflow engine
|
|
28
|
+
- **NiceDatabaseSchemaViewer** — ER diagram from DB metadata
|
|
29
|
+
- **NiceOrgChartVisualizer** — org chart from HR data
|
|
30
|
+
- **NiceProcessMiningDiagram** — frequent paths, bottlenecks, SLA violations
|
|
31
|
+
- **NiceDependencyGraph** — module/microservice dependency visualization
|
|
32
|
+
- **NiceNetworkTopology** — auto-discovery + real-time status (green/yellow/red)
|
|
33
|
+
- **NiceDecisionTreeEditor** — decision tree with conditions, probabilities
|
|
34
|
+
|
|
35
|
+
### Collaboration
|
|
36
|
+
- Multi-user CRDT editing with visible cursors
|
|
37
|
+
- Version history with visual diff (node added/removed/moved)
|
|
38
|
+
- Comments & annotations — sticky notes, @mentions, resolve
|
|
39
|
+
- Diagram template gallery
|
|
40
|
+
|
|
41
|
+
## Installation
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
npm install @nice2dev/ui-diagrams
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## License
|
|
48
|
+
|
|
49
|
+
MIT © NiceToDev
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiagramModel.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/DiagramModel.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"animationEngine.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/animationEngine.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"businessVisualizers.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/businessVisualizers.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataBinding.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/dataBinding.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagramTemplateGallery.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/diagramTemplateGallery.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exportEngine.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/exportEngine.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n-locales.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/i18n-locales.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layoutEngine.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/layoutEngine.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serialization.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/serialization.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/__tests__/setup.ts"],"names":[],"mappings":"AACA,OAAO,kCAAkC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapGrid.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/snapGrid.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sprint24-diagrams.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/sprint24-diagrams.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { DiagramAnimation } from '../types/diagramTypes';
|
|
3
|
+
|
|
4
|
+
export interface AnimationTimelineProps {
|
|
5
|
+
animations: readonly DiagramAnimation[];
|
|
6
|
+
onAdd?: (anim: Omit<DiagramAnimation, 'id'>) => void;
|
|
7
|
+
onRemove?: (id: string) => void;
|
|
8
|
+
onUpdate?: (id: string, patch: Partial<Omit<DiagramAnimation, 'id'>>) => void;
|
|
9
|
+
onPlay?: () => void;
|
|
10
|
+
onStop?: () => void;
|
|
11
|
+
isPlaying?: boolean;
|
|
12
|
+
/** Available target IDs (node/edge) for the dropdown */
|
|
13
|
+
availableTargets?: Array<{
|
|
14
|
+
id: string;
|
|
15
|
+
label: string;
|
|
16
|
+
type: 'node' | 'edge' | 'group';
|
|
17
|
+
}>;
|
|
18
|
+
className?: string;
|
|
19
|
+
}
|
|
20
|
+
export declare const AnimationTimeline: React.FC<AnimationTimelineProps>;
|
|
21
|
+
//# sourceMappingURL=AnimationTimeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnimationTimeline.d.ts","sourceRoot":"","sources":["../../src/components/AnimationTimeline.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAgC,MAAM,OAAO,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAA+B,MAAM,uBAAuB,CAAC;AAM3F,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACxC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC;IACrD,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC;IAC9E,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,wDAAwD;IACxD,gBAAgB,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,CAAC;IACzF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAUD,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAmN9D,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { DiagramNode, DiagramEdge, DiagramGroup, DiagramViewport, DiagramThemeOverrides, DiagramViewMode, Point, Size } from '../types/diagramTypes';
|
|
3
|
+
import { AnimationState } from '../core/animationEngine';
|
|
4
|
+
import { ParticleEngineState } from '../core/diagramParticleEngine';
|
|
5
|
+
|
|
6
|
+
export interface DiagramCanvasProps {
|
|
7
|
+
nodes: readonly DiagramNode[];
|
|
8
|
+
edges: readonly DiagramEdge[];
|
|
9
|
+
groups?: readonly DiagramGroup[];
|
|
10
|
+
viewport: DiagramViewport;
|
|
11
|
+
onViewportChange?: (viewport: DiagramViewport) => void;
|
|
12
|
+
theme?: DiagramThemeOverrides;
|
|
13
|
+
/** Currently selected element IDs */
|
|
14
|
+
selectedId?: string | null;
|
|
15
|
+
selectedIds?: readonly string[];
|
|
16
|
+
onSelectElement?: (id: string | null) => void;
|
|
17
|
+
onMultiSelect?: (ids: string[]) => void;
|
|
18
|
+
/** Node drag callbacks (editor only) */
|
|
19
|
+
onNodeDragStart?: (nodeId: string) => void;
|
|
20
|
+
onNodeDrag?: (nodeId: string, position: Point) => void;
|
|
21
|
+
onNodeDragEnd?: (nodeId: string, position: Point) => void;
|
|
22
|
+
/** Node resize (editor only) */
|
|
23
|
+
onNodeResize?: (nodeId: string, size: Size, position: Point) => void;
|
|
24
|
+
/** Edge creation (editor only) */
|
|
25
|
+
onEdgeCreate?: (sourceNodeId: string, targetNodeId: string) => void;
|
|
26
|
+
/** In-place text editing */
|
|
27
|
+
onNodeLabelChange?: (nodeId: string, label: string) => void;
|
|
28
|
+
/** Animation states (viewer only) */
|
|
29
|
+
animationStates?: Map<string, AnimationState>;
|
|
30
|
+
/** Particle engine state (liquid flows, glow, particles) */
|
|
31
|
+
particleState?: ParticleEngineState;
|
|
32
|
+
/** View mode: editor / player / playerAnimated */
|
|
33
|
+
viewMode?: DiagramViewMode;
|
|
34
|
+
/** Ghost opacity for click-to-reveal elements */
|
|
35
|
+
ghostOpacity?: number;
|
|
36
|
+
/** Group collapse/expand callback */
|
|
37
|
+
onGroupCollapse?: (groupId: string) => void;
|
|
38
|
+
/** Node collapse/expand callback */
|
|
39
|
+
onNodeCollapse?: (nodeId: string) => void;
|
|
40
|
+
/** Interaction trigger callback */
|
|
41
|
+
onInteraction?: (nodeId: string, interactionId: string) => void;
|
|
42
|
+
/** Whether the canvas is interactive (editor) or read-only (viewer) */
|
|
43
|
+
interactive?: boolean;
|
|
44
|
+
/** Show grid */
|
|
45
|
+
showGrid?: boolean;
|
|
46
|
+
/** Show rulers */
|
|
47
|
+
showRulers?: boolean;
|
|
48
|
+
/** Snap to grid */
|
|
49
|
+
snapToGrid?: boolean;
|
|
50
|
+
gridSnapSize?: number;
|
|
51
|
+
className?: string;
|
|
52
|
+
}
|
|
53
|
+
export declare const DiagramCanvas: React.FC<DiagramCanvasProps>;
|
|
54
|
+
//# sourceMappingURL=DiagramCanvas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiagramCanvas.d.ts","sourceRoot":"","sources":["../../src/components/DiagramCanvas.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAA4D,MAAM,OAAO,CAAC;AACjF,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,eAAe,EACf,qBAAqB,EACrB,eAAe,EACf,KAAK,EACL,IAAI,EACL,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAA8B,MAAM,+BAA+B,CAAC;AAKrG,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;IAC9B,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;IAC9B,MAAM,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IACjC,QAAQ,EAAE,eAAe,CAAC;IAC1B,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,IAAI,CAAC;IACvD,KAAK,CAAC,EAAE,qBAAqB,CAAC;IAE9B,qCAAqC;IACrC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9C,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAExC,wCAAwC;IACxC,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,KAAK,IAAI,CAAC;IACvD,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,KAAK,IAAI,CAAC;IAE1D,gCAAgC;IAChC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,KAAK,IAAI,CAAC;IAErE,kCAAkC;IAClC,YAAY,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IAEpE,4BAA4B;IAC5B,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAE5D,qCAAqC;IACrC,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAE9C,4DAA4D;IAC5D,aAAa,CAAC,EAAE,mBAAmB,CAAC;IAEpC,kDAAkD;IAClD,QAAQ,CAAC,EAAE,eAAe,CAAC;IAE3B,iDAAiD;IACjD,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,qCAAqC;IACrC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAE5C,oCAAoC;IACpC,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAE1C,mCAAmC;IACnC,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;IAEhE,uEAAuE;IACvE,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,gBAAgB;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,kBAAkB;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,mBAAmB;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAuBD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA8rCtD,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { NiceDiagramDocument, DiagramNode, DiagramEdge } from '../types/diagramTypes';
|
|
3
|
+
|
|
4
|
+
export interface DiagramCellRendererProps {
|
|
5
|
+
/** Full diagram document to render. */
|
|
6
|
+
document?: NiceDiagramDocument;
|
|
7
|
+
/** Alternative: provide nodes directly. */
|
|
8
|
+
nodes?: DiagramNode[];
|
|
9
|
+
/** Alternative: provide edges directly. */
|
|
10
|
+
edges?: DiagramEdge[];
|
|
11
|
+
/** Cell width in pixels. */
|
|
12
|
+
width?: number;
|
|
13
|
+
/** Cell height in pixels. */
|
|
14
|
+
height?: number;
|
|
15
|
+
/** Show node count badge. */
|
|
16
|
+
showCount?: boolean;
|
|
17
|
+
/** Enable click to expand to full viewer modal. */
|
|
18
|
+
expandable?: boolean;
|
|
19
|
+
/** Custom expand handler instead of built-in modal. */
|
|
20
|
+
onExpand?: (document: NiceDiagramDocument) => void;
|
|
21
|
+
/** Padding inside the cell (default: 4). */
|
|
22
|
+
padding?: number;
|
|
23
|
+
/** Background color (default: transparent). */
|
|
24
|
+
backgroundColor?: string;
|
|
25
|
+
/** Border radius (default: 4). */
|
|
26
|
+
borderRadius?: number;
|
|
27
|
+
/** Whether to show mini labels on nodes. */
|
|
28
|
+
showLabels?: boolean;
|
|
29
|
+
/** Edge color (default: #94a3b8). */
|
|
30
|
+
edgeColor?: string;
|
|
31
|
+
/** Tooltip text. */
|
|
32
|
+
tooltip?: string;
|
|
33
|
+
}
|
|
34
|
+
export declare const DiagramCellRenderer: React.FC<DiagramCellRendererProps>;
|
|
35
|
+
export default DiagramCellRenderer;
|
|
36
|
+
//# sourceMappingURL=DiagramCellRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiagramCellRenderer.d.ts","sourceRoot":"","sources":["../../src/components/DiagramCellRenderer.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAiD,MAAM,OAAO,CAAC;AACtE,OAAO,KAAK,EACR,mBAAmB,EACnB,WAAW,EACX,WAAW,EAGd,MAAM,uBAAuB,CAAC;AAO/B,MAAM,WAAW,wBAAwB;IACrC,uCAAuC;IACvC,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,2CAA2C;IAC3C,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IACtB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IACtB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mDAAmD;IACnD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACnD,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAmND,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CA+KlE,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { DiagramNode, DiagramEdge, DiagramViewport } from '../types/diagramTypes';
|
|
3
|
+
|
|
4
|
+
export interface DiagramMinimapProps {
|
|
5
|
+
nodes: readonly DiagramNode[];
|
|
6
|
+
edges: readonly DiagramEdge[];
|
|
7
|
+
viewport: DiagramViewport;
|
|
8
|
+
onViewportChange?: (viewport: DiagramViewport) => void;
|
|
9
|
+
/** Canvas pixel size (to compute viewport rectangle) */
|
|
10
|
+
canvasWidth?: number;
|
|
11
|
+
canvasHeight?: number;
|
|
12
|
+
width?: number;
|
|
13
|
+
height?: number;
|
|
14
|
+
className?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare const DiagramMinimap: React.FC<DiagramMinimapProps>;
|
|
17
|
+
//# sourceMappingURL=DiagramMinimap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiagramMinimap.d.ts","sourceRoot":"","sources":["../../src/components/DiagramMinimap.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAA+B,MAAM,OAAO,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAS,MAAM,uBAAuB,CAAC;AAE9F,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;IAC9B,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;IAC9B,QAAQ,EAAE,eAAe,CAAC;IAC1B,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,IAAI,CAAC;IACvD,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAKD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAwGxD,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { DiagramNode, DiagramEdge } from '../types/diagramTypes';
|
|
3
|
+
|
|
4
|
+
export interface DiagramPropertyPanelProps {
|
|
5
|
+
selectedNode?: DiagramNode | null;
|
|
6
|
+
selectedEdge?: DiagramEdge | null;
|
|
7
|
+
onNodeChange?: (id: string, patch: Partial<Omit<DiagramNode, 'id'>>) => void;
|
|
8
|
+
onEdgeChange?: (id: string, patch: Partial<Omit<DiagramEdge, 'id'>>) => void;
|
|
9
|
+
onRemove?: (id: string) => void;
|
|
10
|
+
className?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare const DiagramPropertyPanel: React.FC<DiagramPropertyPanelProps>;
|
|
13
|
+
//# sourceMappingURL=DiagramPropertyPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiagramPropertyPanel.d.ts","sourceRoot":"","sources":["../../src/components/DiagramPropertyPanel.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAsB,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EAIZ,MAAM,uBAAuB,CAAC;AAe/B,MAAM,WAAW,yBAAyB;IACxC,YAAY,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAClC,YAAY,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAClC,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC;IAC7E,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC;IAC7E,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAYD,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAiepE,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { LayoutAlgorithm, NodeShape, DiagramType, DiagramViewMode } from '../types/diagramTypes';
|
|
3
|
+
|
|
4
|
+
export type DiagramTool = 'select' | 'addNode' | 'addEdge' | 'pan' | 'delete' | 'text' | 'freehand';
|
|
5
|
+
export interface DiagramToolbarProps {
|
|
6
|
+
activeTool: DiagramTool;
|
|
7
|
+
onToolChange: (tool: DiagramTool) => void;
|
|
8
|
+
diagramType: DiagramType;
|
|
9
|
+
/** Callbacks wired from editor */
|
|
10
|
+
onAddNode?: (shape: NodeShape) => void;
|
|
11
|
+
onApplyLayout?: (algorithm: LayoutAlgorithm) => void;
|
|
12
|
+
onUndo?: () => void;
|
|
13
|
+
onRedo?: () => void;
|
|
14
|
+
canUndo?: boolean;
|
|
15
|
+
canRedo?: boolean;
|
|
16
|
+
onExport?: (format: 'svg' | 'mermaid' | 'ndd' | 'png') => void;
|
|
17
|
+
onZoomIn?: () => void;
|
|
18
|
+
onZoomOut?: () => void;
|
|
19
|
+
onZoomReset?: () => void;
|
|
20
|
+
zoomLevel?: number;
|
|
21
|
+
/** Format & style */
|
|
22
|
+
onToggleBold?: () => void;
|
|
23
|
+
onToggleItalic?: () => void;
|
|
24
|
+
isBold?: boolean;
|
|
25
|
+
isItalic?: boolean;
|
|
26
|
+
onFontFamilyChange?: (family: string) => void;
|
|
27
|
+
currentFontFamily?: string;
|
|
28
|
+
onFontSizeChange?: (size: number) => void;
|
|
29
|
+
currentFontSize?: number;
|
|
30
|
+
/** Alignment & distribute */
|
|
31
|
+
onAlignLeft?: () => void;
|
|
32
|
+
onAlignCenterH?: () => void;
|
|
33
|
+
onAlignRight?: () => void;
|
|
34
|
+
onAlignTop?: () => void;
|
|
35
|
+
onAlignCenterV?: () => void;
|
|
36
|
+
onAlignBottom?: () => void;
|
|
37
|
+
onDistributeH?: () => void;
|
|
38
|
+
onDistributeV?: () => void;
|
|
39
|
+
/** Arrange (z-order, group) */
|
|
40
|
+
onBringToFront?: () => void;
|
|
41
|
+
onSendToBack?: () => void;
|
|
42
|
+
onGroupSelected?: () => void;
|
|
43
|
+
onUngroupSelected?: () => void;
|
|
44
|
+
/** Clipboard */
|
|
45
|
+
onCopy?: () => void;
|
|
46
|
+
onPaste?: () => void;
|
|
47
|
+
onDuplicate?: () => void;
|
|
48
|
+
onSelectAll?: () => void;
|
|
49
|
+
/** Multi-select info */
|
|
50
|
+
selectionCount?: number;
|
|
51
|
+
/** Find */
|
|
52
|
+
onFind?: () => void;
|
|
53
|
+
showFind?: boolean;
|
|
54
|
+
findQuery?: string;
|
|
55
|
+
onFindQueryChange?: (q: string) => void;
|
|
56
|
+
/** View mode */
|
|
57
|
+
viewMode?: DiagramViewMode;
|
|
58
|
+
onViewModeChange?: (mode: DiagramViewMode) => void;
|
|
59
|
+
/** Style preset */
|
|
60
|
+
stylePresetId?: string;
|
|
61
|
+
onStylePresetChange?: (presetId: string) => void;
|
|
62
|
+
className?: string;
|
|
63
|
+
}
|
|
64
|
+
export declare const DiagramToolbar: React.FC<DiagramToolbarProps>;
|
|
65
|
+
//# sourceMappingURL=DiagramToolbar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiagramToolbar.d.ts","sourceRoot":"","sources":["../../src/components/DiagramToolbar.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
|
|
3
|
+
export interface DatabaseColumn {
|
|
4
|
+
name: string;
|
|
5
|
+
type: string;
|
|
6
|
+
nullable: boolean;
|
|
7
|
+
primaryKey?: boolean;
|
|
8
|
+
foreignKey?: {
|
|
9
|
+
table: string;
|
|
10
|
+
column: string;
|
|
11
|
+
};
|
|
12
|
+
unique?: boolean;
|
|
13
|
+
defaultValue?: string;
|
|
14
|
+
comment?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface DatabaseTable {
|
|
17
|
+
name: string;
|
|
18
|
+
schema?: string;
|
|
19
|
+
columns: DatabaseColumn[];
|
|
20
|
+
comment?: string;
|
|
21
|
+
metadata?: Record<string, unknown>;
|
|
22
|
+
}
|
|
23
|
+
export interface DatabaseRelation {
|
|
24
|
+
id: string;
|
|
25
|
+
fromTable: string;
|
|
26
|
+
fromColumn: string;
|
|
27
|
+
toTable: string;
|
|
28
|
+
toColumn: string;
|
|
29
|
+
type: RelationType;
|
|
30
|
+
name?: string;
|
|
31
|
+
}
|
|
32
|
+
export type RelationType = 'one-to-one' | 'one-to-many' | 'many-to-one' | 'many-to-many';
|
|
33
|
+
export interface DatabaseSchema {
|
|
34
|
+
name: string;
|
|
35
|
+
tables: DatabaseTable[];
|
|
36
|
+
relations: DatabaseRelation[];
|
|
37
|
+
metadata?: Record<string, unknown>;
|
|
38
|
+
}
|
|
39
|
+
export interface DatabaseSchemaViewerProps {
|
|
40
|
+
/** Database schema data */
|
|
41
|
+
schema: DatabaseSchema;
|
|
42
|
+
/** Called when a table is clicked */
|
|
43
|
+
onTableClick?: (table: DatabaseTable) => void;
|
|
44
|
+
/** Called when a column is clicked */
|
|
45
|
+
onColumnClick?: (table: DatabaseTable, column: DatabaseColumn) => void;
|
|
46
|
+
/** Called when a relation is clicked */
|
|
47
|
+
onRelationClick?: (relation: DatabaseRelation) => void;
|
|
48
|
+
/** Show column details */
|
|
49
|
+
showColumnDetails?: boolean;
|
|
50
|
+
/** Show only primary/foreign keys */
|
|
51
|
+
showOnlyKeys?: boolean;
|
|
52
|
+
/** Highlight specific tables */
|
|
53
|
+
highlightTables?: string[];
|
|
54
|
+
/** Show minimap */
|
|
55
|
+
showMinimap?: boolean;
|
|
56
|
+
/** Table colors by schema */
|
|
57
|
+
schemaColors?: Record<string, string>;
|
|
58
|
+
/** Layout algorithm */
|
|
59
|
+
layout?: 'auto' | 'grid' | 'hierarchical';
|
|
60
|
+
/** Maximum columns to display per table */
|
|
61
|
+
maxColumnsDisplay?: number;
|
|
62
|
+
/** Additional CSS class */
|
|
63
|
+
className?: string;
|
|
64
|
+
/** Inline styles */
|
|
65
|
+
style?: React.CSSProperties;
|
|
66
|
+
}
|
|
67
|
+
export declare const NiceDatabaseSchemaViewer: React.FC<DatabaseSchemaViewerProps>;
|
|
68
|
+
/**
|
|
69
|
+
* Parse SQL CREATE TABLE statements to DatabaseSchema
|
|
70
|
+
*/
|
|
71
|
+
export declare function parseSQLToSchema(sql: string): DatabaseSchema;
|
|
72
|
+
/**
|
|
73
|
+
* Generate SQL CREATE TABLE from DatabaseSchema
|
|
74
|
+
*/
|
|
75
|
+
export declare function schemaToSQL(schema: DatabaseSchema, dialect?: 'mysql' | 'postgres' | 'mssql'): string;
|
|
76
|
+
export default NiceDatabaseSchemaViewer;
|
|
77
|
+
//# sourceMappingURL=NiceDatabaseSchemaViewer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NiceDatabaseSchemaViewer.d.ts","sourceRoot":"","sources":["../../src/components/NiceDatabaseSchemaViewer.tsx"],"names":[],"mappings":"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"}
|