@uipath/apollo-react 3.44.0 → 3.44.2-pr255.af80ea0

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 (121) hide show
  1. package/dist/canvas/components/StageNode/CrossStageTaskDrag.stories.cjs +581 -0
  2. package/dist/canvas/components/StageNode/CrossStageTaskDrag.stories.d.ts +6 -0
  3. package/dist/canvas/components/StageNode/CrossStageTaskDrag.stories.d.ts.map +1 -0
  4. package/dist/canvas/components/StageNode/CrossStageTaskDrag.stories.js +544 -0
  5. package/dist/canvas/components/StageNode/DropPlaceholder.cjs +106 -0
  6. package/dist/canvas/components/StageNode/DropPlaceholder.d.ts +10 -0
  7. package/dist/canvas/components/StageNode/DropPlaceholder.d.ts.map +1 -0
  8. package/dist/canvas/components/StageNode/DropPlaceholder.js +72 -0
  9. package/dist/canvas/components/StageNode/StageNode.cjs +334 -389
  10. package/dist/canvas/components/StageNode/StageNode.d.ts.map +1 -1
  11. package/dist/canvas/components/StageNode/StageNode.js +336 -391
  12. package/dist/canvas/components/StageNode/StageNode.stories.cjs +1910 -1416
  13. package/dist/canvas/components/StageNode/StageNode.stories.d.ts +1 -1
  14. package/dist/canvas/components/StageNode/StageNode.stories.d.ts.map +1 -1
  15. package/dist/canvas/components/StageNode/StageNode.stories.js +1906 -1412
  16. package/dist/canvas/components/StageNode/StageNode.styles.cjs +1 -1
  17. package/dist/canvas/components/StageNode/StageNode.styles.js +1 -1
  18. package/dist/canvas/components/StageNode/StageNode.types.d.ts +26 -10
  19. package/dist/canvas/components/StageNode/StageNode.types.d.ts.map +1 -1
  20. package/dist/canvas/components/StageNode/StageNodeTaskUtilities.cjs +10 -5
  21. package/dist/canvas/components/StageNode/StageNodeTaskUtilities.d.ts +2 -1
  22. package/dist/canvas/components/StageNode/StageNodeTaskUtilities.d.ts.map +1 -1
  23. package/dist/canvas/components/StageNode/StageNodeTaskUtilities.js +6 -4
  24. package/dist/canvas/components/StageNode/TaskMenu.cjs +11 -43
  25. package/dist/canvas/components/StageNode/TaskMenu.d.ts +1 -6
  26. package/dist/canvas/components/StageNode/TaskMenu.d.ts.map +1 -1
  27. package/dist/canvas/components/StageNode/TaskMenu.js +13 -35
  28. package/dist/canvas/components/StageNode/index.cjs +17 -3
  29. package/dist/canvas/components/StageNode/index.d.ts +4 -1
  30. package/dist/canvas/components/StageNode/index.d.ts.map +1 -1
  31. package/dist/canvas/components/StageNode/index.js +3 -1
  32. package/dist/canvas/components/TaskNode/PlaceholderTaskNode.cjs +51 -0
  33. package/dist/canvas/components/TaskNode/PlaceholderTaskNode.d.ts +8 -0
  34. package/dist/canvas/components/TaskNode/PlaceholderTaskNode.d.ts.map +1 -0
  35. package/dist/canvas/components/TaskNode/PlaceholderTaskNode.js +17 -0
  36. package/dist/canvas/components/TaskNode/TaskNode.cjs +235 -0
  37. package/dist/canvas/components/TaskNode/TaskNode.d.ts +11 -0
  38. package/dist/canvas/components/TaskNode/TaskNode.d.ts.map +1 -0
  39. package/dist/canvas/components/TaskNode/TaskNode.js +198 -0
  40. package/dist/canvas/components/TaskNode/TaskNode.stories.cjs +558 -0
  41. package/dist/canvas/components/TaskNode/TaskNode.stories.d.ts +8 -0
  42. package/dist/canvas/components/TaskNode/TaskNode.stories.d.ts.map +1 -0
  43. package/dist/canvas/components/TaskNode/TaskNode.stories.js +515 -0
  44. package/dist/canvas/components/TaskNode/TaskNode.types.d.ts +40 -0
  45. package/dist/canvas/components/TaskNode/TaskNode.types.d.ts.map +1 -0
  46. package/dist/canvas/components/TaskNode/TaskNodeContext.cjs +86 -0
  47. package/dist/canvas/components/TaskNode/TaskNodeContext.d.ts +24 -0
  48. package/dist/canvas/components/TaskNode/TaskNodeContext.d.ts.map +1 -0
  49. package/dist/canvas/components/TaskNode/TaskNodeContext.js +40 -0
  50. package/dist/canvas/components/TaskNode/index.cjs +82 -0
  51. package/dist/canvas/components/TaskNode/index.d.ts +8 -0
  52. package/dist/canvas/components/TaskNode/index.d.ts.map +1 -0
  53. package/dist/canvas/components/TaskNode/index.js +6 -0
  54. package/dist/canvas/components/TaskNode/taskReorderUtils.cjs +206 -0
  55. package/dist/canvas/components/TaskNode/taskReorderUtils.d.ts +23 -0
  56. package/dist/canvas/components/TaskNode/taskReorderUtils.d.ts.map +1 -0
  57. package/dist/canvas/components/TaskNode/taskReorderUtils.js +154 -0
  58. package/dist/canvas/components/TaskNode/useTaskPositions.cjs +153 -0
  59. package/dist/canvas/components/TaskNode/useTaskPositions.d.ts +29 -0
  60. package/dist/canvas/components/TaskNode/useTaskPositions.d.ts.map +1 -0
  61. package/dist/canvas/components/TaskNode/useTaskPositions.js +110 -0
  62. package/dist/canvas/core/TaskTypeRegistry.cjs +132 -0
  63. package/dist/canvas/core/TaskTypeRegistry.d.ts +18 -0
  64. package/dist/canvas/core/TaskTypeRegistry.d.ts.map +1 -0
  65. package/dist/canvas/core/TaskTypeRegistry.js +98 -0
  66. package/dist/canvas/core/index.cjs +21 -3
  67. package/dist/canvas/core/index.d.ts +2 -0
  68. package/dist/canvas/core/index.d.ts.map +1 -1
  69. package/dist/canvas/core/index.js +2 -0
  70. package/dist/canvas/core/useTaskTypeRegistry.cjs +82 -0
  71. package/dist/canvas/core/useTaskTypeRegistry.d.ts +13 -0
  72. package/dist/canvas/core/useTaskTypeRegistry.d.ts.map +1 -0
  73. package/dist/canvas/core/useTaskTypeRegistry.js +33 -0
  74. package/dist/canvas/hooks/CrossStageDragContext.cjs +45 -0
  75. package/dist/canvas/hooks/CrossStageDragContext.d.ts +8 -0
  76. package/dist/canvas/hooks/CrossStageDragContext.d.ts.map +1 -0
  77. package/dist/canvas/hooks/CrossStageDragContext.js +8 -0
  78. package/dist/canvas/hooks/calculateTaskDropPosition.cjs +253 -0
  79. package/dist/canvas/hooks/calculateTaskDropPosition.d.ts +11 -0
  80. package/dist/canvas/hooks/calculateTaskDropPosition.d.ts.map +1 -0
  81. package/dist/canvas/hooks/calculateTaskDropPosition.js +216 -0
  82. package/dist/canvas/hooks/index.cjs +57 -30
  83. package/dist/canvas/hooks/index.d.ts +3 -0
  84. package/dist/canvas/hooks/index.d.ts.map +1 -1
  85. package/dist/canvas/hooks/index.js +3 -0
  86. package/dist/canvas/hooks/useCrossStageTaskDrag.cjs +346 -0
  87. package/dist/canvas/hooks/useCrossStageTaskDrag.d.ts +44 -0
  88. package/dist/canvas/hooks/useCrossStageTaskDrag.d.ts.map +1 -0
  89. package/dist/canvas/hooks/useCrossStageTaskDrag.js +312 -0
  90. package/dist/canvas/hooks/useTaskCopyPaste.cjs +155 -0
  91. package/dist/canvas/hooks/useTaskCopyPaste.d.ts +34 -0
  92. package/dist/canvas/hooks/useTaskCopyPaste.d.ts.map +1 -0
  93. package/dist/canvas/hooks/useTaskCopyPaste.js +121 -0
  94. package/dist/canvas/schema/index.cjs +12 -3
  95. package/dist/canvas/schema/index.d.ts +1 -0
  96. package/dist/canvas/schema/index.d.ts.map +1 -1
  97. package/dist/canvas/schema/index.js +1 -0
  98. package/dist/canvas/schema/task-definition/index.cjs +60 -0
  99. package/dist/canvas/schema/task-definition/index.d.ts +2 -0
  100. package/dist/canvas/schema/task-definition/index.d.ts.map +1 -0
  101. package/dist/canvas/schema/task-definition/index.js +1 -0
  102. package/dist/canvas/schema/task-definition/task-manifest.cjs +78 -0
  103. package/dist/canvas/schema/task-definition/task-manifest.d.ts +43 -0
  104. package/dist/canvas/schema/task-definition/task-manifest.d.ts.map +1 -0
  105. package/dist/canvas/schema/task-definition/task-manifest.js +29 -0
  106. package/dist/material/components/ap-sankey-diagram/ApSankeyDiagram.cjs +44 -21
  107. package/dist/material/components/ap-sankey-diagram/ApSankeyDiagram.d.ts.map +1 -1
  108. package/dist/material/components/ap-sankey-diagram/ApSankeyDiagram.js +44 -21
  109. package/package.json +3 -3
  110. package/dist/canvas/components/StageNode/DraggableTask.cjs +0 -271
  111. package/dist/canvas/components/StageNode/DraggableTask.d.ts +0 -4
  112. package/dist/canvas/components/StageNode/DraggableTask.d.ts.map +0 -1
  113. package/dist/canvas/components/StageNode/DraggableTask.js +0 -234
  114. package/dist/canvas/components/StageNode/DraggableTask.types.d.ts +0 -20
  115. package/dist/canvas/components/StageNode/DraggableTask.types.d.ts.map +0 -1
  116. package/dist/canvas/components/StageNode/StageNode.utils.cjs +0 -164
  117. package/dist/canvas/components/StageNode/StageNode.utils.d.ts +0 -19
  118. package/dist/canvas/components/StageNode/StageNode.utils.d.ts.map +0 -1
  119. package/dist/canvas/components/StageNode/StageNode.utils.js +0 -121
  120. /package/dist/canvas/components/{StageNode/DraggableTask.types.cjs → TaskNode/TaskNode.types.cjs} +0 -0
  121. /package/dist/canvas/components/{StageNode/DraggableTask.types.js → TaskNode/TaskNode.types.js} +0 -0
@@ -0,0 +1,346 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ useCrossStageTaskDrag: ()=>useCrossStageTaskDrag
28
+ });
29
+ const react_namespaceObject = require("@xyflow/react");
30
+ const external_react_namespaceObject = require("react");
31
+ const taskReorderUtils_cjs_namespaceObject = require("../components/TaskNode/taskReorderUtils.cjs");
32
+ const useTaskPositions_cjs_namespaceObject = require("../components/TaskNode/useTaskPositions.cjs");
33
+ const external_calculateTaskDropPosition_cjs_namespaceObject = require("./calculateTaskDropPosition.cjs");
34
+ function isPointInStage(x, y, stageX, stageY, stageWidth, stageHeight) {
35
+ return x >= stageX && x <= stageX + stageWidth && y >= stageY && y <= stageY + stageHeight;
36
+ }
37
+ function useCrossStageTaskDrag(callbacks = {}) {
38
+ const { setNodes, getNodes } = (0, react_namespaceObject.useReactFlow)();
39
+ const { onTaskMove, onTaskCopy, onTaskReorder } = callbacks;
40
+ const [dragState, setDragState] = (0, external_react_namespaceObject.useState)({
41
+ isDragging: false,
42
+ taskId: null,
43
+ sourceStageId: null,
44
+ targetStageId: null,
45
+ isCopyMode: false,
46
+ dropPosition: null
47
+ });
48
+ const isCopyModeRef = (0, external_react_namespaceObject.useRef)(false);
49
+ const isDraggingRef = (0, external_react_namespaceObject.useRef)(false);
50
+ const draggedTaskIdRef = (0, external_react_namespaceObject.useRef)(null);
51
+ const sourceStageIdRef = (0, external_react_namespaceObject.useRef)(null);
52
+ const currentDropPositionRef = (0, external_react_namespaceObject.useRef)(null);
53
+ const currentTargetStageRef = (0, external_react_namespaceObject.useRef)(null);
54
+ const lastDropPositionRef = (0, external_react_namespaceObject.useRef)(null);
55
+ (0, external_react_namespaceObject.useEffect)(()=>{
56
+ if (!dragState.isDragging || !dragState.dropPosition || !dragState.taskId || !dragState.targetStageId) {
57
+ lastDropPositionRef.current = null;
58
+ return;
59
+ }
60
+ const { groupIndex, taskIndex, isParallel } = dragState.dropPosition;
61
+ const lastPos = lastDropPositionRef.current;
62
+ if (lastPos && lastPos.groupIndex === groupIndex && lastPos.taskIndex === taskIndex && lastPos.isParallel === isParallel && lastPos.targetStageId === dragState.targetStageId) return;
63
+ lastDropPositionRef.current = {
64
+ groupIndex,
65
+ taskIndex,
66
+ isParallel,
67
+ targetStageId: dragState.targetStageId
68
+ };
69
+ const allNodes = getNodes();
70
+ const targetStage = allNodes.find((n)=>n.id === dragState.targetStageId);
71
+ if (!targetStage) return;
72
+ const targetStageData = targetStage.data;
73
+ const stageDetails = targetStageData?.stageDetails;
74
+ const taskIds = stageDetails?.taskIds || [];
75
+ const filteredTaskIds = (0, taskReorderUtils_cjs_namespaceObject.removeTaskFromTaskIds)(taskIds, dragState.taskId);
76
+ const placeholderId = '__placeholder__';
77
+ const taskIdsWithPlaceholder = (0, taskReorderUtils_cjs_namespaceObject.insertTaskAtPosition)(filteredTaskIds, placeholderId, {
78
+ groupIndex,
79
+ taskIndex,
80
+ isParallel
81
+ });
82
+ const stageWidth = targetStage.style?.width || 304;
83
+ setNodes((currentNodes)=>{
84
+ const positions = (0, useTaskPositions_cjs_namespaceObject.calculateTaskPositions)(taskIdsWithPlaceholder, stageWidth, currentNodes);
85
+ const getOriginalPositions = (stageId)=>{
86
+ const stage = currentNodes.find((s)=>s.id === stageId);
87
+ if (!stage) return null;
88
+ const stageData = stage.data;
89
+ const details = stageData?.stageDetails;
90
+ const stageTaskIds = details?.taskIds || [];
91
+ const filteredIds = dragState.taskId ? (0, taskReorderUtils_cjs_namespaceObject.removeTaskFromTaskIds)(stageTaskIds, dragState.taskId) : stageTaskIds;
92
+ const width = stage.style?.width || 304;
93
+ return (0, useTaskPositions_cjs_namespaceObject.calculateTaskPositions)(filteredIds, width, currentNodes);
94
+ };
95
+ let updatedNodes = currentNodes.map((n)=>{
96
+ if ('task' === n.type && n.id !== dragState.taskId && n.parentId === dragState.targetStageId) {
97
+ const pos = positions.get(n.id);
98
+ if (pos) return {
99
+ ...n,
100
+ position: {
101
+ x: pos.x,
102
+ y: pos.y
103
+ }
104
+ };
105
+ }
106
+ if ('task' === n.type && n.id !== dragState.taskId && dragState.sourceStageId && dragState.sourceStageId !== dragState.targetStageId && n.parentId === dragState.sourceStageId) {
107
+ const sourcePositions = getOriginalPositions(dragState.sourceStageId);
108
+ if (sourcePositions) {
109
+ const pos = sourcePositions.get(n.id);
110
+ if (pos) return {
111
+ ...n,
112
+ position: {
113
+ x: pos.x,
114
+ y: pos.y
115
+ }
116
+ };
117
+ }
118
+ }
119
+ if ('task' === n.type && n.id !== dragState.taskId && n.parentId !== dragState.targetStageId && n.parentId !== dragState.sourceStageId) {
120
+ const otherPositions = getOriginalPositions(n.parentId);
121
+ if (otherPositions) {
122
+ const pos = otherPositions.get(n.id);
123
+ if (pos) return {
124
+ ...n,
125
+ position: {
126
+ x: pos.x,
127
+ y: pos.y
128
+ }
129
+ };
130
+ }
131
+ }
132
+ return n;
133
+ });
134
+ updatedNodes = updatedNodes.filter((n)=>'__placeholder__' !== n.id);
135
+ const placeholderPos = positions.get(placeholderId);
136
+ if (placeholderPos && dragState.targetStageId) updatedNodes.push({
137
+ id: '__placeholder__',
138
+ type: 'placeholder',
139
+ parentId: dragState.targetStageId,
140
+ extent: 'parent',
141
+ position: {
142
+ x: placeholderPos.x,
143
+ y: placeholderPos.y
144
+ },
145
+ width: placeholderPos.width,
146
+ data: {
147
+ isParallel
148
+ },
149
+ draggable: false,
150
+ selectable: false,
151
+ focusable: false
152
+ });
153
+ return updatedNodes;
154
+ });
155
+ }, [
156
+ dragState,
157
+ setNodes,
158
+ getNodes
159
+ ]);
160
+ const handleKeyDown = (0, external_react_namespaceObject.useCallback)((e)=>{
161
+ if (e.altKey || e.metaKey) {
162
+ isCopyModeRef.current = true;
163
+ setDragState((prev)=>({
164
+ ...prev,
165
+ isCopyMode: true
166
+ }));
167
+ }
168
+ }, []);
169
+ const handleKeyUp = (0, external_react_namespaceObject.useCallback)((e)=>{
170
+ if (!e.altKey && !e.metaKey) {
171
+ isCopyModeRef.current = false;
172
+ setDragState((prev)=>({
173
+ ...prev,
174
+ isCopyMode: false
175
+ }));
176
+ }
177
+ }, []);
178
+ const onNodeDragStart = (0, external_react_namespaceObject.useCallback)((_event, node, _nodes)=>{
179
+ if ('task' !== node.type) return;
180
+ const sourceStageId = node.parentId;
181
+ if (!sourceStageId) return;
182
+ isDraggingRef.current = true;
183
+ draggedTaskIdRef.current = node.id;
184
+ sourceStageIdRef.current = sourceStageId;
185
+ currentTargetStageRef.current = sourceStageId;
186
+ setDragState({
187
+ isDragging: true,
188
+ taskId: node.id,
189
+ sourceStageId,
190
+ targetStageId: sourceStageId,
191
+ isCopyMode: isCopyModeRef.current,
192
+ dropPosition: null
193
+ });
194
+ window.addEventListener('keydown', handleKeyDown);
195
+ window.addEventListener('keyup', handleKeyUp);
196
+ }, [
197
+ handleKeyDown,
198
+ handleKeyUp
199
+ ]);
200
+ const onNodeDrag = (0, external_react_namespaceObject.useCallback)((_event, node, _nodes)=>{
201
+ if ('task' !== node.type || !dragState.isDragging) return;
202
+ const allNodes = getNodes();
203
+ const nodeWidth = node.width || useTaskPositions_cjs_namespaceObject.DEFAULT_TASK_POSITION_CONFIG.taskHeight;
204
+ const nodeHeight = node.measured?.height || useTaskPositions_cjs_namespaceObject.DEFAULT_TASK_POSITION_CONFIG.taskHeight;
205
+ const parentStage = allNodes.find((n)=>n.id === node.parentId);
206
+ const absoluteX = (parentStage?.position.x || 0) + node.position.x;
207
+ const absoluteY = (parentStage?.position.y || 0) + node.position.y;
208
+ const nodeCenterX = absoluteX + nodeWidth / 2;
209
+ const nodeCenterY = absoluteY + nodeHeight / 2;
210
+ const stageNodes = allNodes.filter((n)=>{
211
+ const nodeType = n.data?.nodeType;
212
+ return 'stage' === n.type || 'stageV2' === n.type || 'string' == typeof nodeType && nodeType.includes('Stage');
213
+ });
214
+ let targetStage;
215
+ for (const stage of stageNodes){
216
+ const stageWidth = stage.style?.width || stage.width || 304;
217
+ const stageHeight = stage.style?.height || stage.measured?.height || 200;
218
+ if (isPointInStage(nodeCenterX, nodeCenterY, stage.position.x, stage.position.y, stageWidth, stageHeight)) {
219
+ targetStage = stage;
220
+ break;
221
+ }
222
+ }
223
+ if (targetStage) {
224
+ const targetStageData = targetStage.data;
225
+ const stageDetails = targetStageData?.stageDetails;
226
+ const taskIds = stageDetails?.taskIds || [];
227
+ const stageWidth = targetStage.style?.width || 304;
228
+ const relativeX = absoluteX - targetStage.position.x;
229
+ const relativeY = absoluteY - targetStage.position.y;
230
+ const dropPos = (0, external_calculateTaskDropPosition_cjs_namespaceObject.calculateDropPosition)(relativeY, nodeHeight, relativeX, nodeWidth, stageWidth, taskIds, node.id);
231
+ const filteredTaskIds = taskIds.map((g)=>g.filter((id)=>id !== node.id)).filter((g)=>g.length > 0);
232
+ const { groupIndex, taskIndex } = (0, external_calculateTaskDropPosition_cjs_namespaceObject.convertToGroupPosition)(dropPos.index, dropPos.isParallel, filteredTaskIds, dropPos.draggedYCenter, taskIds);
233
+ currentDropPositionRef.current = {
234
+ groupIndex,
235
+ taskIndex,
236
+ isParallel: dropPos.isParallel
237
+ };
238
+ currentTargetStageRef.current = targetStage.id;
239
+ setDragState((prev)=>({
240
+ ...prev,
241
+ targetStageId: targetStage.id,
242
+ dropPosition: {
243
+ groupIndex,
244
+ taskIndex,
245
+ isParallel: dropPos.isParallel
246
+ }
247
+ }));
248
+ }
249
+ }, [
250
+ dragState.isDragging,
251
+ getNodes
252
+ ]);
253
+ const onNodeDragStop = (0, external_react_namespaceObject.useCallback)((_event, node, _nodes)=>{
254
+ if ('task' !== node.type || !isDraggingRef.current) return;
255
+ window.removeEventListener('keydown', handleKeyDown);
256
+ window.removeEventListener('keyup', handleKeyUp);
257
+ const taskId = draggedTaskIdRef.current;
258
+ const sourceStageId = sourceStageIdRef.current;
259
+ const isCopyMode = isCopyModeRef.current;
260
+ const dropPosition = currentDropPositionRef.current;
261
+ const targetStageId = currentTargetStageRef.current;
262
+ if (taskId && sourceStageId && targetStageId && dropPosition) {
263
+ const isCrossStage = sourceStageId !== targetStageId;
264
+ if (isCrossStage) if (isCopyMode) {
265
+ const newTaskId = `task-${crypto.randomUUID()}`;
266
+ onTaskCopy?.({
267
+ taskId,
268
+ newTaskId,
269
+ sourceStageId,
270
+ targetStageId,
271
+ position: dropPosition
272
+ });
273
+ } else onTaskMove?.({
274
+ taskId,
275
+ sourceStageId,
276
+ targetStageId,
277
+ position: dropPosition
278
+ });
279
+ else onTaskReorder?.({
280
+ taskId,
281
+ stageId: sourceStageId,
282
+ position: dropPosition
283
+ });
284
+ }
285
+ isDraggingRef.current = false;
286
+ draggedTaskIdRef.current = null;
287
+ sourceStageIdRef.current = null;
288
+ currentDropPositionRef.current = null;
289
+ currentTargetStageRef.current = null;
290
+ setNodes((nodes)=>{
291
+ const filteredNodes = nodes.filter((n)=>'__placeholder__' !== n.id);
292
+ const draggedNode = filteredNodes.find((n)=>n.id === taskId);
293
+ if (!draggedNode || !draggedNode.parentId) return filteredNodes;
294
+ const parentStage = filteredNodes.find((n)=>n.id === draggedNode.parentId);
295
+ if (!parentStage) return filteredNodes;
296
+ const stageData = parentStage.data;
297
+ const stageDetails = stageData?.stageDetails;
298
+ const stageTaskIds = stageDetails?.taskIds || [];
299
+ const stageWidth = parentStage.style?.width || 304;
300
+ const positions = (0, useTaskPositions_cjs_namespaceObject.calculateTaskPositions)(stageTaskIds, stageWidth, filteredNodes);
301
+ return filteredNodes.map((n)=>{
302
+ if ('task' === n.type && n.parentId === draggedNode.parentId) {
303
+ const pos = positions.get(n.id);
304
+ if (pos) return {
305
+ ...n,
306
+ position: {
307
+ x: pos.x,
308
+ y: pos.y
309
+ }
310
+ };
311
+ }
312
+ return n;
313
+ });
314
+ });
315
+ setDragState({
316
+ isDragging: false,
317
+ taskId: null,
318
+ sourceStageId: null,
319
+ targetStageId: null,
320
+ isCopyMode: false,
321
+ dropPosition: null
322
+ });
323
+ }, [
324
+ handleKeyDown,
325
+ handleKeyUp,
326
+ onTaskCopy,
327
+ onTaskMove,
328
+ onTaskReorder,
329
+ setNodes
330
+ ]);
331
+ return {
332
+ dragState,
333
+ handlers: {
334
+ onNodeDragStart,
335
+ onNodeDrag,
336
+ onNodeDragStop
337
+ }
338
+ };
339
+ }
340
+ exports.useCrossStageTaskDrag = __webpack_exports__.useCrossStageTaskDrag;
341
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
342
+ "useCrossStageTaskDrag"
343
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
344
+ Object.defineProperty(exports, '__esModule', {
345
+ value: true
346
+ });
@@ -0,0 +1,44 @@
1
+ import { type Node } from '@xyflow/react';
2
+ type OnNodeDrag = (event: React.MouseEvent, node: Node, nodes: Node[]) => void;
3
+ export interface CrossStageDragState {
4
+ isDragging: boolean;
5
+ taskId: string | null;
6
+ sourceStageId: string | null;
7
+ targetStageId: string | null;
8
+ isCopyMode: boolean;
9
+ dropPosition: DropPosition | null;
10
+ }
11
+ export interface DropPosition {
12
+ groupIndex: number;
13
+ taskIndex: number;
14
+ isParallel: boolean;
15
+ }
16
+ export interface TaskMoveParams {
17
+ taskId: string;
18
+ sourceStageId: string;
19
+ targetStageId: string;
20
+ position: DropPosition;
21
+ }
22
+ export interface TaskCopyParams extends TaskMoveParams {
23
+ newTaskId: string;
24
+ }
25
+ export interface TaskReorderParams {
26
+ taskId: string;
27
+ stageId: string;
28
+ position: DropPosition;
29
+ }
30
+ export interface CrossStageTaskCallbacks {
31
+ onTaskMove?: (params: TaskMoveParams) => void;
32
+ onTaskCopy?: (params: TaskCopyParams) => void;
33
+ onTaskReorder?: (params: TaskReorderParams) => void;
34
+ }
35
+ export declare function useCrossStageTaskDrag(callbacks?: CrossStageTaskCallbacks): {
36
+ dragState: CrossStageDragState;
37
+ handlers: {
38
+ onNodeDragStart: OnNodeDrag;
39
+ onNodeDrag: OnNodeDrag;
40
+ onNodeDragStop: OnNodeDrag;
41
+ };
42
+ };
43
+ export {};
44
+ //# sourceMappingURL=useCrossStageTaskDrag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCrossStageTaskDrag.d.ts","sourceRoot":"","sources":["../../../src/canvas/hooks/useCrossStageTaskDrag.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,KAAK,IAAI,EAAgB,MAAM,eAAe,CAAC;AAexD,KAAK,UAAU,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;AAK/E,MAAM,WAAW,mBAAmB;IAElC,UAAU,EAAE,OAAO,CAAC;IAEpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAEtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAE7B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAE7B,UAAU,EAAE,OAAO,CAAC;IAEpB,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;CACnC;AAKD,MAAM,WAAW,YAAY;IAE3B,UAAU,EAAE,MAAM,CAAC;IAEnB,SAAS,EAAE,MAAM,CAAC;IAElB,UAAU,EAAE,OAAO,CAAC;CACrB;AAKD,MAAM,WAAW,cAAc;IAE7B,MAAM,EAAE,MAAM,CAAC;IAEf,aAAa,EAAE,MAAM,CAAC;IAEtB,aAAa,EAAE,MAAM,CAAC;IAEtB,QAAQ,EAAE,YAAY,CAAC;CACxB;AAED,MAAM,WAAW,cAAe,SAAQ,cAAc;IAEpD,SAAS,EAAE,MAAM,CAAC;CACnB;AAKD,MAAM,WAAW,iBAAiB;IAEhC,MAAM,EAAE,MAAM,CAAC;IAEf,OAAO,EAAE,MAAM,CAAC;IAEhB,QAAQ,EAAE,YAAY,CAAC;CACxB;AAKD,MAAM,WAAW,uBAAuB;IAEtC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IAE9C,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IAE9C,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;CACrD;AAoBD,wBAAgB,qBAAqB,CAAC,SAAS,GAAE,uBAA4B;;;;;;;EA2d5E"}