@uipath/apollo-react 6.22.3 → 6.23.1

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 (76) hide show
  1. package/README.md +2 -1
  2. package/dist/canvas/components/JsonTree/JsonTree.cjs +1 -1
  3. package/dist/canvas/components/JsonTree/JsonTree.js +1 -1
  4. package/dist/canvas/components/JsonTree/JsonTreeRow.cjs +16 -11
  5. package/dist/canvas/components/JsonTree/JsonTreeRow.d.ts.map +1 -1
  6. package/dist/canvas/components/JsonTree/JsonTreeRow.js +16 -11
  7. package/dist/canvas/components/JsonTree/NodeKey.cjs +1 -1
  8. package/dist/canvas/components/JsonTree/NodeKey.d.ts.map +1 -1
  9. package/dist/canvas/components/JsonTree/NodeKey.js +1 -1
  10. package/dist/canvas/components/JsonTree/ScalarValueCell.cjs +2 -2
  11. package/dist/canvas/components/JsonTree/ScalarValueCell.d.ts.map +1 -1
  12. package/dist/canvas/components/JsonTree/ScalarValueCell.js +2 -2
  13. package/dist/canvas/components/JsonTree/buildJsonTree.cjs +2 -2
  14. package/dist/canvas/components/JsonTree/buildJsonTree.d.ts +3 -1
  15. package/dist/canvas/components/JsonTree/buildJsonTree.d.ts.map +1 -1
  16. package/dist/canvas/components/JsonTree/buildJsonTree.js +2 -2
  17. package/dist/canvas/components/NodeIOView/PanelTitleBar.cjs +5 -7
  18. package/dist/canvas/components/NodeIOView/PanelTitleBar.d.ts.map +1 -1
  19. package/dist/canvas/components/NodeIOView/PanelTitleBar.js +5 -7
  20. package/dist/canvas/components/StageNode/StageNode.styles.cjs +7 -0
  21. package/dist/canvas/components/StageNode/StageNode.styles.d.ts.map +1 -1
  22. package/dist/canvas/components/StageNode/StageNode.styles.js +7 -0
  23. package/dist/canvas/components/StageNode/StageNode.types.d.ts +0 -5
  24. package/dist/canvas/components/StageNode/StageNode.types.d.ts.map +1 -1
  25. package/dist/canvas/components/StageNode/hooks/useStageTaskDragHandler.cjs +28 -53
  26. package/dist/canvas/components/StageNode/hooks/useStageTaskDragHandler.d.ts +7 -10
  27. package/dist/canvas/components/StageNode/hooks/useStageTaskDragHandler.d.ts.map +1 -1
  28. package/dist/canvas/components/StageNode/hooks/useStageTaskDragHandler.js +29 -54
  29. package/dist/canvas/components/StageNode/hooks/useStageTasksByGroups.cjs +12 -39
  30. package/dist/canvas/components/StageNode/hooks/useStageTasksByGroups.d.ts +0 -15
  31. package/dist/canvas/components/StageNode/hooks/useStageTasksByGroups.d.ts.map +1 -1
  32. package/dist/canvas/components/StageNode/hooks/useStageTasksByGroups.js +12 -39
  33. package/dist/canvas/components/StageNode/tasks/DraggableTask.cjs +4 -47
  34. package/dist/canvas/components/StageNode/tasks/DraggableTask.d.ts +1 -1
  35. package/dist/canvas/components/StageNode/tasks/DraggableTask.d.ts.map +1 -1
  36. package/dist/canvas/components/StageNode/tasks/DraggableTask.js +6 -49
  37. package/dist/canvas/components/StageNode/tasks/DraggableTask.types.d.ts +0 -1
  38. package/dist/canvas/components/StageNode/tasks/DraggableTask.types.d.ts.map +1 -1
  39. package/dist/canvas/components/StageNode/tasks/SortableTaskRow.cjs +75 -0
  40. package/dist/canvas/components/StageNode/tasks/SortableTaskRow.d.ts +7 -0
  41. package/dist/canvas/components/StageNode/tasks/SortableTaskRow.d.ts.map +1 -0
  42. package/dist/canvas/components/StageNode/tasks/SortableTaskRow.js +41 -0
  43. package/dist/canvas/components/StageNode/tasks/StageNodeAdhocTaskGroups.cjs +77 -25
  44. package/dist/canvas/components/StageNode/tasks/StageNodeAdhocTaskGroups.d.ts +6 -3
  45. package/dist/canvas/components/StageNode/tasks/StageNodeAdhocTaskGroups.d.ts.map +1 -1
  46. package/dist/canvas/components/StageNode/tasks/StageNodeAdhocTaskGroups.js +78 -26
  47. package/dist/canvas/components/StageNode/tasks/StageNodeAllTaskGroups.cjs +29 -4
  48. package/dist/canvas/components/StageNode/tasks/StageNodeAllTaskGroups.d.ts.map +1 -1
  49. package/dist/canvas/components/StageNode/tasks/StageNodeAllTaskGroups.js +29 -4
  50. package/dist/canvas/components/StageNode/tasks/StageNodeEventDrivenTaskGroups.cjs +76 -24
  51. package/dist/canvas/components/StageNode/tasks/StageNodeEventDrivenTaskGroups.d.ts +6 -3
  52. package/dist/canvas/components/StageNode/tasks/StageNodeEventDrivenTaskGroups.d.ts.map +1 -1
  53. package/dist/canvas/components/StageNode/tasks/StageNodeEventDrivenTaskGroups.js +77 -25
  54. package/dist/canvas/components/StageNode/tasks/StageNodeSequentialTaskGroups.cjs +53 -54
  55. package/dist/canvas/components/StageNode/tasks/StageNodeSequentialTaskGroups.d.ts +2 -3
  56. package/dist/canvas/components/StageNode/tasks/StageNodeSequentialTaskGroups.d.ts.map +1 -1
  57. package/dist/canvas/components/StageNode/tasks/StageNodeSequentialTaskGroups.js +53 -54
  58. package/dist/canvas/components/StageNode/tasks/TaskContent.cjs +1 -0
  59. package/dist/canvas/components/StageNode/tasks/TaskContent.d.ts.map +1 -1
  60. package/dist/canvas/components/StageNode/tasks/TaskContent.js +1 -0
  61. package/dist/canvas/controls/NodeOutputModeSelect/NodeOutputModeSelect.cjs +6 -18
  62. package/dist/canvas/controls/NodeOutputModeSelect/NodeOutputModeSelect.d.ts.map +1 -1
  63. package/dist/canvas/controls/NodeOutputModeSelect/NodeOutputModeSelect.js +8 -20
  64. package/dist/canvas/locales/en.cjs +1 -1
  65. package/dist/canvas/locales/en.d.ts.map +1 -1
  66. package/dist/canvas/locales/en.js +1 -1
  67. package/dist/canvas/styles/tailwind.canvas.css +1 -1
  68. package/dist/canvas/utils/nodePropsEqual.cjs +1 -1
  69. package/dist/canvas/utils/nodePropsEqual.js +1 -1
  70. package/dist/core/index.cjs +5 -5
  71. package/dist/core/index.d.ts +1 -1
  72. package/dist/core/index.d.ts.map +1 -1
  73. package/dist/core/index.js +1 -1
  74. package/dist/core/tokens/jss/palette.cjs +1697 -3442
  75. package/dist/core/tokens/jss/palette.js +1688 -1
  76. package/package.json +4 -3
@@ -1,13 +1,38 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
- import { memo, useCallback } from "react";
2
+ import { DndContext, KeyboardSensor, PointerSensor, closestCenter, useSensor, useSensors } from "@dnd-kit/core";
3
+ import { SortableContext, sortableKeyboardCoordinates, verticalListSortingStrategy } from "@dnd-kit/sortable";
4
+ import { memo, useCallback, useMemo } from "react";
5
+ import { useStageTaskDragHandler } from "../hooks/useStageTaskDragHandler.js";
3
6
  import { StageItemsList, StageItemsSection } from "../StageNode.styles.js";
4
7
  import { StageItemsHeaderTitle } from "../shared/StageItemsHeaderTitle.js";
5
8
  import { useStageNodeLabels } from "../useStageNodeLabels.js";
6
9
  import { EventDrivenTaskItem } from "./EventDrivenTask.js";
7
- const StageNodeEventDrivenTaskGroupsInner = ({ props, eventDrivenTasks, isReadOnly, selectedTaskId, handleTaskClick, generateReplaceTaskMenuItemForTask, generateDeleteTaskMenuItemForTask })=>{
8
- const { id, execution, onTaskGroupModification, onReplaceTaskFromToolbox, loadingTaskIds, onTaskBreakpointToggle, getTaskContextMenuItems } = props;
10
+ import { SortableTaskRow } from "./SortableTaskRow.js";
11
+ import { getDivider } from "./StageNodeTaskUtilities.js";
12
+ import { StageTaskDragOverlay } from "./StageTaskDragOverlay.js";
13
+ const StageNodeEventDrivenTaskGroupsInner = ({ props, eventDrivenTaskGroups, isReadOnly, selectedTaskId, taskWidthStyle, handleTaskClick, handleReorderEventDrivenTasks, generateReplaceTaskMenuItemForTask, generateDeleteTaskMenuItemForTask })=>{
14
+ const { id, execution, onTaskGroupModification, onReplaceTaskFromToolbox, onTaskReorder, loadingTaskIds, onTaskBreakpointToggle, getTaskContextMenuItems } = props;
9
15
  const hasBuiltInTaskActions = !!(onReplaceTaskFromToolbox || onTaskGroupModification);
10
16
  const labels = useStageNodeLabels();
17
+ const isDragDisabled = !onTaskReorder || isReadOnly;
18
+ const rows = useMemo(()=>eventDrivenTaskGroups.flat(), [
19
+ eventDrivenTaskGroups
20
+ ]);
21
+ const rowIds = useMemo(()=>rows.map((task)=>task.id), [
22
+ rows
23
+ ]);
24
+ const { activeTask, handleDragStart, handleDragEnd, handleDragCancel } = useStageTaskDragHandler({
25
+ taskGroups: eventDrivenTaskGroups,
26
+ onTaskReorder: handleReorderEventDrivenTasks,
27
+ allowRegrouping: false
28
+ });
29
+ const sensors = useSensors(useSensor(PointerSensor, {
30
+ activationConstraint: {
31
+ distance: 3
32
+ }
33
+ }), useSensor(KeyboardSensor, {
34
+ coordinateGetter: sortableKeyboardCoordinates
35
+ }));
11
36
  const getEventDrivenContextMenuItems = useCallback((task)=>{
12
37
  const items = [];
13
38
  const replaceTaskMenuItem = generateReplaceTaskMenuItemForTask(task.id, false);
@@ -19,40 +44,67 @@ const StageNodeEventDrivenTaskGroupsInner = ({ props, eventDrivenTasks, isReadOn
19
44
  }) ?? [];
20
45
  items.push(...additionalMenuItems);
21
46
  const deleteTaskMenuItem = generateDeleteTaskMenuItemForTask(task.id);
22
- if (deleteTaskMenuItem) items.push(deleteTaskMenuItem);
47
+ if (deleteTaskMenuItem) {
48
+ if (items.length) items.push(getDivider());
49
+ items.push(deleteTaskMenuItem);
50
+ }
23
51
  return items;
24
52
  }, [
25
53
  generateReplaceTaskMenuItemForTask,
26
54
  getTaskContextMenuItems,
27
55
  generateDeleteTaskMenuItemForTask
28
56
  ]);
29
- if (0 === eventDrivenTasks.length) return null;
57
+ const taskList = /*#__PURE__*/ jsx(StageItemsList, {
58
+ "data-testid": `event-driven-tasks-list-${id}`,
59
+ className: isDragDisabled ? void 0 : 'nodrag nopan',
60
+ children: rows.map((task)=>{
61
+ const taskExecution = execution?.taskStatus?.[task.id];
62
+ const hasMenu = !isReadOnly && hasBuiltInTaskActions || (getTaskContextMenuItems?.({
63
+ task,
64
+ taskGroupType: 'event-driven',
65
+ isParallel: false
66
+ })?.length ?? 0) > 0;
67
+ const row = /*#__PURE__*/ jsx(EventDrivenTaskItem, {
68
+ task: task,
69
+ taskExecution: taskExecution,
70
+ isSelected: selectedTaskId === task.id,
71
+ onTaskClick: handleTaskClick,
72
+ isTaskLoading: loadingTaskIds?.has(task.id),
73
+ isReadOnly: isReadOnly,
74
+ onToggleBreakpoint: isReadOnly ? onTaskBreakpointToggle : void 0,
75
+ getContextMenuItems: hasMenu ? getEventDrivenContextMenuItems : void 0
76
+ }, task.id);
77
+ return isDragDisabled ? row : /*#__PURE__*/ jsx(SortableTaskRow, {
78
+ taskId: task.id,
79
+ children: row
80
+ }, task.id);
81
+ })
82
+ });
83
+ if (0 === rows.length) return null;
30
84
  return /*#__PURE__*/ jsxs(StageItemsSection, {
31
85
  children: [
32
86
  /*#__PURE__*/ jsx(StageItemsHeaderTitle, {
33
87
  title: labels.eventDrivenTasks,
34
88
  testId: `event-driven-tasks-header-${id}`
35
89
  }),
36
- /*#__PURE__*/ jsx(StageItemsList, {
37
- "data-testid": `event-driven-tasks-list-${id}`,
38
- children: eventDrivenTasks.map(({ task })=>{
39
- const taskExecution = execution?.taskStatus?.[task.id];
40
- const hasMenu = !isReadOnly && hasBuiltInTaskActions || (getTaskContextMenuItems?.({
41
- task,
42
- taskGroupType: 'event-driven',
43
- isParallel: false
44
- })?.length ?? 0) > 0;
45
- return /*#__PURE__*/ jsx(EventDrivenTaskItem, {
46
- task: task,
47
- taskExecution: taskExecution,
48
- isSelected: selectedTaskId === task.id,
49
- onTaskClick: handleTaskClick,
50
- isTaskLoading: loadingTaskIds?.has(task.id),
51
- isReadOnly: isReadOnly,
52
- onToggleBreakpoint: isReadOnly ? onTaskBreakpointToggle : void 0,
53
- getContextMenuItems: hasMenu ? getEventDrivenContextMenuItems : void 0
54
- }, task.id);
55
- })
90
+ isDragDisabled ? taskList : /*#__PURE__*/ jsxs(DndContext, {
91
+ collisionDetection: closestCenter,
92
+ sensors: sensors,
93
+ onDragStart: handleDragStart,
94
+ onDragEnd: handleDragEnd,
95
+ onDragCancel: handleDragCancel,
96
+ children: [
97
+ /*#__PURE__*/ jsx(SortableContext, {
98
+ items: rowIds,
99
+ strategy: verticalListSortingStrategy,
100
+ children: taskList
101
+ }),
102
+ /*#__PURE__*/ jsx(StageTaskDragOverlay, {
103
+ activeTask: activeTask,
104
+ isActiveTaskParallel: false,
105
+ taskWidthStyle: taskWidthStyle
106
+ })
107
+ ]
56
108
  })
57
109
  ]
58
110
  });
@@ -40,16 +40,16 @@ const external_useStageNodeLabels_cjs_namespaceObject = require("../useStageNode
40
40
  const external_DraggableTask_cjs_namespaceObject = require("./DraggableTask.cjs");
41
41
  const external_StageNodeTaskUtilities_cjs_namespaceObject = require("./StageNodeTaskUtilities.cjs");
42
42
  const external_StageTaskDragOverlay_cjs_namespaceObject = require("./StageTaskDragOverlay.cjs");
43
- const StageNodeSequentialTaskGroups = ({ props, sequentialTaskGroups, sequentialTasks, allTasks, isReadOnly, selectedTaskId, taskWidthStyle, handleTaskClick, handleReorderSequentialTasks, generateReplaceTaskMenuItemForTask })=>{
43
+ const StageNodeSequentialTaskGroups = ({ props, sequentialTaskGroups, allTasks, isReadOnly, selectedTaskId, taskWidthStyle, handleTaskClick, handleReorderSequentialTasks, generateReplaceTaskMenuItemForTask })=>{
44
44
  const { id, execution, onTaskGroupModification, onReplaceTaskFromToolbox, onTaskReorder, hideParallelOptions, loadingTaskIds, onTaskBreakpointToggle, getTaskContextMenuItems } = props;
45
45
  const hasBuiltInTaskActions = !!(onReplaceTaskFromToolbox || onTaskGroupModification);
46
+ const isDragDisabled = !onTaskReorder || isReadOnly;
46
47
  const labels = (0, external_useStageNodeLabels_cjs_namespaceObject.useStageNodeLabels)();
47
- const sequentialTaskIds = (0, external_react_namespaceObject.useMemo)(()=>sequentialTasks.map(({ task })=>task.id), [
48
- sequentialTasks
48
+ const sequentialTaskIds = (0, external_react_namespaceObject.useMemo)(()=>sequentialTaskGroups.flat().map((task)=>task.id), [
49
+ sequentialTaskGroups
49
50
  ]);
50
- const { activeDragId, activeSequentialTask, isActiveTaskParallel, projected, handleDragStart, handleDragMove, handleDragOver, handleDragEnd, handleDragCancel } = (0, useStageTaskDragHandler_cjs_namespaceObject.useStageTaskDragHandler)({
51
- sequentialTaskGroups,
52
- sequentialTasks,
51
+ const { activeTask, isActiveTaskParallel, handleDragStart, handleDragMove, handleDragEnd, handleDragCancel } = (0, useStageTaskDragHandler_cjs_namespaceObject.useStageTaskDragHandler)({
52
+ taskGroups: sequentialTaskGroups,
53
53
  onTaskReorder: handleReorderSequentialTasks
54
54
  });
55
55
  const handleTaskRegroup = (0, external_react_namespaceObject.useCallback)((groupModificationType, groupIndex, taskIndex)=>{
@@ -124,6 +124,50 @@ const StageNodeSequentialTaskGroups = ({ props, sequentialTaskGroups, sequential
124
124
  }), (0, core_namespaceObject.useSensor)(core_namespaceObject.KeyboardSensor, {
125
125
  coordinateGetter: sortable_namespaceObject.sortableKeyboardCoordinates
126
126
  }));
127
+ const taskList = /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_StageNode_styles_cjs_namespaceObject.StageItemsList, {
128
+ "data-testid": `sequential-tasks-list-${id}`,
129
+ className: "nodrag nopan",
130
+ children: sequentialTaskGroups.map((taskGroup, groupIndex)=>{
131
+ const isParallel = taskGroup.length > 1;
132
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(index_cjs_namespaceObject.Row, {
133
+ gap: apollo_core_namespaceObject.Spacing.SpacingS,
134
+ children: [
135
+ isParallel && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_StageNode_styles_cjs_namespaceObject.StageParallelBracket, {}),
136
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(external_StageNode_styles_cjs_namespaceObject.StageTaskGroupContainer, {
137
+ isParallel: isParallel,
138
+ children: [
139
+ isParallel && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_StageNode_styles_cjs_namespaceObject.StageParallelLabel, {
140
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
141
+ className: "text-xs",
142
+ children: labels.parallel
143
+ })
144
+ }),
145
+ taskGroup.map((task)=>{
146
+ const taskExecution = execution?.taskStatus?.[task.id];
147
+ const hasMenu = !isReadOnly && hasBuiltInTaskActions || (getTaskContextMenuItems?.({
148
+ task,
149
+ taskGroupType: 'sequential',
150
+ isParallel
151
+ })?.length ?? 0) > 0;
152
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_DraggableTask_cjs_namespaceObject.DraggableTask, {
153
+ task: task,
154
+ taskExecution: taskExecution,
155
+ isSelected: selectedTaskId === task.id,
156
+ isParallel: isParallel,
157
+ onTaskClick: handleTaskClick,
158
+ isDragDisabled: isDragDisabled,
159
+ isTaskLoading: loadingTaskIds?.has(task.id),
160
+ isReadOnly: isReadOnly,
161
+ onToggleBreakpoint: isReadOnly ? onTaskBreakpointToggle : void 0,
162
+ getContextMenuItems: hasMenu ? buildContextMenuItems : void 0
163
+ }, task.id);
164
+ })
165
+ ]
166
+ })
167
+ ]
168
+ }, `group-${groupIndex}`);
169
+ })
170
+ });
127
171
  if (0 === sequentialTaskGroups.length) return null;
128
172
  return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(external_StageNode_styles_cjs_namespaceObject.StageItemsSection, {
129
173
  children: [
@@ -131,66 +175,21 @@ const StageNodeSequentialTaskGroups = ({ props, sequentialTaskGroups, sequential
131
175
  title: labels.sequentialTasks,
132
176
  testId: `sequential-tasks-header-${id}`
133
177
  }),
134
- /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(core_namespaceObject.DndContext, {
178
+ isDragDisabled ? taskList : /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(core_namespaceObject.DndContext, {
135
179
  collisionDetection: core_namespaceObject.closestCenter,
136
180
  sensors: sensors,
137
181
  onDragStart: handleDragStart,
138
182
  onDragMove: handleDragMove,
139
- onDragOver: handleDragOver,
140
183
  onDragEnd: handleDragEnd,
141
184
  onDragCancel: handleDragCancel,
142
185
  children: [
143
186
  /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(sortable_namespaceObject.SortableContext, {
144
187
  items: sequentialTaskIds,
145
188
  strategy: sortable_namespaceObject.verticalListSortingStrategy,
146
- children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_StageNode_styles_cjs_namespaceObject.StageItemsList, {
147
- "data-testid": `sequential-tasks-list-${id}`,
148
- className: "nodrag nopan",
149
- children: sequentialTaskGroups.map((taskGroup, groupIndex)=>{
150
- const isParallel = taskGroup.length > 1;
151
- return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(index_cjs_namespaceObject.Row, {
152
- gap: apollo_core_namespaceObject.Spacing.SpacingS,
153
- children: [
154
- isParallel && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_StageNode_styles_cjs_namespaceObject.StageParallelBracket, {}),
155
- /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(external_StageNode_styles_cjs_namespaceObject.StageTaskGroupContainer, {
156
- isParallel: isParallel,
157
- children: [
158
- isParallel && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_StageNode_styles_cjs_namespaceObject.StageParallelLabel, {
159
- children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
160
- className: "text-xs",
161
- children: labels.parallel
162
- })
163
- }),
164
- taskGroup.map((task)=>{
165
- const taskExecution = execution?.taskStatus?.[task.id];
166
- const hasMenu = !isReadOnly && hasBuiltInTaskActions || (getTaskContextMenuItems?.({
167
- task,
168
- taskGroupType: 'sequential',
169
- isParallel
170
- })?.length ?? 0) > 0;
171
- return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_DraggableTask_cjs_namespaceObject.DraggableTask, {
172
- task: task,
173
- taskExecution: taskExecution,
174
- isSelected: selectedTaskId === task.id,
175
- isParallel: isParallel,
176
- onTaskClick: handleTaskClick,
177
- projectedDepth: task.id === activeDragId && projected ? projected.depth : void 0,
178
- isDragDisabled: !onTaskReorder || isReadOnly,
179
- isTaskLoading: loadingTaskIds?.has(task.id),
180
- isReadOnly: isReadOnly,
181
- onToggleBreakpoint: isReadOnly ? onTaskBreakpointToggle : void 0,
182
- getContextMenuItems: hasMenu ? buildContextMenuItems : void 0
183
- }, task.id);
184
- })
185
- ]
186
- })
187
- ]
188
- }, `group-${groupIndex}`);
189
- })
190
- })
189
+ children: taskList
191
190
  }),
192
191
  /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_StageTaskDragOverlay_cjs_namespaceObject.StageTaskDragOverlay, {
193
- activeTask: activeSequentialTask?.task,
192
+ activeTask: activeTask,
194
193
  isActiveTaskParallel: isActiveTaskParallel,
195
194
  taskWidthStyle: taskWidthStyle
196
195
  })
@@ -1,10 +1,9 @@
1
1
  import { type CSSProperties } from 'react';
2
2
  import type { NodeMenuItem } from '../../NodeContextMenu';
3
- import type { StageNodeProps, StageTaskGroup, StageTaskItem } from '../StageNode.types';
4
- export declare const StageNodeSequentialTaskGroups: ({ props, sequentialTaskGroups, sequentialTasks, allTasks, isReadOnly, selectedTaskId, taskWidthStyle, handleTaskClick, handleReorderSequentialTasks, generateReplaceTaskMenuItemForTask, }: {
3
+ import type { StageNodeProps, StageTaskItem } from '../StageNode.types';
4
+ export declare const StageNodeSequentialTaskGroups: ({ props, sequentialTaskGroups, allTasks, isReadOnly, selectedTaskId, taskWidthStyle, handleTaskClick, handleReorderSequentialTasks, generateReplaceTaskMenuItemForTask, }: {
5
5
  props: StageNodeProps;
6
6
  sequentialTaskGroups: StageTaskItem[][];
7
- sequentialTasks: StageTaskGroup[];
8
7
  allTasks: StageTaskItem[][];
9
8
  isReadOnly: boolean;
10
9
  selectedTaskId?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"StageNodeSequentialTaskGroups.d.ts","sourceRoot":"","sources":["../../../../../src/canvas/components/StageNode/tasks/StageNodeSequentialTaskGroups.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,aAAa,EAAwB,MAAM,OAAO,CAAC;AAMjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAS1D,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOxF,eAAO,MAAM,6BAA6B,GAAI,4LAW3C;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,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,mDAwNA,CAAC"}
1
+ {"version":3,"file":"StageNodeSequentialTaskGroups.d.ts","sourceRoot":"","sources":["../../../../../src/canvas/components/StageNode/tasks/StageNodeSequentialTaskGroups.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAE,KAAK,aAAa,EAAwB,MAAM,OAAO,CAAC;AAMjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAS1D,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOxE,eAAO,MAAM,6BAA6B,GAAI,2KAU3C;IACD,KAAK,EAAE,cAAc,CAAC;IACtB,oBAAoB,EAAE,aAAa,EAAE,EAAE,CAAC;IACxC,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,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,mDAyNA,CAAC"}
@@ -12,16 +12,16 @@ import { useStageNodeLabels } from "../useStageNodeLabels.js";
12
12
  import { DraggableTask } from "./DraggableTask.js";
13
13
  import { getContextMenuItems, getDivider } from "./StageNodeTaskUtilities.js";
14
14
  import { StageTaskDragOverlay } from "./StageTaskDragOverlay.js";
15
- const StageNodeSequentialTaskGroups = ({ props, sequentialTaskGroups, sequentialTasks, allTasks, isReadOnly, selectedTaskId, taskWidthStyle, handleTaskClick, handleReorderSequentialTasks, generateReplaceTaskMenuItemForTask })=>{
15
+ const StageNodeSequentialTaskGroups = ({ props, sequentialTaskGroups, allTasks, isReadOnly, selectedTaskId, taskWidthStyle, handleTaskClick, handleReorderSequentialTasks, generateReplaceTaskMenuItemForTask })=>{
16
16
  const { id, execution, onTaskGroupModification, onReplaceTaskFromToolbox, onTaskReorder, hideParallelOptions, loadingTaskIds, onTaskBreakpointToggle, getTaskContextMenuItems } = props;
17
17
  const hasBuiltInTaskActions = !!(onReplaceTaskFromToolbox || onTaskGroupModification);
18
+ const isDragDisabled = !onTaskReorder || isReadOnly;
18
19
  const labels = useStageNodeLabels();
19
- const sequentialTaskIds = useMemo(()=>sequentialTasks.map(({ task })=>task.id), [
20
- sequentialTasks
20
+ const sequentialTaskIds = useMemo(()=>sequentialTaskGroups.flat().map((task)=>task.id), [
21
+ sequentialTaskGroups
21
22
  ]);
22
- const { activeDragId, activeSequentialTask, isActiveTaskParallel, projected, handleDragStart, handleDragMove, handleDragOver, handleDragEnd, handleDragCancel } = useStageTaskDragHandler({
23
- sequentialTaskGroups,
24
- sequentialTasks,
23
+ const { activeTask, isActiveTaskParallel, handleDragStart, handleDragMove, handleDragEnd, handleDragCancel } = useStageTaskDragHandler({
24
+ taskGroups: sequentialTaskGroups,
25
25
  onTaskReorder: handleReorderSequentialTasks
26
26
  });
27
27
  const handleTaskRegroup = useCallback((groupModificationType, groupIndex, taskIndex)=>{
@@ -96,6 +96,50 @@ const StageNodeSequentialTaskGroups = ({ props, sequentialTaskGroups, sequential
96
96
  }), useSensor(KeyboardSensor, {
97
97
  coordinateGetter: sortableKeyboardCoordinates
98
98
  }));
99
+ const taskList = /*#__PURE__*/ jsx(StageItemsList, {
100
+ "data-testid": `sequential-tasks-list-${id}`,
101
+ className: "nodrag nopan",
102
+ children: sequentialTaskGroups.map((taskGroup, groupIndex)=>{
103
+ const isParallel = taskGroup.length > 1;
104
+ return /*#__PURE__*/ jsxs(Row, {
105
+ gap: Spacing.SpacingS,
106
+ children: [
107
+ isParallel && /*#__PURE__*/ jsx(StageParallelBracket, {}),
108
+ /*#__PURE__*/ jsxs(StageTaskGroupContainer, {
109
+ isParallel: isParallel,
110
+ children: [
111
+ isParallel && /*#__PURE__*/ jsx(StageParallelLabel, {
112
+ children: /*#__PURE__*/ jsx("span", {
113
+ className: "text-xs",
114
+ children: labels.parallel
115
+ })
116
+ }),
117
+ taskGroup.map((task)=>{
118
+ const taskExecution = execution?.taskStatus?.[task.id];
119
+ const hasMenu = !isReadOnly && hasBuiltInTaskActions || (getTaskContextMenuItems?.({
120
+ task,
121
+ taskGroupType: 'sequential',
122
+ isParallel
123
+ })?.length ?? 0) > 0;
124
+ return /*#__PURE__*/ jsx(DraggableTask, {
125
+ task: task,
126
+ taskExecution: taskExecution,
127
+ isSelected: selectedTaskId === task.id,
128
+ isParallel: isParallel,
129
+ onTaskClick: handleTaskClick,
130
+ isDragDisabled: isDragDisabled,
131
+ isTaskLoading: loadingTaskIds?.has(task.id),
132
+ isReadOnly: isReadOnly,
133
+ onToggleBreakpoint: isReadOnly ? onTaskBreakpointToggle : void 0,
134
+ getContextMenuItems: hasMenu ? buildContextMenuItems : void 0
135
+ }, task.id);
136
+ })
137
+ ]
138
+ })
139
+ ]
140
+ }, `group-${groupIndex}`);
141
+ })
142
+ });
99
143
  if (0 === sequentialTaskGroups.length) return null;
100
144
  return /*#__PURE__*/ jsxs(StageItemsSection, {
101
145
  children: [
@@ -103,66 +147,21 @@ const StageNodeSequentialTaskGroups = ({ props, sequentialTaskGroups, sequential
103
147
  title: labels.sequentialTasks,
104
148
  testId: `sequential-tasks-header-${id}`
105
149
  }),
106
- /*#__PURE__*/ jsxs(DndContext, {
150
+ isDragDisabled ? taskList : /*#__PURE__*/ jsxs(DndContext, {
107
151
  collisionDetection: closestCenter,
108
152
  sensors: sensors,
109
153
  onDragStart: handleDragStart,
110
154
  onDragMove: handleDragMove,
111
- onDragOver: handleDragOver,
112
155
  onDragEnd: handleDragEnd,
113
156
  onDragCancel: handleDragCancel,
114
157
  children: [
115
158
  /*#__PURE__*/ jsx(SortableContext, {
116
159
  items: sequentialTaskIds,
117
160
  strategy: verticalListSortingStrategy,
118
- children: /*#__PURE__*/ jsx(StageItemsList, {
119
- "data-testid": `sequential-tasks-list-${id}`,
120
- className: "nodrag nopan",
121
- children: sequentialTaskGroups.map((taskGroup, groupIndex)=>{
122
- const isParallel = taskGroup.length > 1;
123
- return /*#__PURE__*/ jsxs(Row, {
124
- gap: Spacing.SpacingS,
125
- children: [
126
- isParallel && /*#__PURE__*/ jsx(StageParallelBracket, {}),
127
- /*#__PURE__*/ jsxs(StageTaskGroupContainer, {
128
- isParallel: isParallel,
129
- children: [
130
- isParallel && /*#__PURE__*/ jsx(StageParallelLabel, {
131
- children: /*#__PURE__*/ jsx("span", {
132
- className: "text-xs",
133
- children: labels.parallel
134
- })
135
- }),
136
- taskGroup.map((task)=>{
137
- const taskExecution = execution?.taskStatus?.[task.id];
138
- const hasMenu = !isReadOnly && hasBuiltInTaskActions || (getTaskContextMenuItems?.({
139
- task,
140
- taskGroupType: 'sequential',
141
- isParallel
142
- })?.length ?? 0) > 0;
143
- return /*#__PURE__*/ jsx(DraggableTask, {
144
- task: task,
145
- taskExecution: taskExecution,
146
- isSelected: selectedTaskId === task.id,
147
- isParallel: isParallel,
148
- onTaskClick: handleTaskClick,
149
- projectedDepth: task.id === activeDragId && projected ? projected.depth : void 0,
150
- isDragDisabled: !onTaskReorder || isReadOnly,
151
- isTaskLoading: loadingTaskIds?.has(task.id),
152
- isReadOnly: isReadOnly,
153
- onToggleBreakpoint: isReadOnly ? onTaskBreakpointToggle : void 0,
154
- getContextMenuItems: hasMenu ? buildContextMenuItems : void 0
155
- }, task.id);
156
- })
157
- ]
158
- })
159
- ]
160
- }, `group-${groupIndex}`);
161
- })
162
- })
161
+ children: taskList
163
162
  }),
164
163
  /*#__PURE__*/ jsx(StageTaskDragOverlay, {
165
- activeTask: activeSequentialTask?.task,
164
+ activeTask: activeTask,
166
165
  isActiveTaskParallel: isActiveTaskParallel,
167
166
  taskWidthStyle: taskWidthStyle
168
167
  })
@@ -121,6 +121,7 @@ const TaskPlayButton = /*#__PURE__*/ (0, external_react_namespaceObject.memo)(({
121
121
  size: "icon",
122
122
  "data-testid": `stage-task-play-${taskId}`,
123
123
  onClick: handlePlayClick,
124
+ onPointerDown: (e)=>e.stopPropagation(),
124
125
  onMouseDown: (e)=>e.stopPropagation(),
125
126
  onKeyDown: (e)=>e.stopPropagation(),
126
127
  "aria-label": triggerTaskLabel,
@@ -1 +1 @@
1
- {"version":3,"file":"TaskContent.d.ts","sourceRoot":"","sources":["../../../../../src/canvas/components/StageNode/tasks/TaskContent.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAuE5E,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,aAAa,CAAC;IACpB,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACnC;AAED,eAAO,MAAM,WAAW,yGAC6C,gBAAgB,6CAoKpF,CAAC"}
1
+ {"version":3,"file":"TaskContent.d.ts","sourceRoot":"","sources":["../../../../../src/canvas/components/StageNode/tasks/TaskContent.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAyE5E,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,aAAa,CAAC;IACpB,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACnC;AAED,eAAO,MAAM,WAAW,yGAC6C,gBAAgB,6CAoKpF,CAAC"}
@@ -83,6 +83,7 @@ const TaskPlayButton = /*#__PURE__*/ memo(({ taskId, onTaskPlay })=>{
83
83
  size: "icon",
84
84
  "data-testid": `stage-task-play-${taskId}`,
85
85
  onClick: handlePlayClick,
86
+ onPointerDown: (e)=>e.stopPropagation(),
86
87
  onMouseDown: (e)=>e.stopPropagation(),
87
88
  onKeyDown: (e)=>e.stopPropagation(),
88
89
  "aria-label": triggerTaskLabel,
@@ -69,18 +69,6 @@ const MODE_DEFS = [
69
69
  id: "canvas.node_mode_select.simulated_description",
70
70
  message: 'Generate a response dynamically using an LLM'
71
71
  }
72
- },
73
- {
74
- value: 'disabled',
75
- icon: external_lucide_react_namespaceObject.CircleOff,
76
- label: {
77
- id: 'canvas.node_mode_select.disabled_label',
78
- message: 'Skip node'
79
- },
80
- description: {
81
- id: "canvas.node_mode_select.disabled_description",
82
- message: "Don't execute this node"
83
- }
84
72
  }
85
73
  ];
86
74
  const DEFAULT_NODE_OUTPUT_MODES = MODE_DEFS.map((mode)=>({
@@ -112,24 +100,24 @@ function NodeOutputModeSelect({ value, onChange, options, disabled = false, clas
112
100
  /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(apollo_wind_namespaceObject.DropdownMenuTrigger, {
113
101
  asChild: true,
114
102
  disabled: disabled,
115
- children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("button", {
116
- type: "button",
103
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(apollo_wind_namespaceObject.Button, {
104
+ variant: "ghost",
105
+ size: "3xs",
117
106
  disabled: disabled,
118
107
  "aria-label": _({
119
108
  id: 'canvas.node_mode_select.node_mode',
120
- message: 'Node mode'
109
+ message: 'Node output mode'
121
110
  }),
122
- className: (0, apollo_wind_namespaceObject.cn)('flex cursor-pointer items-center gap-1.5 rounded-full border border-border px-2 py-0.5 text-[11px] font-medium text-foreground-muted transition hover:bg-surface-overlay hover:text-foreground', disabled && 'cursor-default opacity-60 hover:bg-transparent hover:text-foreground-muted', className),
111
+ className: (0, apollo_wind_namespaceObject.cn)('min-w-12 gap-1.5 rounded-full border border-border px-2 text-[11px] font-medium text-foreground-muted hover:bg-surface-overlay hover:text-foreground [&_svg]:size-2.5', className),
123
112
  children: [
124
113
  CurrentIcon && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(CurrentIcon, {
125
- size: 10,
126
114
  className: "text-foreground-subtle"
127
115
  }),
128
116
  /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
117
+ className: "min-w-0 flex-1 truncate shrink-0",
129
118
  children: current?.label
130
119
  }),
131
120
  /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_lucide_react_namespaceObject.ChevronDown, {
132
- size: 10,
133
121
  className: "text-foreground-subtle"
134
122
  })
135
123
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"NodeOutputModeSelect.d.ts","sourceRoot":"","sources":["../../../../src/canvas/controls/NodeOutputModeSelect/NodeOutputModeSelect.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK/C,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAiDD,eAAO,MAAM,yBAAyB,EAAE,oBAAoB,EAKzD,CAAC;AAGJ,wBAAgB,yBAAyB,IAAI,oBAAoB,EAAE,CAYlE;AAED,MAAM,WAAW,yBAAyB;IAExC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAElC,OAAO,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAGD,wBAAgB,oBAAoB,CAAC,EACnC,KAAK,EACL,QAAQ,EACR,OAAO,EACP,QAAgB,EAChB,SAAS,GACV,EAAE,yBAAyB,2CAiE3B"}
1
+ {"version":3,"file":"NodeOutputModeSelect.d.ts","sourceRoot":"","sources":["../../../../src/canvas/controls/NodeOutputModeSelect/NodeOutputModeSelect.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK/C,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAwCD,eAAO,MAAM,yBAAyB,EAAE,oBAAoB,EAKzD,CAAC;AAGJ,wBAAgB,yBAAyB,IAAI,oBAAoB,EAAE,CAYlE;AAED,MAAM,WAAW,yBAAyB;IAExC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAElC,OAAO,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAGD,wBAAgB,oBAAoB,CAAC,EACnC,KAAK,EACL,QAAQ,EACR,OAAO,EACP,QAAgB,EAChB,SAAS,GACV,EAAE,yBAAyB,2CAgE3B"}
@@ -1,6 +1,6 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
- import { DropdownMenu, DropdownMenuContent, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuTrigger, cn } from "@uipath/apollo-wind";
3
- import { ChevronDown, CircleDot, CircleOff, FileBracesCorner, Sparkles } from "lucide-react";
2
+ import { Button, DropdownMenu, DropdownMenuContent, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuTrigger, cn } from "@uipath/apollo-wind";
3
+ import { ChevronDown, CircleDot, FileBracesCorner, Sparkles } from "lucide-react";
4
4
  import { useMemo } from "react";
5
5
  import { useSafeLingui } from "../../../i18n/index.js";
6
6
  const MODE_DEFS = [
@@ -39,18 +39,6 @@ const MODE_DEFS = [
39
39
  id: "canvas.node_mode_select.simulated_description",
40
40
  message: 'Generate a response dynamically using an LLM'
41
41
  }
42
- },
43
- {
44
- value: 'disabled',
45
- icon: CircleOff,
46
- label: {
47
- id: 'canvas.node_mode_select.disabled_label',
48
- message: 'Skip node'
49
- },
50
- description: {
51
- id: "canvas.node_mode_select.disabled_description",
52
- message: "Don't execute this node"
53
- }
54
42
  }
55
43
  ];
56
44
  const DEFAULT_NODE_OUTPUT_MODES = MODE_DEFS.map((mode)=>({
@@ -82,24 +70,24 @@ function NodeOutputModeSelect({ value, onChange, options, disabled = false, clas
82
70
  /*#__PURE__*/ jsx(DropdownMenuTrigger, {
83
71
  asChild: true,
84
72
  disabled: disabled,
85
- children: /*#__PURE__*/ jsxs("button", {
86
- type: "button",
73
+ children: /*#__PURE__*/ jsxs(Button, {
74
+ variant: "ghost",
75
+ size: "3xs",
87
76
  disabled: disabled,
88
77
  "aria-label": _({
89
78
  id: 'canvas.node_mode_select.node_mode',
90
- message: 'Node mode'
79
+ message: 'Node output mode'
91
80
  }),
92
- className: cn('flex cursor-pointer items-center gap-1.5 rounded-full border border-border px-2 py-0.5 text-[11px] font-medium text-foreground-muted transition hover:bg-surface-overlay hover:text-foreground', disabled && 'cursor-default opacity-60 hover:bg-transparent hover:text-foreground-muted', className),
81
+ className: cn('min-w-12 gap-1.5 rounded-full border border-border px-2 text-[11px] font-medium text-foreground-muted hover:bg-surface-overlay hover:text-foreground [&_svg]:size-2.5', className),
93
82
  children: [
94
83
  CurrentIcon && /*#__PURE__*/ jsx(CurrentIcon, {
95
- size: 10,
96
84
  className: "text-foreground-subtle"
97
85
  }),
98
86
  /*#__PURE__*/ jsx("span", {
87
+ className: "min-w-0 flex-1 truncate shrink-0",
99
88
  children: current?.label
100
89
  }),
101
90
  /*#__PURE__*/ jsx(ChevronDown, {
102
- size: 10,
103
91
  className: "text-foreground-subtle"
104
92
  })
105
93
  ]