@cratis/components 0.1.17 → 0.1.19
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 +83 -0
- package/dist/cjs/Common/ErrorBoundary.js +26 -0
- package/dist/cjs/Common/ErrorBoundary.js.map +1 -0
- package/dist/cjs/Common/FormElement.js +10 -0
- package/dist/cjs/Common/FormElement.js.map +1 -0
- package/dist/cjs/Common/index.js +12 -0
- package/dist/cjs/Common/index.js.map +1 -0
- package/dist/cjs/EventModeling/EventModeling.css +146 -0
- package/dist/cjs/EventModeling/EventModeling.js +209 -0
- package/dist/cjs/EventModeling/EventModeling.js.map +1 -0
- package/dist/cjs/EventModeling/components/Canvas.js +403 -0
- package/dist/cjs/EventModeling/components/Canvas.js.map +1 -0
- package/dist/cjs/EventModeling/components/CanvasControls.js +10 -0
- package/dist/cjs/EventModeling/components/CanvasControls.js.map +1 -0
- package/dist/cjs/EventModeling/components/Toolbox.js +18 -0
- package/dist/cjs/EventModeling/components/Toolbox.js.map +1 -0
- package/dist/cjs/EventModeling/engine/connectorGraphics.js +173 -0
- package/dist/cjs/EventModeling/engine/connectorGraphics.js.map +1 -0
- package/dist/cjs/EventModeling/engine/elementSprites.js +301 -0
- package/dist/cjs/EventModeling/engine/elementSprites.js.map +1 -0
- package/dist/cjs/EventModeling/index.js +12 -0
- package/dist/cjs/EventModeling/index.js.map +1 -0
- package/dist/cjs/EventModeling/types.js +60 -0
- package/dist/cjs/EventModeling/types.js.map +1 -0
- package/dist/cjs/PivotViewer/PivotViewer.css +54 -5
- package/dist/cjs/PivotViewer/PivotViewer.js +5 -2
- package/dist/cjs/PivotViewer/PivotViewer.js.map +1 -1
- package/dist/cjs/PivotViewer/components/AxisLabels.js +5 -8
- package/dist/cjs/PivotViewer/components/AxisLabels.js.map +1 -1
- package/dist/cjs/PivotViewer/components/DetailPanel.js +9 -2
- package/dist/cjs/PivotViewer/components/DetailPanel.js.map +1 -1
- package/dist/cjs/PivotViewer/components/PivotCanvas.js +30 -6
- package/dist/cjs/PivotViewer/components/PivotCanvas.js.map +1 -1
- package/dist/cjs/PivotViewer/components/PivotViewerMain.js +16 -5
- package/dist/cjs/PivotViewer/components/PivotViewerMain.js.map +1 -1
- package/dist/cjs/PivotViewer/components/Toolbar.js +34 -2
- package/dist/cjs/PivotViewer/components/Toolbar.js.map +1 -1
- package/dist/cjs/PivotViewer/components/pivot/constants.js +5 -5
- package/dist/cjs/PivotViewer/components/pivot/constants.js.map +1 -1
- package/dist/cjs/PivotViewer/components/pivot/groups.js +15 -15
- package/dist/cjs/PivotViewer/components/pivot/groups.js.map +1 -1
- package/dist/cjs/PivotViewer/components/pivot/sprites.js +10 -27
- package/dist/cjs/PivotViewer/components/pivot/sprites.js.map +1 -1
- package/dist/cjs/PivotViewer/components/pivot/visibility.js +8 -20
- package/dist/cjs/PivotViewer/components/pivot/visibility.js.map +1 -1
- package/dist/cjs/PivotViewer/constants.js +0 -2
- package/dist/cjs/PivotViewer/constants.js.map +1 -1
- package/dist/cjs/PivotViewer/engine/layout.js +1 -1
- package/dist/cjs/PivotViewer/engine/layout.js.map +1 -1
- package/dist/cjs/PivotViewer/hooks/useCardSelection.js +2 -1
- package/dist/cjs/PivotViewer/hooks/useCardSelection.js.map +1 -1
- package/dist/cjs/PivotViewer/hooks/useZoomState.js +4 -0
- package/dist/cjs/PivotViewer/hooks/useZoomState.js.map +1 -1
- package/dist/cjs/PivotViewer/types.js.map +1 -1
- package/dist/cjs/PivotViewer/utils/animations.js +1 -1
- package/dist/cjs/PivotViewer/utils/animations.js.map +1 -1
- package/dist/cjs/PivotViewer/utils/constants.js +1 -1
- package/dist/cjs/PivotViewer/utils/constants.js.map +1 -1
- package/dist/cjs/PivotViewer/utils/selection.js +8 -1
- package/dist/cjs/PivotViewer/utils/selection.js.map +1 -1
- package/dist/cjs/TimeMachine/TimeMachine.js +0 -3
- package/dist/cjs/TimeMachine/TimeMachine.js.map +1 -1
- package/dist/cjs/index.js +16 -12
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/package.json +3 -0
- package/dist/esm/Common/ErrorBoundary.js +7 -4
- package/dist/esm/Common/ErrorBoundary.js.map +1 -1
- package/dist/esm/Common/FormElement.js +7 -4
- package/dist/esm/Common/FormElement.js.map +1 -1
- package/dist/esm/Common/index.js +4 -4
- package/dist/esm/Common/index.js.map +1 -1
- package/dist/esm/EventModeling/EventModeling.css +146 -0
- package/dist/esm/EventModeling/EventModeling.d.ts +11 -0
- package/dist/esm/EventModeling/EventModeling.d.ts.map +1 -0
- package/dist/esm/EventModeling/EventModeling.js +207 -0
- package/dist/esm/EventModeling/EventModeling.js.map +1 -0
- package/dist/esm/EventModeling/EventModeling.stories.d.ts +10 -0
- package/dist/esm/EventModeling/EventModeling.stories.d.ts.map +1 -0
- package/dist/esm/EventModeling/EventModeling.stories.js +252 -0
- package/dist/esm/EventModeling/EventModeling.stories.js.map +1 -0
- package/dist/esm/EventModeling/components/Canvas.d.ts +23 -0
- package/dist/esm/EventModeling/components/Canvas.d.ts.map +1 -0
- package/dist/esm/EventModeling/components/Canvas.js +382 -0
- package/dist/esm/EventModeling/components/Canvas.js.map +1 -0
- package/dist/esm/EventModeling/components/CanvasControls.d.ts +10 -0
- package/dist/esm/EventModeling/components/CanvasControls.d.ts.map +1 -0
- package/dist/esm/EventModeling/components/CanvasControls.js +8 -0
- package/dist/esm/EventModeling/components/CanvasControls.js.map +1 -0
- package/dist/esm/EventModeling/components/Toolbox.d.ts +9 -0
- package/dist/esm/EventModeling/components/Toolbox.d.ts.map +1 -0
- package/dist/esm/EventModeling/components/Toolbox.js +16 -0
- package/dist/esm/EventModeling/components/Toolbox.js.map +1 -0
- package/dist/esm/EventModeling/engine/connectorGraphics.d.ts +12 -0
- package/dist/esm/EventModeling/engine/connectorGraphics.d.ts.map +1 -0
- package/dist/esm/EventModeling/engine/connectorGraphics.js +151 -0
- package/dist/esm/EventModeling/engine/connectorGraphics.js.map +1 -0
- package/dist/esm/EventModeling/engine/elementSprites.d.ts +23 -0
- package/dist/esm/EventModeling/engine/elementSprites.d.ts.map +1 -0
- package/dist/esm/EventModeling/engine/elementSprites.js +276 -0
- package/dist/esm/EventModeling/engine/elementSprites.js.map +1 -0
- package/dist/esm/EventModeling/index.d.ts +3 -0
- package/dist/esm/EventModeling/index.d.ts.map +1 -0
- package/dist/esm/EventModeling/index.js +3 -0
- package/dist/esm/EventModeling/index.js.map +1 -0
- package/dist/esm/EventModeling/types.d.ts +79 -0
- package/dist/esm/EventModeling/types.d.ts.map +1 -0
- package/dist/esm/EventModeling/types.js +56 -0
- package/dist/esm/EventModeling/types.js.map +1 -0
- package/dist/esm/PivotViewer/PivotViewer.css +54 -5
- package/dist/esm/PivotViewer/PivotViewer.d.ts.map +1 -1
- package/dist/esm/PivotViewer/PivotViewer.js +5 -2
- package/dist/esm/PivotViewer/PivotViewer.js.map +1 -1
- package/dist/esm/PivotViewer/PivotViewer.stories.d.ts +0 -1
- package/dist/esm/PivotViewer/PivotViewer.stories.d.ts.map +1 -1
- package/dist/esm/PivotViewer/PivotViewer.stories.js +10 -9
- package/dist/esm/PivotViewer/PivotViewer.stories.js.map +1 -1
- package/dist/esm/PivotViewer/components/AxisLabels.d.ts +2 -1
- package/dist/esm/PivotViewer/components/AxisLabels.d.ts.map +1 -1
- package/dist/esm/PivotViewer/components/AxisLabels.js +6 -9
- package/dist/esm/PivotViewer/components/AxisLabels.js.map +1 -1
- package/dist/esm/PivotViewer/components/DetailPanel.d.ts +3 -1
- package/dist/esm/PivotViewer/components/DetailPanel.d.ts.map +1 -1
- package/dist/esm/PivotViewer/components/DetailPanel.js +10 -3
- package/dist/esm/PivotViewer/components/DetailPanel.js.map +1 -1
- package/dist/esm/PivotViewer/components/PivotCanvas.d.ts +5 -2
- package/dist/esm/PivotViewer/components/PivotCanvas.d.ts.map +1 -1
- package/dist/esm/PivotViewer/components/PivotCanvas.js +30 -6
- package/dist/esm/PivotViewer/components/PivotCanvas.js.map +1 -1
- package/dist/esm/PivotViewer/components/PivotViewerMain.d.ts +5 -1
- package/dist/esm/PivotViewer/components/PivotViewerMain.d.ts.map +1 -1
- package/dist/esm/PivotViewer/components/PivotViewerMain.js +16 -5
- package/dist/esm/PivotViewer/components/PivotViewerMain.js.map +1 -1
- package/dist/esm/PivotViewer/components/Toolbar.d.ts +3 -1
- package/dist/esm/PivotViewer/components/Toolbar.d.ts.map +1 -1
- package/dist/esm/PivotViewer/components/Toolbar.js +34 -2
- package/dist/esm/PivotViewer/components/Toolbar.js.map +1 -1
- package/dist/esm/PivotViewer/components/pivot/constants.d.ts.map +1 -1
- package/dist/esm/PivotViewer/components/pivot/constants.js +5 -5
- package/dist/esm/PivotViewer/components/pivot/constants.js.map +1 -1
- package/dist/esm/PivotViewer/components/pivot/groups.d.ts.map +1 -1
- package/dist/esm/PivotViewer/components/pivot/groups.js +2 -2
- package/dist/esm/PivotViewer/components/pivot/groups.js.map +1 -1
- package/dist/esm/PivotViewer/components/pivot/sprites.d.ts +10 -2
- package/dist/esm/PivotViewer/components/pivot/sprites.d.ts.map +1 -1
- package/dist/esm/PivotViewer/components/pivot/sprites.js +10 -27
- package/dist/esm/PivotViewer/components/pivot/sprites.js.map +1 -1
- package/dist/esm/PivotViewer/components/pivot/visibility.d.ts.map +1 -1
- package/dist/esm/PivotViewer/components/pivot/visibility.js +8 -20
- package/dist/esm/PivotViewer/components/pivot/visibility.js.map +1 -1
- package/dist/esm/PivotViewer/constants.js +1 -2
- package/dist/esm/PivotViewer/constants.js.map +1 -1
- package/dist/esm/PivotViewer/engine/layout.js +1 -1
- package/dist/esm/PivotViewer/engine/layout.js.map +1 -1
- package/dist/esm/PivotViewer/hooks/useCardSelection.d.ts.map +1 -1
- package/dist/esm/PivotViewer/hooks/useCardSelection.js +2 -1
- package/dist/esm/PivotViewer/hooks/useCardSelection.js.map +1 -1
- package/dist/esm/PivotViewer/hooks/useZoomState.d.ts +1 -0
- package/dist/esm/PivotViewer/hooks/useZoomState.d.ts.map +1 -1
- package/dist/esm/PivotViewer/hooks/useZoomState.js +4 -0
- package/dist/esm/PivotViewer/hooks/useZoomState.js.map +1 -1
- package/dist/esm/PivotViewer/types.d.ts +5 -1
- package/dist/esm/PivotViewer/types.d.ts.map +1 -1
- package/dist/esm/PivotViewer/types.js.map +1 -1
- package/dist/esm/PivotViewer/utils/animations.js +1 -1
- package/dist/esm/PivotViewer/utils/animations.js.map +1 -1
- package/dist/esm/PivotViewer/utils/constants.d.ts +1 -1
- package/dist/esm/PivotViewer/utils/constants.d.ts.map +1 -1
- package/dist/esm/PivotViewer/utils/constants.js +1 -1
- package/dist/esm/PivotViewer/utils/constants.js.map +1 -1
- package/dist/esm/PivotViewer/utils/selection.d.ts.map +1 -1
- package/dist/esm/PivotViewer/utils/selection.js +8 -1
- package/dist/esm/PivotViewer/utils/selection.js.map +1 -1
- package/dist/esm/TimeMachine/TimeMachine.js +1 -1
- package/dist/esm/index.d.ts +5 -3
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +16 -12
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/package.json +3 -0
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/package.json +36 -78
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import React, { useState, useCallback } from 'react';
|
|
3
|
+
import { DEFAULT_ELEMENT_SIZE, calculateOptimalEdges } from './types.js';
|
|
4
|
+
import { Toolbox } from './components/Toolbox.js';
|
|
5
|
+
import { Canvas } from './components/Canvas.js';
|
|
6
|
+
import { CanvasControls } from './components/CanvasControls.js';
|
|
7
|
+
import './EventModeling.css';
|
|
8
|
+
|
|
9
|
+
const EventModeling = ({ initialState, onStateChange, width = '100%', height = '100vh', }) => {
|
|
10
|
+
const [state, setState] = useState(initialState || {
|
|
11
|
+
elements: [],
|
|
12
|
+
connectors: [],
|
|
13
|
+
});
|
|
14
|
+
const [selectedTool, setSelectedTool] = useState('select');
|
|
15
|
+
const [zoom, setZoom] = useState(1);
|
|
16
|
+
const [pan, setPan] = useState({ x: 0, y: 0 });
|
|
17
|
+
const updateState = useCallback((newState) => {
|
|
18
|
+
setState(newState);
|
|
19
|
+
onStateChange?.(newState);
|
|
20
|
+
}, [onStateChange]);
|
|
21
|
+
const handleZoomChange = useCallback((newZoom) => {
|
|
22
|
+
setZoom(newZoom);
|
|
23
|
+
}, []);
|
|
24
|
+
const handlePanChange = useCallback((newPan) => {
|
|
25
|
+
setPan(newPan);
|
|
26
|
+
}, []);
|
|
27
|
+
const handleAddElement = useCallback((type, x, y) => {
|
|
28
|
+
console.log('Adding element:', type, 'at', x, y);
|
|
29
|
+
const size = DEFAULT_ELEMENT_SIZE[type];
|
|
30
|
+
const newElement = {
|
|
31
|
+
id: `${type}-${Date.now()}`,
|
|
32
|
+
type,
|
|
33
|
+
position: { x, y },
|
|
34
|
+
size,
|
|
35
|
+
label: `New ${type.charAt(0).toUpperCase() + type.slice(1)}`,
|
|
36
|
+
};
|
|
37
|
+
updateState({
|
|
38
|
+
...state,
|
|
39
|
+
elements: [...state.elements, newElement],
|
|
40
|
+
});
|
|
41
|
+
setSelectedTool('select');
|
|
42
|
+
}, [state, updateState]);
|
|
43
|
+
const handleUpdateElement = useCallback((id, updates) => {
|
|
44
|
+
const updatedElements = state.elements.map(el => el.id === id ? { ...el, ...updates } : el);
|
|
45
|
+
let updatedConnectors = state.connectors;
|
|
46
|
+
if (updates.position) {
|
|
47
|
+
updatedConnectors = state.connectors.map(connector => {
|
|
48
|
+
if (connector.from.elementId === id || connector.to.elementId === id) {
|
|
49
|
+
const fromElement = updatedElements.find(el => el.id === connector.from.elementId);
|
|
50
|
+
const toElement = updatedElements.find(el => el.id === connector.to.elementId);
|
|
51
|
+
if (fromElement && toElement) {
|
|
52
|
+
const optimalEdges = calculateOptimalEdges(fromElement, toElement);
|
|
53
|
+
return {
|
|
54
|
+
...connector,
|
|
55
|
+
from: { elementId: connector.from.elementId, side: optimalEdges.fromSide },
|
|
56
|
+
to: { elementId: connector.to.elementId, side: optimalEdges.toSide },
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return connector;
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
updateState({
|
|
64
|
+
...state,
|
|
65
|
+
elements: updatedElements,
|
|
66
|
+
connectors: updatedConnectors,
|
|
67
|
+
});
|
|
68
|
+
}, [state, updateState]);
|
|
69
|
+
const handleDeleteElement = useCallback((id) => {
|
|
70
|
+
updateState({
|
|
71
|
+
...state,
|
|
72
|
+
elements: state.elements.filter(el => el.id !== id),
|
|
73
|
+
connectors: state.connectors.filter(conn => conn.from.elementId !== id && conn.to.elementId !== id),
|
|
74
|
+
selectedElementId: state.selectedElementId === id ? undefined : state.selectedElementId,
|
|
75
|
+
});
|
|
76
|
+
}, [state, updateState]);
|
|
77
|
+
const handleAddConnector = useCallback((connector) => {
|
|
78
|
+
if (connector.from.elementId === connector.to.elementId) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
const fromElement = state.elements.find(el => el.id === connector.from.elementId);
|
|
82
|
+
const toElement = state.elements.find(el => el.id === connector.to.elementId);
|
|
83
|
+
if (!fromElement || !toElement) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
const optimalEdges = calculateOptimalEdges(fromElement, toElement);
|
|
87
|
+
const optimizedConnector = {
|
|
88
|
+
...connector,
|
|
89
|
+
from: { elementId: connector.from.elementId, side: optimalEdges.fromSide },
|
|
90
|
+
to: { elementId: connector.to.elementId, side: optimalEdges.toSide },
|
|
91
|
+
};
|
|
92
|
+
const isDuplicate = state.connectors.some(c => c.from.elementId === optimizedConnector.from.elementId &&
|
|
93
|
+
c.to.elementId === optimizedConnector.to.elementId);
|
|
94
|
+
if (isDuplicate) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
updateState({
|
|
98
|
+
...state,
|
|
99
|
+
connectors: [...state.connectors, optimizedConnector],
|
|
100
|
+
});
|
|
101
|
+
}, [state, updateState]);
|
|
102
|
+
const handleDeleteConnector = useCallback((id) => {
|
|
103
|
+
updateState({
|
|
104
|
+
...state,
|
|
105
|
+
connectors: state.connectors.filter(conn => conn.id !== id),
|
|
106
|
+
selectedConnectorId: state.selectedConnectorId === id ? undefined : state.selectedConnectorId,
|
|
107
|
+
});
|
|
108
|
+
}, [state, updateState]);
|
|
109
|
+
const handleSelectElement = useCallback((id) => {
|
|
110
|
+
updateState({
|
|
111
|
+
...state,
|
|
112
|
+
selectedElementId: id,
|
|
113
|
+
selectedConnectorId: undefined,
|
|
114
|
+
});
|
|
115
|
+
}, [state, updateState]);
|
|
116
|
+
const handleSelectConnector = useCallback((id) => {
|
|
117
|
+
updateState({
|
|
118
|
+
...state,
|
|
119
|
+
selectedConnectorId: id,
|
|
120
|
+
selectedElementId: undefined,
|
|
121
|
+
});
|
|
122
|
+
}, [state, updateState]);
|
|
123
|
+
const handleZoomIn = useCallback(() => {
|
|
124
|
+
setZoom(prev => Math.min(5, prev * 1.2));
|
|
125
|
+
}, []);
|
|
126
|
+
const handleZoomOut = useCallback(() => {
|
|
127
|
+
setZoom(prev => Math.max(0.1, prev / 1.2));
|
|
128
|
+
}, []);
|
|
129
|
+
const handleZoomReset = useCallback(() => {
|
|
130
|
+
setZoom(1);
|
|
131
|
+
}, []);
|
|
132
|
+
const handleFitToView = useCallback(() => {
|
|
133
|
+
if (state.elements.length === 0) {
|
|
134
|
+
setZoom(1);
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;
|
|
138
|
+
state.elements.forEach(el => {
|
|
139
|
+
minX = Math.min(minX, el.position.x);
|
|
140
|
+
minY = Math.min(minY, el.position.y);
|
|
141
|
+
maxX = Math.max(maxX, el.position.x + el.size.width);
|
|
142
|
+
maxY = Math.max(maxY, el.position.y + el.size.height);
|
|
143
|
+
});
|
|
144
|
+
const padding = 50;
|
|
145
|
+
const contentWidth = maxX - minX + padding * 2;
|
|
146
|
+
const contentHeight = maxY - minY + padding * 2;
|
|
147
|
+
const canvasWidth = window.innerWidth * 0.8;
|
|
148
|
+
const canvasHeight = window.innerHeight * 0.8;
|
|
149
|
+
const scaleX = canvasWidth / contentWidth;
|
|
150
|
+
const scaleY = canvasHeight / contentHeight;
|
|
151
|
+
const newZoom = Math.min(scaleX, scaleY, 1);
|
|
152
|
+
setZoom(newZoom);
|
|
153
|
+
}, [state.elements]);
|
|
154
|
+
React.useEffect(() => {
|
|
155
|
+
const handleKeyDown = (e) => {
|
|
156
|
+
if (e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement) {
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
switch (e.key.toLowerCase()) {
|
|
160
|
+
case 'v':
|
|
161
|
+
setSelectedTool('select');
|
|
162
|
+
break;
|
|
163
|
+
case 'c':
|
|
164
|
+
setSelectedTool('command');
|
|
165
|
+
break;
|
|
166
|
+
case 'e':
|
|
167
|
+
setSelectedTool('event');
|
|
168
|
+
break;
|
|
169
|
+
case 'r':
|
|
170
|
+
setSelectedTool('readmodel');
|
|
171
|
+
break;
|
|
172
|
+
case 'p':
|
|
173
|
+
setSelectedTool('process');
|
|
174
|
+
break;
|
|
175
|
+
case 'delete':
|
|
176
|
+
case 'backspace':
|
|
177
|
+
if (state.selectedElementId) {
|
|
178
|
+
handleDeleteElement(state.selectedElementId);
|
|
179
|
+
}
|
|
180
|
+
else if (state.selectedConnectorId) {
|
|
181
|
+
handleDeleteConnector(state.selectedConnectorId);
|
|
182
|
+
}
|
|
183
|
+
break;
|
|
184
|
+
case '+':
|
|
185
|
+
case '=':
|
|
186
|
+
handleZoomIn();
|
|
187
|
+
break;
|
|
188
|
+
case '-':
|
|
189
|
+
case '_':
|
|
190
|
+
handleZoomOut();
|
|
191
|
+
break;
|
|
192
|
+
case '0':
|
|
193
|
+
handleZoomReset();
|
|
194
|
+
break;
|
|
195
|
+
case 'f':
|
|
196
|
+
handleFitToView();
|
|
197
|
+
break;
|
|
198
|
+
}
|
|
199
|
+
};
|
|
200
|
+
window.addEventListener('keydown', handleKeyDown);
|
|
201
|
+
return () => window.removeEventListener('keydown', handleKeyDown);
|
|
202
|
+
}, [state, selectedTool, handleDeleteElement, handleDeleteConnector, handleZoomIn, handleZoomOut, handleZoomReset, handleFitToView]);
|
|
203
|
+
return (jsxs("div", { className: "event-modeling", style: { width, height }, children: [jsx(Toolbox, { selectedTool: selectedTool, onToolSelect: setSelectedTool }), jsx(Canvas, { state: state, selectedTool: selectedTool, zoom: zoom, pan: pan, onZoomChange: handleZoomChange, onPanChange: handlePanChange, onAddElement: handleAddElement, onUpdateElement: handleUpdateElement, onAddConnector: handleAddConnector, onSelectElement: handleSelectElement, onSelectConnector: handleSelectConnector }), jsx(CanvasControls, { zoom: zoom, onZoomIn: handleZoomIn, onZoomOut: handleZoomOut, onZoomReset: handleZoomReset, onFitToView: handleFitToView })] }));
|
|
204
|
+
};
|
|
205
|
+
|
|
206
|
+
export { EventModeling };
|
|
207
|
+
//# sourceMappingURL=EventModeling.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventModeling.js","sources":["../../../EventModeling/EventModeling.tsx"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport React, { useState, useCallback } from 'react';\nimport { EventModelingState, ElementData, Connector, ElementType, DEFAULT_ELEMENT_SIZE, calculateOptimalEdges } from './types';\nimport { Toolbox } from './components/Toolbox';\nimport { Canvas } from './components/Canvas';\nimport { CanvasControls } from './components/CanvasControls';\nimport './EventModeling.css';\n\nexport interface EventModelingProps {\n initialState?: EventModelingState;\n onStateChange?: (state: EventModelingState) => void;\n width?: string;\n height?: string;\n}\n\nexport const EventModeling: React.FC<EventModelingProps> = ({\n initialState,\n onStateChange,\n width = '100%',\n height = '100vh',\n}) => {\n const [state, setState] = useState<EventModelingState>(\n initialState || {\n elements: [],\n connectors: [],\n }\n );\n\n const [selectedTool, setSelectedTool] = useState<ElementType | 'select'>('select');\n const [zoom, setZoom] = useState(1);\n const [pan, setPan] = useState({ x: 0, y: 0 });\n\n const updateState = useCallback((newState: EventModelingState) => {\n setState(newState);\n onStateChange?.(newState);\n }, [onStateChange]);\n\n const handleZoomChange = useCallback((newZoom: number) => {\n setZoom(newZoom);\n }, []);\n\n const handlePanChange = useCallback((newPan: { x: number; y: number }) => {\n setPan(newPan);\n }, []);\n\n const handleAddElement = useCallback((type: ElementType, x: number, y: number) => {\n console.log('Adding element:', type, 'at', x, y); // Debug log\n const size = DEFAULT_ELEMENT_SIZE[type];\n const newElement: ElementData = {\n id: `${type}-${Date.now()}`,\n type,\n position: { x, y },\n size,\n label: `New ${type.charAt(0).toUpperCase() + type.slice(1)}`,\n };\n\n updateState({\n ...state,\n elements: [...state.elements, newElement],\n });\n\n // Auto-switch back to select tool after adding\n setSelectedTool('select');\n }, [state, updateState]);\n\n const handleUpdateElement = useCallback((id: string, updates: Partial<ElementData>) => {\n const updatedElements = state.elements.map(el =>\n el.id === id ? { ...el, ...updates } : el\n );\n\n // If position changed, update affected connectors to use optimal edges\n let updatedConnectors = state.connectors;\n if (updates.position) {\n updatedConnectors = state.connectors.map(connector => {\n // Check if this connector involves the moved element\n if (connector.from.elementId === id || connector.to.elementId === id) {\n const fromElement = updatedElements.find(el => el.id === connector.from.elementId);\n const toElement = updatedElements.find(el => el.id === connector.to.elementId);\n\n if (fromElement && toElement) {\n const optimalEdges = calculateOptimalEdges(fromElement, toElement);\n return {\n ...connector,\n from: { elementId: connector.from.elementId, side: optimalEdges.fromSide },\n to: { elementId: connector.to.elementId, side: optimalEdges.toSide },\n };\n }\n }\n return connector;\n });\n }\n\n updateState({\n ...state,\n elements: updatedElements,\n connectors: updatedConnectors,\n });\n }, [state, updateState]);\n\n const handleDeleteElement = useCallback((id: string) => {\n updateState({\n ...state,\n elements: state.elements.filter(el => el.id !== id),\n connectors: state.connectors.filter(\n conn => conn.from.elementId !== id && conn.to.elementId !== id\n ),\n selectedElementId: state.selectedElementId === id ? undefined : state.selectedElementId,\n });\n }, [state, updateState]);\n\n const handleAddConnector = useCallback((connector: Connector) => {\n // Prevent connecting element to itself\n if (connector.from.elementId === connector.to.elementId) {\n return;\n }\n\n // Find the elements to calculate optimal edges\n const fromElement = state.elements.find(el => el.id === connector.from.elementId);\n const toElement = state.elements.find(el => el.id === connector.to.elementId);\n\n if (!fromElement || !toElement) {\n return;\n }\n\n // Calculate optimal edges based on positions\n const optimalEdges = calculateOptimalEdges(fromElement, toElement);\n\n // Create connector with optimal edges\n const optimizedConnector: Connector = {\n ...connector,\n from: { elementId: connector.from.elementId, side: optimalEdges.fromSide },\n to: { elementId: connector.to.elementId, side: optimalEdges.toSide },\n };\n\n // Prevent duplicate connectors (checking element IDs only, not sides since we auto-adjust)\n const isDuplicate = state.connectors.some(\n c => c.from.elementId === optimizedConnector.from.elementId &&\n c.to.elementId === optimizedConnector.to.elementId\n );\n\n if (isDuplicate) {\n return;\n }\n\n updateState({\n ...state,\n connectors: [...state.connectors, optimizedConnector],\n });\n }, [state, updateState]);\n\n const handleDeleteConnector = useCallback((id: string) => {\n updateState({\n ...state,\n connectors: state.connectors.filter(conn => conn.id !== id),\n selectedConnectorId: state.selectedConnectorId === id ? undefined : state.selectedConnectorId,\n });\n }, [state, updateState]);\n\n const handleSelectElement = useCallback((id: string | undefined) => {\n updateState({\n ...state,\n selectedElementId: id,\n selectedConnectorId: undefined,\n });\n }, [state, updateState]);\n\n const handleSelectConnector = useCallback((id: string | undefined) => {\n updateState({\n ...state,\n selectedConnectorId: id,\n selectedElementId: undefined,\n });\n }, [state, updateState]);\n\n const handleZoomIn = useCallback(() => {\n setZoom(prev => Math.min(5, prev * 1.2));\n }, []);\n\n const handleZoomOut = useCallback(() => {\n setZoom(prev => Math.max(0.1, prev / 1.2));\n }, []);\n\n const handleZoomReset = useCallback(() => {\n setZoom(1);\n }, []);\n\n const handleFitToView = useCallback(() => {\n if (state.elements.length === 0) {\n setZoom(1);\n return;\n }\n\n // Calculate bounding box of all elements\n let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n state.elements.forEach(el => {\n minX = Math.min(minX, el.position.x);\n minY = Math.min(minY, el.position.y);\n maxX = Math.max(maxX, el.position.x + el.size.width);\n maxY = Math.max(maxY, el.position.y + el.size.height);\n });\n\n const padding = 50;\n const contentWidth = maxX - minX + padding * 2;\n const contentHeight = maxY - minY + padding * 2;\n\n // Get canvas size (approximate)\n const canvasWidth = window.innerWidth * 0.8;\n const canvasHeight = window.innerHeight * 0.8;\n\n const scaleX = canvasWidth / contentWidth;\n const scaleY = canvasHeight / contentHeight;\n const newZoom = Math.min(scaleX, scaleY, 1);\n\n setZoom(newZoom);\n }, [state.elements]);\n\n // Keyboard shortcuts\n React.useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement) {\n return;\n }\n\n switch (e.key.toLowerCase()) {\n case 'v':\n setSelectedTool('select');\n break;\n case 'c':\n setSelectedTool('command');\n break;\n case 'e':\n setSelectedTool('event');\n break;\n case 'r':\n setSelectedTool('readmodel');\n break;\n case 'p':\n setSelectedTool('process');\n break;\n case 'delete':\n case 'backspace':\n if (state.selectedElementId) {\n handleDeleteElement(state.selectedElementId);\n } else if (state.selectedConnectorId) {\n handleDeleteConnector(state.selectedConnectorId);\n }\n break;\n case '+':\n case '=':\n handleZoomIn();\n break;\n case '-':\n case '_':\n handleZoomOut();\n break;\n case '0':\n handleZoomReset();\n break;\n case 'f':\n handleFitToView();\n break;\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [state, selectedTool, handleDeleteElement, handleDeleteConnector, handleZoomIn, handleZoomOut, handleZoomReset, handleFitToView]);\n\n return (\n <div className=\"event-modeling\" style={{ width, height }}>\n <Toolbox\n selectedTool={selectedTool}\n onToolSelect={setSelectedTool}\n />\n <Canvas\n state={state}\n selectedTool={selectedTool}\n zoom={zoom}\n pan={pan}\n onZoomChange={handleZoomChange}\n onPanChange={handlePanChange}\n onAddElement={handleAddElement}\n onUpdateElement={handleUpdateElement}\n onAddConnector={handleAddConnector}\n onSelectElement={handleSelectElement}\n onSelectConnector={handleSelectConnector}\n />\n <CanvasControls\n zoom={zoom}\n onZoomIn={handleZoomIn}\n onZoomOut={handleZoomOut}\n onZoomReset={handleZoomReset}\n onFitToView={handleFitToView}\n />\n </div>\n );\n};\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
+
import { EventModeling } from './EventModeling';
|
|
3
|
+
declare const meta: Meta<typeof EventModeling>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof EventModeling>;
|
|
6
|
+
export declare const Empty: Story;
|
|
7
|
+
export declare const SimpleFlow: Story;
|
|
8
|
+
export declare const ComplexEventModel: Story;
|
|
9
|
+
export declare const WithProcessAutomation: Story;
|
|
10
|
+
//# sourceMappingURL=EventModeling.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventModeling.stories.d.ts","sourceRoot":"","sources":["../../../EventModeling/EventModeling.stories.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,aAAa,CAOpC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,aAAa,CAAC,CAAC;AAE5C,eAAO,MAAM,KAAK,EAAE,KAKnB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KA6CxB,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,KA+H/B,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,KAsEnC,CAAC"}
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
import { EventModeling } from './EventModeling';
|
|
2
|
+
const meta = {
|
|
3
|
+
title: 'EventModeling',
|
|
4
|
+
component: EventModeling,
|
|
5
|
+
parameters: {
|
|
6
|
+
layout: 'fullscreen',
|
|
7
|
+
},
|
|
8
|
+
tags: ['autodocs'],
|
|
9
|
+
};
|
|
10
|
+
export default meta;
|
|
11
|
+
export const Empty = {
|
|
12
|
+
args: {
|
|
13
|
+
width: '100%',
|
|
14
|
+
height: '800px',
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
export const SimpleFlow = {
|
|
18
|
+
args: {
|
|
19
|
+
width: '100%',
|
|
20
|
+
height: '800px',
|
|
21
|
+
initialState: {
|
|
22
|
+
elements: [
|
|
23
|
+
{
|
|
24
|
+
id: 'cmd-1',
|
|
25
|
+
type: 'command',
|
|
26
|
+
position: { x: 100, y: 200 },
|
|
27
|
+
size: { width: 200, height: 100 },
|
|
28
|
+
label: 'Register User',
|
|
29
|
+
description: 'userId, email, name',
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
id: 'evt-1',
|
|
33
|
+
type: 'event',
|
|
34
|
+
position: { x: 400, y: 200 },
|
|
35
|
+
size: { width: 200, height: 100 },
|
|
36
|
+
label: 'User Registered',
|
|
37
|
+
description: 'userId, email, name, timestamp',
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
id: 'view-1',
|
|
41
|
+
type: 'readmodel',
|
|
42
|
+
position: { x: 700, y: 200 },
|
|
43
|
+
size: { width: 200, height: 100 },
|
|
44
|
+
label: 'User Profile',
|
|
45
|
+
description: 'userId, email, name, status',
|
|
46
|
+
},
|
|
47
|
+
],
|
|
48
|
+
connectors: [
|
|
49
|
+
{
|
|
50
|
+
id: 'conn-1',
|
|
51
|
+
from: { elementId: 'cmd-1', side: 'right' },
|
|
52
|
+
to: { elementId: 'evt-1', side: 'left' },
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
id: 'conn-2',
|
|
56
|
+
from: { elementId: 'evt-1', side: 'right' },
|
|
57
|
+
to: { elementId: 'view-1', side: 'left' },
|
|
58
|
+
},
|
|
59
|
+
],
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
export const ComplexEventModel = {
|
|
64
|
+
args: {
|
|
65
|
+
width: '100%',
|
|
66
|
+
height: '800px',
|
|
67
|
+
initialState: {
|
|
68
|
+
elements: [
|
|
69
|
+
{
|
|
70
|
+
id: 'cmd-1',
|
|
71
|
+
type: 'command',
|
|
72
|
+
position: { x: 100, y: 100 },
|
|
73
|
+
size: { width: 200, height: 100 },
|
|
74
|
+
label: 'Register User',
|
|
75
|
+
description: 'email, name, password',
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
id: 'evt-1',
|
|
79
|
+
type: 'event',
|
|
80
|
+
position: { x: 400, y: 100 },
|
|
81
|
+
size: { width: 200, height: 100 },
|
|
82
|
+
label: 'User Registered',
|
|
83
|
+
description: 'userId, email, name',
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
id: 'view-1',
|
|
87
|
+
type: 'readmodel',
|
|
88
|
+
position: { x: 700, y: 100 },
|
|
89
|
+
size: { width: 200, height: 100 },
|
|
90
|
+
label: 'User List',
|
|
91
|
+
description: 'All active users',
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
id: 'proc-1',
|
|
95
|
+
type: 'process',
|
|
96
|
+
position: { x: 420, y: 260 },
|
|
97
|
+
size: { width: 80, height: 80 },
|
|
98
|
+
label: 'Send Email',
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
id: 'cmd-2',
|
|
102
|
+
type: 'command',
|
|
103
|
+
position: { x: 560, y: 250 },
|
|
104
|
+
size: { width: 200, height: 100 },
|
|
105
|
+
label: 'Send Verification',
|
|
106
|
+
description: 'userId, email, token',
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
id: 'evt-2',
|
|
110
|
+
type: 'event',
|
|
111
|
+
position: { x: 860, y: 250 },
|
|
112
|
+
size: { width: 200, height: 100 },
|
|
113
|
+
label: 'Verification Sent',
|
|
114
|
+
description: 'userId, sentAt',
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
id: 'cmd-3',
|
|
118
|
+
type: 'command',
|
|
119
|
+
position: { x: 100, y: 400 },
|
|
120
|
+
size: { width: 200, height: 100 },
|
|
121
|
+
label: 'Verify Email',
|
|
122
|
+
description: 'token',
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
id: 'evt-3',
|
|
126
|
+
type: 'event',
|
|
127
|
+
position: { x: 400, y: 400 },
|
|
128
|
+
size: { width: 200, height: 100 },
|
|
129
|
+
label: 'Email Verified',
|
|
130
|
+
description: 'userId, verifiedAt',
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
id: 'view-2',
|
|
134
|
+
type: 'readmodel',
|
|
135
|
+
position: { x: 700, y: 400 },
|
|
136
|
+
size: { width: 200, height: 100 },
|
|
137
|
+
label: 'User Profile',
|
|
138
|
+
description: 'userId, verified: true',
|
|
139
|
+
},
|
|
140
|
+
],
|
|
141
|
+
connectors: [
|
|
142
|
+
{
|
|
143
|
+
id: 'conn-1',
|
|
144
|
+
from: { elementId: 'cmd-1', side: 'right' },
|
|
145
|
+
to: { elementId: 'evt-1', side: 'left' },
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
id: 'conn-2',
|
|
149
|
+
from: { elementId: 'evt-1', side: 'right' },
|
|
150
|
+
to: { elementId: 'view-1', side: 'left' },
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
id: 'conn-3',
|
|
154
|
+
from: { elementId: 'evt-1', side: 'bottom' },
|
|
155
|
+
to: { elementId: 'proc-1', side: 'top' },
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
id: 'conn-4',
|
|
159
|
+
from: { elementId: 'proc-1', side: 'right' },
|
|
160
|
+
to: { elementId: 'cmd-2', side: 'left' },
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
id: 'conn-5',
|
|
164
|
+
from: { elementId: 'cmd-2', side: 'right' },
|
|
165
|
+
to: { elementId: 'evt-2', side: 'left' },
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
id: 'conn-6',
|
|
169
|
+
from: { elementId: 'cmd-3', side: 'right' },
|
|
170
|
+
to: { elementId: 'evt-3', side: 'left' },
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
id: 'conn-7',
|
|
174
|
+
from: { elementId: 'evt-3', side: 'right' },
|
|
175
|
+
to: { elementId: 'view-2', side: 'left' },
|
|
176
|
+
},
|
|
177
|
+
],
|
|
178
|
+
},
|
|
179
|
+
},
|
|
180
|
+
};
|
|
181
|
+
export const WithProcessAutomation = {
|
|
182
|
+
args: {
|
|
183
|
+
width: '100%',
|
|
184
|
+
height: '800px',
|
|
185
|
+
initialState: {
|
|
186
|
+
elements: [
|
|
187
|
+
{
|
|
188
|
+
id: 'evt-1',
|
|
189
|
+
type: 'event',
|
|
190
|
+
position: { x: 100, y: 150 },
|
|
191
|
+
size: { width: 200, height: 100 },
|
|
192
|
+
label: 'Order Placed',
|
|
193
|
+
description: 'orderId, amount, items',
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
id: 'view-1',
|
|
197
|
+
type: 'readmodel',
|
|
198
|
+
position: { x: 400, y: 150 },
|
|
199
|
+
size: { width: 200, height: 100 },
|
|
200
|
+
label: 'Pending Orders',
|
|
201
|
+
description: 'Orders awaiting processing',
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
id: 'proc-1',
|
|
205
|
+
type: 'process',
|
|
206
|
+
position: { x: 660, y: 160 },
|
|
207
|
+
size: { width: 80, height: 80 },
|
|
208
|
+
label: 'Process',
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
id: 'cmd-1',
|
|
212
|
+
type: 'command',
|
|
213
|
+
position: { x: 800, y: 150 },
|
|
214
|
+
size: { width: 200, height: 100 },
|
|
215
|
+
label: 'Process Payment',
|
|
216
|
+
description: 'orderId, amount',
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
id: 'evt-2',
|
|
220
|
+
type: 'event',
|
|
221
|
+
position: { x: 1100, y: 150 },
|
|
222
|
+
size: { width: 200, height: 100 },
|
|
223
|
+
label: 'Payment Processed',
|
|
224
|
+
description: 'orderId, transactionId',
|
|
225
|
+
},
|
|
226
|
+
],
|
|
227
|
+
connectors: [
|
|
228
|
+
{
|
|
229
|
+
id: 'conn-1',
|
|
230
|
+
from: { elementId: 'evt-1', side: 'right' },
|
|
231
|
+
to: { elementId: 'view-1', side: 'left' },
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
id: 'conn-2',
|
|
235
|
+
from: { elementId: 'view-1', side: 'right' },
|
|
236
|
+
to: { elementId: 'proc-1', side: 'left' },
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
id: 'conn-3',
|
|
240
|
+
from: { elementId: 'proc-1', side: 'right' },
|
|
241
|
+
to: { elementId: 'cmd-1', side: 'left' },
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
id: 'conn-4',
|
|
245
|
+
from: { elementId: 'cmd-1', side: 'right' },
|
|
246
|
+
to: { elementId: 'evt-2', side: 'left' },
|
|
247
|
+
},
|
|
248
|
+
],
|
|
249
|
+
},
|
|
250
|
+
},
|
|
251
|
+
};
|
|
252
|
+
//# sourceMappingURL=EventModeling.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventModeling.stories.js","sourceRoot":"","sources":["../../../EventModeling/EventModeling.stories.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { EventModelingState, ElementType, ElementData, Connector } from '../types';
|
|
3
|
+
export interface CanvasProps {
|
|
4
|
+
state: EventModelingState;
|
|
5
|
+
selectedTool: ElementType | 'select';
|
|
6
|
+
zoom: number;
|
|
7
|
+
pan: {
|
|
8
|
+
x: number;
|
|
9
|
+
y: number;
|
|
10
|
+
};
|
|
11
|
+
onZoomChange: (zoom: number) => void;
|
|
12
|
+
onPanChange: (pan: {
|
|
13
|
+
x: number;
|
|
14
|
+
y: number;
|
|
15
|
+
}) => void;
|
|
16
|
+
onAddElement: (type: ElementType, x: number, y: number) => void;
|
|
17
|
+
onUpdateElement: (id: string, updates: Partial<ElementData>) => void;
|
|
18
|
+
onAddConnector: (connector: Connector) => void;
|
|
19
|
+
onSelectElement: (id: string | undefined) => void;
|
|
20
|
+
onSelectConnector: (id: string | undefined) => void;
|
|
21
|
+
}
|
|
22
|
+
export declare const Canvas: React.FC<CanvasProps>;
|
|
23
|
+
//# sourceMappingURL=Canvas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Canvas.d.ts","sourceRoot":"","sources":["../../../../EventModeling/components/Canvas.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAExE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAY,MAAM,UAAU,CAAC;AAI7F,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,kBAAkB,CAAC;IAC1B,YAAY,EAAE,WAAW,GAAG,QAAQ,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,WAAW,EAAE,CAAC,GAAG,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACrD,YAAY,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACrE,cAAc,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,CAAC;IAC/C,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IAClD,iBAAiB,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;CACvD;AAWD,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAufxC,CAAC"}
|