@uipath/apollo-react 4.24.4 → 4.25.0

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 (109) hide show
  1. package/dist/canvas/components/BaseCanvas/BaseCanvas.cjs +2 -1
  2. package/dist/canvas/components/BaseCanvas/BaseCanvas.d.ts.map +1 -1
  3. package/dist/canvas/components/BaseCanvas/BaseCanvas.js +2 -1
  4. package/dist/canvas/components/BaseCanvas/BaseCanvas.types.d.ts +2 -0
  5. package/dist/canvas/components/BaseCanvas/BaseCanvas.types.d.ts.map +1 -1
  6. package/dist/canvas/components/BaseCanvas/CanvasProviders.cjs +19 -14
  7. package/dist/canvas/components/BaseCanvas/CanvasProviders.d.ts +2 -1
  8. package/dist/canvas/components/BaseCanvas/CanvasProviders.d.ts.map +1 -1
  9. package/dist/canvas/components/BaseCanvas/CanvasProviders.js +19 -14
  10. package/dist/canvas/components/BaseNode/BaseNodeContainer.cjs +5 -1
  11. package/dist/canvas/components/BaseNode/BaseNodeContainer.d.ts.map +1 -1
  12. package/dist/canvas/components/BaseNode/BaseNodeContainer.js +5 -1
  13. package/dist/canvas/components/ButtonHandle/ButtonHandle.cjs +1 -1
  14. package/dist/canvas/components/ButtonHandle/ButtonHandle.js +1 -1
  15. package/dist/canvas/components/CanvasTooltip.cjs +2 -3
  16. package/dist/canvas/components/CanvasTooltip.d.ts +2 -2
  17. package/dist/canvas/components/CanvasTooltip.d.ts.map +1 -1
  18. package/dist/canvas/components/CanvasTooltip.js +2 -3
  19. package/dist/canvas/components/ExecutionStatusIcon/ExecutionStatusIcon.cjs +1 -0
  20. package/dist/canvas/components/ExecutionStatusIcon/ExecutionStatusIcon.d.ts +1 -1
  21. package/dist/canvas/components/ExecutionStatusIcon/ExecutionStatusIcon.d.ts.map +1 -1
  22. package/dist/canvas/components/ExecutionStatusIcon/ExecutionStatusIcon.js +1 -0
  23. package/dist/canvas/components/LoopNode/IterationNavigator.cjs +143 -0
  24. package/dist/canvas/components/LoopNode/IterationNavigator.d.ts +7 -0
  25. package/dist/canvas/components/LoopNode/IterationNavigator.d.ts.map +1 -0
  26. package/dist/canvas/components/LoopNode/IterationNavigator.js +109 -0
  27. package/dist/canvas/components/LoopNode/LoopNode.cjs +45 -18
  28. package/dist/canvas/components/LoopNode/LoopNode.d.ts.map +1 -1
  29. package/dist/canvas/components/LoopNode/LoopNode.js +45 -18
  30. package/dist/canvas/components/LoopNode/LoopNode.types.d.ts +8 -0
  31. package/dist/canvas/components/LoopNode/LoopNode.types.d.ts.map +1 -1
  32. package/dist/canvas/components/StageNode/AdhocTask.cjs +1 -0
  33. package/dist/canvas/components/StageNode/AdhocTask.d.ts.map +1 -1
  34. package/dist/canvas/components/StageNode/AdhocTask.js +1 -0
  35. package/dist/canvas/components/StageNode/DraggableTask.cjs +1 -0
  36. package/dist/canvas/components/StageNode/DraggableTask.d.ts.map +1 -1
  37. package/dist/canvas/components/StageNode/DraggableTask.js +1 -0
  38. package/dist/canvas/components/StageNode/EventDrivenTask.cjs +1 -0
  39. package/dist/canvas/components/StageNode/EventDrivenTask.d.ts.map +1 -1
  40. package/dist/canvas/components/StageNode/EventDrivenTask.js +1 -0
  41. package/dist/canvas/components/StageNode/StageNode.cjs +5 -3
  42. package/dist/canvas/components/StageNode/StageNode.d.ts.map +1 -1
  43. package/dist/canvas/components/StageNode/StageNode.js +5 -3
  44. package/dist/canvas/components/StageNode/StageNode.styles.cjs +4 -39
  45. package/dist/canvas/components/StageNode/StageNode.styles.d.ts +1 -14
  46. package/dist/canvas/components/StageNode/StageNode.styles.d.ts.map +1 -1
  47. package/dist/canvas/components/StageNode/StageNode.styles.js +4 -33
  48. package/dist/canvas/components/StageNode/StageNode.types.d.ts +4 -2
  49. package/dist/canvas/components/StageNode/StageNode.types.d.ts.map +1 -1
  50. package/dist/canvas/components/StageNode/StageNodeAdhocTaskGroups.cjs +3 -1
  51. package/dist/canvas/components/StageNode/StageNodeAdhocTaskGroups.d.ts.map +1 -1
  52. package/dist/canvas/components/StageNode/StageNodeAdhocTaskGroups.js +3 -1
  53. package/dist/canvas/components/StageNode/StageNodeAllTaskGroups.cjs +9 -5
  54. package/dist/canvas/components/StageNode/StageNodeAllTaskGroups.d.ts.map +1 -1
  55. package/dist/canvas/components/StageNode/StageNodeAllTaskGroups.js +9 -5
  56. package/dist/canvas/components/StageNode/StageNodeEventDrivenTaskGroups.cjs +3 -1
  57. package/dist/canvas/components/StageNode/StageNodeEventDrivenTaskGroups.d.ts.map +1 -1
  58. package/dist/canvas/components/StageNode/StageNodeEventDrivenTaskGroups.js +3 -1
  59. package/dist/canvas/components/StageNode/StageNodeHeader.cjs +106 -151
  60. package/dist/canvas/components/StageNode/StageNodeHeader.d.ts.map +1 -1
  61. package/dist/canvas/components/StageNode/StageNodeHeader.js +110 -155
  62. package/dist/canvas/components/StageNode/StageNodeSequentialTaskGroups.cjs +7 -3
  63. package/dist/canvas/components/StageNode/StageNodeSequentialTaskGroups.d.ts.map +1 -1
  64. package/dist/canvas/components/StageNode/StageNodeSequentialTaskGroups.js +7 -3
  65. package/dist/canvas/components/StageNode/StageNodeTaskUtilities.cjs +11 -11
  66. package/dist/canvas/components/StageNode/StageNodeTaskUtilities.d.ts +14 -1
  67. package/dist/canvas/components/StageNode/StageNodeTaskUtilities.d.ts.map +1 -1
  68. package/dist/canvas/components/StageNode/StageNodeTaskUtilities.js +11 -11
  69. package/dist/canvas/components/StageNode/StageTitleInput.cjs +120 -0
  70. package/dist/canvas/components/StageNode/StageTitleInput.d.ts +8 -0
  71. package/dist/canvas/components/StageNode/StageTitleInput.d.ts.map +1 -0
  72. package/dist/canvas/components/StageNode/StageTitleInput.js +86 -0
  73. package/dist/canvas/components/StageNode/useStageNodeLabels.cjs +122 -0
  74. package/dist/canvas/components/StageNode/useStageNodeLabels.d.ts +15 -0
  75. package/dist/canvas/components/StageNode/useStageNodeLabels.d.ts.map +1 -0
  76. package/dist/canvas/components/StageNode/useStageNodeLabels.js +88 -0
  77. package/dist/canvas/components/StickyNoteNode/StickyNoteNode.cjs +51 -38
  78. package/dist/canvas/components/StickyNoteNode/StickyNoteNode.d.ts.map +1 -1
  79. package/dist/canvas/components/StickyNoteNode/StickyNoteNode.js +49 -36
  80. package/dist/canvas/components/StickyNoteNode/StickyNoteNode.styles.cjs +2 -5
  81. package/dist/canvas/components/StickyNoteNode/StickyNoteNode.styles.d.ts.map +1 -1
  82. package/dist/canvas/components/StickyNoteNode/StickyNoteNode.styles.js +2 -5
  83. package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.cjs +5 -5
  84. package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.js +5 -5
  85. package/dist/canvas/components/Toolbox/Toolbox.cjs +7 -1
  86. package/dist/canvas/components/Toolbox/Toolbox.d.ts.map +1 -1
  87. package/dist/canvas/components/Toolbox/Toolbox.js +7 -1
  88. package/dist/canvas/index.cjs +65 -47
  89. package/dist/canvas/index.d.ts +2 -0
  90. package/dist/canvas/index.d.ts.map +1 -1
  91. package/dist/canvas/index.js +2 -1
  92. package/dist/canvas/locales/en.cjs +1 -1
  93. package/dist/canvas/locales/en.d.ts.map +1 -1
  94. package/dist/canvas/locales/en.js +1 -1
  95. package/dist/canvas/storybook-utils/decorators.d.ts.map +1 -1
  96. package/dist/canvas/styles/reactflow-reset.css +5 -1
  97. package/dist/canvas/styles/tailwind.canvas.css +1 -1
  98. package/dist/canvas/utils/adornment-resolver.cjs +4 -8
  99. package/dist/canvas/utils/adornment-resolver.d.ts +4 -1
  100. package/dist/canvas/utils/adornment-resolver.d.ts.map +1 -1
  101. package/dist/canvas/utils/adornment-resolver.js +4 -8
  102. package/dist/canvas/utils/testing.cjs +10 -1
  103. package/dist/canvas/utils/testing.d.ts +1 -1
  104. package/dist/canvas/utils/testing.d.ts.map +1 -1
  105. package/dist/canvas/utils/testing.js +10 -1
  106. package/dist/i18n/ApI18nProvider.cjs +3 -1
  107. package/dist/i18n/ApI18nProvider.d.ts.map +1 -1
  108. package/dist/i18n/ApI18nProvider.js +3 -1
  109. package/package.json +5 -6
@@ -1,15 +1,27 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { Icon, Padding, Spacing } from "@uipath/apollo-core";
3
- import { Column, Row } from "../../layouts/index.js";
4
- import { Button, cn } from "@uipath/apollo-wind";
5
- import { memo, useCallback, useEffect, useRef, useState } from "react";
3
+ import { Row } from "../../layouts/index.js";
4
+ import { Button } from "@uipath/apollo-wind";
5
+ import { memo } from "react";
6
6
  import { EntryConditionIcon, ExitConditionIcon, ReturnToOriginIcon } from "../../icons/index.js";
7
7
  import { CanvasIcon } from "../../utils/icon-registry.js";
8
8
  import { CanvasTooltip } from "../CanvasTooltip.js";
9
9
  import { ExecutionStatusIcon } from "../ExecutionStatusIcon/index.js";
10
10
  import { getExecutionStatusColor } from "../ExecutionStatusIcon/ExecutionStatusIcon.js";
11
- import { StageChip, StageHeader, StageHeaderChipsRow, StageTitleContainer, StageTitleInput } from "./StageNode.styles.js";
11
+ import { StageChip, StageHeader } from "./StageNode.styles.js";
12
12
  import { StageHeaderChipType } from "./StageNode.types.js";
13
+ import { StageTitleInput } from "./StageTitleInput.js";
14
+ import { useStageNodeLabels } from "./useStageNodeLabels.js";
15
+ const SLA_ICON_CONFIG = {
16
+ warning: {
17
+ icon: 'triangle-alert',
18
+ iconColor: 'var(--canvas-warning-icon)'
19
+ },
20
+ error: {
21
+ icon: 'circle-alert',
22
+ iconColor: 'var(--canvas-error-icon)'
23
+ }
24
+ };
13
25
  const CHIP_ICONS = {
14
26
  [StageHeaderChipType.Entry]: /*#__PURE__*/ jsx(EntryConditionIcon, {
15
27
  w: Icon.IconXs,
@@ -33,183 +45,126 @@ const CHIP_ICONS = {
33
45
  })
34
46
  };
35
47
  const StageNodeHeaderInner = ({ props, isReadOnly, isException, status, handleTaskAddClick })=>{
36
- const { id, stageDetails, execution, addTaskLabel = 'Add task', onTaskAdd, onAddTaskFromToolbox, onStageTitleChange, loadingTaskIds } = props;
48
+ const labels = useStageNodeLabels();
49
+ const { id, stageDetails, execution, onTaskAdd, onAddTaskFromToolbox, onStageTitleChange, loadingTaskIds } = props;
37
50
  const isAddTaskDisabled = (loadingTaskIds?.size ?? 0) > 0;
38
51
  const icon = stageDetails?.icon;
39
52
  const statusLabel = execution?.stageStatus?.label;
40
53
  const stageDuration = execution?.stageStatus?.duration;
41
- const isStageTitleEditable = !!onStageTitleChange && !isReadOnly;
42
- const [isStageTitleEditing, setIsStageTitleEditing] = useState(false);
43
- const stageTitleRef = useRef(null);
44
- const [label, setLabel] = useState(props.stageDetails.label);
45
- useEffect(()=>{
46
- setLabel(props.stageDetails.label);
47
- }, [
48
- props.stageDetails.label
49
- ]);
50
- const handleStageTitleChange = useCallback((e)=>{
51
- setIsStageTitleEditing(true);
52
- setLabel(e.target.value);
53
- }, []);
54
- const handleStageTitleClickToSave = useCallback((e)=>{
55
- if (isStageTitleEditing && !stageTitleRef.current?.contains(e.target)) {
56
- setIsStageTitleEditing(false);
57
- if (onStageTitleChange) {
58
- if ('' === label.trim()) setLabel('Untitled Stage');
59
- onStageTitleChange(label);
60
- }
61
- }
62
- }, [
63
- isStageTitleEditing,
64
- onStageTitleChange,
65
- label
66
- ]);
67
- useEffect(()=>{
68
- if (isStageTitleEditing) document.addEventListener('click', handleStageTitleClickToSave);
69
- return ()=>{
70
- document.removeEventListener('click', handleStageTitleClickToSave);
71
- };
72
- }, [
73
- handleStageTitleClickToSave,
74
- isStageTitleEditing
75
- ]);
76
- const handleStageTitleBlurToSave = useCallback(()=>{
77
- if (isStageTitleEditing) {
78
- setIsStageTitleEditing(false);
79
- if (onStageTitleChange) {
80
- if ('' === label.trim()) setLabel('Untitled Stage');
81
- onStageTitleChange(label);
82
- }
83
- }
84
- }, [
85
- isStageTitleEditing,
86
- onStageTitleChange,
87
- label
88
- ]);
89
- const handleStageTitleKeyDown = useCallback((e)=>{
90
- if ('Enter' === e.key) {
91
- setIsStageTitleEditing(false);
92
- if (onStageTitleChange) onStageTitleChange(label);
93
- }
94
- if ('Escape' !== e.key) e.stopPropagation();
95
- }, [
96
- onStageTitleChange,
97
- label
98
- ]);
54
+ const slaText = execution?.stageStatus?.slaText;
55
+ const slaIcon = execution?.stageStatus?.slaIcon;
56
+ const slaIndicator = slaIcon ? SLA_ICON_CONFIG[slaIcon] : void 0;
99
57
  return /*#__PURE__*/ jsxs(StageHeader, {
100
58
  isException: isException,
101
59
  "data-testid": `stage-header-${id}`,
102
60
  children: [
103
- /*#__PURE__*/ jsxs(Row, {
104
- gap: Spacing.SpacingMicro,
105
- align: "center",
106
- flex: 1,
107
- minW: 0,
61
+ /*#__PURE__*/ jsxs("div", {
62
+ className: "flex items-start justify-between gap-1",
108
63
  children: [
109
- icon,
110
- /*#__PURE__*/ jsxs(Column, {
111
- py: 2,
64
+ /*#__PURE__*/ jsxs(Row, {
65
+ gap: Spacing.SpacingMicro,
66
+ align: "center",
112
67
  flex: 1,
113
68
  minW: 0,
114
69
  children: [
115
- /*#__PURE__*/ jsx("span", {
116
- className: cn('text-sm', !isStageTitleEditing && 'font-bold'),
117
- children: /*#__PURE__*/ jsx(CanvasTooltip, {
118
- content: label,
119
- placement: "top",
120
- delay: true,
121
- children: /*#__PURE__*/ jsx(StageTitleContainer, {
122
- isEditing: isStageTitleEditing,
123
- children: /*#__PURE__*/ jsx(StageTitleInput, {
124
- name: "Stage Title",
125
- isStageTitleEditable: isStageTitleEditable,
126
- value: label,
127
- ref: stageTitleRef,
128
- isEditing: isStageTitleEditing,
129
- ...onStageTitleChange && {
130
- onFocus: ()=>setIsStageTitleEditing(true),
131
- onInput: handleStageTitleChange,
132
- onKeyDown: handleStageTitleKeyDown,
133
- onBlur: handleStageTitleBlurToSave
134
- },
135
- readOnly: !isStageTitleEditable
136
- })
70
+ icon,
71
+ /*#__PURE__*/ jsx(StageTitleInput, {
72
+ label: stageDetails.label,
73
+ onChange: isReadOnly ? void 0 : onStageTitleChange,
74
+ className: "flex-1 min-w-0"
75
+ })
76
+ ]
77
+ }),
78
+ /*#__PURE__*/ jsxs(Row, {
79
+ gap: Spacing.SpacingMicro,
80
+ align: "start",
81
+ py: Padding.PadS,
82
+ children: [
83
+ status && /*#__PURE__*/ jsx(CanvasTooltip, {
84
+ content: statusLabel,
85
+ placement: "top",
86
+ children: /*#__PURE__*/ jsx(Button, {
87
+ variant: "ghost",
88
+ size: "icon",
89
+ className: "h-6 w-6",
90
+ "aria-label": statusLabel,
91
+ children: 'NotExecuted' === status ? /*#__PURE__*/ jsx(CanvasIcon, {
92
+ icon: "hourglass",
93
+ size: 20,
94
+ color: getExecutionStatusColor('NotExecuted')
95
+ }) : /*#__PURE__*/ jsx(ExecutionStatusIcon, {
96
+ status: status,
97
+ size: 20
137
98
  })
138
99
  })
139
100
  }),
140
- stageDuration && /*#__PURE__*/ jsx("span", {
141
- className: "text-xs text-foreground-muted",
142
- children: stageDuration
143
- }),
144
- stageDetails.headerChips && stageDetails.headerChips.length > 0 && /*#__PURE__*/ jsx(StageHeaderChipsRow, {
145
- children: stageDetails.headerChips.map((chip)=>{
146
- const button = /*#__PURE__*/ jsxs(StageChip, {
147
- type: "button",
148
- "aria-label": 'string' == typeof chip.tooltip ? chip.tooltip : chip.type,
149
- onClick: (e)=>{
150
- e.stopPropagation();
151
- chip.onClick?.();
152
- },
153
- children: [
154
- CHIP_ICONS[chip.type],
155
- void 0 !== chip.count && /*#__PURE__*/ jsx("span", {
156
- className: "text-xs",
157
- children: chip.count
158
- })
159
- ]
160
- }, chip.type);
161
- if (chip.tooltip) return /*#__PURE__*/ jsx(CanvasTooltip, {
162
- placement: "bottom",
163
- content: chip.tooltip,
164
- children: button
165
- }, chip.type);
166
- return button;
101
+ (onTaskAdd || onAddTaskFromToolbox) && !isReadOnly && /*#__PURE__*/ jsx(CanvasTooltip, {
102
+ content: labels.addTask,
103
+ placement: "top",
104
+ children: /*#__PURE__*/ jsx(Button, {
105
+ variant: "ghost",
106
+ size: "icon",
107
+ className: "h-6 w-6",
108
+ onClick: handleTaskAddClick,
109
+ "aria-label": labels.addTask,
110
+ disabled: isAddTaskDisabled,
111
+ children: /*#__PURE__*/ jsx(CanvasIcon, {
112
+ icon: "plus",
113
+ size: 20
114
+ })
167
115
  })
168
116
  })
169
117
  ]
170
118
  })
171
119
  ]
172
120
  }),
173
- /*#__PURE__*/ jsxs(Row, {
174
- gap: Spacing.SpacingMicro,
175
- align: "start",
176
- py: Padding.PadS,
121
+ (slaText || stageDetails.headerChips && stageDetails.headerChips.length > 0) && /*#__PURE__*/ jsxs("div", {
122
+ className: "mt-1 flex flex-wrap items-center justify-between gap-2",
177
123
  children: [
178
- status && /*#__PURE__*/ jsx(CanvasTooltip, {
179
- content: statusLabel,
180
- placement: "top",
181
- children: /*#__PURE__*/ jsx(Button, {
182
- variant: "ghost",
183
- size: "icon",
184
- className: "h-6 w-6",
185
- "aria-label": statusLabel,
186
- children: 'NotExecuted' === status ? /*#__PURE__*/ jsx(CanvasIcon, {
187
- icon: "hourglass",
188
- size: 20,
189
- color: getExecutionStatusColor('NotExecuted')
190
- }) : /*#__PURE__*/ jsx(ExecutionStatusIcon, {
191
- status: status,
192
- size: 20
193
- })
194
- })
124
+ slaText && /*#__PURE__*/ jsxs("span", {
125
+ className: "inline-flex items-center gap-1 text-xs text-foreground-muted",
126
+ "data-testid": `stage-sla-${id}`,
127
+ "data-sla-icon": slaIcon,
128
+ children: [
129
+ slaIndicator && /*#__PURE__*/ jsx(CanvasIcon, {
130
+ icon: slaIndicator.icon,
131
+ size: 16,
132
+ color: slaIndicator.iconColor
133
+ }),
134
+ slaText
135
+ ]
195
136
  }),
196
- (onTaskAdd || onAddTaskFromToolbox) && !isReadOnly && /*#__PURE__*/ jsx(CanvasTooltip, {
197
- content: addTaskLabel,
198
- placement: "top",
199
- children: /*#__PURE__*/ jsx(Button, {
200
- variant: "ghost",
201
- size: "icon",
202
- className: "h-6 w-6",
203
- onClick: handleTaskAddClick,
204
- "aria-label": addTaskLabel,
205
- disabled: isAddTaskDisabled,
206
- children: /*#__PURE__*/ jsx(CanvasIcon, {
207
- icon: "plus",
208
- size: 20
209
- })
137
+ stageDetails.headerChips && stageDetails.headerChips.length > 0 && /*#__PURE__*/ jsx("div", {
138
+ className: "flex flex-wrap items-center gap-1",
139
+ children: stageDetails.headerChips.map((chip)=>{
140
+ const button = /*#__PURE__*/ jsxs(StageChip, {
141
+ type: "button",
142
+ "aria-label": 'string' == typeof chip.tooltip ? chip.tooltip : chip.type,
143
+ onClick: (e)=>{
144
+ e.stopPropagation();
145
+ chip.onClick?.();
146
+ },
147
+ children: [
148
+ CHIP_ICONS[chip.type],
149
+ void 0 !== chip.count && /*#__PURE__*/ jsx("span", {
150
+ className: "text-xs",
151
+ children: chip.count
152
+ })
153
+ ]
154
+ }, chip.type);
155
+ if (chip.tooltip) return /*#__PURE__*/ jsx(CanvasTooltip, {
156
+ placement: "bottom",
157
+ content: chip.tooltip,
158
+ children: button
159
+ }, chip.type);
160
+ return button;
210
161
  })
211
162
  })
212
163
  ]
164
+ }),
165
+ stageDuration && /*#__PURE__*/ jsx("span", {
166
+ className: "mt-1 text-xs text-foreground-muted",
167
+ children: stageDuration
213
168
  })
214
169
  ]
215
170
  });
@@ -38,8 +38,10 @@ const useStageTaskDragHandler_cjs_namespaceObject = require("./hooks/useStageTas
38
38
  const external_StageNode_styles_cjs_namespaceObject = require("./StageNode.styles.cjs");
39
39
  const external_StageNodeTaskUtilities_cjs_namespaceObject = require("./StageNodeTaskUtilities.cjs");
40
40
  const external_StageTaskDragOverlay_cjs_namespaceObject = require("./StageTaskDragOverlay.cjs");
41
+ const external_useStageNodeLabels_cjs_namespaceObject = require("./useStageNodeLabels.cjs");
41
42
  const StageNodeSequentialTaskGroups = ({ props, sequentialTaskGroups, sequentialTasks, allTasks, isReadOnly, selectedTaskId, taskWidthStyle, hasContextMenu, handleTaskClick, handleReorderSequentialTasks, generateReplaceTaskMenuItemForTask })=>{
42
43
  const { execution, onTaskGroupModification, onTaskReorder, hideParallelOptions, loadingTaskIds } = props;
44
+ const labels = (0, external_useStageNodeLabels_cjs_namespaceObject.useStageNodeLabels)();
43
45
  const sequentialTaskIds = (0, external_react_namespaceObject.useMemo)(()=>sequentialTasks.map(({ task })=>task.id), [
44
46
  sequentialTasks
45
47
  ]);
@@ -88,7 +90,8 @@ const StageNodeSequentialTaskGroups = ({ props, sequentialTaskGroups, sequential
88
90
  isAboveParallel: (sequentialTaskGroups[groupIndex - 1]?.length ?? 0) > 1,
89
91
  isBelowParallel: (sequentialTaskGroups[groupIndex + 1]?.length ?? 0) > 1,
90
92
  reGroupTaskFunction: handleTaskRegroup,
91
- hideParallelOptions
93
+ hideParallelOptions,
94
+ labels: labels.contextMenu
92
95
  });
93
96
  return [
94
97
  ...items,
@@ -102,7 +105,8 @@ const StageNodeSequentialTaskGroups = ({ props, sequentialTaskGroups, sequential
102
105
  hideParallelOptions,
103
106
  handleTaskRegroup,
104
107
  generateReplaceTaskMenuItemForTask,
105
- allTasks
108
+ allTasks,
109
+ labels.contextMenu
106
110
  ]);
107
111
  const sensors = (0, core_namespaceObject.useSensors)((0, core_namespaceObject.useSensor)(core_namespaceObject.PointerSensor, {
108
112
  activationConstraint: {
@@ -138,7 +142,7 @@ const StageNodeSequentialTaskGroups = ({ props, sequentialTaskGroups, sequential
138
142
  isParallel && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_StageNode_styles_cjs_namespaceObject.StageParallelLabel, {
139
143
  children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
140
144
  className: "text-xs",
141
- children: "Parallel"
145
+ children: labels.parallel
142
146
  })
143
147
  }),
144
148
  taskGroup.map((task, taskIndex)=>{
@@ -1 +1 @@
1
- {"version":3,"file":"StageNodeSequentialTaskGroups.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/StageNode/StageNodeSequentialTaskGroups.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,aAAa,EAAwB,MAAM,OAAO,CAAC;AAMjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AASvD,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIvF,eAAO,MAAM,6BAA6B,GAAI,4MAY3C;IACD,KAAK,EAAE,cAAc,CAAC;IACtB,oBAAoB,EAAE,aAAa,EAAE,EAAE,CAAC;IACxC,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,QAAQ,EAAE,aAAa,EAAE,EAAE,CAAC;IAC5B,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;IACtE,4BAA4B,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,KAAK,IAAI,CAAC;IACpE,kCAAkC,EAAE,CAClC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,OAAO,KAChB,YAAY,GAAG,SAAS,CAAC;CAC/B,mDAiLA,CAAC"}
1
+ {"version":3,"file":"StageNodeSequentialTaskGroups.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/StageNode/StageNodeSequentialTaskGroups.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,aAAa,EAAwB,MAAM,OAAO,CAAC;AAMjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AASvD,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAKvF,eAAO,MAAM,6BAA6B,GAAI,4MAY3C;IACD,KAAK,EAAE,cAAc,CAAC;IACtB,oBAAoB,EAAE,aAAa,EAAE,EAAE,CAAC;IACxC,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,QAAQ,EAAE,aAAa,EAAE,EAAE,CAAC;IAC5B,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,aAAa,EAAE,MAAM,KAAK,IAAI,CAAC;IACtE,4BAA4B,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,KAAK,IAAI,CAAC;IACpE,kCAAkC,EAAE,CAClC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,OAAO,KAChB,YAAY,GAAG,SAAS,CAAC;CAC/B,mDAoLA,CAAC"}
@@ -10,8 +10,10 @@ import { useStageTaskDragHandler } from "./hooks/useStageTaskDragHandler.js";
10
10
  import { StageParallelBracket, StageParallelLabel, StageTaskGroupContainer, StageTaskList } from "./StageNode.styles.js";
11
11
  import { getContextMenuItems, getDivider } from "./StageNodeTaskUtilities.js";
12
12
  import { StageTaskDragOverlay } from "./StageTaskDragOverlay.js";
13
+ import { useStageNodeLabels } from "./useStageNodeLabels.js";
13
14
  const StageNodeSequentialTaskGroups = ({ props, sequentialTaskGroups, sequentialTasks, allTasks, isReadOnly, selectedTaskId, taskWidthStyle, hasContextMenu, handleTaskClick, handleReorderSequentialTasks, generateReplaceTaskMenuItemForTask })=>{
14
15
  const { execution, onTaskGroupModification, onTaskReorder, hideParallelOptions, loadingTaskIds } = props;
16
+ const labels = useStageNodeLabels();
15
17
  const sequentialTaskIds = useMemo(()=>sequentialTasks.map(({ task })=>task.id), [
16
18
  sequentialTasks
17
19
  ]);
@@ -60,7 +62,8 @@ const StageNodeSequentialTaskGroups = ({ props, sequentialTaskGroups, sequential
60
62
  isAboveParallel: (sequentialTaskGroups[groupIndex - 1]?.length ?? 0) > 1,
61
63
  isBelowParallel: (sequentialTaskGroups[groupIndex + 1]?.length ?? 0) > 1,
62
64
  reGroupTaskFunction: handleTaskRegroup,
63
- hideParallelOptions
65
+ hideParallelOptions,
66
+ labels: labels.contextMenu
64
67
  });
65
68
  return [
66
69
  ...items,
@@ -74,7 +77,8 @@ const StageNodeSequentialTaskGroups = ({ props, sequentialTaskGroups, sequential
74
77
  hideParallelOptions,
75
78
  handleTaskRegroup,
76
79
  generateReplaceTaskMenuItemForTask,
77
- allTasks
80
+ allTasks,
81
+ labels.contextMenu
78
82
  ]);
79
83
  const sensors = useSensors(useSensor(PointerSensor, {
80
84
  activationConstraint: {
@@ -110,7 +114,7 @@ const StageNodeSequentialTaskGroups = ({ props, sequentialTaskGroups, sequential
110
114
  isParallel && /*#__PURE__*/ jsx(StageParallelLabel, {
111
115
  children: /*#__PURE__*/ jsx("span", {
112
116
  className: "text-xs",
113
- children: "Parallel"
117
+ children: labels.parallel
114
118
  })
115
119
  }),
116
120
  taskGroup.map((task, taskIndex)=>{
@@ -30,18 +30,18 @@ __webpack_require__.d(__webpack_exports__, {
30
30
  getContextMenuItems: ()=>getContextMenuItems
31
31
  });
32
32
  const GroupModificationUtils_cjs_namespaceObject = require("../../utils/GroupModificationUtils.cjs");
33
- const getContextMenuItems = ({ isParallelGroup, groupIndex, tasksLength, groupIndexInAllTasks, taskIndexInAllTasks, isAboveParallel, isBelowParallel, reGroupTaskFunction, hideParallelOptions = false })=>{
33
+ const getContextMenuItems = ({ isParallelGroup, groupIndex, tasksLength, groupIndexInAllTasks, taskIndexInAllTasks, isAboveParallel, isBelowParallel, reGroupTaskFunction, hideParallelOptions = false, labels })=>{
34
34
  const CONTEXT_MENU_ITEMS = {
35
- MOVE_UP: getMenuItem('move-up', 'Move up', ()=>reGroupTaskFunction(GroupModificationUtils_cjs_namespaceObject.GroupModificationType.TASK_GROUP_UP, groupIndexInAllTasks, taskIndexInAllTasks)),
36
- MOVE_DOWN: getMenuItem('move-down', 'Move down', ()=>reGroupTaskFunction(GroupModificationUtils_cjs_namespaceObject.GroupModificationType.TASK_GROUP_DOWN, groupIndexInAllTasks, taskIndexInAllTasks)),
37
- UNGROUP_ALL: getMenuItem('ungroup', 'Ungroup parallel tasks', ()=>reGroupTaskFunction(GroupModificationUtils_cjs_namespaceObject.GroupModificationType.UNGROUP_ALL_TASKS, groupIndexInAllTasks, taskIndexInAllTasks)),
38
- SPLIT_TASK: getMenuItem('split', 'Remove from parallel group', ()=>reGroupTaskFunction(GroupModificationUtils_cjs_namespaceObject.GroupModificationType.SPLIT_GROUP, groupIndexInAllTasks, taskIndexInAllTasks)),
39
- REMOVE_GROUP: getMenuItem('remove-group', 'Remove group from stage', ()=>reGroupTaskFunction(GroupModificationUtils_cjs_namespaceObject.GroupModificationType.REMOVE_GROUP, groupIndexInAllTasks, taskIndexInAllTasks)),
40
- REMOVE_TASK: getMenuItem('remove-task', 'Delete task', ()=>reGroupTaskFunction(GroupModificationUtils_cjs_namespaceObject.GroupModificationType.REMOVE_TASK, groupIndexInAllTasks, taskIndexInAllTasks)),
41
- CREATE_PARALLEL_GROUP_ABOVE: getMenuItem('group-with-up', 'Create parallel group with task above', ()=>reGroupTaskFunction(GroupModificationUtils_cjs_namespaceObject.GroupModificationType.MERGE_GROUP_UP, groupIndexInAllTasks, taskIndexInAllTasks)),
42
- CREATE_PARALLEL_GROUP_BELOW: getMenuItem('group-with-down', 'Create parallel group with task below', ()=>reGroupTaskFunction(GroupModificationUtils_cjs_namespaceObject.GroupModificationType.MERGE_GROUP_DOWN, groupIndexInAllTasks, taskIndexInAllTasks)),
43
- ADD_TO_PARALLEL_GROUP_ABOVE: getMenuItem('add-to-group-with-up', 'Add task to parallel group above', ()=>reGroupTaskFunction(GroupModificationUtils_cjs_namespaceObject.GroupModificationType.MERGE_GROUP_UP, groupIndexInAllTasks, taskIndexInAllTasks)),
44
- ADD_TO_PARALLEL_GROUP_BELOW: getMenuItem('add-to-group-with-down', 'Add task to parallel group below', ()=>reGroupTaskFunction(GroupModificationUtils_cjs_namespaceObject.GroupModificationType.MERGE_GROUP_DOWN, groupIndexInAllTasks, taskIndexInAllTasks)),
35
+ MOVE_UP: getMenuItem('move-up', labels.moveUp, ()=>reGroupTaskFunction(GroupModificationUtils_cjs_namespaceObject.GroupModificationType.TASK_GROUP_UP, groupIndexInAllTasks, taskIndexInAllTasks)),
36
+ MOVE_DOWN: getMenuItem('move-down', labels.moveDown, ()=>reGroupTaskFunction(GroupModificationUtils_cjs_namespaceObject.GroupModificationType.TASK_GROUP_DOWN, groupIndexInAllTasks, taskIndexInAllTasks)),
37
+ UNGROUP_ALL: getMenuItem('ungroup', labels.ungroupParallelTasks, ()=>reGroupTaskFunction(GroupModificationUtils_cjs_namespaceObject.GroupModificationType.UNGROUP_ALL_TASKS, groupIndexInAllTasks, taskIndexInAllTasks)),
38
+ SPLIT_TASK: getMenuItem('split', labels.removeFromParallelGroup, ()=>reGroupTaskFunction(GroupModificationUtils_cjs_namespaceObject.GroupModificationType.SPLIT_GROUP, groupIndexInAllTasks, taskIndexInAllTasks)),
39
+ REMOVE_GROUP: getMenuItem('remove-group', labels.removeGroupFromStage, ()=>reGroupTaskFunction(GroupModificationUtils_cjs_namespaceObject.GroupModificationType.REMOVE_GROUP, groupIndexInAllTasks, taskIndexInAllTasks)),
40
+ REMOVE_TASK: getMenuItem('remove-task', labels.deleteTask, ()=>reGroupTaskFunction(GroupModificationUtils_cjs_namespaceObject.GroupModificationType.REMOVE_TASK, groupIndexInAllTasks, taskIndexInAllTasks)),
41
+ CREATE_PARALLEL_GROUP_ABOVE: getMenuItem('group-with-up', labels.createParallelGroupWithTaskAbove, ()=>reGroupTaskFunction(GroupModificationUtils_cjs_namespaceObject.GroupModificationType.MERGE_GROUP_UP, groupIndexInAllTasks, taskIndexInAllTasks)),
42
+ CREATE_PARALLEL_GROUP_BELOW: getMenuItem('group-with-down', labels.createParallelGroupWithTaskBelow, ()=>reGroupTaskFunction(GroupModificationUtils_cjs_namespaceObject.GroupModificationType.MERGE_GROUP_DOWN, groupIndexInAllTasks, taskIndexInAllTasks)),
43
+ ADD_TO_PARALLEL_GROUP_ABOVE: getMenuItem('add-to-group-with-up', labels.addTaskToParallelGroupAbove, ()=>reGroupTaskFunction(GroupModificationUtils_cjs_namespaceObject.GroupModificationType.MERGE_GROUP_UP, groupIndexInAllTasks, taskIndexInAllTasks)),
44
+ ADD_TO_PARALLEL_GROUP_BELOW: getMenuItem('add-to-group-with-down', labels.addTaskToParallelGroupBelow, ()=>reGroupTaskFunction(GroupModificationUtils_cjs_namespaceObject.GroupModificationType.MERGE_GROUP_DOWN, groupIndexInAllTasks, taskIndexInAllTasks)),
45
45
  DIVIDER: getDivider()
46
46
  };
47
47
  const items = [];
@@ -1,7 +1,19 @@
1
1
  import type { ReactNode } from 'react';
2
2
  import { GroupModificationType } from '../../utils/GroupModificationUtils';
3
3
  import type { NodeMenuAction, NodeMenuItem } from '../NodeContextMenu';
4
- export declare const getContextMenuItems: ({ isParallelGroup, groupIndex, tasksLength, groupIndexInAllTasks, taskIndexInAllTasks, isAboveParallel, isBelowParallel, reGroupTaskFunction, hideParallelOptions, }: {
4
+ export interface StageContextMenuLabels {
5
+ moveUp: string;
6
+ moveDown: string;
7
+ ungroupParallelTasks: string;
8
+ removeFromParallelGroup: string;
9
+ removeGroupFromStage: string;
10
+ deleteTask: string;
11
+ createParallelGroupWithTaskAbove: string;
12
+ createParallelGroupWithTaskBelow: string;
13
+ addTaskToParallelGroupAbove: string;
14
+ addTaskToParallelGroupBelow: string;
15
+ }
16
+ export declare const getContextMenuItems: ({ isParallelGroup, groupIndex, tasksLength, groupIndexInAllTasks, taskIndexInAllTasks, isAboveParallel, isBelowParallel, reGroupTaskFunction, hideParallelOptions, labels, }: {
5
17
  isParallelGroup: boolean;
6
18
  groupIndex: number;
7
19
  tasksLength: number;
@@ -11,6 +23,7 @@ export declare const getContextMenuItems: ({ isParallelGroup, groupIndex, tasksL
11
23
  isBelowParallel: boolean;
12
24
  reGroupTaskFunction: (groupModificationType: GroupModificationType, groupIndex: number, taskIndex: number) => void;
13
25
  hideParallelOptions?: boolean;
26
+ labels: StageContextMenuLabels;
14
27
  }) => NodeMenuItem[];
15
28
  export declare function getMenuItem(id: string | undefined, label: string | undefined, onClick: () => void, isDisabled?: boolean): NodeMenuItem;
16
29
  export declare const getDivider: () => NodeMenuItem;
@@ -1 +1 @@
1
- {"version":3,"file":"StageNodeTaskUtilities.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/StageNode/StageNodeTaskUtilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIvE,eAAO,MAAM,mBAAmB,GAAI,sKAUjC;IACD,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,mBAAmB,EAAE,CACnB,qBAAqB,EAAE,qBAAqB,EAC5C,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,KACd,IAAI,CAAC;IACV,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,KAAG,YAAY,EA+Hf,CAAC;AAEF,wBAAgB,WAAW,CACzB,EAAE,EAAE,MAAM,YAAO,EACjB,KAAK,EAAE,MAAM,YAAU,EACvB,OAAO,EAAE,MAAM,IAAI,EACnB,UAAU,UAAQ,GACjB,YAAY,CAEd;AAED,eAAO,MAAM,UAAU,QAAO,YAI7B,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,WAAW,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAMD,eAAO,MAAM,kBAAkB,GAC7B,WAAW,YAAY,EAAE,GAAG,SAAS,EACrC,aAAa,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,KAC1C,mBAAmB,EAwBrB,CAAC"}
1
+ {"version":3,"file":"StageNodeTaskUtilities.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/StageNode/StageNodeTaskUtilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvE,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uBAAuB,EAAE,MAAM,CAAC;IAChC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,gCAAgC,EAAE,MAAM,CAAC;IACzC,gCAAgC,EAAE,MAAM,CAAC;IACzC,2BAA2B,EAAE,MAAM,CAAC;IACpC,2BAA2B,EAAE,MAAM,CAAC;CACrC;AAED,eAAO,MAAM,mBAAmB,GAAI,8KAWjC;IACD,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,mBAAmB,EAAE,CACnB,qBAAqB,EAAE,qBAAqB,EAC5C,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,KACd,IAAI,CAAC;IACV,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,MAAM,EAAE,sBAAsB,CAAC;CAChC,KAAG,YAAY,EA+Hf,CAAC;AAEF,wBAAgB,WAAW,CACzB,EAAE,EAAE,MAAM,YAAO,EACjB,KAAK,EAAE,MAAM,YAAU,EACvB,OAAO,EAAE,MAAM,IAAI,EACnB,UAAU,UAAQ,GACjB,YAAY,CAEd;AAED,eAAO,MAAM,UAAU,QAAO,YAI7B,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,WAAW,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAMD,eAAO,MAAM,kBAAkB,GAC7B,WAAW,YAAY,EAAE,GAAG,SAAS,EACrC,aAAa,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,KAC1C,mBAAmB,EAwBrB,CAAC"}
@@ -1,16 +1,16 @@
1
1
  import { GroupModificationType } from "../../utils/GroupModificationUtils.js";
2
- const getContextMenuItems = ({ isParallelGroup, groupIndex, tasksLength, groupIndexInAllTasks, taskIndexInAllTasks, isAboveParallel, isBelowParallel, reGroupTaskFunction, hideParallelOptions = false })=>{
2
+ const getContextMenuItems = ({ isParallelGroup, groupIndex, tasksLength, groupIndexInAllTasks, taskIndexInAllTasks, isAboveParallel, isBelowParallel, reGroupTaskFunction, hideParallelOptions = false, labels })=>{
3
3
  const CONTEXT_MENU_ITEMS = {
4
- MOVE_UP: getMenuItem('move-up', 'Move up', ()=>reGroupTaskFunction(GroupModificationType.TASK_GROUP_UP, groupIndexInAllTasks, taskIndexInAllTasks)),
5
- MOVE_DOWN: getMenuItem('move-down', 'Move down', ()=>reGroupTaskFunction(GroupModificationType.TASK_GROUP_DOWN, groupIndexInAllTasks, taskIndexInAllTasks)),
6
- UNGROUP_ALL: getMenuItem('ungroup', 'Ungroup parallel tasks', ()=>reGroupTaskFunction(GroupModificationType.UNGROUP_ALL_TASKS, groupIndexInAllTasks, taskIndexInAllTasks)),
7
- SPLIT_TASK: getMenuItem('split', 'Remove from parallel group', ()=>reGroupTaskFunction(GroupModificationType.SPLIT_GROUP, groupIndexInAllTasks, taskIndexInAllTasks)),
8
- REMOVE_GROUP: getMenuItem('remove-group', 'Remove group from stage', ()=>reGroupTaskFunction(GroupModificationType.REMOVE_GROUP, groupIndexInAllTasks, taskIndexInAllTasks)),
9
- REMOVE_TASK: getMenuItem('remove-task', 'Delete task', ()=>reGroupTaskFunction(GroupModificationType.REMOVE_TASK, groupIndexInAllTasks, taskIndexInAllTasks)),
10
- CREATE_PARALLEL_GROUP_ABOVE: getMenuItem('group-with-up', 'Create parallel group with task above', ()=>reGroupTaskFunction(GroupModificationType.MERGE_GROUP_UP, groupIndexInAllTasks, taskIndexInAllTasks)),
11
- CREATE_PARALLEL_GROUP_BELOW: getMenuItem('group-with-down', 'Create parallel group with task below', ()=>reGroupTaskFunction(GroupModificationType.MERGE_GROUP_DOWN, groupIndexInAllTasks, taskIndexInAllTasks)),
12
- ADD_TO_PARALLEL_GROUP_ABOVE: getMenuItem('add-to-group-with-up', 'Add task to parallel group above', ()=>reGroupTaskFunction(GroupModificationType.MERGE_GROUP_UP, groupIndexInAllTasks, taskIndexInAllTasks)),
13
- ADD_TO_PARALLEL_GROUP_BELOW: getMenuItem('add-to-group-with-down', 'Add task to parallel group below', ()=>reGroupTaskFunction(GroupModificationType.MERGE_GROUP_DOWN, groupIndexInAllTasks, taskIndexInAllTasks)),
4
+ MOVE_UP: getMenuItem('move-up', labels.moveUp, ()=>reGroupTaskFunction(GroupModificationType.TASK_GROUP_UP, groupIndexInAllTasks, taskIndexInAllTasks)),
5
+ MOVE_DOWN: getMenuItem('move-down', labels.moveDown, ()=>reGroupTaskFunction(GroupModificationType.TASK_GROUP_DOWN, groupIndexInAllTasks, taskIndexInAllTasks)),
6
+ UNGROUP_ALL: getMenuItem('ungroup', labels.ungroupParallelTasks, ()=>reGroupTaskFunction(GroupModificationType.UNGROUP_ALL_TASKS, groupIndexInAllTasks, taskIndexInAllTasks)),
7
+ SPLIT_TASK: getMenuItem('split', labels.removeFromParallelGroup, ()=>reGroupTaskFunction(GroupModificationType.SPLIT_GROUP, groupIndexInAllTasks, taskIndexInAllTasks)),
8
+ REMOVE_GROUP: getMenuItem('remove-group', labels.removeGroupFromStage, ()=>reGroupTaskFunction(GroupModificationType.REMOVE_GROUP, groupIndexInAllTasks, taskIndexInAllTasks)),
9
+ REMOVE_TASK: getMenuItem('remove-task', labels.deleteTask, ()=>reGroupTaskFunction(GroupModificationType.REMOVE_TASK, groupIndexInAllTasks, taskIndexInAllTasks)),
10
+ CREATE_PARALLEL_GROUP_ABOVE: getMenuItem('group-with-up', labels.createParallelGroupWithTaskAbove, ()=>reGroupTaskFunction(GroupModificationType.MERGE_GROUP_UP, groupIndexInAllTasks, taskIndexInAllTasks)),
11
+ CREATE_PARALLEL_GROUP_BELOW: getMenuItem('group-with-down', labels.createParallelGroupWithTaskBelow, ()=>reGroupTaskFunction(GroupModificationType.MERGE_GROUP_DOWN, groupIndexInAllTasks, taskIndexInAllTasks)),
12
+ ADD_TO_PARALLEL_GROUP_ABOVE: getMenuItem('add-to-group-with-up', labels.addTaskToParallelGroupAbove, ()=>reGroupTaskFunction(GroupModificationType.MERGE_GROUP_UP, groupIndexInAllTasks, taskIndexInAllTasks)),
13
+ ADD_TO_PARALLEL_GROUP_BELOW: getMenuItem('add-to-group-with-down', labels.addTaskToParallelGroupBelow, ()=>reGroupTaskFunction(GroupModificationType.MERGE_GROUP_DOWN, groupIndexInAllTasks, taskIndexInAllTasks)),
14
14
  DIVIDER: getDivider()
15
15
  };
16
16
  const items = [];
@@ -0,0 +1,120 @@
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 ("u" > 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
+ StageTitleInput: ()=>StageTitleInput
28
+ });
29
+ const jsx_runtime_namespaceObject = require("react/jsx-runtime");
30
+ const apollo_wind_namespaceObject = require("@uipath/apollo-wind");
31
+ const external_react_namespaceObject = require("react");
32
+ const external_CanvasTooltip_cjs_namespaceObject = require("../CanvasTooltip.cjs");
33
+ const external_useStageNodeLabels_cjs_namespaceObject = require("./useStageNodeLabels.cjs");
34
+ const StageTitleInput = ({ label: labelProp, onChange, className })=>{
35
+ const labels = (0, external_useStageNodeLabels_cjs_namespaceObject.useStageNodeLabels)();
36
+ const isEditable = !!onChange;
37
+ const [isEditing, setIsEditing] = (0, external_react_namespaceObject.useState)(false);
38
+ const inputRef = (0, external_react_namespaceObject.useRef)(null);
39
+ const [label, setLabel] = (0, external_react_namespaceObject.useState)(labelProp);
40
+ (0, external_react_namespaceObject.useEffect)(()=>{
41
+ setLabel(labelProp);
42
+ }, [
43
+ labelProp
44
+ ]);
45
+ (0, external_react_namespaceObject.useLayoutEffect)(()=>{
46
+ if (isEditing && inputRef.current) {
47
+ const input = inputRef.current;
48
+ input.focus();
49
+ const caret = input.value.length;
50
+ input.setSelectionRange(caret, caret);
51
+ }
52
+ }, [
53
+ isEditing
54
+ ]);
55
+ const handleChange = (0, external_react_namespaceObject.useCallback)((e)=>{
56
+ setLabel(e.target.value);
57
+ }, []);
58
+ const saveStageTitle = (0, external_react_namespaceObject.useCallback)(()=>{
59
+ setIsEditing(false);
60
+ if (!onChange) return;
61
+ const finalLabel = '' === label.trim() ? labels.untitledStage : label;
62
+ if (finalLabel !== label) setLabel(finalLabel);
63
+ onChange(finalLabel);
64
+ }, [
65
+ onChange,
66
+ label,
67
+ labels.untitledStage
68
+ ]);
69
+ const handleBlur = (0, external_react_namespaceObject.useCallback)(()=>{
70
+ if (isEditing) saveStageTitle();
71
+ }, [
72
+ isEditing,
73
+ saveStageTitle
74
+ ]);
75
+ const handleKeyDown = (0, external_react_namespaceObject.useCallback)((e)=>{
76
+ if ('Enter' === e.key) saveStageTitle();
77
+ if ('Escape' !== e.key) e.stopPropagation();
78
+ }, [
79
+ saveStageTitle
80
+ ]);
81
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
82
+ className: (0, apollo_wind_namespaceObject.cn)('py-0.5 text-sm', !isEditing && 'font-bold', className),
83
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_CanvasTooltip_cjs_namespaceObject.CanvasTooltip, {
84
+ content: label,
85
+ placement: "top",
86
+ hide: isEditing,
87
+ delay: true,
88
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
89
+ className: (0, apollo_wind_namespaceObject.cn)('flex min-h-7 w-full items-center rounded', isEditing && 'outline outline-1 -outline-offset-1 outline-[var(--canvas-border-de-emp)]'),
90
+ children: isEditing ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("input", {
91
+ ref: inputRef,
92
+ name: "Stage Title",
93
+ value: label,
94
+ onInput: handleChange,
95
+ onKeyDown: handleKeyDown,
96
+ onBlur: handleBlur,
97
+ className: (0, apollo_wind_namespaceObject.cn)('nodrag w-full min-w-[100px] py-1', 'cursor-text rounded-sm border-none bg-transparent text-sm text-ellipsis', 'focus:outline-none', 'hover:bg-[var(--canvas-background-secondary)]')
98
+ }) : isEditable ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("button", {
99
+ type: "button",
100
+ className: (0, apollo_wind_namespaceObject.cn)('nodrag flex w-full min-w-0 items-center self-stretch rounded-sm', 'appearance-none border-none bg-transparent p-0 text-left text-sm font-bold', 'cursor-text hover:bg-[var(--canvas-background-secondary)]'),
101
+ onClick: ()=>setIsEditing(true),
102
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
103
+ className: "truncate",
104
+ children: label
105
+ })
106
+ }) : /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
107
+ className: "inline-block max-w-full truncate rounded-sm py-1",
108
+ children: label
109
+ })
110
+ })
111
+ })
112
+ });
113
+ };
114
+ exports.StageTitleInput = __webpack_exports__.StageTitleInput;
115
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
116
+ "StageTitleInput"
117
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
118
+ Object.defineProperty(exports, '__esModule', {
119
+ value: true
120
+ });