@uipath/apollo-react 3.63.0 → 3.64.0-pr431.76f87cc

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 +125 -45
  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 +129 -49
  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/TaskMenu.cjs +13 -17
  44. package/dist/canvas/components/StageNode/TaskMenu.d.ts +1 -2
  45. package/dist/canvas/components/StageNode/TaskMenu.d.ts.map +1 -1
  46. package/dist/canvas/components/StageNode/TaskMenu.js +14 -18
  47. package/dist/canvas/components/Toolbox/Toolbox.cjs +3 -3
  48. package/dist/canvas/components/Toolbox/Toolbox.d.ts +3 -1
  49. package/dist/canvas/components/Toolbox/Toolbox.d.ts.map +1 -1
  50. package/dist/canvas/components/Toolbox/Toolbox.js +3 -3
  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 +3 -3
@@ -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 };
@@ -35,6 +35,7 @@ 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
37
  const external_react_dom_namespaceObject = require("react-dom");
38
+ const external_icons_index_cjs_namespaceObject = require("../../icons/index.cjs");
38
39
  const ConnectedHandlesContext_cjs_namespaceObject = require("../BaseCanvas/ConnectedHandlesContext.cjs");
39
40
  const useButtonHandles_cjs_namespaceObject = require("../ButtonHandle/useButtonHandles.cjs");
40
41
  const external_ExecutionStatusIcon_index_cjs_namespaceObject = require("../ExecutionStatusIcon/index.cjs");
@@ -44,9 +45,58 @@ const hooks_index_cjs_namespaceObject = require("../NodePropertiesPanel/hooks/in
44
45
  const external_Toolbox_index_cjs_namespaceObject = require("../Toolbox/index.cjs");
45
46
  const external_DraggableTask_cjs_namespaceObject = require("./DraggableTask.cjs");
46
47
  const external_StageNode_styles_cjs_namespaceObject = require("./StageNode.styles.cjs");
48
+ const external_StageNode_types_cjs_namespaceObject = require("./StageNode.types.cjs");
47
49
  const external_StageNode_utils_cjs_namespaceObject = require("./StageNode.utils.cjs");
48
50
  const external_StageNodeTaskUtilities_cjs_namespaceObject = require("./StageNodeTaskUtilities.cjs");
49
- const StageNodeComponent = (props)=>{
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 StageNode_StageTaskDragOverlay = /*#__PURE__*/ (0, external_react_namespaceObject.memo)(function({ activeTask, isActiveTaskParallel, taskWidthStyle }) {
74
+ const { zoom } = (0, react_cjs_namespaceObject.useViewport)();
75
+ const dragOverlayStyle = (0, external_react_namespaceObject.useMemo)(()=>({
76
+ transform: `scale(${zoom})`,
77
+ transformOrigin: 'top left'
78
+ }), [
79
+ zoom
80
+ ]);
81
+ return /*#__PURE__*/ (0, external_react_dom_namespaceObject.createPortal)(/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(core_namespaceObject.DragOverlay, {
82
+ children: activeTask ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
83
+ style: dragOverlayStyle,
84
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_StageNode_styles_cjs_namespaceObject.StageTask, {
85
+ selected: true,
86
+ isParallel: isActiveTaskParallel,
87
+ style: {
88
+ cursor: 'grabbing',
89
+ ...taskWidthStyle
90
+ },
91
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_DraggableTask_cjs_namespaceObject.TaskContent, {
92
+ task: activeTask,
93
+ isDragging: true
94
+ })
95
+ })
96
+ }) : null
97
+ }), document.body);
98
+ });
99
+ const StageNodeInner = (props)=>{
50
100
  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
101
  const taskWidth = width ? width - external_StageNode_styles_cjs_namespaceObject.STAGE_CONTENT_INSET : void 0;
52
102
  const tasks = (0, external_react_namespaceObject.useMemo)(()=>stageDetails?.tasks || [], [
@@ -66,9 +116,6 @@ const StageNodeComponent = (props)=>{
66
116
  const status = execution?.stageStatus?.status;
67
117
  const statusLabel = execution?.stageStatus?.label;
68
118
  const stageDuration = execution?.stageStatus?.duration;
69
- const reGroupTaskFunction = (0, external_react_namespaceObject.useMemo)(()=>onTaskGroupModification || (()=>{}), [
70
- onTaskGroupModification
71
- ]);
72
119
  const isStageTitleEditable = !!onStageTitleChange && !isReadOnly;
73
120
  const [isHovered, setIsHovered] = (0, external_react_namespaceObject.useState)(false);
74
121
  const [label, setLabel] = (0, external_react_namespaceObject.useState)(props.stageDetails.label);
@@ -85,6 +132,7 @@ const StageNodeComponent = (props)=>{
85
132
  taskIndex: -1
86
133
  });
87
134
  const isConnecting = (0, react_cjs_namespaceObject.useStore)((state)=>!!state.connectionClickStartHandle);
135
+ const storeApi = (0, react_cjs_namespaceObject.useStoreApi)();
88
136
  const connectedHandleIds = (0, ConnectedHandlesContext_cjs_namespaceObject.useConnectedHandles)(id);
89
137
  const [isAddingTask, setIsAddingTask] = (0, external_react_namespaceObject.useState)(false);
90
138
  const [isReplacingTask, setIsReplacingTask] = (0, external_react_namespaceObject.useState)(false);
@@ -124,7 +172,6 @@ const StageNodeComponent = (props)=>{
124
172
  tasks,
125
173
  activeDragId
126
174
  ]);
127
- const { zoom } = (0, react_cjs_namespaceObject.useViewport)();
128
175
  const projected = (0, external_react_namespaceObject.useMemo)(()=>{
129
176
  if (!activeDragId || !overId) return null;
130
177
  return (0, external_StageNode_utils_cjs_namespaceObject.getProjection)(tasks, activeDragId, overId, offsetLeft);
@@ -207,18 +254,26 @@ const StageNodeComponent = (props)=>{
207
254
  handleStageTitleClickToSave,
208
255
  isStageTitleEditing
209
256
  ]);
210
- const contextMenuItems = (0, external_react_namespaceObject.useCallback)((isParallel, groupIndex, taskIndex, tasksLength, taskGroupLength, isAboveParallel, isBelowParallel)=>{
257
+ const hasContextMenu = !!(onReplaceTaskFromToolbox || onTaskGroupModification);
258
+ const buildContextMenuItems = (0, external_react_namespaceObject.useCallback)((groupIndex, taskIndex)=>{
259
+ const taskGroup = tasks[groupIndex] ?? [];
260
+ const isParallel = taskGroup.length > 1;
211
261
  const items = [];
212
262
  if (onReplaceTaskFromToolbox) {
213
263
  items.push((0, external_StageNodeTaskUtilities_cjs_namespaceObject.getMenuItem)('replace-task', 'Replace task', ()=>{
214
- const taskId = tasks[groupIndex]?.[taskIndex]?.id;
264
+ taskStateReference.current = {
265
+ isParallel,
266
+ groupIndex,
267
+ taskIndex
268
+ };
269
+ const taskId = taskGroup[taskIndex]?.id;
215
270
  if (taskId) onTaskClick?.(taskId);
216
271
  setIsReplacingTask(true);
217
272
  }));
218
273
  items.push((0, external_StageNodeTaskUtilities_cjs_namespaceObject.getDivider)());
219
274
  }
220
275
  if (onTaskGroupModification) {
221
- const reGroupOptions = (0, external_StageNodeTaskUtilities_cjs_namespaceObject.getContextMenuItems)(isParallel, groupIndex, tasksLength, taskIndex, taskGroupLength, isAboveParallel, isBelowParallel, reGroupTaskFunction);
276
+ 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
277
  return [
223
278
  ...items,
224
279
  ...reGroupOptions
@@ -229,10 +284,9 @@ const StageNodeComponent = (props)=>{
229
284
  onReplaceTaskFromToolbox,
230
285
  onTaskClick,
231
286
  onTaskGroupModification,
232
- reGroupTaskFunction,
233
287
  tasks
234
288
  ]);
235
- const { setSelectedNodeId } = (0, hooks_index_cjs_namespaceObject.useNodeSelection)();
289
+ const { setSelectedNodeId } = (0, hooks_index_cjs_namespaceObject.useSetNodeSelection)();
236
290
  const handleStageClick = (0, external_react_namespaceObject.useCallback)(()=>{
237
291
  onStageClick?.();
238
292
  }, [
@@ -355,9 +409,9 @@ const StageNodeComponent = (props)=>{
355
409
  setActiveDragId(event.active.id);
356
410
  }, []);
357
411
  const handleDragMove = (0, external_react_namespaceObject.useCallback)((event)=>{
358
- setOffsetLeft(event.delta.x / zoom);
412
+ setOffsetLeft(event.delta.x / storeApi.getState().transform[2]);
359
413
  }, [
360
- zoom
414
+ storeApi
361
415
  ]);
362
416
  const handleDragOver = (0, external_react_namespaceObject.useCallback)((event)=>{
363
417
  setOverId(event.over?.id ?? null);
@@ -393,12 +447,6 @@ const StageNodeComponent = (props)=>{
393
447
  } : void 0, [
394
448
  taskWidth
395
449
  ]);
396
- const dragOverlayStyle = (0, external_react_namespaceObject.useMemo)(()=>({
397
- transform: `scale(${zoom})`,
398
- transformOrigin: 'top left'
399
- }), [
400
- zoom
401
- ]);
402
450
  return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
403
451
  "data-testid": `stage-${id}`,
404
452
  style: {
@@ -459,6 +507,31 @@ const StageNodeComponent = (props)=>{
459
507
  variant: apollo_core_namespaceObject.FontVariantToken.fontSizeS,
460
508
  color: "var(--uix-canvas-foreground-de-emp)",
461
509
  children: stageDuration
510
+ }),
511
+ stageDetails.headerChips && stageDetails.headerChips.length > 0 && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_StageNode_styles_cjs_namespaceObject.StageHeaderChipsRow, {
512
+ children: stageDetails.headerChips.map((chip)=>{
513
+ const button = /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(external_StageNode_styles_cjs_namespaceObject.StageChip, {
514
+ type: "button",
515
+ "aria-label": 'string' == typeof chip.tooltip ? chip.tooltip : chip.type,
516
+ onClick: (e)=>{
517
+ e.stopPropagation();
518
+ chip.onClick?.();
519
+ },
520
+ children: [
521
+ CHIP_ICONS[chip.type],
522
+ void 0 !== chip.count && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_material_index_cjs_namespaceObject.ApTypography, {
523
+ variant: apollo_core_namespaceObject.FontVariantToken.fontSizeS,
524
+ children: chip.count
525
+ })
526
+ ]
527
+ }, chip.type);
528
+ if (chip.tooltip) return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_material_index_cjs_namespaceObject.ApTooltip, {
529
+ placement: "bottom",
530
+ content: chip.tooltip,
531
+ children: button
532
+ }, chip.type);
533
+ return button;
534
+ })
462
535
  })
463
536
  ]
464
537
  })
@@ -538,20 +611,14 @@ const StageNodeComponent = (props)=>{
538
611
  taskExecution: taskExecution,
539
612
  isSelected: selectedTaskId === task.id,
540
613
  isParallel: isParallel,
541
- contextMenuItems: contextMenuItems(isParallel, groupIndex, taskIndex, tasks.length, taskGroup.length, (tasks[groupIndex - 1]?.length ?? 0) > 1, (tasks[groupIndex + 1]?.length ?? 0) > 1),
614
+ groupIndex: groupIndex,
615
+ taskIndex: taskIndex,
542
616
  onTaskClick: handleTaskClick,
543
617
  projectedDepth: task.id === activeDragId && projected ? projected.depth : void 0,
544
618
  onTaskPlay: onTaskPlay,
545
619
  isDragDisabled: !onTaskReorder,
546
- zoom: zoom,
547
- ...(onTaskGroupModification || onReplaceTaskFromToolbox) && {
548
- onMenuOpen: ()=>{
549
- taskStateReference.current = {
550
- isParallel,
551
- groupIndex,
552
- taskIndex
553
- };
554
- }
620
+ ...hasContextMenu && {
621
+ getContextMenuItems: buildContextMenuItems
555
622
  }
556
623
  }, task.id);
557
624
  })
@@ -562,23 +629,11 @@ const StageNodeComponent = (props)=>{
562
629
  })
563
630
  })
564
631
  }),
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)
632
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(StageNode_StageTaskDragOverlay, {
633
+ activeTask: activeTask,
634
+ isActiveTaskParallel: isActiveTaskParallel,
635
+ taskWidthStyle: taskWidthStyle
636
+ })
582
637
  ]
583
638
  }) : /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(index_cjs_namespaceObject.Column, {
584
639
  py: 2,
@@ -632,6 +687,31 @@ const StageNodeComponent = (props)=>{
632
687
  ]
633
688
  });
634
689
  };
690
+ const StageNodeInnerMemo = /*#__PURE__*/ (0, external_react_namespaceObject.memo)(StageNodeInner);
691
+ const StageNodeComponent = ({ 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, {
692
+ dragging: dragging,
693
+ selected: selected,
694
+ id: id,
695
+ width: width,
696
+ execution: execution,
697
+ stageDetails: stageDetails,
698
+ addTaskLabel: addTaskLabel,
699
+ addTaskLoading: addTaskLoading,
700
+ replaceTaskLabel: replaceTaskLabel,
701
+ taskOptions: taskOptions,
702
+ menuItems: menuItems,
703
+ pendingReplaceTask: pendingReplaceTask,
704
+ onStageClick: onStageClick,
705
+ onTaskAdd: onTaskAdd,
706
+ onAddTaskFromToolbox: onAddTaskFromToolbox,
707
+ onTaskToolboxSearch: onTaskToolboxSearch,
708
+ onTaskClick: onTaskClick,
709
+ onTaskGroupModification: onTaskGroupModification,
710
+ onStageTitleChange: onStageTitleChange,
711
+ onTaskReorder: onTaskReorder,
712
+ onReplaceTaskFromToolbox: onReplaceTaskFromToolbox,
713
+ onTaskPlay: onTaskPlay
714
+ });
635
715
  const StageNode = /*#__PURE__*/ (0, external_react_namespaceObject.memo)(StageNodeComponent);
636
716
  exports.StageNode = __webpack_exports__.StageNode;
637
717
  for(var __rspack_i in __webpack_exports__)if (-1 === [
@@ -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: import("react").MemoExoticComponent<({ 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":"AA6DA,OAAO,KAAK,EAEV,cAAc,EAEf,MAAM,mBAAmB,CAAC;AA4vB3B,eAAO,MAAM,SAAS,mXA7BnB,cAAc,6CA6BgC,CAAC"}