@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,515 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { ConnectionMode, Panel, ReactFlowProvider, useEdgesState, useNodesState } from "../../xyflow/react.js";
3
+ import { useCallback, useEffect, useMemo, useState } from "react";
4
+ import { CrossStageDragProvider } from "../../hooks/CrossStageDragContext.js";
5
+ import { useCrossStageTaskDrag } from "../../hooks/useCrossStageTaskDrag.js";
6
+ import { useTaskCopyPaste } from "../../hooks/useTaskCopyPaste.js";
7
+ import { DefaultCanvasTranslations } from "../../types.js";
8
+ import { BaseCanvas } from "../BaseCanvas/index.js";
9
+ import { CanvasPositionControls } from "../CanvasPositionControls.js";
10
+ import { StageConnectionEdge } from "../StageNode/StageConnectionEdge.js";
11
+ import { StageEdge } from "../StageNode/StageEdge.js";
12
+ import { StageNode } from "../StageNode/StageNode.js";
13
+ import { TaskIcon, TaskItemTypeValues } from "../TaskIcon/index.js";
14
+ import { PlaceholderTaskNode } from "./PlaceholderTaskNode.js";
15
+ import { TaskNode } from "./TaskNode.js";
16
+ import { reorderTaskIds } from "./taskReorderUtils.js";
17
+ import { calculateTaskPositions } from "./useTaskPositions.js";
18
+ const meta = {
19
+ title: 'Canvas/StageNode/TaskNode',
20
+ parameters: {
21
+ layout: 'fullscreen'
22
+ }
23
+ };
24
+ const TaskNode_stories = meta;
25
+ const StageNodeWrapper = (props)=>/*#__PURE__*/ jsx(StageNode, {
26
+ ...props,
27
+ ...props.data
28
+ });
29
+ const TaskNodeWrapper = (props)=>/*#__PURE__*/ jsx(TaskNode, {
30
+ ...props
31
+ });
32
+ function createTaskNodes(stageId, taskIds, tasks, stageWidth, onTaskClick, onTaskSelect) {
33
+ const positions = calculateTaskPositions(taskIds, stageWidth, tasks);
34
+ const nodes = [];
35
+ taskIds.forEach((group, groupIndex)=>{
36
+ group.forEach((taskId, taskIndex)=>{
37
+ const taskInfo = tasks[taskId];
38
+ if (!taskInfo) return;
39
+ const position = positions.get(taskId);
40
+ if (!position) return;
41
+ nodes.push({
42
+ id: taskId,
43
+ type: 'task',
44
+ parentId: stageId,
45
+ extent: 'parent',
46
+ position: {
47
+ x: position.x,
48
+ y: position.y
49
+ },
50
+ width: position.width,
51
+ data: {
52
+ taskType: taskInfo.taskType,
53
+ label: taskInfo.label,
54
+ iconElement: taskInfo.icon,
55
+ groupIndex,
56
+ taskIndex,
57
+ execution: taskInfo.execution,
58
+ onTaskClick,
59
+ onTaskSelect,
60
+ width: position.width
61
+ }
62
+ });
63
+ });
64
+ });
65
+ return nodes;
66
+ }
67
+ const InteractiveCanvas = ({ initialTaskIds, tasks: initialTasks, stageWidth, stageLabel, showInstructions = true })=>{
68
+ const [taskIds, setTaskIds] = useState(initialTaskIds);
69
+ const [tasks, setTasks] = useState(initialTasks);
70
+ const [selectedTaskId, setSelectedTaskId] = useState(null);
71
+ const [actionLog, setActionLog] = useState('');
72
+ const displayTaskIds = useMemo(()=>taskIds, [
73
+ taskIds
74
+ ]);
75
+ const stageNode = useMemo(()=>({
76
+ id: 'stage-1',
77
+ type: 'stage',
78
+ position: {
79
+ x: 250,
80
+ y: 100
81
+ },
82
+ style: {
83
+ width: stageWidth
84
+ },
85
+ data: {
86
+ nodeType: 'case-management:Stage',
87
+ stageDetails: {
88
+ label: stageLabel,
89
+ taskIds: displayTaskIds
90
+ },
91
+ onTaskClick: (taskId)=>{
92
+ setSelectedTaskId(taskId);
93
+ setActionLog(`Selected: ${taskId}`);
94
+ }
95
+ }
96
+ }), [
97
+ displayTaskIds,
98
+ stageLabel,
99
+ stageWidth
100
+ ]);
101
+ const handleTaskClick = useCallback((taskId)=>{
102
+ setSelectedTaskId(taskId);
103
+ setActionLog(`Selected: ${taskId}`);
104
+ }, []);
105
+ const taskNodes = useMemo(()=>createTaskNodes('stage-1', displayTaskIds, tasks, stageWidth, handleTaskClick, setSelectedTaskId), [
106
+ displayTaskIds,
107
+ tasks,
108
+ stageWidth,
109
+ handleTaskClick
110
+ ]);
111
+ const allNodes = useMemo(()=>[
112
+ stageNode,
113
+ ...taskNodes
114
+ ], [
115
+ stageNode,
116
+ taskNodes
117
+ ]);
118
+ const [nodes, setNodes, onNodesChange] = useNodesState(allNodes);
119
+ const [edges, , onEdgesChange] = useEdgesState([]);
120
+ useEffect(()=>{
121
+ setNodes(allNodes);
122
+ }, [
123
+ allNodes,
124
+ setNodes
125
+ ]);
126
+ const nodeTypes = useMemo(()=>({
127
+ stage: StageNodeWrapper,
128
+ task: TaskNodeWrapper,
129
+ placeholder: (props)=>/*#__PURE__*/ jsx(PlaceholderTaskNode, {
130
+ ...props
131
+ })
132
+ }), []);
133
+ const edgeTypes = useMemo(()=>({
134
+ stage: StageEdge
135
+ }), []);
136
+ const handleTaskReorder = useCallback((params)=>{
137
+ const { taskId, position } = params;
138
+ const depthLabel = position.isParallel ? 'parallel' : 'sequential';
139
+ setActionLog(`Reordered ${taskId} to group ${position.groupIndex} (${depthLabel})`);
140
+ setTaskIds((prev)=>{
141
+ const depth = position.isParallel ? 1 : 0;
142
+ return reorderTaskIds(prev, taskId, position.groupIndex, position.taskIndex, depth);
143
+ });
144
+ }, []);
145
+ const handleTaskPaste = useCallback((params)=>{
146
+ const { newTaskId, originalData } = params;
147
+ setActionLog(`Pasted as ${newTaskId}`);
148
+ setTasks((prev)=>({
149
+ ...prev,
150
+ [newTaskId]: {
151
+ label: `${originalData.label} (Copy)`,
152
+ taskType: originalData.taskType,
153
+ icon: originalData.iconElement ?? /*#__PURE__*/ jsx(TaskIcon, {
154
+ type: TaskItemTypeValues.AgenticProcess,
155
+ size: "sm"
156
+ }),
157
+ execution: originalData.execution
158
+ }
159
+ }));
160
+ setTaskIds((prev)=>[
161
+ ...prev,
162
+ [
163
+ newTaskId
164
+ ]
165
+ ]);
166
+ }, []);
167
+ return /*#__PURE__*/ jsx(ReactFlowProvider, {
168
+ children: /*#__PURE__*/ jsx(InteractiveCanvasInner, {
169
+ nodes: nodes,
170
+ edges: edges,
171
+ onNodesChange: onNodesChange,
172
+ onEdgesChange: onEdgesChange,
173
+ nodeTypes: nodeTypes,
174
+ edgeTypes: edgeTypes,
175
+ onTaskReorder: handleTaskReorder,
176
+ onTaskPaste: handleTaskPaste,
177
+ selectedTaskId: selectedTaskId,
178
+ targetTaskIds: taskIds,
179
+ actionLog: actionLog,
180
+ showInstructions: showInstructions
181
+ })
182
+ });
183
+ };
184
+ const InteractiveCanvasInner = ({ nodes, edges, onNodesChange, onEdgesChange, nodeTypes, edgeTypes, onTaskReorder, onTaskPaste, selectedTaskId, targetTaskIds, actionLog, showInstructions })=>{
185
+ const { dragState, handlers } = useCrossStageTaskDrag({
186
+ onTaskReorder
187
+ });
188
+ useTaskCopyPaste({
189
+ onTaskPaste
190
+ }, {
191
+ selectedTaskId,
192
+ targetStageId: 'stage-1',
193
+ targetTaskIds,
194
+ enabled: true
195
+ });
196
+ return /*#__PURE__*/ jsx(CrossStageDragProvider, {
197
+ value: {
198
+ dragState
199
+ },
200
+ children: /*#__PURE__*/ jsxs(BaseCanvas, {
201
+ nodes: nodes,
202
+ edges: edges,
203
+ onNodesChange: onNodesChange,
204
+ onEdgesChange: onEdgesChange,
205
+ nodeTypes: nodeTypes,
206
+ edgeTypes: edgeTypes,
207
+ mode: "design",
208
+ connectionMode: ConnectionMode.Strict,
209
+ defaultEdgeOptions: {
210
+ type: 'stage'
211
+ },
212
+ connectionLineComponent: StageConnectionEdge,
213
+ elevateEdgesOnSelect: true,
214
+ onNodeDragStart: handlers.onNodeDragStart,
215
+ onNodeDrag: handlers.onNodeDrag,
216
+ onNodeDragStop: handlers.onNodeDragStop,
217
+ fitView: true,
218
+ children: [
219
+ /*#__PURE__*/ jsx(Panel, {
220
+ position: "bottom-right",
221
+ children: /*#__PURE__*/ jsx(CanvasPositionControls, {
222
+ translations: DefaultCanvasTranslations
223
+ })
224
+ }),
225
+ showInstructions && /*#__PURE__*/ jsx(Panel, {
226
+ position: "bottom-left",
227
+ children: /*#__PURE__*/ jsxs("div", {
228
+ style: {
229
+ background: 'var(--uix-palette-surface-paper)',
230
+ padding: '8px 16px',
231
+ borderRadius: '4px',
232
+ boxShadow: '0 2px 4px rgba(0,0,0,0.1)',
233
+ maxWidth: '300px'
234
+ },
235
+ children: [
236
+ /*#__PURE__*/ jsx("strong", {
237
+ children: "Instructions:"
238
+ }),
239
+ /*#__PURE__*/ jsxs("ul", {
240
+ style: {
241
+ margin: '8px 0',
242
+ paddingLeft: '16px',
243
+ fontSize: '12px'
244
+ },
245
+ children: [
246
+ /*#__PURE__*/ jsx("li", {
247
+ children: "Click a task to select it"
248
+ }),
249
+ /*#__PURE__*/ jsx("li", {
250
+ children: "Drag tasks to reorder"
251
+ }),
252
+ /*#__PURE__*/ jsx("li", {
253
+ children: "Ctrl/Cmd+C to copy selected task"
254
+ }),
255
+ /*#__PURE__*/ jsx("li", {
256
+ children: "Ctrl/Cmd+V to paste task"
257
+ })
258
+ ]
259
+ })
260
+ ]
261
+ })
262
+ }),
263
+ actionLog && /*#__PURE__*/ jsx(Panel, {
264
+ position: "top-left",
265
+ children: /*#__PURE__*/ jsx("div", {
266
+ style: {
267
+ background: 'var(--uix-palette-surface-paper)',
268
+ padding: '8px 16px',
269
+ borderRadius: '4px',
270
+ boxShadow: '0 2px 4px rgba(0,0,0,0.1)'
271
+ },
272
+ children: actionLog
273
+ })
274
+ }),
275
+ dragState.isDragging && /*#__PURE__*/ jsx(Panel, {
276
+ position: "top-right",
277
+ children: /*#__PURE__*/ jsxs("div", {
278
+ style: {
279
+ background: 'var(--uix-palette-info-light)',
280
+ padding: '8px 16px',
281
+ borderRadius: '4px'
282
+ },
283
+ children: [
284
+ "Dragging ",
285
+ dragState.taskId,
286
+ dragState.dropPosition && /*#__PURE__*/ jsxs("div", {
287
+ style: {
288
+ fontSize: '12px'
289
+ },
290
+ children: [
291
+ "→ Group ",
292
+ dragState.dropPosition.groupIndex,
293
+ dragState.dropPosition.isParallel ? ' (Parallel)' : ' (Sequential)',
294
+ /*#__PURE__*/ jsx("div", {
295
+ style: {
296
+ fontSize: '10px',
297
+ marginTop: '4px'
298
+ },
299
+ children: "Drag right to make parallel"
300
+ })
301
+ ]
302
+ })
303
+ ]
304
+ })
305
+ })
306
+ ]
307
+ })
308
+ });
309
+ };
310
+ const Basic = {
311
+ render: ()=>{
312
+ const tasks = {
313
+ 'task-1': {
314
+ label: 'Process Document',
315
+ taskType: 'uipath.case-management.process',
316
+ icon: /*#__PURE__*/ jsx(TaskIcon, {
317
+ type: TaskItemTypeValues.AgenticProcess,
318
+ size: "sm"
319
+ })
320
+ },
321
+ 'task-2': {
322
+ label: 'Run Human Action',
323
+ taskType: 'uipath.case-management.run-human-action',
324
+ icon: /*#__PURE__*/ jsx(TaskIcon, {
325
+ type: TaskItemTypeValues.User,
326
+ size: "sm"
327
+ })
328
+ },
329
+ 'task-3': {
330
+ label: 'Execute RPA',
331
+ taskType: 'uipath.case-management.rpa',
332
+ icon: /*#__PURE__*/ jsx(TaskIcon, {
333
+ type: TaskItemTypeValues.Automation,
334
+ size: "sm"
335
+ })
336
+ }
337
+ };
338
+ return /*#__PURE__*/ jsx("div", {
339
+ style: {
340
+ width: '100vw',
341
+ height: '100vh'
342
+ },
343
+ children: /*#__PURE__*/ jsx(InteractiveCanvas, {
344
+ initialTaskIds: [
345
+ [
346
+ 'task-1'
347
+ ],
348
+ [
349
+ 'task-2'
350
+ ],
351
+ [
352
+ 'task-3'
353
+ ]
354
+ ],
355
+ tasks: tasks,
356
+ stageWidth: 304,
357
+ stageLabel: "Processing Stage"
358
+ })
359
+ });
360
+ }
361
+ };
362
+ const WithExecutionStatus = {
363
+ render: ()=>{
364
+ const tasks = {
365
+ 'task-1': {
366
+ label: 'Completed Task',
367
+ taskType: 'uipath.case-management.process',
368
+ icon: /*#__PURE__*/ jsx(TaskIcon, {
369
+ type: TaskItemTypeValues.AgenticProcess,
370
+ size: "sm"
371
+ }),
372
+ execution: {
373
+ status: 'Completed',
374
+ duration: '2m 30s'
375
+ }
376
+ },
377
+ 'task-2': {
378
+ label: 'In Progress Task',
379
+ taskType: 'uipath.case-management.run-human-action',
380
+ icon: /*#__PURE__*/ jsx(TaskIcon, {
381
+ type: TaskItemTypeValues.User,
382
+ size: "sm"
383
+ }),
384
+ execution: {
385
+ status: 'InProgress',
386
+ duration: '1m 15s'
387
+ }
388
+ },
389
+ 'task-3': {
390
+ label: 'Failed Task with Retries',
391
+ taskType: 'uipath.case-management.rpa',
392
+ icon: /*#__PURE__*/ jsx(TaskIcon, {
393
+ type: TaskItemTypeValues.Automation,
394
+ size: "sm"
395
+ }),
396
+ execution: {
397
+ status: 'Failed',
398
+ duration: '0m 45s',
399
+ retryDuration: '0m 30s',
400
+ message: 'Connection timeout',
401
+ badge: 'Error',
402
+ badgeStatus: 'error',
403
+ retryCount: 2
404
+ }
405
+ },
406
+ 'task-4': {
407
+ label: 'Pending Task',
408
+ taskType: 'uipath.case-management.action',
409
+ icon: /*#__PURE__*/ jsx(TaskIcon, {
410
+ type: TaskItemTypeValues.Agent,
411
+ size: "sm"
412
+ }),
413
+ execution: {
414
+ status: 'NotExecuted'
415
+ }
416
+ }
417
+ };
418
+ return /*#__PURE__*/ jsx("div", {
419
+ style: {
420
+ width: '100vw',
421
+ height: '100vh'
422
+ },
423
+ children: /*#__PURE__*/ jsx(InteractiveCanvas, {
424
+ initialTaskIds: [
425
+ [
426
+ 'task-1'
427
+ ],
428
+ [
429
+ 'task-2'
430
+ ],
431
+ [
432
+ 'task-3'
433
+ ],
434
+ [
435
+ 'task-4'
436
+ ]
437
+ ],
438
+ tasks: tasks,
439
+ stageWidth: 304,
440
+ stageLabel: "Stage with Execution"
441
+ })
442
+ });
443
+ }
444
+ };
445
+ const ParallelTasks = {
446
+ render: ()=>{
447
+ const tasks = {
448
+ 'task-1': {
449
+ label: 'Pre-check',
450
+ taskType: 'uipath.case-management.action',
451
+ icon: /*#__PURE__*/ jsx(TaskIcon, {
452
+ type: TaskItemTypeValues.AgenticProcess,
453
+ size: "sm"
454
+ })
455
+ },
456
+ 'task-2': {
457
+ label: 'Address Verification',
458
+ taskType: 'uipath.case-management.process',
459
+ icon: /*#__PURE__*/ jsx(TaskIcon, {
460
+ type: TaskItemTypeValues.User,
461
+ size: "sm"
462
+ })
463
+ },
464
+ 'task-3': {
465
+ label: 'Property Verification',
466
+ taskType: 'uipath.case-management.process',
467
+ icon: /*#__PURE__*/ jsx(TaskIcon, {
468
+ type: TaskItemTypeValues.User,
469
+ size: "sm"
470
+ })
471
+ },
472
+ 'task-4': {
473
+ label: 'Background Check',
474
+ taskType: 'uipath.case-management.process',
475
+ icon: /*#__PURE__*/ jsx(TaskIcon, {
476
+ type: TaskItemTypeValues.Automation,
477
+ size: "sm"
478
+ })
479
+ },
480
+ 'task-5': {
481
+ label: 'Final Review',
482
+ taskType: 'uipath.case-management.agent',
483
+ icon: /*#__PURE__*/ jsx(TaskIcon, {
484
+ type: TaskItemTypeValues.Agent,
485
+ size: "sm"
486
+ })
487
+ }
488
+ };
489
+ return /*#__PURE__*/ jsx("div", {
490
+ style: {
491
+ width: '100vw',
492
+ height: '100vh'
493
+ },
494
+ children: /*#__PURE__*/ jsx(InteractiveCanvas, {
495
+ initialTaskIds: [
496
+ [
497
+ 'task-1'
498
+ ],
499
+ [
500
+ 'task-2',
501
+ 'task-3',
502
+ 'task-4'
503
+ ],
504
+ [
505
+ 'task-5'
506
+ ]
507
+ ],
508
+ tasks: tasks,
509
+ stageWidth: 304,
510
+ stageLabel: "Parallel Task Demo"
511
+ })
512
+ });
513
+ }
514
+ };
515
+ export { Basic, ParallelTasks, WithExecutionStatus, TaskNode_stories as default };
@@ -0,0 +1,40 @@
1
+ import type { Node, NodeProps } from '@xyflow/react';
2
+ import type { NodeMenuItem } from '../NodeContextMenu';
3
+ import type { StageTaskExecution } from '../StageNode/StageNode.types';
4
+ export type TaskType = 'process' | 'agent' | 'external-agent' | 'rpa' | 'action' | 'api-workflow' | 'wait-for-timer' | 'wait-for-connector' | 'run-human-action' | 'execute-connector-activity';
5
+ export interface TaskNodeData extends Record<string, unknown> {
6
+ taskType: string;
7
+ label: string;
8
+ icon?: string;
9
+ iconElement?: React.ReactElement;
10
+ groupIndex: number;
11
+ taskIndex: number;
12
+ execution?: StageTaskExecution;
13
+ onTaskClick?: (taskId: string) => void;
14
+ onTaskSelect?: (taskId: string) => void;
15
+ width?: number;
16
+ contextMenuItems?: NodeMenuItem[];
17
+ onMenuOpenChange?: (isOpen: boolean) => void;
18
+ }
19
+ export type TaskNode = Node<TaskNodeData, 'task'>;
20
+ export interface TaskNodeProps extends NodeProps<TaskNode> {
21
+ dragging: boolean;
22
+ selected: boolean;
23
+ }
24
+ export interface TaskPosition {
25
+ x: number;
26
+ y: number;
27
+ width: number;
28
+ }
29
+ export interface TaskPositionConfig {
30
+ stageBorderThickness: number;
31
+ taskHeight: number;
32
+ taskGap: number;
33
+ parallelIndent: number;
34
+ contentPaddingTop: number;
35
+ contentPaddingBottom: number;
36
+ contentPaddingX: number;
37
+ headerHeight: number;
38
+ headerExecutionDescriptionHeight: number;
39
+ }
40
+ //# sourceMappingURL=TaskNode.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskNode.types.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/TaskNode/TaskNode.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAMvE,MAAM,MAAM,QAAQ,GAChB,SAAS,GACT,OAAO,GACP,gBAAgB,GAChB,KAAK,GACL,QAAQ,GACR,cAAc,GACd,gBAAgB,GAChB,oBAAoB,GACpB,kBAAkB,GAClB,4BAA4B,CAAC;AAMjC,MAAM,WAAW,YAAa,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAE3D,QAAQ,EAAE,MAAM,CAAC;IAEjB,KAAK,EAAE,MAAM,CAAC;IAEd,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,WAAW,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC;IAEjC,UAAU,EAAE,MAAM,CAAC;IAEnB,SAAS,EAAE,MAAM,CAAC;IAElB,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAE/B,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAEvC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAExC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,gBAAgB,CAAC,EAAE,YAAY,EAAE,CAAC;IAElC,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CAC9C;AAKD,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AAKlD,MAAM,WAAW,aAAc,SAAQ,SAAS,CAAC,QAAQ,CAAC;IAExD,QAAQ,EAAE,OAAO,CAAC;IAElB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAKD,MAAM,WAAW,YAAY;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;CACf;AAKD,MAAM,WAAW,kBAAkB;IAEjC,oBAAoB,EAAE,MAAM,CAAC;IAE7B,UAAU,EAAE,MAAM,CAAC;IAEnB,OAAO,EAAE,MAAM,CAAC;IAEhB,cAAc,EAAE,MAAM,CAAC;IAEvB,iBAAiB,EAAE,MAAM,CAAC;IAE1B,oBAAoB,EAAE,MAAM,CAAC;IAE7B,eAAe,EAAE,MAAM,CAAC;IAExB,YAAY,EAAE,MAAM,CAAC;IAErB,gCAAgC,EAAE,MAAM,CAAC;CAC1C"}
@@ -0,0 +1,86 @@
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
+ useIsTaskParallel: ()=>useIsTaskParallel,
28
+ useOptionalTaskNodeContext: ()=>useOptionalTaskNodeContext,
29
+ useTaskNodeContext: ()=>useTaskNodeContext,
30
+ TaskNodeProvider: ()=>TaskNodeProvider,
31
+ useTaskGroupInfo: ()=>useTaskGroupInfo
32
+ });
33
+ const jsx_runtime_namespaceObject = require("react/jsx-runtime");
34
+ const external_react_namespaceObject = require("react");
35
+ const TaskNodeContext = /*#__PURE__*/ (0, external_react_namespaceObject.createContext)(null);
36
+ function TaskNodeProvider({ children, value }) {
37
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(TaskNodeContext.Provider, {
38
+ value: value,
39
+ children: children
40
+ });
41
+ }
42
+ function useTaskNodeContext() {
43
+ const context = (0, external_react_namespaceObject.useContext)(TaskNodeContext);
44
+ if (!context) throw new Error('useTaskNodeContext must be used within a TaskNodeProvider');
45
+ return context;
46
+ }
47
+ function useIsTaskParallel(taskId) {
48
+ const context = (0, external_react_namespaceObject.useContext)(TaskNodeContext);
49
+ if (!context) return false;
50
+ for (const group of context.taskIds)if (group.includes(taskId)) return group.length > 1;
51
+ return false;
52
+ }
53
+ function useTaskGroupInfo(taskId) {
54
+ const context = (0, external_react_namespaceObject.useContext)(TaskNodeContext);
55
+ if (!context) return null;
56
+ for(let groupIndex = 0; groupIndex < context.taskIds.length; groupIndex++){
57
+ const group = context.taskIds[groupIndex];
58
+ if (!group) continue;
59
+ const taskIndex = group.indexOf(taskId);
60
+ if (-1 !== taskIndex) return {
61
+ groupIndex,
62
+ taskIndex,
63
+ isParallel: group.length > 1,
64
+ groupSize: group.length
65
+ };
66
+ }
67
+ return null;
68
+ }
69
+ function useOptionalTaskNodeContext() {
70
+ return (0, external_react_namespaceObject.useContext)(TaskNodeContext);
71
+ }
72
+ exports.TaskNodeProvider = __webpack_exports__.TaskNodeProvider;
73
+ exports.useIsTaskParallel = __webpack_exports__.useIsTaskParallel;
74
+ exports.useOptionalTaskNodeContext = __webpack_exports__.useOptionalTaskNodeContext;
75
+ exports.useTaskGroupInfo = __webpack_exports__.useTaskGroupInfo;
76
+ exports.useTaskNodeContext = __webpack_exports__.useTaskNodeContext;
77
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
78
+ "TaskNodeProvider",
79
+ "useIsTaskParallel",
80
+ "useOptionalTaskNodeContext",
81
+ "useTaskGroupInfo",
82
+ "useTaskNodeContext"
83
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
84
+ Object.defineProperty(exports, '__esModule', {
85
+ value: true
86
+ });
@@ -0,0 +1,24 @@
1
+ import { type ReactNode } from 'react';
2
+ export interface TaskNodeContextValue {
3
+ stageId: string;
4
+ stageNodeType: string;
5
+ taskIds: string[][];
6
+ isReadOnly?: boolean;
7
+ onTaskClick?: (taskId: string) => void;
8
+ onTaskSelect?: (taskId: string) => void;
9
+ }
10
+ export interface TaskNodeProviderProps {
11
+ children: ReactNode;
12
+ value: TaskNodeContextValue;
13
+ }
14
+ export declare function TaskNodeProvider({ children, value }: TaskNodeProviderProps): import("react/jsx-runtime").JSX.Element;
15
+ export declare function useTaskNodeContext(): TaskNodeContextValue;
16
+ export declare function useIsTaskParallel(taskId: string): boolean;
17
+ export declare function useTaskGroupInfo(taskId: string): {
18
+ groupIndex: number;
19
+ taskIndex: number;
20
+ isParallel: boolean;
21
+ groupSize: number;
22
+ } | null;
23
+ export declare function useOptionalTaskNodeContext(): TaskNodeContextValue | null;
24
+ //# sourceMappingURL=TaskNodeContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskNodeContext.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/TaskNode/TaskNodeContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAKlE,MAAM,WAAW,oBAAoB;IAEnC,OAAO,EAAE,MAAM,CAAC;IAEhB,aAAa,EAAE,MAAM,CAAC;IAEtB,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC;IAEpB,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAEvC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAOD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,EAAE,oBAAoB,CAAC;CAC7B;AAED,wBAAgB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,qBAAqB,2CAM1E;AAMD,wBAAgB,kBAAkB,IAAI,oBAAoB,CAMzD;AAOD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAUzD;AAOD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,IAAI,CAkBP;AAKD,wBAAgB,0BAA0B,IAAI,oBAAoB,GAAG,IAAI,CAExE"}