@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.
Files changed (180) hide show
  1. package/README.md +83 -0
  2. package/dist/cjs/Common/ErrorBoundary.js +26 -0
  3. package/dist/cjs/Common/ErrorBoundary.js.map +1 -0
  4. package/dist/cjs/Common/FormElement.js +10 -0
  5. package/dist/cjs/Common/FormElement.js.map +1 -0
  6. package/dist/cjs/Common/index.js +12 -0
  7. package/dist/cjs/Common/index.js.map +1 -0
  8. package/dist/cjs/EventModeling/EventModeling.css +146 -0
  9. package/dist/cjs/EventModeling/EventModeling.js +209 -0
  10. package/dist/cjs/EventModeling/EventModeling.js.map +1 -0
  11. package/dist/cjs/EventModeling/components/Canvas.js +403 -0
  12. package/dist/cjs/EventModeling/components/Canvas.js.map +1 -0
  13. package/dist/cjs/EventModeling/components/CanvasControls.js +10 -0
  14. package/dist/cjs/EventModeling/components/CanvasControls.js.map +1 -0
  15. package/dist/cjs/EventModeling/components/Toolbox.js +18 -0
  16. package/dist/cjs/EventModeling/components/Toolbox.js.map +1 -0
  17. package/dist/cjs/EventModeling/engine/connectorGraphics.js +173 -0
  18. package/dist/cjs/EventModeling/engine/connectorGraphics.js.map +1 -0
  19. package/dist/cjs/EventModeling/engine/elementSprites.js +301 -0
  20. package/dist/cjs/EventModeling/engine/elementSprites.js.map +1 -0
  21. package/dist/cjs/EventModeling/index.js +12 -0
  22. package/dist/cjs/EventModeling/index.js.map +1 -0
  23. package/dist/cjs/EventModeling/types.js +60 -0
  24. package/dist/cjs/EventModeling/types.js.map +1 -0
  25. package/dist/cjs/PivotViewer/PivotViewer.css +54 -5
  26. package/dist/cjs/PivotViewer/PivotViewer.js +5 -2
  27. package/dist/cjs/PivotViewer/PivotViewer.js.map +1 -1
  28. package/dist/cjs/PivotViewer/components/AxisLabels.js +5 -8
  29. package/dist/cjs/PivotViewer/components/AxisLabels.js.map +1 -1
  30. package/dist/cjs/PivotViewer/components/DetailPanel.js +9 -2
  31. package/dist/cjs/PivotViewer/components/DetailPanel.js.map +1 -1
  32. package/dist/cjs/PivotViewer/components/PivotCanvas.js +30 -6
  33. package/dist/cjs/PivotViewer/components/PivotCanvas.js.map +1 -1
  34. package/dist/cjs/PivotViewer/components/PivotViewerMain.js +16 -5
  35. package/dist/cjs/PivotViewer/components/PivotViewerMain.js.map +1 -1
  36. package/dist/cjs/PivotViewer/components/Toolbar.js +34 -2
  37. package/dist/cjs/PivotViewer/components/Toolbar.js.map +1 -1
  38. package/dist/cjs/PivotViewer/components/pivot/constants.js +5 -5
  39. package/dist/cjs/PivotViewer/components/pivot/constants.js.map +1 -1
  40. package/dist/cjs/PivotViewer/components/pivot/groups.js +15 -15
  41. package/dist/cjs/PivotViewer/components/pivot/groups.js.map +1 -1
  42. package/dist/cjs/PivotViewer/components/pivot/sprites.js +10 -27
  43. package/dist/cjs/PivotViewer/components/pivot/sprites.js.map +1 -1
  44. package/dist/cjs/PivotViewer/components/pivot/visibility.js +8 -20
  45. package/dist/cjs/PivotViewer/components/pivot/visibility.js.map +1 -1
  46. package/dist/cjs/PivotViewer/constants.js +0 -2
  47. package/dist/cjs/PivotViewer/constants.js.map +1 -1
  48. package/dist/cjs/PivotViewer/engine/layout.js +1 -1
  49. package/dist/cjs/PivotViewer/engine/layout.js.map +1 -1
  50. package/dist/cjs/PivotViewer/hooks/useCardSelection.js +2 -1
  51. package/dist/cjs/PivotViewer/hooks/useCardSelection.js.map +1 -1
  52. package/dist/cjs/PivotViewer/hooks/useZoomState.js +4 -0
  53. package/dist/cjs/PivotViewer/hooks/useZoomState.js.map +1 -1
  54. package/dist/cjs/PivotViewer/types.js.map +1 -1
  55. package/dist/cjs/PivotViewer/utils/animations.js +1 -1
  56. package/dist/cjs/PivotViewer/utils/animations.js.map +1 -1
  57. package/dist/cjs/PivotViewer/utils/constants.js +1 -1
  58. package/dist/cjs/PivotViewer/utils/constants.js.map +1 -1
  59. package/dist/cjs/PivotViewer/utils/selection.js +8 -1
  60. package/dist/cjs/PivotViewer/utils/selection.js.map +1 -1
  61. package/dist/cjs/TimeMachine/TimeMachine.js +0 -3
  62. package/dist/cjs/TimeMachine/TimeMachine.js.map +1 -1
  63. package/dist/cjs/index.js +16 -12
  64. package/dist/cjs/index.js.map +1 -1
  65. package/dist/cjs/package.json +3 -0
  66. package/dist/esm/Common/ErrorBoundary.js +7 -4
  67. package/dist/esm/Common/ErrorBoundary.js.map +1 -1
  68. package/dist/esm/Common/FormElement.js +7 -4
  69. package/dist/esm/Common/FormElement.js.map +1 -1
  70. package/dist/esm/Common/index.js +4 -4
  71. package/dist/esm/Common/index.js.map +1 -1
  72. package/dist/esm/EventModeling/EventModeling.css +146 -0
  73. package/dist/esm/EventModeling/EventModeling.d.ts +11 -0
  74. package/dist/esm/EventModeling/EventModeling.d.ts.map +1 -0
  75. package/dist/esm/EventModeling/EventModeling.js +207 -0
  76. package/dist/esm/EventModeling/EventModeling.js.map +1 -0
  77. package/dist/esm/EventModeling/EventModeling.stories.d.ts +10 -0
  78. package/dist/esm/EventModeling/EventModeling.stories.d.ts.map +1 -0
  79. package/dist/esm/EventModeling/EventModeling.stories.js +252 -0
  80. package/dist/esm/EventModeling/EventModeling.stories.js.map +1 -0
  81. package/dist/esm/EventModeling/components/Canvas.d.ts +23 -0
  82. package/dist/esm/EventModeling/components/Canvas.d.ts.map +1 -0
  83. package/dist/esm/EventModeling/components/Canvas.js +382 -0
  84. package/dist/esm/EventModeling/components/Canvas.js.map +1 -0
  85. package/dist/esm/EventModeling/components/CanvasControls.d.ts +10 -0
  86. package/dist/esm/EventModeling/components/CanvasControls.d.ts.map +1 -0
  87. package/dist/esm/EventModeling/components/CanvasControls.js +8 -0
  88. package/dist/esm/EventModeling/components/CanvasControls.js.map +1 -0
  89. package/dist/esm/EventModeling/components/Toolbox.d.ts +9 -0
  90. package/dist/esm/EventModeling/components/Toolbox.d.ts.map +1 -0
  91. package/dist/esm/EventModeling/components/Toolbox.js +16 -0
  92. package/dist/esm/EventModeling/components/Toolbox.js.map +1 -0
  93. package/dist/esm/EventModeling/engine/connectorGraphics.d.ts +12 -0
  94. package/dist/esm/EventModeling/engine/connectorGraphics.d.ts.map +1 -0
  95. package/dist/esm/EventModeling/engine/connectorGraphics.js +151 -0
  96. package/dist/esm/EventModeling/engine/connectorGraphics.js.map +1 -0
  97. package/dist/esm/EventModeling/engine/elementSprites.d.ts +23 -0
  98. package/dist/esm/EventModeling/engine/elementSprites.d.ts.map +1 -0
  99. package/dist/esm/EventModeling/engine/elementSprites.js +276 -0
  100. package/dist/esm/EventModeling/engine/elementSprites.js.map +1 -0
  101. package/dist/esm/EventModeling/index.d.ts +3 -0
  102. package/dist/esm/EventModeling/index.d.ts.map +1 -0
  103. package/dist/esm/EventModeling/index.js +3 -0
  104. package/dist/esm/EventModeling/index.js.map +1 -0
  105. package/dist/esm/EventModeling/types.d.ts +79 -0
  106. package/dist/esm/EventModeling/types.d.ts.map +1 -0
  107. package/dist/esm/EventModeling/types.js +56 -0
  108. package/dist/esm/EventModeling/types.js.map +1 -0
  109. package/dist/esm/PivotViewer/PivotViewer.css +54 -5
  110. package/dist/esm/PivotViewer/PivotViewer.d.ts.map +1 -1
  111. package/dist/esm/PivotViewer/PivotViewer.js +5 -2
  112. package/dist/esm/PivotViewer/PivotViewer.js.map +1 -1
  113. package/dist/esm/PivotViewer/PivotViewer.stories.d.ts +0 -1
  114. package/dist/esm/PivotViewer/PivotViewer.stories.d.ts.map +1 -1
  115. package/dist/esm/PivotViewer/PivotViewer.stories.js +10 -9
  116. package/dist/esm/PivotViewer/PivotViewer.stories.js.map +1 -1
  117. package/dist/esm/PivotViewer/components/AxisLabels.d.ts +2 -1
  118. package/dist/esm/PivotViewer/components/AxisLabels.d.ts.map +1 -1
  119. package/dist/esm/PivotViewer/components/AxisLabels.js +6 -9
  120. package/dist/esm/PivotViewer/components/AxisLabels.js.map +1 -1
  121. package/dist/esm/PivotViewer/components/DetailPanel.d.ts +3 -1
  122. package/dist/esm/PivotViewer/components/DetailPanel.d.ts.map +1 -1
  123. package/dist/esm/PivotViewer/components/DetailPanel.js +10 -3
  124. package/dist/esm/PivotViewer/components/DetailPanel.js.map +1 -1
  125. package/dist/esm/PivotViewer/components/PivotCanvas.d.ts +5 -2
  126. package/dist/esm/PivotViewer/components/PivotCanvas.d.ts.map +1 -1
  127. package/dist/esm/PivotViewer/components/PivotCanvas.js +30 -6
  128. package/dist/esm/PivotViewer/components/PivotCanvas.js.map +1 -1
  129. package/dist/esm/PivotViewer/components/PivotViewerMain.d.ts +5 -1
  130. package/dist/esm/PivotViewer/components/PivotViewerMain.d.ts.map +1 -1
  131. package/dist/esm/PivotViewer/components/PivotViewerMain.js +16 -5
  132. package/dist/esm/PivotViewer/components/PivotViewerMain.js.map +1 -1
  133. package/dist/esm/PivotViewer/components/Toolbar.d.ts +3 -1
  134. package/dist/esm/PivotViewer/components/Toolbar.d.ts.map +1 -1
  135. package/dist/esm/PivotViewer/components/Toolbar.js +34 -2
  136. package/dist/esm/PivotViewer/components/Toolbar.js.map +1 -1
  137. package/dist/esm/PivotViewer/components/pivot/constants.d.ts.map +1 -1
  138. package/dist/esm/PivotViewer/components/pivot/constants.js +5 -5
  139. package/dist/esm/PivotViewer/components/pivot/constants.js.map +1 -1
  140. package/dist/esm/PivotViewer/components/pivot/groups.d.ts.map +1 -1
  141. package/dist/esm/PivotViewer/components/pivot/groups.js +2 -2
  142. package/dist/esm/PivotViewer/components/pivot/groups.js.map +1 -1
  143. package/dist/esm/PivotViewer/components/pivot/sprites.d.ts +10 -2
  144. package/dist/esm/PivotViewer/components/pivot/sprites.d.ts.map +1 -1
  145. package/dist/esm/PivotViewer/components/pivot/sprites.js +10 -27
  146. package/dist/esm/PivotViewer/components/pivot/sprites.js.map +1 -1
  147. package/dist/esm/PivotViewer/components/pivot/visibility.d.ts.map +1 -1
  148. package/dist/esm/PivotViewer/components/pivot/visibility.js +8 -20
  149. package/dist/esm/PivotViewer/components/pivot/visibility.js.map +1 -1
  150. package/dist/esm/PivotViewer/constants.js +1 -2
  151. package/dist/esm/PivotViewer/constants.js.map +1 -1
  152. package/dist/esm/PivotViewer/engine/layout.js +1 -1
  153. package/dist/esm/PivotViewer/engine/layout.js.map +1 -1
  154. package/dist/esm/PivotViewer/hooks/useCardSelection.d.ts.map +1 -1
  155. package/dist/esm/PivotViewer/hooks/useCardSelection.js +2 -1
  156. package/dist/esm/PivotViewer/hooks/useCardSelection.js.map +1 -1
  157. package/dist/esm/PivotViewer/hooks/useZoomState.d.ts +1 -0
  158. package/dist/esm/PivotViewer/hooks/useZoomState.d.ts.map +1 -1
  159. package/dist/esm/PivotViewer/hooks/useZoomState.js +4 -0
  160. package/dist/esm/PivotViewer/hooks/useZoomState.js.map +1 -1
  161. package/dist/esm/PivotViewer/types.d.ts +5 -1
  162. package/dist/esm/PivotViewer/types.d.ts.map +1 -1
  163. package/dist/esm/PivotViewer/types.js.map +1 -1
  164. package/dist/esm/PivotViewer/utils/animations.js +1 -1
  165. package/dist/esm/PivotViewer/utils/animations.js.map +1 -1
  166. package/dist/esm/PivotViewer/utils/constants.d.ts +1 -1
  167. package/dist/esm/PivotViewer/utils/constants.d.ts.map +1 -1
  168. package/dist/esm/PivotViewer/utils/constants.js +1 -1
  169. package/dist/esm/PivotViewer/utils/constants.js.map +1 -1
  170. package/dist/esm/PivotViewer/utils/selection.d.ts.map +1 -1
  171. package/dist/esm/PivotViewer/utils/selection.js +8 -1
  172. package/dist/esm/PivotViewer/utils/selection.js.map +1 -1
  173. package/dist/esm/TimeMachine/TimeMachine.js +1 -1
  174. package/dist/esm/index.d.ts +5 -3
  175. package/dist/esm/index.d.ts.map +1 -1
  176. package/dist/esm/index.js +16 -12
  177. package/dist/esm/index.js.map +1 -1
  178. package/dist/esm/package.json +3 -0
  179. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  180. 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"}