@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,581 @@
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
+ DragAndDrop: ()=>DragAndDrop,
28
+ default: ()=>CrossStageTaskDrag_stories
29
+ });
30
+ const jsx_runtime_namespaceObject = require("react/jsx-runtime");
31
+ const react_cjs_namespaceObject = require("../../xyflow/react.cjs");
32
+ const external_react_namespaceObject = require("react");
33
+ const CrossStageDragContext_cjs_namespaceObject = require("../../hooks/CrossStageDragContext.cjs");
34
+ const useCrossStageTaskDrag_cjs_namespaceObject = require("../../hooks/useCrossStageTaskDrag.cjs");
35
+ const useTaskCopyPaste_cjs_namespaceObject = require("../../hooks/useTaskCopyPaste.cjs");
36
+ const external_types_cjs_namespaceObject = require("../../types.cjs");
37
+ const index_cjs_namespaceObject = require("../BaseCanvas/index.cjs");
38
+ const external_CanvasPositionControls_cjs_namespaceObject = require("../CanvasPositionControls.cjs");
39
+ const external_TaskIcon_index_cjs_namespaceObject = require("../TaskIcon/index.cjs");
40
+ const external_TaskNode_index_cjs_namespaceObject = require("../TaskNode/index.cjs");
41
+ const taskReorderUtils_cjs_namespaceObject = require("../TaskNode/taskReorderUtils.cjs");
42
+ const useTaskPositions_cjs_namespaceObject = require("../TaskNode/useTaskPositions.cjs");
43
+ const external_StageConnectionEdge_cjs_namespaceObject = require("./StageConnectionEdge.cjs");
44
+ const external_StageEdge_cjs_namespaceObject = require("./StageEdge.cjs");
45
+ const external_StageNode_cjs_namespaceObject = require("./StageNode.cjs");
46
+ const meta = {
47
+ title: 'Canvas/StageNode',
48
+ parameters: {
49
+ layout: 'fullscreen'
50
+ }
51
+ };
52
+ const CrossStageTaskDrag_stories = meta;
53
+ const StageNodeWrapper = (props)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_StageNode_cjs_namespaceObject.StageNode, {
54
+ ...props,
55
+ ...props.data
56
+ });
57
+ const TaskNodeWrapper = (props)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_TaskNode_index_cjs_namespaceObject.TaskNode, {
58
+ ...props,
59
+ ...props.data
60
+ });
61
+ const initialStageData = {
62
+ 'stage-1': {
63
+ taskIds: [
64
+ [
65
+ 'task-1'
66
+ ],
67
+ [
68
+ 'task-2',
69
+ 'task-6'
70
+ ],
71
+ [
72
+ 'task-3',
73
+ 'task-4'
74
+ ],
75
+ [
76
+ 'task-5'
77
+ ]
78
+ ],
79
+ tasks: {
80
+ 'task-1': {
81
+ label: 'KYC Verification',
82
+ taskType: 'uipath.case-management.run-human-action'
83
+ },
84
+ 'task-2': {
85
+ label: 'Document Review',
86
+ taskType: 'uipath.case-management.process'
87
+ },
88
+ 'task-6': {
89
+ label: 'Credit Check',
90
+ taskType: 'uipath.case-management.rpa'
91
+ },
92
+ 'task-3': {
93
+ label: 'Address Check',
94
+ taskType: 'uipath.case-management.rpa'
95
+ },
96
+ 'task-4': {
97
+ label: 'Property Check',
98
+ taskType: 'uipath.case-management.rpa'
99
+ },
100
+ 'task-5': {
101
+ label: 'Final Approval',
102
+ taskType: 'uipath.case-management.agent'
103
+ }
104
+ }
105
+ },
106
+ 'stage-2': {
107
+ taskIds: [
108
+ [
109
+ 'task-7'
110
+ ],
111
+ [
112
+ 'task-8'
113
+ ]
114
+ ],
115
+ tasks: {
116
+ 'task-7': {
117
+ label: 'Report Generation',
118
+ taskType: 'uipath.case-management.api-workflow'
119
+ },
120
+ 'task-8': {
121
+ label: 'Send Notification',
122
+ taskType: 'uipath.case-management.action'
123
+ }
124
+ }
125
+ },
126
+ 'stage-3': {
127
+ taskIds: [],
128
+ tasks: {}
129
+ }
130
+ };
131
+ function getTaskIcon(taskType) {
132
+ if (taskType.includes('human-action')) return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_TaskIcon_index_cjs_namespaceObject.TaskIcon, {
133
+ type: external_TaskIcon_index_cjs_namespaceObject.TaskItemTypeValues.User,
134
+ size: "sm"
135
+ });
136
+ if (taskType.includes('rpa')) return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_TaskIcon_index_cjs_namespaceObject.TaskIcon, {
137
+ type: external_TaskIcon_index_cjs_namespaceObject.TaskItemTypeValues.Automation,
138
+ size: "sm"
139
+ });
140
+ if (taskType.includes('agent')) return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_TaskIcon_index_cjs_namespaceObject.TaskIcon, {
141
+ type: external_TaskIcon_index_cjs_namespaceObject.TaskItemTypeValues.Agent,
142
+ size: "sm"
143
+ });
144
+ if (taskType.includes('api-workflow')) return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_TaskIcon_index_cjs_namespaceObject.TaskIcon, {
145
+ type: external_TaskIcon_index_cjs_namespaceObject.TaskItemTypeValues.ApiAutomation,
146
+ size: "sm"
147
+ });
148
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_TaskIcon_index_cjs_namespaceObject.TaskIcon, {
149
+ type: external_TaskIcon_index_cjs_namespaceObject.TaskItemTypeValues.AgenticProcess,
150
+ size: "sm"
151
+ });
152
+ }
153
+ function createTaskNodes(stageId, stageData, stageWidth) {
154
+ const positions = (0, useTaskPositions_cjs_namespaceObject.calculateTaskPositions)(stageData.taskIds, stageWidth);
155
+ const nodes = [];
156
+ stageData.taskIds.forEach((group, groupIndex)=>{
157
+ group.forEach((taskId, taskIndex)=>{
158
+ const taskInfo = stageData.tasks[taskId];
159
+ if (!taskInfo) return;
160
+ const position = positions.get(taskId);
161
+ if (!position) return;
162
+ nodes.push({
163
+ id: taskId,
164
+ type: 'task',
165
+ parentId: stageId,
166
+ position: {
167
+ x: position.x,
168
+ y: position.y
169
+ },
170
+ width: position.width,
171
+ data: {
172
+ taskType: taskInfo.taskType,
173
+ label: taskInfo.label,
174
+ iconElement: getTaskIcon(taskInfo.taskType),
175
+ groupIndex,
176
+ taskIndex,
177
+ width: position.width
178
+ }
179
+ });
180
+ });
181
+ });
182
+ return nodes;
183
+ }
184
+ const CrossStageTaskDragDemo = ()=>{
185
+ const [stageData, setStageData] = (0, external_react_namespaceObject.useState)(initialStageData);
186
+ const [dragInfo, setDragInfo] = (0, external_react_namespaceObject.useState)('');
187
+ const [selectedTaskId, setSelectedTaskId] = (0, external_react_namespaceObject.useState)(null);
188
+ const [selectedStageId, setSelectedStageId] = (0, external_react_namespaceObject.useState)(null);
189
+ const stageNodes = (0, external_react_namespaceObject.useMemo)(()=>[
190
+ {
191
+ id: 'stage-1',
192
+ type: 'stageV2',
193
+ position: {
194
+ x: 48,
195
+ y: 96
196
+ },
197
+ style: {
198
+ width: 304
199
+ },
200
+ data: {
201
+ nodeType: 'case-management:Stage',
202
+ stageDetails: {
203
+ label: 'Processing',
204
+ taskIds: stageData['stage-1']?.taskIds ?? []
205
+ },
206
+ onTaskClick: (taskId)=>{
207
+ setSelectedTaskId(taskId);
208
+ setSelectedStageId('stage-1');
209
+ }
210
+ }
211
+ },
212
+ {
213
+ id: 'stage-2',
214
+ type: 'stageV2',
215
+ position: {
216
+ x: 400,
217
+ y: 96
218
+ },
219
+ style: {
220
+ width: 304
221
+ },
222
+ data: {
223
+ nodeType: 'case-management:Stage',
224
+ stageDetails: {
225
+ label: 'Review',
226
+ taskIds: stageData['stage-2']?.taskIds ?? []
227
+ },
228
+ onTaskClick: (taskId)=>{
229
+ setSelectedTaskId(taskId);
230
+ setSelectedStageId('stage-2');
231
+ }
232
+ }
233
+ },
234
+ {
235
+ id: 'stage-3',
236
+ type: 'stageV2',
237
+ position: {
238
+ x: 752,
239
+ y: 96
240
+ },
241
+ style: {
242
+ width: 304
243
+ },
244
+ data: {
245
+ nodeType: 'case-management:Stage',
246
+ stageDetails: {
247
+ label: 'Closing (Drop Here)',
248
+ taskIds: stageData['stage-3']?.taskIds ?? [],
249
+ defaultContent: 'Drag a task here'
250
+ },
251
+ onTaskClick: (taskId)=>{
252
+ setSelectedTaskId(taskId);
253
+ setSelectedStageId('stage-3');
254
+ },
255
+ onStageClick: ()=>setSelectedStageId('stage-3')
256
+ }
257
+ }
258
+ ], [
259
+ stageData
260
+ ]);
261
+ const taskNodes = (0, external_react_namespaceObject.useMemo)(()=>{
262
+ const nodes = [];
263
+ for (const stageId of Object.keys(stageData)){
264
+ const data = stageData[stageId];
265
+ if (data) nodes.push(...createTaskNodes(stageId, data, 304));
266
+ }
267
+ return nodes;
268
+ }, [
269
+ stageData
270
+ ]);
271
+ const allNodes = (0, external_react_namespaceObject.useMemo)(()=>[
272
+ ...stageNodes,
273
+ ...taskNodes
274
+ ], [
275
+ stageNodes,
276
+ taskNodes
277
+ ]);
278
+ const [nodes, setNodes, onNodesChange] = (0, react_cjs_namespaceObject.useNodesState)(allNodes);
279
+ const [edges, _setEdges, onEdgesChange] = (0, react_cjs_namespaceObject.useEdgesState)([
280
+ {
281
+ id: 'e1',
282
+ type: 'stage',
283
+ source: 'stage-1',
284
+ sourceHandle: 'stage-1____source____right',
285
+ target: 'stage-2',
286
+ targetHandle: 'stage-2____target____left'
287
+ },
288
+ {
289
+ id: 'e2',
290
+ type: 'stage',
291
+ source: 'stage-2',
292
+ sourceHandle: 'stage-2____source____right',
293
+ target: 'stage-3',
294
+ targetHandle: 'stage-3____target____left'
295
+ }
296
+ ]);
297
+ (0, external_react_namespaceObject.useEffect)(()=>{
298
+ setNodes(allNodes);
299
+ }, [
300
+ allNodes,
301
+ setNodes
302
+ ]);
303
+ const handleTaskMove = (0, external_react_namespaceObject.useCallback)((params)=>{
304
+ const { taskId, sourceStageId, targetStageId, position } = params;
305
+ setDragInfo(`Moved ${taskId} from ${sourceStageId} to ${targetStageId} at group ${position.groupIndex}${position.isParallel ? ' (parallel)' : ''}`);
306
+ setStageData((prev)=>{
307
+ const sourceStage = prev[sourceStageId];
308
+ const targetStage = prev[targetStageId];
309
+ if (!sourceStage?.tasks || !sourceStage?.taskIds || !targetStage) return prev;
310
+ const taskInfo = sourceStage.tasks[taskId];
311
+ if (!taskInfo) return prev;
312
+ const { sourceTaskIds: newSourceTaskIds, targetTaskIds: newTargetTaskIds } = (0, taskReorderUtils_cjs_namespaceObject.moveTaskBetweenStages)(sourceStage.taskIds, targetStage.taskIds || [], taskId, position);
313
+ const newSourceTasks = {
314
+ ...sourceStage.tasks
315
+ };
316
+ delete newSourceTasks[taskId];
317
+ return {
318
+ ...prev,
319
+ [sourceStageId]: {
320
+ ...sourceStage,
321
+ taskIds: newSourceTaskIds,
322
+ tasks: newSourceTasks
323
+ },
324
+ [targetStageId]: {
325
+ ...targetStage,
326
+ taskIds: newTargetTaskIds,
327
+ tasks: {
328
+ ...targetStage.tasks || {},
329
+ [taskId]: taskInfo
330
+ }
331
+ }
332
+ };
333
+ });
334
+ }, []);
335
+ const handleTaskCopy = (0, external_react_namespaceObject.useCallback)((params)=>{
336
+ const { taskId, newTaskId, sourceStageId, targetStageId, position } = params;
337
+ setDragInfo(`Copied ${taskId} to ${newTaskId} in ${targetStageId} at group ${position.groupIndex}${position.isParallel ? ' (parallel)' : ''}`);
338
+ setStageData((prev)=>{
339
+ const sourceStage = prev[sourceStageId];
340
+ const targetStage = prev[targetStageId];
341
+ if (!sourceStage?.tasks || !targetStage) return prev;
342
+ const taskInfo = sourceStage.tasks[taskId];
343
+ if (!taskInfo) return prev;
344
+ const newTargetTaskIds = (0, taskReorderUtils_cjs_namespaceObject.insertTaskAtPosition)(targetStage.taskIds || [], newTaskId, position);
345
+ return {
346
+ ...prev,
347
+ [targetStageId]: {
348
+ ...targetStage,
349
+ taskIds: newTargetTaskIds,
350
+ tasks: {
351
+ ...targetStage.tasks || {},
352
+ [newTaskId]: {
353
+ ...taskInfo,
354
+ label: `${taskInfo.label} (Copy)`
355
+ }
356
+ }
357
+ }
358
+ };
359
+ });
360
+ }, []);
361
+ const handleTaskReorder = (0, external_react_namespaceObject.useCallback)((params)=>{
362
+ const { taskId, stageId, position } = params;
363
+ setDragInfo(`Reordered ${taskId} in ${stageId} to group ${position.groupIndex}${position.isParallel ? ' (parallel)' : ''}`);
364
+ setStageData((prev)=>{
365
+ const stage = prev[stageId];
366
+ if (!stage) return prev;
367
+ const newTaskIds = (0, taskReorderUtils_cjs_namespaceObject.moveTaskWithinStage)(stage.taskIds, taskId, position);
368
+ return {
369
+ ...prev,
370
+ [stageId]: {
371
+ ...stage,
372
+ taskIds: newTaskIds
373
+ }
374
+ };
375
+ });
376
+ }, []);
377
+ const handleTaskPaste = (0, external_react_namespaceObject.useCallback)((params)=>{
378
+ const { newTaskId, originalData, targetStageId, position } = params;
379
+ setDragInfo(`Pasted task ${newTaskId} to ${targetStageId} at group ${position.groupIndex}`);
380
+ setStageData((prev)=>{
381
+ const newData = {
382
+ ...prev
383
+ };
384
+ const targetStage = newData[targetStageId];
385
+ if (!targetStage) return prev;
386
+ const newTargetTaskIds = [
387
+ ...targetStage.taskIds || []
388
+ ];
389
+ if (position.groupIndex >= newTargetTaskIds.length) newTargetTaskIds.push([
390
+ newTaskId
391
+ ]);
392
+ else newTargetTaskIds.splice(position.groupIndex, 0, [
393
+ newTaskId
394
+ ]);
395
+ newData[targetStageId] = {
396
+ ...targetStage,
397
+ taskIds: newTargetTaskIds,
398
+ tasks: {
399
+ ...targetStage.tasks || {},
400
+ [newTaskId]: {
401
+ label: `${originalData.label} (Pasted)`,
402
+ taskType: originalData.taskType
403
+ }
404
+ }
405
+ };
406
+ return newData;
407
+ });
408
+ }, []);
409
+ const targetTaskIds = (0, external_react_namespaceObject.useMemo)(()=>{
410
+ if (!selectedStageId) return [];
411
+ return stageData[selectedStageId]?.taskIds || [];
412
+ }, [
413
+ selectedStageId,
414
+ stageData
415
+ ]);
416
+ const nodeTypes = (0, external_react_namespaceObject.useMemo)(()=>({
417
+ stageV2: StageNodeWrapper,
418
+ task: TaskNodeWrapper,
419
+ placeholder: (props)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_TaskNode_index_cjs_namespaceObject.PlaceholderTaskNode, {
420
+ ...props
421
+ })
422
+ }), []);
423
+ const edgeTypes = (0, external_react_namespaceObject.useMemo)(()=>({
424
+ stage: external_StageEdge_cjs_namespaceObject.StageEdge
425
+ }), []);
426
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
427
+ style: {
428
+ width: '100vw',
429
+ height: '100vh'
430
+ },
431
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(react_cjs_namespaceObject.ReactFlowProvider, {
432
+ children: [
433
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(CrossStageTaskDragCanvas, {
434
+ nodes: nodes,
435
+ edges: edges,
436
+ onNodesChange: onNodesChange,
437
+ onEdgesChange: onEdgesChange,
438
+ nodeTypes: nodeTypes,
439
+ edgeTypes: edgeTypes,
440
+ onTaskMove: handleTaskMove,
441
+ onTaskCopy: handleTaskCopy,
442
+ onTaskPaste: handleTaskPaste,
443
+ onTaskReorder: handleTaskReorder,
444
+ selectedTaskId: selectedTaskId,
445
+ selectedStageId: selectedStageId,
446
+ targetTaskIds: targetTaskIds
447
+ }),
448
+ dragInfo && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(react_cjs_namespaceObject.Panel, {
449
+ position: "top-left",
450
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
451
+ style: {
452
+ background: 'var(--uix-palette-surface-paper)',
453
+ padding: '8px 16px',
454
+ borderRadius: '4px',
455
+ boxShadow: '0 2px 4px rgba(0,0,0,0.1)'
456
+ },
457
+ children: dragInfo
458
+ })
459
+ }),
460
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(react_cjs_namespaceObject.Panel, {
461
+ position: "bottom-left",
462
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
463
+ style: {
464
+ background: 'var(--uix-palette-surface-paper)',
465
+ padding: '8px 16px',
466
+ borderRadius: '4px',
467
+ boxShadow: '0 2px 4px rgba(0,0,0,0.1)',
468
+ maxWidth: '300px'
469
+ },
470
+ children: [
471
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("strong", {
472
+ children: "Instructions:"
473
+ }),
474
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("ul", {
475
+ style: {
476
+ margin: '8px 0',
477
+ paddingLeft: '16px'
478
+ },
479
+ children: [
480
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("li", {
481
+ children: "Click a task to select it"
482
+ }),
483
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("li", {
484
+ children: "Drag tasks between stages"
485
+ }),
486
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("li", {
487
+ children: "Hold Alt/Cmd while dragging to copy"
488
+ }),
489
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("li", {
490
+ children: "Ctrl/Cmd+C to copy selected task"
491
+ }),
492
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("li", {
493
+ children: "Ctrl/Cmd+V to paste (click stage first)"
494
+ })
495
+ ]
496
+ })
497
+ ]
498
+ })
499
+ })
500
+ ]
501
+ })
502
+ });
503
+ };
504
+ const CrossStageTaskDragCanvas = ({ nodes, edges, onNodesChange, onEdgesChange, nodeTypes, edgeTypes, onTaskMove, onTaskCopy, onTaskPaste, onTaskReorder, selectedTaskId, selectedStageId, targetTaskIds })=>{
505
+ const { dragState, handlers } = (0, useCrossStageTaskDrag_cjs_namespaceObject.useCrossStageTaskDrag)({
506
+ onTaskMove,
507
+ onTaskCopy,
508
+ onTaskReorder
509
+ });
510
+ (0, useTaskCopyPaste_cjs_namespaceObject.useTaskCopyPaste)({
511
+ onTaskPaste
512
+ }, {
513
+ selectedTaskId,
514
+ targetStageId: selectedStageId,
515
+ targetTaskIds,
516
+ enabled: true
517
+ });
518
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(CrossStageDragContext_cjs_namespaceObject.CrossStageDragProvider, {
519
+ value: {
520
+ dragState
521
+ },
522
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(index_cjs_namespaceObject.BaseCanvas, {
523
+ nodes: nodes,
524
+ edges: edges,
525
+ onNodesChange: onNodesChange,
526
+ onEdgesChange: onEdgesChange,
527
+ nodeTypes: nodeTypes,
528
+ edgeTypes: edgeTypes,
529
+ mode: "design",
530
+ connectionMode: react_cjs_namespaceObject.ConnectionMode.Strict,
531
+ defaultEdgeOptions: {
532
+ type: 'stage'
533
+ },
534
+ connectionLineComponent: external_StageConnectionEdge_cjs_namespaceObject.StageConnectionEdge,
535
+ elevateEdgesOnSelect: true,
536
+ onNodeDragStart: handlers.onNodeDragStart,
537
+ onNodeDrag: handlers.onNodeDrag,
538
+ onNodeDragStop: handlers.onNodeDragStop,
539
+ children: [
540
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(react_cjs_namespaceObject.Panel, {
541
+ position: "bottom-right",
542
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_CanvasPositionControls_cjs_namespaceObject.CanvasPositionControls, {
543
+ translations: external_types_cjs_namespaceObject.DefaultCanvasTranslations
544
+ })
545
+ }),
546
+ dragState.isDragging && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(react_cjs_namespaceObject.Panel, {
547
+ position: "top-right",
548
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
549
+ style: {
550
+ background: dragState.isCopyMode ? 'var(--uix-palette-info-light)' : 'var(--uix-palette-warning-light)',
551
+ padding: '8px 16px',
552
+ borderRadius: '4px'
553
+ },
554
+ children: [
555
+ dragState.isCopyMode ? 'Copy Mode (Alt/Cmd)' : 'Move Mode',
556
+ dragState.targetStageId !== dragState.sourceStageId && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
557
+ children: [
558
+ "Target: ",
559
+ dragState.targetStageId
560
+ ]
561
+ })
562
+ ]
563
+ })
564
+ })
565
+ ]
566
+ })
567
+ });
568
+ };
569
+ const DragAndDrop = {
570
+ name: 'Drag and Drop',
571
+ render: ()=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(CrossStageTaskDragDemo, {})
572
+ };
573
+ exports.DragAndDrop = __webpack_exports__.DragAndDrop;
574
+ exports["default"] = __webpack_exports__["default"];
575
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
576
+ "DragAndDrop",
577
+ "default"
578
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
579
+ Object.defineProperty(exports, '__esModule', {
580
+ value: true
581
+ });
@@ -0,0 +1,6 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ declare const meta: Meta;
3
+ export default meta;
4
+ type Story = StoryObj<typeof meta>;
5
+ export declare const DragAndDrop: Story;
6
+ //# sourceMappingURL=CrossStageTaskDrag.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CrossStageTaskDrag.stories.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/StageNode/CrossStageTaskDrag.stories.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAkCvD,QAAA,MAAM,IAAI,EAAE,IAKX,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AA8fnC,eAAO,MAAM,WAAW,EAAE,KAGzB,CAAC"}