@uipath/apollo-react 3.63.1 → 3.64.0-pr431.cb6b0b8

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 (63) hide show
  1. package/dist/canvas/components/CanvasPerformance.stories.cjs +361 -0
  2. package/dist/canvas/components/CanvasPerformance.stories.d.ts +6 -0
  3. package/dist/canvas/components/CanvasPerformance.stories.d.ts.map +1 -0
  4. package/dist/canvas/components/CanvasPerformance.stories.js +324 -0
  5. package/dist/canvas/components/NodePropertiesPanel/hooks/index.cjs +4 -1
  6. package/dist/canvas/components/NodePropertiesPanel/hooks/index.d.ts +1 -1
  7. package/dist/canvas/components/NodePropertiesPanel/hooks/index.d.ts.map +1 -1
  8. package/dist/canvas/components/NodePropertiesPanel/hooks/index.js +2 -2
  9. package/dist/canvas/components/NodePropertiesPanel/hooks/useNodeSelection.cjs +27 -6
  10. package/dist/canvas/components/NodePropertiesPanel/hooks/useNodeSelection.d.ts +3 -0
  11. package/dist/canvas/components/NodePropertiesPanel/hooks/useNodeSelection.d.ts.map +1 -1
  12. package/dist/canvas/components/NodePropertiesPanel/hooks/useNodeSelection.js +23 -5
  13. package/dist/canvas/components/StageNode/DraggableTask.cjs +14 -5
  14. package/dist/canvas/components/StageNode/DraggableTask.d.ts +1 -1
  15. package/dist/canvas/components/StageNode/DraggableTask.d.ts.map +1 -1
  16. package/dist/canvas/components/StageNode/DraggableTask.js +14 -5
  17. package/dist/canvas/components/StageNode/DraggableTask.types.d.ts +3 -3
  18. package/dist/canvas/components/StageNode/DraggableTask.types.d.ts.map +1 -1
  19. package/dist/canvas/components/StageNode/StageEdge.cjs +34 -11
  20. package/dist/canvas/components/StageNode/StageEdge.d.ts +2 -1
  21. package/dist/canvas/components/StageNode/StageEdge.d.ts.map +1 -1
  22. package/dist/canvas/components/StageNode/StageEdge.js +35 -12
  23. package/dist/canvas/components/StageNode/StageNode.cjs +100 -47
  24. package/dist/canvas/components/StageNode/StageNode.d.ts +1 -1
  25. package/dist/canvas/components/StageNode/StageNode.d.ts.map +1 -1
  26. package/dist/canvas/components/StageNode/StageNode.js +106 -53
  27. package/dist/canvas/components/StageNode/StageNode.stories.cjs +321 -158
  28. package/dist/canvas/components/StageNode/StageNode.stories.d.ts +1 -0
  29. package/dist/canvas/components/StageNode/StageNode.stories.d.ts.map +1 -1
  30. package/dist/canvas/components/StageNode/StageNode.stories.js +314 -154
  31. package/dist/canvas/components/StageNode/StageNode.stories.utils.cjs +42 -0
  32. package/dist/canvas/components/StageNode/StageNode.stories.utils.d.ts +3 -0
  33. package/dist/canvas/components/StageNode/StageNode.stories.utils.d.ts.map +1 -0
  34. package/dist/canvas/components/StageNode/StageNode.stories.utils.js +8 -0
  35. package/dist/canvas/components/StageNode/StageNode.styles.cjs +35 -2
  36. package/dist/canvas/components/StageNode/StageNode.styles.d.ts +8 -0
  37. package/dist/canvas/components/StageNode/StageNode.styles.d.ts.map +1 -1
  38. package/dist/canvas/components/StageNode/StageNode.styles.js +28 -1
  39. package/dist/canvas/components/StageNode/StageNode.types.cjs +26 -1
  40. package/dist/canvas/components/StageNode/StageNode.types.d.ts +23 -1
  41. package/dist/canvas/components/StageNode/StageNode.types.d.ts.map +1 -1
  42. package/dist/canvas/components/StageNode/StageNode.types.js +9 -0
  43. package/dist/canvas/components/StageNode/StageTaskDragOverlay.cjs +68 -0
  44. package/dist/canvas/components/StageNode/StageTaskDragOverlay.d.ts +3 -0
  45. package/dist/canvas/components/StageNode/StageTaskDragOverlay.d.ts.map +1 -0
  46. package/dist/canvas/components/StageNode/StageTaskDragOverlay.js +34 -0
  47. package/dist/canvas/components/StageNode/TaskMenu.cjs +13 -17
  48. package/dist/canvas/components/StageNode/TaskMenu.d.ts +1 -2
  49. package/dist/canvas/components/StageNode/TaskMenu.d.ts.map +1 -1
  50. package/dist/canvas/components/StageNode/TaskMenu.js +14 -18
  51. package/dist/canvas/icons/ExitConditionIcon.cjs +49 -0
  52. package/dist/canvas/icons/ExitConditionIcon.d.ts +5 -0
  53. package/dist/canvas/icons/ExitConditionIcon.d.ts.map +1 -0
  54. package/dist/canvas/icons/ExitConditionIcon.js +15 -0
  55. package/dist/canvas/icons/ReturnToOriginIcon.cjs +50 -0
  56. package/dist/canvas/icons/ReturnToOriginIcon.d.ts +5 -0
  57. package/dist/canvas/icons/ReturnToOriginIcon.d.ts.map +1 -0
  58. package/dist/canvas/icons/ReturnToOriginIcon.js +16 -0
  59. package/dist/canvas/icons/index.cjs +8 -0
  60. package/dist/canvas/icons/index.d.ts +2 -0
  61. package/dist/canvas/icons/index.d.ts.map +1 -1
  62. package/dist/canvas/icons/index.js +3 -1
  63. package/package.json +2 -2
@@ -40,6 +40,7 @@ const jsx_runtime_namespaceObject = require("react/jsx-runtime");
40
40
  const styled_namespaceObject = require("@emotion/styled");
41
41
  var styled_default = /*#__PURE__*/ __webpack_require__.n(styled_namespaceObject);
42
42
  const react_cjs_namespaceObject = require("../../xyflow/react.cjs");
43
+ const external_react_namespaceObject = require("react");
43
44
  const StageEdgeLabel = styled_default().div`
44
45
  position: absolute;
45
46
  color: var(--uix-canvas-foreground);
@@ -57,6 +58,9 @@ const StageEdgeLabel = styled_default().div`
57
58
  border-color: var(--uix-canvas-border-hover);
58
59
  }
59
60
  `;
61
+ function stageEdgeGeometryEquality(previous, next) {
62
+ return previous.sourceX === next.sourceX && previous.sourceY === next.sourceY && previous.targetX === next.targetX && previous.targetY === next.targetY;
63
+ }
60
64
  function getArrowFromBezier(path, arrowSize) {
61
65
  const pathEl = document.createElementNS('http://www.w3.org/2000/svg', 'path');
62
66
  pathEl.setAttribute('d', path);
@@ -70,19 +74,13 @@ function getArrowFromBezier(path, arrowSize) {
70
74
  angle
71
75
  };
72
76
  }
73
- function StageEdge({ sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, selected, style, stroke = 'var(--uix-canvas-foreground-emp)', strokeWidth = 2, arrowSize = 8, ...rest }) {
74
- const sourceNode = (0, react_cjs_namespaceObject.useInternalNode)(rest.source);
75
- const targetNode = (0, react_cjs_namespaceObject.useInternalNode)(rest.target);
76
- const sourceNodeX = sourceNode ? sourceNode.position.x + (sourceNode.measured?.width ?? 0) : sourceX;
77
- const sourceNodeY = sourceNode?.position.y ? sourceNode.position.y + 32 : sourceY;
78
- const targetNodeX = targetNode?.position.x ?? targetX;
79
- const targetNodeY = targetNode?.position.y ? targetNode.position.y + 32 : targetY;
77
+ function StageEdgeInner({ geometry, sourcePosition, targetPosition, selected, style, stroke = 'var(--uix-canvas-foreground-emp)', strokeWidth = 2, arrowSize = 8, ...rest }) {
80
78
  const [pathData, labelX, labelY, _ex, _ey] = (0, react_cjs_namespaceObject.getSmoothStepPath)({
81
- sourceX: sourceNodeX,
82
- sourceY: sourceNodeY,
79
+ sourceX: geometry.sourceX,
80
+ sourceY: geometry.sourceY,
83
81
  sourcePosition,
84
- targetX: targetNodeX - 1,
85
- targetY: targetNodeY,
82
+ targetX: geometry.targetX - 1,
83
+ targetY: geometry.targetY,
86
84
  targetPosition,
87
85
  borderRadius: 40
88
86
  });
@@ -141,6 +139,31 @@ function StageEdge({ sourceX, sourceY, targetX, targetY, sourcePosition, targetP
141
139
  ]
142
140
  });
143
141
  }
142
+ const StageEdgeInnerMemo = /*#__PURE__*/ (0, external_react_namespaceObject.memo)(StageEdgeInner);
143
+ function StageEdgeComponent({ sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, selected, style, stroke, strokeWidth, arrowSize, ...rest }) {
144
+ const geometry = (0, react_cjs_namespaceObject.useStore)((state)=>{
145
+ const sourceNode = state.nodeLookup.get(rest.source);
146
+ const targetNode = state.nodeLookup.get(rest.target);
147
+ return {
148
+ sourceX: sourceNode ? sourceNode.position.x + (sourceNode.measured?.width ?? 0) : sourceX,
149
+ sourceY: sourceNode ? sourceNode.position.y + 32 : sourceY,
150
+ targetX: targetNode?.position.x ?? targetX,
151
+ targetY: targetNode ? targetNode.position.y + 32 : targetY
152
+ };
153
+ }, stageEdgeGeometryEquality);
154
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(StageEdgeInnerMemo, {
155
+ geometry: geometry,
156
+ sourcePosition: sourcePosition,
157
+ targetPosition: targetPosition,
158
+ selected: selected,
159
+ style: style,
160
+ stroke: stroke,
161
+ strokeWidth: strokeWidth,
162
+ arrowSize: arrowSize,
163
+ ...rest
164
+ });
165
+ }
166
+ const StageEdge = /*#__PURE__*/ (0, external_react_namespaceObject.memo)(StageEdgeComponent);
144
167
  exports.StageEdge = __webpack_exports__.StageEdge;
145
168
  exports.StageEdgeLabel = __webpack_exports__.StageEdgeLabel;
146
169
  for(var __rspack_i in __webpack_exports__)if (-1 === [
@@ -8,6 +8,7 @@ type Props = EdgeProps & {
8
8
  strokeWidth?: number;
9
9
  arrowSize?: number;
10
10
  };
11
- export declare function StageEdge({ sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, selected, style, stroke, strokeWidth, arrowSize, ...rest }: Props): import("react/jsx-runtime").JSX.Element;
11
+ declare function StageEdgeComponent({ sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, selected, style, stroke, strokeWidth, arrowSize, ...rest }: Props): import("react/jsx-runtime").JSX.Element;
12
+ export declare const StageEdge: import("react").MemoExoticComponent<typeof StageEdgeComponent>;
12
13
  export {};
13
14
  //# sourceMappingURL=StageEdge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StageEdge.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/StageNode/StageEdge.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAC;AAO1E,eAAO,MAAM,cAAc;;;yGAgB1B,CAAC;AAEF,KAAK,KAAK,GAAG,SAAS,GAAG;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAkBF,wBAAgB,SAAS,CAAC,EACxB,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,cAAc,EACd,cAAc,EACd,QAAQ,EACR,KAAK,EACL,MAA2C,EAC3C,WAAe,EACf,SAAa,EACb,GAAG,IAAI,EACR,EAAE,KAAK,2CAiFP"}
1
+ {"version":3,"file":"StageEdge.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/StageNode/StageEdge.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,0CAA0C,CAAC;AAQ1F,eAAO,MAAM,cAAc;;;yGAgB1B,CAAC;AAEF,KAAK,KAAK,GAAG,SAAS,GAAG;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AA4HF,iBAAS,kBAAkB,CAAC,EAC1B,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,cAAc,EACd,cAAc,EACd,QAAQ,EACR,KAAK,EACL,MAAM,EACN,WAAW,EACX,SAAS,EACT,GAAG,IAAI,EACR,EAAE,KAAK,2CA0BP;AAED,eAAO,MAAM,SAAS,gEAA2B,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
2
  import styled from "@emotion/styled";
3
- import { EdgeLabelRenderer, getSmoothStepPath, useInternalNode } from "../../xyflow/react.js";
3
+ import { EdgeLabelRenderer, getSmoothStepPath, useStore } from "../../xyflow/react.js";
4
+ import { memo } from "react";
4
5
  const StageEdgeLabel = styled.div`
5
6
  position: absolute;
6
7
  color: var(--uix-canvas-foreground);
@@ -18,6 +19,9 @@ const StageEdgeLabel = styled.div`
18
19
  border-color: var(--uix-canvas-border-hover);
19
20
  }
20
21
  `;
22
+ function stageEdgeGeometryEquality(previous, next) {
23
+ return previous.sourceX === next.sourceX && previous.sourceY === next.sourceY && previous.targetX === next.targetX && previous.targetY === next.targetY;
24
+ }
21
25
  function getArrowFromBezier(path, arrowSize) {
22
26
  const pathEl = document.createElementNS('http://www.w3.org/2000/svg', 'path');
23
27
  pathEl.setAttribute('d', path);
@@ -31,19 +35,13 @@ function getArrowFromBezier(path, arrowSize) {
31
35
  angle
32
36
  };
33
37
  }
34
- function StageEdge({ sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, selected, style, stroke = 'var(--uix-canvas-foreground-emp)', strokeWidth = 2, arrowSize = 8, ...rest }) {
35
- const sourceNode = useInternalNode(rest.source);
36
- const targetNode = useInternalNode(rest.target);
37
- const sourceNodeX = sourceNode ? sourceNode.position.x + (sourceNode.measured?.width ?? 0) : sourceX;
38
- const sourceNodeY = sourceNode?.position.y ? sourceNode.position.y + 32 : sourceY;
39
- const targetNodeX = targetNode?.position.x ?? targetX;
40
- const targetNodeY = targetNode?.position.y ? targetNode.position.y + 32 : targetY;
38
+ function StageEdgeInner({ geometry, sourcePosition, targetPosition, selected, style, stroke = 'var(--uix-canvas-foreground-emp)', strokeWidth = 2, arrowSize = 8, ...rest }) {
41
39
  const [pathData, labelX, labelY, _ex, _ey] = getSmoothStepPath({
42
- sourceX: sourceNodeX,
43
- sourceY: sourceNodeY,
40
+ sourceX: geometry.sourceX,
41
+ sourceY: geometry.sourceY,
44
42
  sourcePosition,
45
- targetX: targetNodeX - 1,
46
- targetY: targetNodeY,
43
+ targetX: geometry.targetX - 1,
44
+ targetY: geometry.targetY,
47
45
  targetPosition,
48
46
  borderRadius: 40
49
47
  });
@@ -102,4 +100,29 @@ function StageEdge({ sourceX, sourceY, targetX, targetY, sourcePosition, targetP
102
100
  ]
103
101
  });
104
102
  }
103
+ const StageEdgeInnerMemo = /*#__PURE__*/ memo(StageEdgeInner);
104
+ function StageEdgeComponent({ sourceX, sourceY, targetX, targetY, sourcePosition, targetPosition, selected, style, stroke, strokeWidth, arrowSize, ...rest }) {
105
+ const geometry = useStore((state)=>{
106
+ const sourceNode = state.nodeLookup.get(rest.source);
107
+ const targetNode = state.nodeLookup.get(rest.target);
108
+ return {
109
+ sourceX: sourceNode ? sourceNode.position.x + (sourceNode.measured?.width ?? 0) : sourceX,
110
+ sourceY: sourceNode ? sourceNode.position.y + 32 : sourceY,
111
+ targetX: targetNode?.position.x ?? targetX,
112
+ targetY: targetNode ? targetNode.position.y + 32 : targetY
113
+ };
114
+ }, stageEdgeGeometryEquality);
115
+ return /*#__PURE__*/ jsx(StageEdgeInnerMemo, {
116
+ geometry: geometry,
117
+ sourcePosition: sourcePosition,
118
+ targetPosition: targetPosition,
119
+ selected: selected,
120
+ style: style,
121
+ stroke: stroke,
122
+ strokeWidth: strokeWidth,
123
+ arrowSize: arrowSize,
124
+ ...rest
125
+ });
126
+ }
127
+ const StageEdge = /*#__PURE__*/ memo(StageEdgeComponent);
105
128
  export { StageEdge, StageEdgeLabel };
@@ -34,7 +34,7 @@ const index_cjs_namespaceObject = require("../../layouts/index.cjs");
34
34
  const react_cjs_namespaceObject = require("../../xyflow/react.cjs");
35
35
  const external_material_index_cjs_namespaceObject = require("../../../material/index.cjs");
36
36
  const external_react_namespaceObject = require("react");
37
- const external_react_dom_namespaceObject = require("react-dom");
37
+ const external_icons_index_cjs_namespaceObject = require("../../icons/index.cjs");
38
38
  const ConnectedHandlesContext_cjs_namespaceObject = require("../BaseCanvas/ConnectedHandlesContext.cjs");
39
39
  const useButtonHandles_cjs_namespaceObject = require("../ButtonHandle/useButtonHandles.cjs");
40
40
  const external_ExecutionStatusIcon_index_cjs_namespaceObject = require("../ExecutionStatusIcon/index.cjs");
@@ -44,9 +44,33 @@ const hooks_index_cjs_namespaceObject = require("../NodePropertiesPanel/hooks/in
44
44
  const external_Toolbox_index_cjs_namespaceObject = require("../Toolbox/index.cjs");
45
45
  const external_DraggableTask_cjs_namespaceObject = require("./DraggableTask.cjs");
46
46
  const external_StageNode_styles_cjs_namespaceObject = require("./StageNode.styles.cjs");
47
+ const external_StageNode_types_cjs_namespaceObject = require("./StageNode.types.cjs");
47
48
  const external_StageNode_utils_cjs_namespaceObject = require("./StageNode.utils.cjs");
48
49
  const external_StageNodeTaskUtilities_cjs_namespaceObject = require("./StageNodeTaskUtilities.cjs");
49
- const StageNodeComponent = (props)=>{
50
+ const external_StageTaskDragOverlay_cjs_namespaceObject = require("./StageTaskDragOverlay.cjs");
51
+ const CHIP_ICONS = {
52
+ [external_StageNode_types_cjs_namespaceObject.StageHeaderChipType.Entry]: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_icons_index_cjs_namespaceObject.EntryConditionIcon, {
53
+ w: apollo_core_namespaceObject.Icon.IconXs,
54
+ h: apollo_core_namespaceObject.Icon.IconXs
55
+ }),
56
+ [external_StageNode_types_cjs_namespaceObject.StageHeaderChipType.Exit]: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_icons_index_cjs_namespaceObject.ExitConditionIcon, {
57
+ w: apollo_core_namespaceObject.Icon.IconXs,
58
+ h: apollo_core_namespaceObject.Icon.IconXs
59
+ }),
60
+ [external_StageNode_types_cjs_namespaceObject.StageHeaderChipType.ReturnToOrigin]: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_icons_index_cjs_namespaceObject.ReturnToOriginIcon, {
61
+ w: apollo_core_namespaceObject.Icon.IconXs,
62
+ h: apollo_core_namespaceObject.Icon.IconXs
63
+ }),
64
+ [external_StageNode_types_cjs_namespaceObject.StageHeaderChipType.CaseExit]: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_material_index_cjs_namespaceObject.ApIcon, {
65
+ name: "close",
66
+ size: apollo_core_namespaceObject.Icon.IconXs
67
+ }),
68
+ [external_StageNode_types_cjs_namespaceObject.StageHeaderChipType.CaseCompletion]: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_material_index_cjs_namespaceObject.ApIcon, {
69
+ name: "check-mark",
70
+ size: apollo_core_namespaceObject.Icon.IconXs
71
+ })
72
+ };
73
+ const StageNodeInner = (props)=>{
50
74
  const { dragging, selected, id, width, execution, stageDetails, addTaskLabel = 'Add task', addTaskLoading = false, replaceTaskLabel = 'Replace task', taskOptions = [], menuItems, pendingReplaceTask, onStageClick, onTaskAdd, onAddTaskFromToolbox, onTaskToolboxSearch, onTaskClick, onTaskGroupModification, onStageTitleChange, onTaskReorder, onReplaceTaskFromToolbox, onTaskPlay } = props;
51
75
  const taskWidth = width ? width - external_StageNode_styles_cjs_namespaceObject.STAGE_CONTENT_INSET : void 0;
52
76
  const tasks = (0, external_react_namespaceObject.useMemo)(()=>stageDetails?.tasks || [], [
@@ -66,9 +90,6 @@ const StageNodeComponent = (props)=>{
66
90
  const status = execution?.stageStatus?.status;
67
91
  const statusLabel = execution?.stageStatus?.label;
68
92
  const stageDuration = execution?.stageStatus?.duration;
69
- const reGroupTaskFunction = (0, external_react_namespaceObject.useMemo)(()=>onTaskGroupModification || (()=>{}), [
70
- onTaskGroupModification
71
- ]);
72
93
  const isStageTitleEditable = !!onStageTitleChange && !isReadOnly;
73
94
  const [isHovered, setIsHovered] = (0, external_react_namespaceObject.useState)(false);
74
95
  const [label, setLabel] = (0, external_react_namespaceObject.useState)(props.stageDetails.label);
@@ -85,6 +106,7 @@ const StageNodeComponent = (props)=>{
85
106
  taskIndex: -1
86
107
  });
87
108
  const isConnecting = (0, react_cjs_namespaceObject.useStore)((state)=>!!state.connectionClickStartHandle);
109
+ const storeApi = (0, react_cjs_namespaceObject.useStoreApi)();
88
110
  const connectedHandleIds = (0, ConnectedHandlesContext_cjs_namespaceObject.useConnectedHandles)(id);
89
111
  const [isAddingTask, setIsAddingTask] = (0, external_react_namespaceObject.useState)(false);
90
112
  const [isReplacingTask, setIsReplacingTask] = (0, external_react_namespaceObject.useState)(false);
@@ -124,7 +146,6 @@ const StageNodeComponent = (props)=>{
124
146
  tasks,
125
147
  activeDragId
126
148
  ]);
127
- const { zoom } = (0, react_cjs_namespaceObject.useViewport)();
128
149
  const projected = (0, external_react_namespaceObject.useMemo)(()=>{
129
150
  if (!activeDragId || !overId) return null;
130
151
  return (0, external_StageNode_utils_cjs_namespaceObject.getProjection)(tasks, activeDragId, overId, offsetLeft);
@@ -207,18 +228,26 @@ const StageNodeComponent = (props)=>{
207
228
  handleStageTitleClickToSave,
208
229
  isStageTitleEditing
209
230
  ]);
210
- const contextMenuItems = (0, external_react_namespaceObject.useCallback)((isParallel, groupIndex, taskIndex, tasksLength, taskGroupLength, isAboveParallel, isBelowParallel)=>{
231
+ const hasContextMenu = !!(onReplaceTaskFromToolbox || onTaskGroupModification);
232
+ const buildContextMenuItems = (0, external_react_namespaceObject.useCallback)((groupIndex, taskIndex)=>{
233
+ const taskGroup = tasks[groupIndex] ?? [];
234
+ const isParallel = taskGroup.length > 1;
211
235
  const items = [];
212
236
  if (onReplaceTaskFromToolbox) {
213
237
  items.push((0, external_StageNodeTaskUtilities_cjs_namespaceObject.getMenuItem)('replace-task', 'Replace task', ()=>{
214
- const taskId = tasks[groupIndex]?.[taskIndex]?.id;
238
+ taskStateReference.current = {
239
+ isParallel,
240
+ groupIndex,
241
+ taskIndex
242
+ };
243
+ const taskId = taskGroup[taskIndex]?.id;
215
244
  if (taskId) onTaskClick?.(taskId);
216
245
  setIsReplacingTask(true);
217
246
  }));
218
247
  items.push((0, external_StageNodeTaskUtilities_cjs_namespaceObject.getDivider)());
219
248
  }
220
249
  if (onTaskGroupModification) {
221
- const reGroupOptions = (0, external_StageNodeTaskUtilities_cjs_namespaceObject.getContextMenuItems)(isParallel, groupIndex, tasksLength, taskIndex, taskGroupLength, isAboveParallel, isBelowParallel, reGroupTaskFunction);
250
+ const reGroupOptions = (0, external_StageNodeTaskUtilities_cjs_namespaceObject.getContextMenuItems)(isParallel, groupIndex, tasks.length, taskIndex, taskGroup.length, (tasks[groupIndex - 1]?.length ?? 0) > 1, (tasks[groupIndex + 1]?.length ?? 0) > 1, onTaskGroupModification);
222
251
  return [
223
252
  ...items,
224
253
  ...reGroupOptions
@@ -229,10 +258,9 @@ const StageNodeComponent = (props)=>{
229
258
  onReplaceTaskFromToolbox,
230
259
  onTaskClick,
231
260
  onTaskGroupModification,
232
- reGroupTaskFunction,
233
261
  tasks
234
262
  ]);
235
- const { setSelectedNodeId } = (0, hooks_index_cjs_namespaceObject.useNodeSelection)();
263
+ const { setSelectedNodeId } = (0, hooks_index_cjs_namespaceObject.useSetNodeSelection)();
236
264
  const handleStageClick = (0, external_react_namespaceObject.useCallback)(()=>{
237
265
  onStageClick?.();
238
266
  }, [
@@ -355,9 +383,9 @@ const StageNodeComponent = (props)=>{
355
383
  setActiveDragId(event.active.id);
356
384
  }, []);
357
385
  const handleDragMove = (0, external_react_namespaceObject.useCallback)((event)=>{
358
- setOffsetLeft(event.delta.x / zoom);
386
+ setOffsetLeft(event.delta.x / storeApi.getState().transform[2]);
359
387
  }, [
360
- zoom
388
+ storeApi
361
389
  ]);
362
390
  const handleDragOver = (0, external_react_namespaceObject.useCallback)((event)=>{
363
391
  setOverId(event.over?.id ?? null);
@@ -393,12 +421,6 @@ const StageNodeComponent = (props)=>{
393
421
  } : void 0, [
394
422
  taskWidth
395
423
  ]);
396
- const dragOverlayStyle = (0, external_react_namespaceObject.useMemo)(()=>({
397
- transform: `scale(${zoom})`,
398
- transformOrigin: 'top left'
399
- }), [
400
- zoom
401
- ]);
402
424
  return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
403
425
  "data-testid": `stage-${id}`,
404
426
  style: {
@@ -459,6 +481,31 @@ const StageNodeComponent = (props)=>{
459
481
  variant: apollo_core_namespaceObject.FontVariantToken.fontSizeS,
460
482
  color: "var(--uix-canvas-foreground-de-emp)",
461
483
  children: stageDuration
484
+ }),
485
+ stageDetails.headerChips && stageDetails.headerChips.length > 0 && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_StageNode_styles_cjs_namespaceObject.StageHeaderChipsRow, {
486
+ children: stageDetails.headerChips.map((chip)=>{
487
+ const button = /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(external_StageNode_styles_cjs_namespaceObject.StageChip, {
488
+ type: "button",
489
+ "aria-label": 'string' == typeof chip.tooltip ? chip.tooltip : chip.type,
490
+ onClick: (e)=>{
491
+ e.stopPropagation();
492
+ chip.onClick?.();
493
+ },
494
+ children: [
495
+ CHIP_ICONS[chip.type],
496
+ void 0 !== chip.count && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_material_index_cjs_namespaceObject.ApTypography, {
497
+ variant: apollo_core_namespaceObject.FontVariantToken.fontSizeS,
498
+ children: chip.count
499
+ })
500
+ ]
501
+ }, chip.type);
502
+ if (chip.tooltip) return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_material_index_cjs_namespaceObject.ApTooltip, {
503
+ placement: "bottom",
504
+ content: chip.tooltip,
505
+ children: button
506
+ }, chip.type);
507
+ return button;
508
+ })
462
509
  })
463
510
  ]
464
511
  })
@@ -538,20 +585,14 @@ const StageNodeComponent = (props)=>{
538
585
  taskExecution: taskExecution,
539
586
  isSelected: selectedTaskId === task.id,
540
587
  isParallel: isParallel,
541
- contextMenuItems: contextMenuItems(isParallel, groupIndex, taskIndex, tasks.length, taskGroup.length, (tasks[groupIndex - 1]?.length ?? 0) > 1, (tasks[groupIndex + 1]?.length ?? 0) > 1),
588
+ groupIndex: groupIndex,
589
+ taskIndex: taskIndex,
542
590
  onTaskClick: handleTaskClick,
543
591
  projectedDepth: task.id === activeDragId && projected ? projected.depth : void 0,
544
592
  onTaskPlay: onTaskPlay,
545
593
  isDragDisabled: !onTaskReorder,
546
- zoom: zoom,
547
- ...(onTaskGroupModification || onReplaceTaskFromToolbox) && {
548
- onMenuOpen: ()=>{
549
- taskStateReference.current = {
550
- isParallel,
551
- groupIndex,
552
- taskIndex
553
- };
554
- }
594
+ ...hasContextMenu && {
595
+ getContextMenuItems: buildContextMenuItems
555
596
  }
556
597
  }, task.id);
557
598
  })
@@ -562,23 +603,11 @@ const StageNodeComponent = (props)=>{
562
603
  })
563
604
  })
564
605
  }),
565
- /*#__PURE__*/ (0, external_react_dom_namespaceObject.createPortal)(/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(core_namespaceObject.DragOverlay, {
566
- children: activeTask ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
567
- style: dragOverlayStyle,
568
- children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_StageNode_styles_cjs_namespaceObject.StageTask, {
569
- selected: true,
570
- isParallel: isActiveTaskParallel,
571
- style: {
572
- cursor: 'grabbing',
573
- ...taskWidthStyle
574
- },
575
- children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_DraggableTask_cjs_namespaceObject.TaskContent, {
576
- task: activeTask,
577
- isDragging: true
578
- })
579
- })
580
- }) : null
581
- }), document.body)
606
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_StageTaskDragOverlay_cjs_namespaceObject.StageTaskDragOverlay, {
607
+ activeTask: activeTask,
608
+ isActiveTaskParallel: isActiveTaskParallel,
609
+ taskWidthStyle: taskWidthStyle
610
+ })
582
611
  ]
583
612
  }) : /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(index_cjs_namespaceObject.Column, {
584
613
  py: 2,
@@ -632,7 +661,31 @@ const StageNodeComponent = (props)=>{
632
661
  ]
633
662
  });
634
663
  };
635
- const StageNode = /*#__PURE__*/ (0, external_react_namespaceObject.memo)(StageNodeComponent);
664
+ const StageNodeInnerMemo = /*#__PURE__*/ (0, external_react_namespaceObject.memo)(StageNodeInner);
665
+ const StageNode = ({ dragging, selected, id, width, execution, stageDetails, addTaskLabel, addTaskLoading, replaceTaskLabel, taskOptions, menuItems, pendingReplaceTask, onStageClick, onTaskAdd, onAddTaskFromToolbox, onTaskToolboxSearch, onTaskClick, onTaskGroupModification, onStageTitleChange, onTaskReorder, onReplaceTaskFromToolbox, onTaskPlay })=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(StageNodeInnerMemo, {
666
+ dragging: dragging,
667
+ selected: selected,
668
+ id: id,
669
+ width: width,
670
+ execution: execution,
671
+ stageDetails: stageDetails,
672
+ addTaskLabel: addTaskLabel,
673
+ addTaskLoading: addTaskLoading,
674
+ replaceTaskLabel: replaceTaskLabel,
675
+ taskOptions: taskOptions,
676
+ menuItems: menuItems,
677
+ pendingReplaceTask: pendingReplaceTask,
678
+ onStageClick: onStageClick,
679
+ onTaskAdd: onTaskAdd,
680
+ onAddTaskFromToolbox: onAddTaskFromToolbox,
681
+ onTaskToolboxSearch: onTaskToolboxSearch,
682
+ onTaskClick: onTaskClick,
683
+ onTaskGroupModification: onTaskGroupModification,
684
+ onStageTitleChange: onStageTitleChange,
685
+ onTaskReorder: onTaskReorder,
686
+ onReplaceTaskFromToolbox: onReplaceTaskFromToolbox,
687
+ onTaskPlay: onTaskPlay
688
+ });
636
689
  exports.StageNode = __webpack_exports__.StageNode;
637
690
  for(var __rspack_i in __webpack_exports__)if (-1 === [
638
691
  "StageNode"
@@ -1,3 +1,3 @@
1
1
  import type { StageNodeProps } from './StageNode.types';
2
- export declare const StageNode: import("react").MemoExoticComponent<(props: StageNodeProps) => import("react/jsx-runtime").JSX.Element>;
2
+ export declare const StageNode: ({ dragging, selected, id, width, execution, stageDetails, addTaskLabel, addTaskLoading, replaceTaskLabel, taskOptions, menuItems, pendingReplaceTask, onStageClick, onTaskAdd, onAddTaskFromToolbox, onTaskToolboxSearch, onTaskClick, onTaskGroupModification, onStageTitleChange, onTaskReorder, onReplaceTaskFromToolbox, onTaskPlay, }: StageNodeProps) => import("react/jsx-runtime").JSX.Element;
3
3
  //# sourceMappingURL=StageNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StageNode.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/StageNode/StageNode.tsx"],"names":[],"mappings":"AAqDA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AA2pBxD,eAAO,MAAM,SAAS,8CAjpBa,cAAc,6CAipBA,CAAC"}
1
+ {"version":3,"file":"StageNode.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/StageNode/StageNode.tsx"],"names":[],"mappings":"AAqDA,OAAO,KAAK,EAAuB,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAyqB7E,eAAO,MAAM,SAAS,GAAI,4UAuBvB,cAAc,4CA2BhB,CAAC"}