@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,153 @@
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
+ DEFAULT_TASK_POSITION_CONFIG: ()=>DEFAULT_TASK_POSITION_CONFIG,
28
+ calculateStageContentHeight: ()=>calculateStageContentHeight,
29
+ calculateTaskPositions: ()=>calculateTaskPositions,
30
+ useTaskPositions: ()=>useTaskPositions
31
+ });
32
+ const external_react_namespaceObject = require("react");
33
+ function calculateExecutionExtraHeight(execution) {
34
+ if (!execution.duration && !execution.retryDuration && !execution.badge) return 2;
35
+ if (execution.retryDuration || execution.badge) return 26;
36
+ return 18;
37
+ }
38
+ const DEFAULT_TASK_POSITION_CONFIG = {
39
+ stageBorderThickness: 2,
40
+ taskHeight: 36,
41
+ taskGap: 12,
42
+ parallelIndent: 30,
43
+ contentPaddingTop: 16,
44
+ contentPaddingBottom: 16,
45
+ contentPaddingX: 14,
46
+ headerHeight: 56,
47
+ headerExecutionDescriptionHeight: 16
48
+ };
49
+ function calculateTaskPositions(taskIds, stageWidth, taskData, stageExecution) {
50
+ const positions = new Map();
51
+ const taskRecord = {};
52
+ if (taskData) if (Array.isArray(taskData)) taskData.forEach((node)=>{
53
+ taskRecord[node.id] = {
54
+ execution: node.data?.execution
55
+ };
56
+ });
57
+ else Object.assign(taskRecord, taskData);
58
+ const taskWidth = stageWidth - 2 * DEFAULT_TASK_POSITION_CONFIG.contentPaddingX;
59
+ const parallelTaskWidth = taskWidth - DEFAULT_TASK_POSITION_CONFIG.parallelIndent;
60
+ const headerHeight = stageExecution?.duration ? DEFAULT_TASK_POSITION_CONFIG.headerHeight + DEFAULT_TASK_POSITION_CONFIG.headerExecutionDescriptionHeight : DEFAULT_TASK_POSITION_CONFIG.headerHeight;
61
+ let currentY = headerHeight + DEFAULT_TASK_POSITION_CONFIG.contentPaddingTop + DEFAULT_TASK_POSITION_CONFIG.stageBorderThickness;
62
+ for (const group of taskIds){
63
+ const isParallel = group.length > 1;
64
+ for(let taskIndex = 0; taskIndex < group.length; taskIndex++){
65
+ const taskId = group[taskIndex];
66
+ if (!taskId) continue;
67
+ const execution = taskRecord[taskId]?.execution;
68
+ const taskHeight = execution ? DEFAULT_TASK_POSITION_CONFIG.taskHeight + calculateExecutionExtraHeight(execution) : DEFAULT_TASK_POSITION_CONFIG.taskHeight;
69
+ positions.set(taskId, {
70
+ x: isParallel ? DEFAULT_TASK_POSITION_CONFIG.contentPaddingX + DEFAULT_TASK_POSITION_CONFIG.parallelIndent : DEFAULT_TASK_POSITION_CONFIG.contentPaddingX,
71
+ y: currentY,
72
+ width: isParallel ? parallelTaskWidth : taskWidth
73
+ });
74
+ currentY += taskHeight;
75
+ if (taskIndex < group.length - 1) currentY += DEFAULT_TASK_POSITION_CONFIG.taskGap;
76
+ }
77
+ currentY += DEFAULT_TASK_POSITION_CONFIG.taskGap;
78
+ }
79
+ return positions;
80
+ }
81
+ function calculateStageContentHeight(taskIds, taskData) {
82
+ const taskRecord = {};
83
+ if (taskData) if (Array.isArray(taskData)) taskData.forEach((node)=>{
84
+ taskRecord[node.id] = {
85
+ execution: node.data?.execution
86
+ };
87
+ });
88
+ else Object.assign(taskRecord, taskData);
89
+ let height = DEFAULT_TASK_POSITION_CONFIG.contentPaddingTop;
90
+ for (const group of taskIds)for (const taskId of group){
91
+ const execution = taskRecord[taskId]?.execution;
92
+ const taskHeight = execution ? DEFAULT_TASK_POSITION_CONFIG.taskHeight + calculateExecutionExtraHeight(execution) : DEFAULT_TASK_POSITION_CONFIG.taskHeight;
93
+ height += taskHeight + DEFAULT_TASK_POSITION_CONFIG.taskGap;
94
+ }
95
+ if (taskIds.length > 0) {
96
+ height -= DEFAULT_TASK_POSITION_CONFIG.taskGap;
97
+ height += DEFAULT_TASK_POSITION_CONFIG.contentPaddingBottom;
98
+ }
99
+ return height;
100
+ }
101
+ function useTaskPositions(taskIds, stageWidth, stageExecution) {
102
+ const positions = (0, external_react_namespaceObject.useMemo)(()=>calculateTaskPositions(taskIds, stageWidth, void 0, stageExecution), [
103
+ taskIds,
104
+ stageWidth,
105
+ stageExecution
106
+ ]);
107
+ const contentHeight = (0, external_react_namespaceObject.useMemo)(()=>calculateStageContentHeight(taskIds, void 0), [
108
+ taskIds
109
+ ]);
110
+ const getPosition = (0, external_react_namespaceObject.useCallback)((taskId)=>positions.get(taskId), [
111
+ positions
112
+ ]);
113
+ const isParallel = (0, external_react_namespaceObject.useCallback)((taskId)=>{
114
+ for (const group of taskIds)if (group.includes(taskId)) return group.length > 1;
115
+ return false;
116
+ }, [
117
+ taskIds
118
+ ]);
119
+ const getGroupInfo = (0, external_react_namespaceObject.useCallback)((taskId)=>{
120
+ for(let groupIndex = 0; groupIndex < taskIds.length; groupIndex++){
121
+ const group = taskIds[groupIndex];
122
+ if (!group) continue;
123
+ const taskIndex = group.indexOf(taskId);
124
+ if (-1 !== taskIndex) return {
125
+ groupIndex,
126
+ taskIndex
127
+ };
128
+ }
129
+ return null;
130
+ }, [
131
+ taskIds
132
+ ]);
133
+ return {
134
+ positions,
135
+ contentHeight,
136
+ getPosition,
137
+ isParallel,
138
+ getGroupInfo
139
+ };
140
+ }
141
+ exports.DEFAULT_TASK_POSITION_CONFIG = __webpack_exports__.DEFAULT_TASK_POSITION_CONFIG;
142
+ exports.calculateStageContentHeight = __webpack_exports__.calculateStageContentHeight;
143
+ exports.calculateTaskPositions = __webpack_exports__.calculateTaskPositions;
144
+ exports.useTaskPositions = __webpack_exports__.useTaskPositions;
145
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
146
+ "DEFAULT_TASK_POSITION_CONFIG",
147
+ "calculateStageContentHeight",
148
+ "calculateTaskPositions",
149
+ "useTaskPositions"
150
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
151
+ Object.defineProperty(exports, '__esModule', {
152
+ value: true
153
+ });
@@ -0,0 +1,29 @@
1
+ import type { TaskPosition, TaskPositionConfig } from './TaskNode.types';
2
+ export declare const DEFAULT_TASK_POSITION_CONFIG: TaskPositionConfig;
3
+ export declare function calculateTaskPositions(taskIds: string[][], stageWidth: number, taskData?: Record<string, {
4
+ execution?: Record<string, unknown>;
5
+ }> | Array<{
6
+ id: string;
7
+ data?: {
8
+ execution?: Record<string, unknown>;
9
+ };
10
+ }>, stageExecution?: Record<string, unknown>): Map<string, TaskPosition>;
11
+ export declare function calculateStageContentHeight(taskIds: string[][], taskData?: Record<string, {
12
+ execution?: Record<string, unknown>;
13
+ }> | Array<{
14
+ id: string;
15
+ data?: {
16
+ execution?: Record<string, unknown>;
17
+ };
18
+ }>): number;
19
+ export declare function useTaskPositions(taskIds: string[][], stageWidth: number, stageExecution?: Record<string, unknown>): {
20
+ positions: Map<string, TaskPosition>;
21
+ contentHeight: number;
22
+ getPosition: (taskId: string) => TaskPosition | undefined;
23
+ isParallel: (taskId: string) => boolean;
24
+ getGroupInfo: (taskId: string) => {
25
+ groupIndex: number;
26
+ taskIndex: number;
27
+ } | null;
28
+ };
29
+ //# sourceMappingURL=useTaskPositions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTaskPositions.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/TaskNode/useTaskPositions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAsBzE,eAAO,MAAM,4BAA4B,EAAE,kBAU1C,CAAC;AAaF,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EAAE,EAAE,EACnB,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EACL,MAAM,CAAC,MAAM,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,GACvD,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAA;CAAE,CAAC,EACzE,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CA+D3B;AAWD,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,MAAM,EAAE,EAAE,EACnB,QAAQ,CAAC,EACL,MAAM,CAAC,MAAM,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,GACvD,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAA;CAAE,CAAC,GACxE,MAAM,CAiCR;AAUD,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EAAE,EAAE,EACnB,UAAU,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;0BAU7B,MAAM,KAAG,YAAY,GAAG,SAAS;yBAKjC,MAAM,KAAG,OAAO;2BAYhB,MAAM,KAAG;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;EAqBrE"}
@@ -0,0 +1,110 @@
1
+ import { useCallback, useMemo } from "react";
2
+ function calculateExecutionExtraHeight(execution) {
3
+ if (!execution.duration && !execution.retryDuration && !execution.badge) return 2;
4
+ if (execution.retryDuration || execution.badge) return 26;
5
+ return 18;
6
+ }
7
+ const DEFAULT_TASK_POSITION_CONFIG = {
8
+ stageBorderThickness: 2,
9
+ taskHeight: 36,
10
+ taskGap: 12,
11
+ parallelIndent: 30,
12
+ contentPaddingTop: 16,
13
+ contentPaddingBottom: 16,
14
+ contentPaddingX: 14,
15
+ headerHeight: 56,
16
+ headerExecutionDescriptionHeight: 16
17
+ };
18
+ function calculateTaskPositions(taskIds, stageWidth, taskData, stageExecution) {
19
+ const positions = new Map();
20
+ const taskRecord = {};
21
+ if (taskData) if (Array.isArray(taskData)) taskData.forEach((node)=>{
22
+ taskRecord[node.id] = {
23
+ execution: node.data?.execution
24
+ };
25
+ });
26
+ else Object.assign(taskRecord, taskData);
27
+ const taskWidth = stageWidth - 2 * DEFAULT_TASK_POSITION_CONFIG.contentPaddingX;
28
+ const parallelTaskWidth = taskWidth - DEFAULT_TASK_POSITION_CONFIG.parallelIndent;
29
+ const headerHeight = stageExecution?.duration ? DEFAULT_TASK_POSITION_CONFIG.headerHeight + DEFAULT_TASK_POSITION_CONFIG.headerExecutionDescriptionHeight : DEFAULT_TASK_POSITION_CONFIG.headerHeight;
30
+ let currentY = headerHeight + DEFAULT_TASK_POSITION_CONFIG.contentPaddingTop + DEFAULT_TASK_POSITION_CONFIG.stageBorderThickness;
31
+ for (const group of taskIds){
32
+ const isParallel = group.length > 1;
33
+ for(let taskIndex = 0; taskIndex < group.length; taskIndex++){
34
+ const taskId = group[taskIndex];
35
+ if (!taskId) continue;
36
+ const execution = taskRecord[taskId]?.execution;
37
+ const taskHeight = execution ? DEFAULT_TASK_POSITION_CONFIG.taskHeight + calculateExecutionExtraHeight(execution) : DEFAULT_TASK_POSITION_CONFIG.taskHeight;
38
+ positions.set(taskId, {
39
+ x: isParallel ? DEFAULT_TASK_POSITION_CONFIG.contentPaddingX + DEFAULT_TASK_POSITION_CONFIG.parallelIndent : DEFAULT_TASK_POSITION_CONFIG.contentPaddingX,
40
+ y: currentY,
41
+ width: isParallel ? parallelTaskWidth : taskWidth
42
+ });
43
+ currentY += taskHeight;
44
+ if (taskIndex < group.length - 1) currentY += DEFAULT_TASK_POSITION_CONFIG.taskGap;
45
+ }
46
+ currentY += DEFAULT_TASK_POSITION_CONFIG.taskGap;
47
+ }
48
+ return positions;
49
+ }
50
+ function calculateStageContentHeight(taskIds, taskData) {
51
+ const taskRecord = {};
52
+ if (taskData) if (Array.isArray(taskData)) taskData.forEach((node)=>{
53
+ taskRecord[node.id] = {
54
+ execution: node.data?.execution
55
+ };
56
+ });
57
+ else Object.assign(taskRecord, taskData);
58
+ let height = DEFAULT_TASK_POSITION_CONFIG.contentPaddingTop;
59
+ for (const group of taskIds)for (const taskId of group){
60
+ const execution = taskRecord[taskId]?.execution;
61
+ const taskHeight = execution ? DEFAULT_TASK_POSITION_CONFIG.taskHeight + calculateExecutionExtraHeight(execution) : DEFAULT_TASK_POSITION_CONFIG.taskHeight;
62
+ height += taskHeight + DEFAULT_TASK_POSITION_CONFIG.taskGap;
63
+ }
64
+ if (taskIds.length > 0) {
65
+ height -= DEFAULT_TASK_POSITION_CONFIG.taskGap;
66
+ height += DEFAULT_TASK_POSITION_CONFIG.contentPaddingBottom;
67
+ }
68
+ return height;
69
+ }
70
+ function useTaskPositions(taskIds, stageWidth, stageExecution) {
71
+ const positions = useMemo(()=>calculateTaskPositions(taskIds, stageWidth, void 0, stageExecution), [
72
+ taskIds,
73
+ stageWidth,
74
+ stageExecution
75
+ ]);
76
+ const contentHeight = useMemo(()=>calculateStageContentHeight(taskIds, void 0), [
77
+ taskIds
78
+ ]);
79
+ const getPosition = useCallback((taskId)=>positions.get(taskId), [
80
+ positions
81
+ ]);
82
+ const isParallel = useCallback((taskId)=>{
83
+ for (const group of taskIds)if (group.includes(taskId)) return group.length > 1;
84
+ return false;
85
+ }, [
86
+ taskIds
87
+ ]);
88
+ const getGroupInfo = useCallback((taskId)=>{
89
+ for(let groupIndex = 0; groupIndex < taskIds.length; groupIndex++){
90
+ const group = taskIds[groupIndex];
91
+ if (!group) continue;
92
+ const taskIndex = group.indexOf(taskId);
93
+ if (-1 !== taskIndex) return {
94
+ groupIndex,
95
+ taskIndex
96
+ };
97
+ }
98
+ return null;
99
+ }, [
100
+ taskIds
101
+ ]);
102
+ return {
103
+ positions,
104
+ contentHeight,
105
+ getPosition,
106
+ isParallel,
107
+ getGroupInfo
108
+ };
109
+ }
110
+ export { DEFAULT_TASK_POSITION_CONFIG, calculateStageContentHeight, calculateTaskPositions, useTaskPositions };
@@ -0,0 +1,132 @@
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
+ TaskTypeRegistry: ()=>TaskTypeRegistry
28
+ });
29
+ class TaskTypeRegistry {
30
+ taskByType = new Map();
31
+ tasksByCategory = new Map();
32
+ registerTaskManifests(tasks) {
33
+ this.taskByType.clear();
34
+ this.tasksByCategory.clear();
35
+ for (const task of tasks){
36
+ this.taskByType.set(task.taskType, task);
37
+ const categoryKey = task.category;
38
+ const categoryTasks = this.tasksByCategory.get(categoryKey) ?? [];
39
+ categoryTasks.push(task);
40
+ this.tasksByCategory.set(categoryKey, categoryTasks);
41
+ }
42
+ for (const [key, categoryTasks] of this.tasksByCategory.entries()){
43
+ categoryTasks.sort((a, b)=>a.sortOrder - b.sortOrder);
44
+ this.tasksByCategory.set(key, categoryTasks);
45
+ }
46
+ }
47
+ getManifest(taskType) {
48
+ return this.taskByType.get(taskType);
49
+ }
50
+ getAllManifests() {
51
+ return Array.from(this.taskByType.values());
52
+ }
53
+ getAllTaskTypes() {
54
+ return Array.from(this.taskByType.keys());
55
+ }
56
+ isTaskAllowedInStage(taskType, stageNodeType) {
57
+ const manifest = this.getManifest(taskType);
58
+ if (!manifest) return false;
59
+ if (!manifest.allowedStageTypes || 0 === manifest.allowedStageTypes.length) return true;
60
+ return manifest.allowedStageTypes.includes(stageNodeType);
61
+ }
62
+ getTaskOptionsForStage(stageNodeType, iconResolver) {
63
+ const options = [];
64
+ for (const manifest of this.taskByType.values())if (this.isTaskAllowedInStage(manifest.taskType, stageNodeType)) options.push({
65
+ id: manifest.taskType,
66
+ name: manifest.display.label,
67
+ description: manifest.display.description,
68
+ icon: iconResolver ? {
69
+ Component: ()=>iconResolver(manifest.display.icon) ?? null
70
+ } : void 0,
71
+ section: manifest.category,
72
+ data: {
73
+ taskType: manifest.taskType,
74
+ defaultProperties: manifest.defaultProperties
75
+ }
76
+ });
77
+ return options.sort((a, b)=>{
78
+ const catA = a.section ?? '';
79
+ const catB = b.section ?? '';
80
+ if (catA !== catB) return catA.localeCompare(catB);
81
+ const manifestA = this.taskByType.get(a.id);
82
+ const manifestB = this.taskByType.get(b.id);
83
+ return (manifestA?.sortOrder ?? 0) - (manifestB?.sortOrder ?? 0);
84
+ });
85
+ }
86
+ getTasksByCategory(stageNodeType) {
87
+ if (!stageNodeType) return this.tasksByCategory;
88
+ const filtered = new Map();
89
+ for (const [category, tasks] of this.tasksByCategory.entries()){
90
+ const allowedTasks = tasks.filter((t)=>this.isTaskAllowedInStage(t.taskType, stageNodeType));
91
+ if (allowedTasks.length > 0) filtered.set(category, allowedTasks);
92
+ }
93
+ return filtered;
94
+ }
95
+ searchTasks(query, stageNodeType) {
96
+ const lowerQuery = query.toLowerCase();
97
+ const results = [];
98
+ for (const manifest of this.taskByType.values())if (!stageNodeType || this.isTaskAllowedInStage(manifest.taskType, stageNodeType)) {
99
+ if (manifest.display.label.toLowerCase().includes(lowerQuery)) {
100
+ results.push(manifest);
101
+ continue;
102
+ }
103
+ if (manifest.display.description?.toLowerCase().includes(lowerQuery)) {
104
+ results.push(manifest);
105
+ continue;
106
+ }
107
+ if (manifest.tags.some((tag)=>tag.toLowerCase().includes(lowerQuery))) results.push(manifest);
108
+ }
109
+ return results.sort((a, b)=>a.sortOrder - b.sortOrder);
110
+ }
111
+ createDefaultTaskData(taskType) {
112
+ const manifest = this.getManifest(taskType);
113
+ if (!manifest) return;
114
+ return {
115
+ taskType: manifest.taskType,
116
+ label: manifest.display.label,
117
+ icon: manifest.display.icon,
118
+ ...manifest.defaultProperties ?? {}
119
+ };
120
+ }
121
+ clear() {
122
+ this.taskByType.clear();
123
+ this.tasksByCategory.clear();
124
+ }
125
+ }
126
+ exports.TaskTypeRegistry = __webpack_exports__.TaskTypeRegistry;
127
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
128
+ "TaskTypeRegistry"
129
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
130
+ Object.defineProperty(exports, '__esModule', {
131
+ value: true
132
+ });
@@ -0,0 +1,18 @@
1
+ import type { ListItem } from '../components';
2
+ import type { TaskManifest } from '../schema/task-definition';
3
+ export type TaskIconResolver = (iconId: string) => React.ReactElement | undefined;
4
+ export declare class TaskTypeRegistry {
5
+ private taskByType;
6
+ private tasksByCategory;
7
+ registerTaskManifests(tasks: TaskManifest[]): void;
8
+ getManifest(taskType: string): TaskManifest | undefined;
9
+ getAllManifests(): TaskManifest[];
10
+ getAllTaskTypes(): string[];
11
+ isTaskAllowedInStage(taskType: string, stageNodeType: string): boolean;
12
+ getTaskOptionsForStage(stageNodeType: string, iconResolver?: TaskIconResolver): ListItem[];
13
+ getTasksByCategory(stageNodeType?: string): Map<string | undefined, TaskManifest[]>;
14
+ searchTasks(query: string, stageNodeType?: string): TaskManifest[];
15
+ createDefaultTaskData(taskType: string): Record<string, unknown> | undefined;
16
+ clear(): void;
17
+ }
18
+ //# sourceMappingURL=TaskTypeRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TaskTypeRegistry.d.ts","sourceRoot":"","sources":["../../../src/canvas/core/TaskTypeRegistry.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAK9D,MAAM,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,KAAK,CAAC,YAAY,GAAG,SAAS,CAAC;AAMlF,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,UAAU,CAAmC;IACrD,OAAO,CAAC,eAAe,CAAiD;IAOxE,qBAAqB,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,IAAI;IA6BlD,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IASvD,eAAe,IAAI,YAAY,EAAE;IASjC,eAAe,IAAI,MAAM,EAAE;IAW3B,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO;IAmBtE,sBAAsB,CACpB,aAAa,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,gBAAgB,GAC9B,QAAQ,EAAE;IAyCb,kBAAkB,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,SAAS,EAAE,YAAY,EAAE,CAAC;IAyBnF,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE;IAqClE,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;IAe5E,KAAK,IAAI,IAAI;CAId"}
@@ -0,0 +1,98 @@
1
+ class TaskTypeRegistry {
2
+ taskByType = new Map();
3
+ tasksByCategory = new Map();
4
+ registerTaskManifests(tasks) {
5
+ this.taskByType.clear();
6
+ this.tasksByCategory.clear();
7
+ for (const task of tasks){
8
+ this.taskByType.set(task.taskType, task);
9
+ const categoryKey = task.category;
10
+ const categoryTasks = this.tasksByCategory.get(categoryKey) ?? [];
11
+ categoryTasks.push(task);
12
+ this.tasksByCategory.set(categoryKey, categoryTasks);
13
+ }
14
+ for (const [key, categoryTasks] of this.tasksByCategory.entries()){
15
+ categoryTasks.sort((a, b)=>a.sortOrder - b.sortOrder);
16
+ this.tasksByCategory.set(key, categoryTasks);
17
+ }
18
+ }
19
+ getManifest(taskType) {
20
+ return this.taskByType.get(taskType);
21
+ }
22
+ getAllManifests() {
23
+ return Array.from(this.taskByType.values());
24
+ }
25
+ getAllTaskTypes() {
26
+ return Array.from(this.taskByType.keys());
27
+ }
28
+ isTaskAllowedInStage(taskType, stageNodeType) {
29
+ const manifest = this.getManifest(taskType);
30
+ if (!manifest) return false;
31
+ if (!manifest.allowedStageTypes || 0 === manifest.allowedStageTypes.length) return true;
32
+ return manifest.allowedStageTypes.includes(stageNodeType);
33
+ }
34
+ getTaskOptionsForStage(stageNodeType, iconResolver) {
35
+ const options = [];
36
+ for (const manifest of this.taskByType.values())if (this.isTaskAllowedInStage(manifest.taskType, stageNodeType)) options.push({
37
+ id: manifest.taskType,
38
+ name: manifest.display.label,
39
+ description: manifest.display.description,
40
+ icon: iconResolver ? {
41
+ Component: ()=>iconResolver(manifest.display.icon) ?? null
42
+ } : void 0,
43
+ section: manifest.category,
44
+ data: {
45
+ taskType: manifest.taskType,
46
+ defaultProperties: manifest.defaultProperties
47
+ }
48
+ });
49
+ return options.sort((a, b)=>{
50
+ const catA = a.section ?? '';
51
+ const catB = b.section ?? '';
52
+ if (catA !== catB) return catA.localeCompare(catB);
53
+ const manifestA = this.taskByType.get(a.id);
54
+ const manifestB = this.taskByType.get(b.id);
55
+ return (manifestA?.sortOrder ?? 0) - (manifestB?.sortOrder ?? 0);
56
+ });
57
+ }
58
+ getTasksByCategory(stageNodeType) {
59
+ if (!stageNodeType) return this.tasksByCategory;
60
+ const filtered = new Map();
61
+ for (const [category, tasks] of this.tasksByCategory.entries()){
62
+ const allowedTasks = tasks.filter((t)=>this.isTaskAllowedInStage(t.taskType, stageNodeType));
63
+ if (allowedTasks.length > 0) filtered.set(category, allowedTasks);
64
+ }
65
+ return filtered;
66
+ }
67
+ searchTasks(query, stageNodeType) {
68
+ const lowerQuery = query.toLowerCase();
69
+ const results = [];
70
+ for (const manifest of this.taskByType.values())if (!stageNodeType || this.isTaskAllowedInStage(manifest.taskType, stageNodeType)) {
71
+ if (manifest.display.label.toLowerCase().includes(lowerQuery)) {
72
+ results.push(manifest);
73
+ continue;
74
+ }
75
+ if (manifest.display.description?.toLowerCase().includes(lowerQuery)) {
76
+ results.push(manifest);
77
+ continue;
78
+ }
79
+ if (manifest.tags.some((tag)=>tag.toLowerCase().includes(lowerQuery))) results.push(manifest);
80
+ }
81
+ return results.sort((a, b)=>a.sortOrder - b.sortOrder);
82
+ }
83
+ createDefaultTaskData(taskType) {
84
+ const manifest = this.getManifest(taskType);
85
+ if (!manifest) return;
86
+ return {
87
+ taskType: manifest.taskType,
88
+ label: manifest.display.label,
89
+ icon: manifest.display.icon,
90
+ ...manifest.defaultProperties ?? {}
91
+ };
92
+ }
93
+ clear() {
94
+ this.taskByType.clear();
95
+ this.tasksByCategory.clear();
96
+ }
97
+ }
98
+ export { TaskTypeRegistry };
@@ -12,8 +12,14 @@ var __webpack_modules__ = {
12
12
  "./NodeTypeRegistry": function(module) {
13
13
  module.exports = require("./NodeTypeRegistry.cjs");
14
14
  },
15
+ "./TaskTypeRegistry": function(module) {
16
+ module.exports = require("./TaskTypeRegistry.cjs");
17
+ },
15
18
  "./useNodeTypeRegistry": function(module) {
16
19
  module.exports = require("./useNodeTypeRegistry.cjs");
20
+ },
21
+ "./useTaskTypeRegistry": function(module) {
22
+ module.exports = require("./useTaskTypeRegistry.cjs");
17
23
  }
18
24
  };
19
25
  var __webpack_module_cache__ = {};
@@ -83,10 +89,22 @@ var __webpack_exports__ = {};
83
89
  return _NodeTypeRegistry__WEBPACK_IMPORTED_MODULE_3__[key];
84
90
  }).bind(0, __WEBPACK_IMPORT_KEY__);
85
91
  __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
86
- var _useNodeTypeRegistry__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("./useNodeTypeRegistry");
92
+ var _TaskTypeRegistry__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__("./TaskTypeRegistry");
93
+ var __WEBPACK_REEXPORT_OBJECT__ = {};
94
+ for(var __WEBPACK_IMPORT_KEY__ in _TaskTypeRegistry__WEBPACK_IMPORTED_MODULE_4__)if ("default" !== __WEBPACK_IMPORT_KEY__) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
95
+ return _TaskTypeRegistry__WEBPACK_IMPORTED_MODULE_4__[key];
96
+ }).bind(0, __WEBPACK_IMPORT_KEY__);
97
+ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
98
+ var _useNodeTypeRegistry__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__("./useNodeTypeRegistry");
99
+ var __WEBPACK_REEXPORT_OBJECT__ = {};
100
+ for(var __WEBPACK_IMPORT_KEY__ in _useNodeTypeRegistry__WEBPACK_IMPORTED_MODULE_5__)if ("default" !== __WEBPACK_IMPORT_KEY__) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
101
+ return _useNodeTypeRegistry__WEBPACK_IMPORTED_MODULE_5__[key];
102
+ }).bind(0, __WEBPACK_IMPORT_KEY__);
103
+ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
104
+ var _useTaskTypeRegistry__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__("./useTaskTypeRegistry");
87
105
  var __WEBPACK_REEXPORT_OBJECT__ = {};
88
- for(var __WEBPACK_IMPORT_KEY__ in _useNodeTypeRegistry__WEBPACK_IMPORTED_MODULE_4__)if ("default" !== __WEBPACK_IMPORT_KEY__) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
89
- return _useNodeTypeRegistry__WEBPACK_IMPORTED_MODULE_4__[key];
106
+ for(var __WEBPACK_IMPORT_KEY__ in _useTaskTypeRegistry__WEBPACK_IMPORTED_MODULE_6__)if ("default" !== __WEBPACK_IMPORT_KEY__) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
107
+ return _useTaskTypeRegistry__WEBPACK_IMPORTED_MODULE_6__[key];
90
108
  }).bind(0, __WEBPACK_IMPORT_KEY__);
91
109
  __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
92
110
  })();
@@ -2,5 +2,7 @@ export * from './CategoryTree';
2
2
  export * from './CategoryTreeAdapter';
3
3
  export * from './NodeRegistryProvider';
4
4
  export * from './NodeTypeRegistry';
5
+ export * from './TaskTypeRegistry';
5
6
  export * from './useNodeTypeRegistry';
7
+ export * from './useTaskTypeRegistry';
6
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/canvas/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/canvas/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC"}
@@ -2,4 +2,6 @@ export * from "./CategoryTree.js";
2
2
  export * from "./CategoryTreeAdapter.js";
3
3
  export * from "./NodeRegistryProvider.js";
4
4
  export * from "./NodeTypeRegistry.js";
5
+ export * from "./TaskTypeRegistry.js";
5
6
  export * from "./useNodeTypeRegistry.js";
7
+ export * from "./useTaskTypeRegistry.js";