@cratis/components 0.1.18 → 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 (103) 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/components/PivotCanvas.js.map +1 -1
  26. package/dist/cjs/PivotViewer/components/PivotViewerMain.js.map +1 -1
  27. package/dist/cjs/PivotViewer/components/pivot/groups.js +15 -15
  28. package/dist/cjs/PivotViewer/components/pivot/groups.js.map +1 -1
  29. package/dist/cjs/PivotViewer/components/pivot/sprites.js +2 -2
  30. package/dist/cjs/PivotViewer/components/pivot/sprites.js.map +1 -1
  31. package/dist/cjs/PivotViewer/types.js.map +1 -1
  32. package/dist/cjs/TimeMachine/TimeMachine.js +0 -3
  33. package/dist/cjs/TimeMachine/TimeMachine.js.map +1 -1
  34. package/dist/cjs/index.js +16 -12
  35. package/dist/cjs/index.js.map +1 -1
  36. package/dist/cjs/package.json +3 -0
  37. package/dist/esm/Common/ErrorBoundary.js +7 -4
  38. package/dist/esm/Common/ErrorBoundary.js.map +1 -1
  39. package/dist/esm/Common/FormElement.js +7 -4
  40. package/dist/esm/Common/FormElement.js.map +1 -1
  41. package/dist/esm/Common/index.js +4 -4
  42. package/dist/esm/Common/index.js.map +1 -1
  43. package/dist/esm/EventModeling/EventModeling.css +146 -0
  44. package/dist/esm/EventModeling/EventModeling.d.ts +11 -0
  45. package/dist/esm/EventModeling/EventModeling.d.ts.map +1 -0
  46. package/dist/esm/EventModeling/EventModeling.js +207 -0
  47. package/dist/esm/EventModeling/EventModeling.js.map +1 -0
  48. package/dist/esm/EventModeling/EventModeling.stories.d.ts +10 -0
  49. package/dist/esm/EventModeling/EventModeling.stories.d.ts.map +1 -0
  50. package/dist/esm/EventModeling/EventModeling.stories.js +252 -0
  51. package/dist/esm/EventModeling/EventModeling.stories.js.map +1 -0
  52. package/dist/esm/EventModeling/components/Canvas.d.ts +23 -0
  53. package/dist/esm/EventModeling/components/Canvas.d.ts.map +1 -0
  54. package/dist/esm/EventModeling/components/Canvas.js +382 -0
  55. package/dist/esm/EventModeling/components/Canvas.js.map +1 -0
  56. package/dist/esm/EventModeling/components/CanvasControls.d.ts +10 -0
  57. package/dist/esm/EventModeling/components/CanvasControls.d.ts.map +1 -0
  58. package/dist/esm/EventModeling/components/CanvasControls.js +8 -0
  59. package/dist/esm/EventModeling/components/CanvasControls.js.map +1 -0
  60. package/dist/esm/EventModeling/components/Toolbox.d.ts +9 -0
  61. package/dist/esm/EventModeling/components/Toolbox.d.ts.map +1 -0
  62. package/dist/esm/EventModeling/components/Toolbox.js +16 -0
  63. package/dist/esm/EventModeling/components/Toolbox.js.map +1 -0
  64. package/dist/esm/EventModeling/engine/connectorGraphics.d.ts +12 -0
  65. package/dist/esm/EventModeling/engine/connectorGraphics.d.ts.map +1 -0
  66. package/dist/esm/EventModeling/engine/connectorGraphics.js +151 -0
  67. package/dist/esm/EventModeling/engine/connectorGraphics.js.map +1 -0
  68. package/dist/esm/EventModeling/engine/elementSprites.d.ts +23 -0
  69. package/dist/esm/EventModeling/engine/elementSprites.d.ts.map +1 -0
  70. package/dist/esm/EventModeling/engine/elementSprites.js +276 -0
  71. package/dist/esm/EventModeling/engine/elementSprites.js.map +1 -0
  72. package/dist/esm/EventModeling/index.d.ts +3 -0
  73. package/dist/esm/EventModeling/index.d.ts.map +1 -0
  74. package/dist/esm/EventModeling/index.js +3 -0
  75. package/dist/esm/EventModeling/index.js.map +1 -0
  76. package/dist/esm/EventModeling/types.d.ts +79 -0
  77. package/dist/esm/EventModeling/types.d.ts.map +1 -0
  78. package/dist/esm/EventModeling/types.js +56 -0
  79. package/dist/esm/EventModeling/types.js.map +1 -0
  80. package/dist/esm/PivotViewer/components/PivotCanvas.d.ts +2 -2
  81. package/dist/esm/PivotViewer/components/PivotCanvas.d.ts.map +1 -1
  82. package/dist/esm/PivotViewer/components/PivotCanvas.js.map +1 -1
  83. package/dist/esm/PivotViewer/components/PivotViewerMain.d.ts +2 -2
  84. package/dist/esm/PivotViewer/components/PivotViewerMain.d.ts.map +1 -1
  85. package/dist/esm/PivotViewer/components/PivotViewerMain.js.map +1 -1
  86. package/dist/esm/PivotViewer/components/pivot/groups.d.ts.map +1 -1
  87. package/dist/esm/PivotViewer/components/pivot/groups.js +2 -2
  88. package/dist/esm/PivotViewer/components/pivot/groups.js.map +1 -1
  89. package/dist/esm/PivotViewer/components/pivot/sprites.d.ts +4 -4
  90. package/dist/esm/PivotViewer/components/pivot/sprites.d.ts.map +1 -1
  91. package/dist/esm/PivotViewer/components/pivot/sprites.js +2 -2
  92. package/dist/esm/PivotViewer/components/pivot/sprites.js.map +1 -1
  93. package/dist/esm/PivotViewer/types.d.ts +2 -2
  94. package/dist/esm/PivotViewer/types.d.ts.map +1 -1
  95. package/dist/esm/PivotViewer/types.js.map +1 -1
  96. package/dist/esm/TimeMachine/TimeMachine.js +1 -1
  97. package/dist/esm/index.d.ts +5 -3
  98. package/dist/esm/index.d.ts.map +1 -1
  99. package/dist/esm/index.js +16 -12
  100. package/dist/esm/index.js.map +1 -1
  101. package/dist/esm/package.json +3 -0
  102. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  103. package/package.json +36 -78
@@ -0,0 +1,276 @@
1
+ import * as PIXI from 'pixi.js';
2
+ import { ELEMENT_COLORS } from '../types.js';
3
+
4
+ const EDGE_POINT_RADIUS = 6;
5
+ const BORDER_RADIUS = 8;
6
+ const PADDING = 16;
7
+ function createElementSprite(data, onElementClick, onElementDragStart, onElementDragMove, onElementDragEnd, onEdgeClick) {
8
+ const container = new PIXI.Container();
9
+ container.position.set(data.position.x, data.position.y);
10
+ container.eventMode = 'static';
11
+ container.cursor = 'move';
12
+ container.hitArea = new PIXI.Rectangle(0, 0, data.size.width, data.size.height);
13
+ const shadowGraphics = new PIXI.Graphics();
14
+ shadowGraphics.alpha = 0.15;
15
+ container.addChild(shadowGraphics);
16
+ const graphics = new PIXI.Graphics();
17
+ const edgePoints = new Map();
18
+ const selectionBorder = new PIXI.Graphics();
19
+ selectionBorder.alpha = 0;
20
+ container.addChild(selectionBorder);
21
+ const elementColors = ELEMENT_COLORS[data.type];
22
+ const backgroundColor = 'background' in elementColors ? elementColors.background : elementColors.fill;
23
+ if (data.type === 'process') {
24
+ const centerX = data.size.width / 2;
25
+ const centerY = data.size.height / 2;
26
+ const radius = Math.min(data.size.width, data.size.height) / 2;
27
+ for (let i = 0; i < 3; i++) {
28
+ shadowGraphics.circle(centerX, centerY + 2 + i, radius + i);
29
+ shadowGraphics.fill({ color: 0x000000, alpha: 0.06 });
30
+ }
31
+ }
32
+ else {
33
+ for (let i = 0; i < 4; i++) {
34
+ shadowGraphics.roundRect(i, 2 + i, data.size.width, data.size.height, BORDER_RADIUS);
35
+ shadowGraphics.fill({ color: 0x000000, alpha: 0.06 });
36
+ }
37
+ }
38
+ if (data.type === 'process') {
39
+ const centerX = data.size.width / 2;
40
+ const centerY = data.size.height / 2;
41
+ const radius = Math.min(data.size.width, data.size.height) / 2;
42
+ graphics.circle(centerX, centerY, radius);
43
+ graphics.fill({ color: backgroundColor });
44
+ if ('stroke' in elementColors) {
45
+ graphics.stroke({ color: elementColors.stroke, width: 2 });
46
+ }
47
+ }
48
+ else {
49
+ graphics.roundRect(0, 0, data.size.width, data.size.height, BORDER_RADIUS);
50
+ graphics.fill({ color: backgroundColor });
51
+ }
52
+ container.addChild(graphics);
53
+ const textColor = 'text' in elementColors ? elementColors.text : 0xffffff;
54
+ const labelText = new PIXI.Text({
55
+ text: data.label,
56
+ style: {
57
+ fontSize: 14,
58
+ fill: textColor,
59
+ fontWeight: '600',
60
+ wordWrap: true,
61
+ wordWrapWidth: data.size.width - PADDING * 2,
62
+ },
63
+ });
64
+ labelText.position.set(PADDING, PADDING);
65
+ container.addChild(labelText);
66
+ let descriptionText;
67
+ if (data.description && data.type !== 'process') {
68
+ descriptionText = new PIXI.Text({
69
+ text: data.description,
70
+ style: new PIXI.TextStyle({
71
+ fontSize: 12,
72
+ fill: textColor,
73
+ fontWeight: '400',
74
+ wordWrap: true,
75
+ wordWrapWidth: data.size.width - PADDING * 2,
76
+ }),
77
+ });
78
+ descriptionText.alpha = 0.9;
79
+ descriptionText.position.set(PADDING, PADDING + 24);
80
+ container.addChild(descriptionText);
81
+ }
82
+ if (data.type !== 'process') {
83
+ const sides = ['top', 'right', 'bottom', 'left'];
84
+ sides.forEach(side => {
85
+ const edgePoint = createEdgePoint(data, side, () => onEdgeClick(data.id, side));
86
+ edgePoints.set(side, edgePoint);
87
+ container.addChild(edgePoint);
88
+ });
89
+ }
90
+ container.on('pointerdown', (event) => {
91
+ if (!container.parent)
92
+ return;
93
+ const localPos = event.getLocalPosition(container.parent);
94
+ onElementDragStart(data.id, localPos.x - data.position.x, localPos.y - data.position.y);
95
+ });
96
+ container.on('click', () => {
97
+ onElementClick(data.id);
98
+ });
99
+ return {
100
+ id: data.id,
101
+ container,
102
+ graphics,
103
+ selectionBorder,
104
+ labelText,
105
+ descriptionText,
106
+ edgePoints,
107
+ data,
108
+ isDragging: false,
109
+ };
110
+ }
111
+ function drawBoxElement(graphics, data) {
112
+ const colors = ELEMENT_COLORS[data.type];
113
+ if (!('background' in colors)) {
114
+ return;
115
+ }
116
+ graphics.clear();
117
+ graphics.roundRect(0, 0, data.size.width, data.size.height, BORDER_RADIUS);
118
+ graphics.fill({ color: colors.background });
119
+ graphics.visible = true;
120
+ graphics.alpha = 1;
121
+ }
122
+ function drawProcessElement(graphics, data) {
123
+ const colors = ELEMENT_COLORS.process;
124
+ const centerX = data.size.width / 2;
125
+ const centerY = data.size.height / 2;
126
+ const radius = Math.min(data.size.width, data.size.height) / 2;
127
+ graphics.clear();
128
+ graphics.circle(centerX, centerY, radius);
129
+ graphics.fill({ color: colors.fill });
130
+ graphics.stroke({ color: colors.stroke, width: 2 });
131
+ const teeth = 8;
132
+ const toothLength = radius * 0.2;
133
+ const innerRadius = radius * 0.6;
134
+ for (let i = 0; i < teeth; i++) {
135
+ const angle = (i / teeth) * Math.PI * 2;
136
+ const nextAngle = ((i + 0.4) / teeth) * Math.PI * 2;
137
+ const x1 = centerX + Math.cos(angle) * radius;
138
+ const y1 = centerY + Math.sin(angle) * radius;
139
+ const x2 = centerX + Math.cos(angle) * (radius + toothLength);
140
+ const y2 = centerY + Math.sin(angle) * (radius + toothLength);
141
+ const x3 = centerX + Math.cos(nextAngle) * (radius + toothLength);
142
+ const y3 = centerY + Math.sin(nextAngle) * (radius + toothLength);
143
+ const x4 = centerX + Math.cos(nextAngle) * radius;
144
+ const y4 = centerY + Math.sin(nextAngle) * radius;
145
+ graphics.moveTo(x1, y1);
146
+ graphics.lineTo(x2, y2);
147
+ graphics.lineTo(x3, y3);
148
+ graphics.lineTo(x4, y4);
149
+ graphics.fill({ color: colors.fill });
150
+ }
151
+ graphics.circle(centerX, centerY, innerRadius);
152
+ graphics.fill({ color: 0xffffff });
153
+ graphics.stroke({ color: colors.stroke, width: 2 });
154
+ }
155
+ function createEdgePoint(data, side, onClick) {
156
+ const edgePoint = new PIXI.Graphics();
157
+ edgePoint.eventMode = 'static';
158
+ edgePoint.cursor = 'crosshair';
159
+ const hitSize = EDGE_POINT_RADIUS * 2;
160
+ edgePoint.hitArea = new PIXI.Circle(0, 0, hitSize);
161
+ let x = 0, y = 0;
162
+ switch (side) {
163
+ case 'top':
164
+ x = data.size.width / 2;
165
+ y = 0;
166
+ break;
167
+ case 'right':
168
+ x = data.size.width;
169
+ y = data.size.height / 2;
170
+ break;
171
+ case 'bottom':
172
+ x = data.size.width / 2;
173
+ y = data.size.height;
174
+ break;
175
+ case 'left':
176
+ x = 0;
177
+ y = data.size.height / 2;
178
+ break;
179
+ }
180
+ edgePoint.position.set(x, y);
181
+ const colors = ELEMENT_COLORS[data.type];
182
+ edgePoint.circle(0, 0, EDGE_POINT_RADIUS);
183
+ edgePoint.fill({ color: 0xffffff });
184
+ edgePoint.stroke({ color: 'background' in colors ? colors.background : 0x6b7280, width: 2 });
185
+ edgePoint.alpha = 0;
186
+ edgePoint.on('click', (e) => {
187
+ e.stopPropagation();
188
+ onClick();
189
+ });
190
+ return edgePoint;
191
+ }
192
+ function updateElementSprite(sprite, data) {
193
+ sprite.data = data;
194
+ sprite.container.position.set(data.position.x, data.position.y);
195
+ if (data.type === 'process') {
196
+ drawProcessElement(sprite.graphics, data);
197
+ }
198
+ else {
199
+ drawBoxElement(sprite.graphics, data);
200
+ }
201
+ sprite.labelText.text = data.label;
202
+ if (sprite.descriptionText && data.description) {
203
+ sprite.descriptionText.text = data.description;
204
+ }
205
+ sprite.edgePoints.forEach((edgePoint, side) => {
206
+ let x = 0, y = 0;
207
+ switch (side) {
208
+ case 'top':
209
+ x = data.size.width / 2;
210
+ y = 0;
211
+ break;
212
+ case 'right':
213
+ x = data.size.width;
214
+ y = data.size.height / 2;
215
+ break;
216
+ case 'bottom':
217
+ x = data.size.width / 2;
218
+ y = data.size.height;
219
+ break;
220
+ case 'left':
221
+ x = 0;
222
+ y = data.size.height / 2;
223
+ break;
224
+ }
225
+ edgePoint.position.set(x, y);
226
+ });
227
+ }
228
+ function showEdgePoints(sprite) {
229
+ sprite.edgePoints.forEach(edgePoint => {
230
+ edgePoint.alpha = 1;
231
+ });
232
+ }
233
+ function hideEdgePoints(sprite) {
234
+ sprite.edgePoints.forEach(edgePoint => {
235
+ edgePoint.alpha = 0;
236
+ });
237
+ }
238
+ function setElementSelected(sprite, selected) {
239
+ if (!sprite.selectionBorder)
240
+ return;
241
+ if (selected) {
242
+ updateSelectionBorder(sprite);
243
+ sprite.selectionBorder.alpha = 1;
244
+ }
245
+ else {
246
+ sprite.selectionBorder.alpha = 0;
247
+ }
248
+ }
249
+ function updateSelectionBorder(sprite) {
250
+ if (!sprite.selectionBorder)
251
+ return;
252
+ const selectionBorder = sprite.selectionBorder;
253
+ selectionBorder.clear();
254
+ const borderWidth = 3;
255
+ const offset = -borderWidth;
256
+ const primaryColor = getComputedPrimaryColor();
257
+ if (sprite.data.type === 'process') {
258
+ const centerX = sprite.data.size.width / 2;
259
+ const centerY = sprite.data.size.height / 2;
260
+ const radius = Math.min(sprite.data.size.width, sprite.data.size.height) / 2 + borderWidth;
261
+ selectionBorder.circle(centerX, centerY, radius);
262
+ selectionBorder.stroke({ color: primaryColor, width: borderWidth });
263
+ }
264
+ else {
265
+ selectionBorder.roundRect(offset, offset, sprite.data.size.width + borderWidth * 2, sprite.data.size.height + borderWidth * 2, BORDER_RADIUS + borderWidth);
266
+ selectionBorder.stroke({ color: primaryColor, width: borderWidth });
267
+ }
268
+ }
269
+ function getComputedPrimaryColor() {
270
+ const style = getComputedStyle(document.documentElement);
271
+ const primaryColorStr = style.getPropertyValue('--primary-color').trim() || '#3B82F6';
272
+ return parseInt(primaryColorStr.replace('#', ''), 16);
273
+ }
274
+
275
+ export { createElementSprite, hideEdgePoints, setElementSelected, showEdgePoints, updateElementSprite };
276
+ //# sourceMappingURL=elementSprites.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elementSprites.js","sources":["../../../../EventModeling/engine/elementSprites.ts"],"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 * as PIXI from 'pixi.js';\nimport { ElementData, ELEMENT_COLORS, EdgeSide } from '../types';\n\nexport interface ElementSprite {\n id: string;\n container: PIXI.Container;\n graphics: PIXI.Graphics;\n selectionBorder?: PIXI.Graphics;\n labelText: PIXI.Text;\n descriptionText?: PIXI.Text;\n edgePoints: Map<EdgeSide, PIXI.Graphics>;\n data: ElementData;\n isDragging: boolean;\n dragOffset?: { x: number; y: number };\n}\n\nconst EDGE_POINT_RADIUS = 6;\nconst BORDER_RADIUS = 8;\nconst PADDING = 16;\n\nexport function createElementSprite(\n data: ElementData,\n onElementClick: (id: string) => void,\n onElementDragStart: (id: string, x: number, y: number) => void,\n onElementDragMove: (id: string, x: number, y: number) => void,\n onElementDragEnd: (id: string) => void,\n onEdgeClick: (elementId: string, side: EdgeSide) => void\n): ElementSprite {\n const container = new PIXI.Container();\n container.position.set(data.position.x, data.position.y);\n container.eventMode = 'static';\n container.cursor = 'move';\n // Set explicit hit area for interaction\n container.hitArea = new PIXI.Rectangle(0, 0, data.size.width, data.size.height);\n\n // Create shadow layer\n const shadowGraphics = new PIXI.Graphics();\n shadowGraphics.alpha = 0.15;\n container.addChild(shadowGraphics);\n\n const graphics = new PIXI.Graphics();\n const edgePoints = new Map<EdgeSide, PIXI.Graphics>();\n\n // Create selection border (initially hidden)\n const selectionBorder = new PIXI.Graphics();\n selectionBorder.alpha = 0;\n container.addChild(selectionBorder);\n\n // Get colors based on element type\n const elementColors = ELEMENT_COLORS[data.type];\n const backgroundColor = 'background' in elementColors ? elementColors.background : elementColors.fill;\n \n // Draw shadow\n if (data.type === 'process') {\n const centerX = data.size.width / 2;\n const centerY = data.size.height / 2;\n const radius = Math.min(data.size.width, data.size.height) / 2;\n for (let i = 0; i < 3; i++) {\n shadowGraphics.circle(centerX, centerY + 2 + i, radius + i);\n shadowGraphics.fill({ color: 0x000000, alpha: 0.06 });\n }\n } else {\n for (let i = 0; i < 4; i++) {\n shadowGraphics.roundRect(i, 2 + i, data.size.width, data.size.height, BORDER_RADIUS);\n shadowGraphics.fill({ color: 0x000000, alpha: 0.06 });\n }\n }\n \n // Draw with proper shapes (PIXI v8 requires fill with object format)\n if (data.type === 'process') {\n const centerX = data.size.width / 2;\n const centerY = data.size.height / 2;\n const radius = Math.min(data.size.width, data.size.height) / 2;\n graphics.circle(centerX, centerY, radius);\n graphics.fill({ color: backgroundColor });\n if ('stroke' in elementColors) {\n graphics.stroke({ color: elementColors.stroke, width: 2 });\n }\n } else {\n // Use roundRect for proper appearance\n graphics.roundRect(0, 0, data.size.width, data.size.height, BORDER_RADIUS);\n graphics.fill({ color: backgroundColor });\n }\n\n container.addChild(graphics);\n\n // Create label text\n const textColor = 'text' in elementColors ? elementColors.text : 0xffffff;\n const labelText = new PIXI.Text({\n text: data.label,\n style: {\n fontSize: 14,\n fill: textColor,\n fontWeight: '600',\n wordWrap: true,\n wordWrapWidth: data.size.width - PADDING * 2,\n } as PIXI.TextStyle,\n });\n labelText.position.set(PADDING, PADDING);\n container.addChild(labelText);\n\n // Create description text if exists\n let descriptionText: PIXI.Text | undefined;\n if (data.description && data.type !== 'process') {\n descriptionText = new PIXI.Text({\n text: data.description,\n style: new PIXI.TextStyle({\n fontSize: 12,\n fill: textColor,\n fontWeight: '400',\n wordWrap: true,\n wordWrapWidth: data.size.width - PADDING * 2,\n }),\n });\n descriptionText.alpha = 0.9;\n descriptionText.position.set(PADDING, PADDING + 24);\n container.addChild(descriptionText);\n }\n\n // Create edge points for connections\n if (data.type !== 'process') {\n const sides: EdgeSide[] = ['top', 'right', 'bottom', 'left'];\n sides.forEach(side => {\n const edgePoint = createEdgePoint(data, side, () => onEdgeClick(data.id, side));\n edgePoints.set(side, edgePoint);\n container.addChild(edgePoint);\n });\n }\n\n // Set up interaction\n container.on('pointerdown', (event: PIXI.FederatedPointerEvent) => {\n if (!container.parent) return;\n const localPos = event.getLocalPosition(container.parent);\n onElementDragStart(data.id, localPos.x - data.position.x, localPos.y - data.position.y);\n });\n\n container.on('click', () => {\n onElementClick(data.id);\n });\n\n return {\n id: data.id,\n container,\n graphics,\n selectionBorder,\n labelText,\n descriptionText,\n edgePoints,\n data,\n isDragging: false,\n };\n}\n\nfunction drawBoxElement(graphics: PIXI.Graphics, data: ElementData): void {\n const colors = ELEMENT_COLORS[data.type];\n if (!('background' in colors)) {\n return;\n }\n \n graphics.clear();\n \n // Draw the rounded rectangle with solid fill (PIXI v8 - use object format)\n graphics.roundRect(0, 0, data.size.width, data.size.height, BORDER_RADIUS);\n graphics.fill({ color: colors.background });\n \n // Force visibility\n graphics.visible = true;\n graphics.alpha = 1;\n}\n\nfunction drawProcessElement(graphics: PIXI.Graphics, data: ElementData): void {\n const colors = ELEMENT_COLORS.process;\n const centerX = data.size.width / 2;\n const centerY = data.size.height / 2;\n const radius = Math.min(data.size.width, data.size.height) / 2;\n\n graphics.clear();\n \n // Draw outer circle\n graphics.circle(centerX, centerY, radius);\n graphics.fill({ color: colors.fill });\n graphics.stroke({ color: colors.stroke, width: 2 });\n\n // Draw cogwheel teeth\n const teeth = 8;\n const toothLength = radius * 0.2;\n const innerRadius = radius * 0.6;\n \n for (let i = 0; i < teeth; i++) {\n const angle = (i / teeth) * Math.PI * 2;\n const nextAngle = ((i + 0.4) / teeth) * Math.PI * 2;\n \n const x1 = centerX + Math.cos(angle) * radius;\n const y1 = centerY + Math.sin(angle) * radius;\n const x2 = centerX + Math.cos(angle) * (radius + toothLength);\n const y2 = centerY + Math.sin(angle) * (radius + toothLength);\n const x3 = centerX + Math.cos(nextAngle) * (radius + toothLength);\n const y3 = centerY + Math.sin(nextAngle) * (radius + toothLength);\n const x4 = centerX + Math.cos(nextAngle) * radius;\n const y4 = centerY + Math.sin(nextAngle) * radius;\n \n graphics.moveTo(x1, y1);\n graphics.lineTo(x2, y2);\n graphics.lineTo(x3, y3);\n graphics.lineTo(x4, y4);\n graphics.fill({ color: colors.fill });\n }\n\n // Draw inner circle\n graphics.circle(centerX, centerY, innerRadius);\n graphics.fill({ color: 0xffffff });\n graphics.stroke({ color: colors.stroke, width: 2 });\n}\n\nfunction createEdgePoint(data: ElementData, side: EdgeSide, onClick: () => void): PIXI.Graphics {\n const edgePoint = new PIXI.Graphics();\n edgePoint.eventMode = 'static';\n edgePoint.cursor = 'crosshair';\n \n // Set explicit hit area for better interaction\n const hitSize = EDGE_POINT_RADIUS * 2;\n edgePoint.hitArea = new PIXI.Circle(0, 0, hitSize);\n \n // Position based on side\n let x = 0, y = 0;\n switch (side) {\n case 'top':\n x = data.size.width / 2;\n y = 0;\n break;\n case 'right':\n x = data.size.width;\n y = data.size.height / 2;\n break;\n case 'bottom':\n x = data.size.width / 2;\n y = data.size.height;\n break;\n case 'left':\n x = 0;\n y = data.size.height / 2;\n break;\n }\n\n edgePoint.position.set(x, y);\n \n // Draw edge point (initially hidden)\n const colors = ELEMENT_COLORS[data.type];\n edgePoint.circle(0, 0, EDGE_POINT_RADIUS);\n edgePoint.fill({ color: 0xffffff });\n edgePoint.stroke({ color: 'background' in colors ? colors.background : 0x6b7280, width: 2 });\n edgePoint.alpha = 0;\n\n edgePoint.on('click', (e: PIXI.FederatedPointerEvent) => {\n e.stopPropagation();\n onClick();\n });\n\n return edgePoint;\n}\n\nexport function updateElementSprite(sprite: ElementSprite, data: ElementData): void {\n sprite.data = data;\n sprite.container.position.set(data.position.x, data.position.y);\n \n // Update graphics\n if (data.type === 'process') {\n drawProcessElement(sprite.graphics, data);\n } else {\n drawBoxElement(sprite.graphics, data);\n }\n\n // Update text\n sprite.labelText.text = data.label;\n if (sprite.descriptionText && data.description) {\n sprite.descriptionText.text = data.description;\n }\n\n // Update edge points positions\n sprite.edgePoints.forEach((edgePoint, side) => {\n let x = 0, y = 0;\n switch (side) {\n case 'top':\n x = data.size.width / 2;\n y = 0;\n break;\n case 'right':\n x = data.size.width;\n y = data.size.height / 2;\n break;\n case 'bottom':\n x = data.size.width / 2;\n y = data.size.height;\n break;\n case 'left':\n x = 0;\n y = data.size.height / 2;\n break;\n }\n edgePoint.position.set(x, y);\n });\n}\n\nexport function showEdgePoints(sprite: ElementSprite): void {\n sprite.edgePoints.forEach(edgePoint => {\n edgePoint.alpha = 1;\n });\n}\n\nexport function hideEdgePoints(sprite: ElementSprite): void {\n sprite.edgePoints.forEach(edgePoint => {\n edgePoint.alpha = 0;\n });\n}\n\nexport function setElementSelected(sprite: ElementSprite, selected: boolean): void {\n if (!sprite.selectionBorder) return;\n \n if (selected) {\n updateSelectionBorder(sprite);\n sprite.selectionBorder.alpha = 1;\n } else {\n sprite.selectionBorder.alpha = 0;\n }\n}\n\nfunction updateSelectionBorder(sprite: ElementSprite): void {\n if (!sprite.selectionBorder) return;\n \n const selectionBorder = sprite.selectionBorder;\n selectionBorder.clear();\n \n const borderWidth = 3;\n const offset = -borderWidth;\n \n // Get primary color from CSS variable with fallback\n const primaryColor = getComputedPrimaryColor();\n \n if (sprite.data.type === 'process') {\n const centerX = sprite.data.size.width / 2;\n const centerY = sprite.data.size.height / 2;\n const radius = Math.min(sprite.data.size.width, sprite.data.size.height) / 2 + borderWidth;\n \n selectionBorder.circle(centerX, centerY, radius);\n selectionBorder.stroke({ color: primaryColor, width: borderWidth });\n } else {\n selectionBorder.roundRect(\n offset, \n offset, \n sprite.data.size.width + borderWidth * 2, \n sprite.data.size.height + borderWidth * 2, \n BORDER_RADIUS + borderWidth\n );\n selectionBorder.stroke({ color: primaryColor, width: borderWidth });\n }\n}\n\nfunction getComputedPrimaryColor(): number {\n // Get the primary color from CSS custom properties\n const style = getComputedStyle(document.documentElement);\n const primaryColorStr = style.getPropertyValue('--primary-color').trim() || '#3B82F6';\n \n // Convert hex color string to number\n return parseInt(primaryColorStr.replace('#', ''), 16);\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './EventModeling';
2
+ export * from './types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../EventModeling/index.ts"],"names":[],"mappings":"AAGA,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { EventModeling } from './EventModeling.js';
2
+ export { DEFAULT_ELEMENT_SIZE, ELEMENT_COLORS, calculateOptimalEdges } from './types.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,79 @@
1
+ export type ElementType = 'command' | 'event' | 'readmodel' | 'process';
2
+ export interface Position {
3
+ x: number;
4
+ y: number;
5
+ }
6
+ export interface Size {
7
+ width: number;
8
+ height: number;
9
+ }
10
+ export interface ElementData {
11
+ id: string;
12
+ type: ElementType;
13
+ position: Position;
14
+ size: Size;
15
+ label: string;
16
+ description?: string;
17
+ }
18
+ export type EdgeSide = 'top' | 'right' | 'bottom' | 'left';
19
+ export interface EdgePoint {
20
+ elementId: string;
21
+ side: EdgeSide;
22
+ }
23
+ export interface Connector {
24
+ id: string;
25
+ from: EdgePoint;
26
+ to: EdgePoint;
27
+ }
28
+ export interface EventModelingState {
29
+ elements: ElementData[];
30
+ connectors: Connector[];
31
+ selectedElementId?: string;
32
+ selectedConnectorId?: string;
33
+ }
34
+ export interface CanvasTransform {
35
+ x: number;
36
+ y: number;
37
+ scale: number;
38
+ }
39
+ export declare const ELEMENT_COLORS: {
40
+ readonly command: {
41
+ readonly background: 3900150;
42
+ readonly text: 16777215;
43
+ };
44
+ readonly event: {
45
+ readonly background: 16096779;
46
+ readonly text: 16777215;
47
+ };
48
+ readonly readmodel: {
49
+ readonly background: 1096065;
50
+ readonly text: 16777215;
51
+ };
52
+ readonly process: {
53
+ readonly fill: 7041664;
54
+ readonly stroke: 3621201;
55
+ };
56
+ };
57
+ export declare const DEFAULT_ELEMENT_SIZE: {
58
+ readonly command: {
59
+ readonly width: 200;
60
+ readonly height: 100;
61
+ };
62
+ readonly event: {
63
+ readonly width: 200;
64
+ readonly height: 100;
65
+ };
66
+ readonly readmodel: {
67
+ readonly width: 200;
68
+ readonly height: 100;
69
+ };
70
+ readonly process: {
71
+ readonly width: 80;
72
+ readonly height: 80;
73
+ };
74
+ };
75
+ export declare function calculateOptimalEdges(fromElement: ElementData, toElement: ElementData): {
76
+ fromSide: EdgeSide;
77
+ toSide: EdgeSide;
78
+ };
79
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../EventModeling/types.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;AAExE,MAAM,WAAW,QAAQ;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,IAAI;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE3D,MAAM,WAAW,SAAS;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,QAAQ,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,CAAC;IAChB,EAAE,EAAE,SAAS,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;CAiBjB,CAAC;AAEX,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;CAKvB,CAAC;AAMX,wBAAgB,qBAAqB,CACjC,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,WAAW,GACvB;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,QAAQ,CAAA;CAAE,CAqC1C"}
@@ -0,0 +1,56 @@
1
+ const ELEMENT_COLORS = {
2
+ command: {
3
+ background: 0x3b82f6,
4
+ text: 0xffffff,
5
+ },
6
+ event: {
7
+ background: 0xf59e0b,
8
+ text: 0xffffff,
9
+ },
10
+ readmodel: {
11
+ background: 0x10b981,
12
+ text: 0xffffff,
13
+ },
14
+ process: {
15
+ fill: 0x6b7280,
16
+ stroke: 0x374151,
17
+ },
18
+ };
19
+ const DEFAULT_ELEMENT_SIZE = {
20
+ command: { width: 200, height: 100 },
21
+ event: { width: 200, height: 100 },
22
+ readmodel: { width: 200, height: 100 },
23
+ process: { width: 80, height: 80 },
24
+ };
25
+ function calculateOptimalEdges(fromElement, toElement) {
26
+ const fromCenter = {
27
+ x: fromElement.position.x + fromElement.size.width / 2,
28
+ y: fromElement.position.y + fromElement.size.height / 2,
29
+ };
30
+ const toCenter = {
31
+ x: toElement.position.x + toElement.size.width / 2,
32
+ y: toElement.position.y + toElement.size.height / 2,
33
+ };
34
+ const dx = toCenter.x - fromCenter.x;
35
+ const dy = toCenter.y - fromCenter.y;
36
+ const isHorizontal = Math.abs(dx) > Math.abs(dy);
37
+ if (isHorizontal) {
38
+ if (dx > 0) {
39
+ return { fromSide: 'right', toSide: 'left' };
40
+ }
41
+ else {
42
+ return { fromSide: 'left', toSide: 'right' };
43
+ }
44
+ }
45
+ else {
46
+ if (dy > 0) {
47
+ return { fromSide: 'bottom', toSide: 'top' };
48
+ }
49
+ else {
50
+ return { fromSide: 'top', toSide: 'bottom' };
51
+ }
52
+ }
53
+ }
54
+
55
+ export { DEFAULT_ELEMENT_SIZE, ELEMENT_COLORS, calculateOptimalEdges };
56
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sources":["../../../EventModeling/types.ts"],"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\nexport type ElementType = 'command' | 'event' | 'readmodel' | 'process';\n\nexport interface Position {\n x: number;\n y: number;\n}\n\nexport interface Size {\n width: number;\n height: number;\n}\n\nexport interface ElementData {\n id: string;\n type: ElementType;\n position: Position;\n size: Size;\n label: string;\n description?: string;\n}\n\nexport type EdgeSide = 'top' | 'right' | 'bottom' | 'left';\n\nexport interface EdgePoint {\n elementId: string;\n side: EdgeSide;\n}\n\nexport interface Connector {\n id: string;\n from: EdgePoint;\n to: EdgePoint;\n}\n\nexport interface EventModelingState {\n elements: ElementData[];\n connectors: Connector[];\n selectedElementId?: string;\n selectedConnectorId?: string;\n}\n\nexport interface CanvasTransform {\n x: number;\n y: number;\n scale: number;\n}\n\nexport const ELEMENT_COLORS = {\n command: {\n background: 0x3b82f6,\n text: 0xffffff,\n },\n event: {\n background: 0xf59e0b,\n text: 0xffffff,\n },\n readmodel: {\n background: 0x10b981,\n text: 0xffffff,\n },\n process: {\n fill: 0x6b7280,\n stroke: 0x374151,\n },\n} as const;\n\nexport const DEFAULT_ELEMENT_SIZE = {\n command: { width: 200, height: 100 },\n event: { width: 200, height: 100 },\n readmodel: { width: 200, height: 100 },\n process: { width: 80, height: 80 },\n} as const;\n\n/**\n * Calculate the optimal edge pair for a connector based on element positions.\n * Returns the best matching edges for visual clarity.\n */\nexport function calculateOptimalEdges(\n fromElement: ElementData,\n toElement: ElementData\n): { fromSide: EdgeSide; toSide: EdgeSide } {\n // Calculate center points\n const fromCenter = {\n x: fromElement.position.x + fromElement.size.width / 2,\n y: fromElement.position.y + fromElement.size.height / 2,\n };\n const toCenter = {\n x: toElement.position.x + toElement.size.width / 2,\n y: toElement.position.y + toElement.size.height / 2,\n };\n\n // Calculate differences\n const dx = toCenter.x - fromCenter.x;\n const dy = toCenter.y - fromCenter.y;\n\n // Determine primary direction based on which delta is larger\n const isHorizontal = Math.abs(dx) > Math.abs(dy);\n\n if (isHorizontal) {\n // Horizontal connection is primary\n if (dx > 0) {\n // Target is to the right\n return { fromSide: 'right', toSide: 'left' };\n } else {\n // Target is to the left\n return { fromSide: 'left', toSide: 'right' };\n }\n } else {\n // Vertical connection is primary\n if (dy > 0) {\n // Target is below\n return { fromSide: 'bottom', toSide: 'top' };\n } else {\n // Target is above\n return { fromSide: 'top', toSide: 'bottom' };\n }\n }\n}\n"],"names":[],"mappings":"AAkDO,MAAM,cAAc,GAAG;AAC1B,IAAA,OAAO,EAAE;AACL,QAAA,UAAU,EAAE,QAAQ;AACpB,QAAA,IAAI,EAAE,QAAQ;AACjB,KAAA;AACD,IAAA,KAAK,EAAE;AACH,QAAA,UAAU,EAAE,QAAQ;AACpB,QAAA,IAAI,EAAE,QAAQ;AACjB,KAAA;AACD,IAAA,SAAS,EAAE;AACP,QAAA,UAAU,EAAE,QAAQ;AACpB,QAAA,IAAI,EAAE,QAAQ;AACjB,KAAA;AACD,IAAA,OAAO,EAAE;AACL,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,MAAM,EAAE,QAAQ;AACnB,KAAA;;AAGE,MAAM,oBAAoB,GAAG;IAChC,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;IACpC,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;IAClC,SAAS,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;IACtC,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;;AAOhC,SAAU,qBAAqB,CACjC,WAAwB,EACxB,SAAsB,EAAA;AAGtB,IAAA,MAAM,UAAU,GAAG;AACf,QAAA,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC;AACtD,QAAA,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;KAC1D;AACD,IAAA,MAAM,QAAQ,GAAG;AACb,QAAA,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC;AAClD,QAAA,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;KACtD;IAGD,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;IACpC,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;AAGpC,IAAA,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAEhD,IAAI,YAAY,EAAE;AAEd,QAAA,IAAI,EAAE,GAAG,CAAC,EAAE;YAER,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;QAChD;aAAO;YAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;QAChD;IACJ;SAAO;AAEH,QAAA,IAAI,EAAE,GAAG,CAAC,EAAE;YAER,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE;QAChD;aAAO;YAEH,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;QAChD;IACJ;AACJ;;;;"}
@@ -18,8 +18,8 @@ export interface PivotCanvasProps<TItem extends object> {
18
18
  isZooming?: boolean;
19
19
  cardRenderer: (item: TItem) => {
20
20
  title: string;
21
- labels: string[];
22
- values: string[];
21
+ labels?: string[];
22
+ values?: string[];
23
23
  };
24
24
  resolveId: (item: TItem, index: number) => string | number;
25
25
  onCardClick: (item: TItem, e: MouseEvent, id: number | string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"PivotCanvas.d.ts","sourceRoot":"","sources":["../../../../PivotViewer/components/PivotCanvas.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAQ1C,MAAM,WAAW,gBAAgB,CAAC,KAAK,SAAS,MAAM;IAEpD,KAAK,EAAE,KAAK,EAAE,CAAC;IAGf,MAAM,EAAE,YAAY,CAAC;IAGrB,QAAQ,EAAE,cAAc,CAAC;IAGzB,UAAU,EAAE,WAAW,CAAC;IAGxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IAGnB,SAAS,EAAE,MAAM,CAAC;IAGlB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IAGb,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IAGvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAG1B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IAGjC,QAAQ,EAAE,QAAQ,CAAC;IAGnB,SAAS,CAAC,EAAE,OAAO,CAAC;IAGpB,YAAY,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAGrF,SAAS,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,CAAC;IAG3D,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAGvE,UAAU,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAC1C,SAAS,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IACzC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;CACtD;AAMD,wBAAgB,WAAW,CAAC,KAAK,SAAS,MAAM,EAAE,EAChD,KAAK,EACL,MAAM,EACN,QAAQ,EACR,UAAU,EACV,SAAS,EACT,UAAU,EACV,SAAS,EACT,IAAI,EACJ,IAAI,EACJ,aAAa,EACb,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,SAAS,EAAE,UAAkB,EAC7B,SAAS,EAAE,UAAU,EACrB,WAAW,EACX,UAAU,EACV,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,YAAY,GACb,EAAE,gBAAgB,CAAC,KAAK,CAAC,QAknBzB"}
1
+ {"version":3,"file":"PivotCanvas.d.ts","sourceRoot":"","sources":["../../../../PivotViewer/components/PivotCanvas.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAQ1C,MAAM,WAAW,gBAAgB,CAAC,KAAK,SAAS,MAAM;IAEpD,KAAK,EAAE,KAAK,EAAE,CAAC;IAGf,MAAM,EAAE,YAAY,CAAC;IAGrB,QAAQ,EAAE,cAAc,CAAC;IAGzB,UAAU,EAAE,WAAW,CAAC;IAGxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IAGnB,SAAS,EAAE,MAAM,CAAC;IAGlB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IAGb,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IAGvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAG1B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IAGjC,QAAQ,EAAE,QAAQ,CAAC;IAGnB,SAAS,CAAC,EAAE,OAAO,CAAC;IAGpB,YAAY,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAGvF,SAAS,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,MAAM,CAAC;IAG3D,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAGvE,UAAU,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAC1C,SAAS,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IACzC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;CACtD;AAMD,wBAAgB,WAAW,CAAC,KAAK,SAAS,MAAM,EAAE,EAChD,KAAK,EACL,MAAM,EACN,QAAQ,EACR,UAAU,EACV,SAAS,EACT,UAAU,EACV,SAAS,EACT,IAAI,EACJ,IAAI,EACJ,aAAa,EACb,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,SAAS,EAAE,UAAkB,EAC7B,SAAS,EAAE,UAAU,EACrB,WAAW,EACX,UAAU,EACV,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,YAAY,GACb,EAAE,gBAAgB,CAAC,KAAK,CAAC,QAknBzB"}