@uipath/apollo-react 4.24.4 → 4.25.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 (109) hide show
  1. package/dist/canvas/components/BaseCanvas/BaseCanvas.cjs +2 -1
  2. package/dist/canvas/components/BaseCanvas/BaseCanvas.d.ts.map +1 -1
  3. package/dist/canvas/components/BaseCanvas/BaseCanvas.js +2 -1
  4. package/dist/canvas/components/BaseCanvas/BaseCanvas.types.d.ts +2 -0
  5. package/dist/canvas/components/BaseCanvas/BaseCanvas.types.d.ts.map +1 -1
  6. package/dist/canvas/components/BaseCanvas/CanvasProviders.cjs +19 -14
  7. package/dist/canvas/components/BaseCanvas/CanvasProviders.d.ts +2 -1
  8. package/dist/canvas/components/BaseCanvas/CanvasProviders.d.ts.map +1 -1
  9. package/dist/canvas/components/BaseCanvas/CanvasProviders.js +19 -14
  10. package/dist/canvas/components/BaseNode/BaseNodeContainer.cjs +5 -1
  11. package/dist/canvas/components/BaseNode/BaseNodeContainer.d.ts.map +1 -1
  12. package/dist/canvas/components/BaseNode/BaseNodeContainer.js +5 -1
  13. package/dist/canvas/components/ButtonHandle/ButtonHandle.cjs +1 -1
  14. package/dist/canvas/components/ButtonHandle/ButtonHandle.js +1 -1
  15. package/dist/canvas/components/CanvasTooltip.cjs +2 -3
  16. package/dist/canvas/components/CanvasTooltip.d.ts +2 -2
  17. package/dist/canvas/components/CanvasTooltip.d.ts.map +1 -1
  18. package/dist/canvas/components/CanvasTooltip.js +2 -3
  19. package/dist/canvas/components/ExecutionStatusIcon/ExecutionStatusIcon.cjs +1 -0
  20. package/dist/canvas/components/ExecutionStatusIcon/ExecutionStatusIcon.d.ts +1 -1
  21. package/dist/canvas/components/ExecutionStatusIcon/ExecutionStatusIcon.d.ts.map +1 -1
  22. package/dist/canvas/components/ExecutionStatusIcon/ExecutionStatusIcon.js +1 -0
  23. package/dist/canvas/components/LoopNode/IterationNavigator.cjs +143 -0
  24. package/dist/canvas/components/LoopNode/IterationNavigator.d.ts +7 -0
  25. package/dist/canvas/components/LoopNode/IterationNavigator.d.ts.map +1 -0
  26. package/dist/canvas/components/LoopNode/IterationNavigator.js +109 -0
  27. package/dist/canvas/components/LoopNode/LoopNode.cjs +45 -18
  28. package/dist/canvas/components/LoopNode/LoopNode.d.ts.map +1 -1
  29. package/dist/canvas/components/LoopNode/LoopNode.js +45 -18
  30. package/dist/canvas/components/LoopNode/LoopNode.types.d.ts +8 -0
  31. package/dist/canvas/components/LoopNode/LoopNode.types.d.ts.map +1 -1
  32. package/dist/canvas/components/StageNode/AdhocTask.cjs +1 -0
  33. package/dist/canvas/components/StageNode/AdhocTask.d.ts.map +1 -1
  34. package/dist/canvas/components/StageNode/AdhocTask.js +1 -0
  35. package/dist/canvas/components/StageNode/DraggableTask.cjs +1 -0
  36. package/dist/canvas/components/StageNode/DraggableTask.d.ts.map +1 -1
  37. package/dist/canvas/components/StageNode/DraggableTask.js +1 -0
  38. package/dist/canvas/components/StageNode/EventDrivenTask.cjs +1 -0
  39. package/dist/canvas/components/StageNode/EventDrivenTask.d.ts.map +1 -1
  40. package/dist/canvas/components/StageNode/EventDrivenTask.js +1 -0
  41. package/dist/canvas/components/StageNode/StageNode.cjs +5 -3
  42. package/dist/canvas/components/StageNode/StageNode.d.ts.map +1 -1
  43. package/dist/canvas/components/StageNode/StageNode.js +5 -3
  44. package/dist/canvas/components/StageNode/StageNode.styles.cjs +4 -39
  45. package/dist/canvas/components/StageNode/StageNode.styles.d.ts +1 -14
  46. package/dist/canvas/components/StageNode/StageNode.styles.d.ts.map +1 -1
  47. package/dist/canvas/components/StageNode/StageNode.styles.js +4 -33
  48. package/dist/canvas/components/StageNode/StageNode.types.d.ts +4 -2
  49. package/dist/canvas/components/StageNode/StageNode.types.d.ts.map +1 -1
  50. package/dist/canvas/components/StageNode/StageNodeAdhocTaskGroups.cjs +3 -1
  51. package/dist/canvas/components/StageNode/StageNodeAdhocTaskGroups.d.ts.map +1 -1
  52. package/dist/canvas/components/StageNode/StageNodeAdhocTaskGroups.js +3 -1
  53. package/dist/canvas/components/StageNode/StageNodeAllTaskGroups.cjs +9 -5
  54. package/dist/canvas/components/StageNode/StageNodeAllTaskGroups.d.ts.map +1 -1
  55. package/dist/canvas/components/StageNode/StageNodeAllTaskGroups.js +9 -5
  56. package/dist/canvas/components/StageNode/StageNodeEventDrivenTaskGroups.cjs +3 -1
  57. package/dist/canvas/components/StageNode/StageNodeEventDrivenTaskGroups.d.ts.map +1 -1
  58. package/dist/canvas/components/StageNode/StageNodeEventDrivenTaskGroups.js +3 -1
  59. package/dist/canvas/components/StageNode/StageNodeHeader.cjs +107 -151
  60. package/dist/canvas/components/StageNode/StageNodeHeader.d.ts.map +1 -1
  61. package/dist/canvas/components/StageNode/StageNodeHeader.js +111 -155
  62. package/dist/canvas/components/StageNode/StageNodeSequentialTaskGroups.cjs +7 -3
  63. package/dist/canvas/components/StageNode/StageNodeSequentialTaskGroups.d.ts.map +1 -1
  64. package/dist/canvas/components/StageNode/StageNodeSequentialTaskGroups.js +7 -3
  65. package/dist/canvas/components/StageNode/StageNodeTaskUtilities.cjs +11 -11
  66. package/dist/canvas/components/StageNode/StageNodeTaskUtilities.d.ts +14 -1
  67. package/dist/canvas/components/StageNode/StageNodeTaskUtilities.d.ts.map +1 -1
  68. package/dist/canvas/components/StageNode/StageNodeTaskUtilities.js +11 -11
  69. package/dist/canvas/components/StageNode/StageTitleInput.cjs +122 -0
  70. package/dist/canvas/components/StageNode/StageTitleInput.d.ts +9 -0
  71. package/dist/canvas/components/StageNode/StageTitleInput.d.ts.map +1 -0
  72. package/dist/canvas/components/StageNode/StageTitleInput.js +88 -0
  73. package/dist/canvas/components/StageNode/useStageNodeLabels.cjs +122 -0
  74. package/dist/canvas/components/StageNode/useStageNodeLabels.d.ts +15 -0
  75. package/dist/canvas/components/StageNode/useStageNodeLabels.d.ts.map +1 -0
  76. package/dist/canvas/components/StageNode/useStageNodeLabels.js +88 -0
  77. package/dist/canvas/components/StickyNoteNode/StickyNoteNode.cjs +51 -38
  78. package/dist/canvas/components/StickyNoteNode/StickyNoteNode.d.ts.map +1 -1
  79. package/dist/canvas/components/StickyNoteNode/StickyNoteNode.js +49 -36
  80. package/dist/canvas/components/StickyNoteNode/StickyNoteNode.styles.cjs +2 -5
  81. package/dist/canvas/components/StickyNoteNode/StickyNoteNode.styles.d.ts.map +1 -1
  82. package/dist/canvas/components/StickyNoteNode/StickyNoteNode.styles.js +2 -5
  83. package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.cjs +5 -5
  84. package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.js +5 -5
  85. package/dist/canvas/components/Toolbox/Toolbox.cjs +7 -1
  86. package/dist/canvas/components/Toolbox/Toolbox.d.ts.map +1 -1
  87. package/dist/canvas/components/Toolbox/Toolbox.js +7 -1
  88. package/dist/canvas/index.cjs +65 -47
  89. package/dist/canvas/index.d.ts +2 -0
  90. package/dist/canvas/index.d.ts.map +1 -1
  91. package/dist/canvas/index.js +2 -1
  92. package/dist/canvas/locales/en.cjs +1 -1
  93. package/dist/canvas/locales/en.d.ts.map +1 -1
  94. package/dist/canvas/locales/en.js +1 -1
  95. package/dist/canvas/storybook-utils/decorators.d.ts.map +1 -1
  96. package/dist/canvas/styles/reactflow-reset.css +5 -1
  97. package/dist/canvas/styles/tailwind.canvas.css +1 -1
  98. package/dist/canvas/utils/adornment-resolver.cjs +4 -8
  99. package/dist/canvas/utils/adornment-resolver.d.ts +4 -1
  100. package/dist/canvas/utils/adornment-resolver.d.ts.map +1 -1
  101. package/dist/canvas/utils/adornment-resolver.js +4 -8
  102. package/dist/canvas/utils/testing.cjs +10 -1
  103. package/dist/canvas/utils/testing.d.ts +1 -1
  104. package/dist/canvas/utils/testing.d.ts.map +1 -1
  105. package/dist/canvas/utils/testing.js +10 -1
  106. package/dist/i18n/ApI18nProvider.cjs +3 -1
  107. package/dist/i18n/ApI18nProvider.d.ts.map +1 -1
  108. package/dist/i18n/ApI18nProvider.js +3 -1
  109. package/package.json +5 -6
@@ -38,7 +38,7 @@ const external_PanShortcutTeachingUI_cjs_namespaceObject = require("./PanShortcu
38
38
  const BaseCanvasInnerComponent = (props)=>{
39
39
  const { innerRef, fitViewOptions: fitViewOptionsProps, ...canvasProps } = props;
40
40
  const fitViewOptions = fitViewOptionsProps ?? external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.fitViewOptions;
41
- const { nodes = [], edges = [], nodeTypes, edgeTypes, children, mode = 'view', showBackground = true, backgroundColor = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.background.color, backgroundSecondaryColor = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.background.bgColor, backgroundVariant = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.background.variant, backgroundGap = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.background.gap, backgroundSize = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.background.size, isDarkMode, minZoom = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.zoom.min, maxZoom = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.zoom.max, defaultViewport = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.defaultViewport, defaultEdgeOptions = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.edge, onNodesChange, onEdgesChange, onConnect, onConnectStart, onConnectEnd, onNodeClick, onNodeDragStart, onNodeDrag, onNodeDragStop, onPaneClick, onInit, onSelectionChange, proOptions = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.pro, connectionMode = react_cjs_namespaceObject.ConnectionMode.Loose, connectionLineComponent, connectionLineStyle, deleteKeyCode = null, selectNodesOnDrag = true, nodesDraggable = true, nodesConnectable = true, elementsSelectable = true, onlyRenderVisibleElements = true, zoomOnDoubleClick = true, snapToGrid = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.snapToGrid, snapGrid = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.snapGrid, initialAutoLayout, maintainNodesInView, onToolbarAction, breakpoints, panShortcutTeachingUIMessage = 'Hold Space and drag to pan around the canvas!', ...reactFlowProps } = canvasProps;
41
+ const { nodes = [], edges = [], nodeTypes, edgeTypes, children, mode = 'view', showBackground = true, backgroundColor = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.background.color, backgroundSecondaryColor = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.background.bgColor, backgroundVariant = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.background.variant, backgroundGap = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.background.gap, backgroundSize = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.background.size, isDarkMode, locale, minZoom = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.zoom.min, maxZoom = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.zoom.max, defaultViewport = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.defaultViewport, defaultEdgeOptions = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.edge, onNodesChange, onEdgesChange, onConnect, onConnectStart, onConnectEnd, onNodeClick, onNodeDragStart, onNodeDrag, onNodeDragStop, onPaneClick, onInit, onSelectionChange, proOptions = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.pro, connectionMode = react_cjs_namespaceObject.ConnectionMode.Loose, connectionLineComponent, connectionLineStyle, deleteKeyCode = null, selectNodesOnDrag = true, nodesDraggable = true, nodesConnectable = true, elementsSelectable = true, onlyRenderVisibleElements = true, zoomOnDoubleClick = true, snapToGrid = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.snapToGrid, snapGrid = external_BaseCanvas_constants_cjs_namespaceObject.BASE_CANVAS_DEFAULTS.snapGrid, initialAutoLayout, maintainNodesInView, onToolbarAction, breakpoints, panShortcutTeachingUIMessage = 'Hold Space and drag to pan around the canvas!', ...reactFlowProps } = canvasProps;
42
42
  const isInteractive = 'readonly' !== mode;
43
43
  const isDesignMode = 'design' === mode;
44
44
  const [reactFlowInstance, setReactFlowInstance] = (0, external_react_namespaceObject.useState)();
@@ -74,6 +74,7 @@ const BaseCanvasInnerComponent = (props)=>{
74
74
  edges: edges,
75
75
  mode: mode,
76
76
  isDarkMode: isDarkMode,
77
+ locale: locale,
77
78
  children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(react_cjs_namespaceObject.ReactFlow, {
78
79
  ...reactFlowProps,
79
80
  colorMode: '',
@@ -1 +1 @@
1
- {"version":3,"file":"BaseCanvas.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/BaseCanvas/BaseCanvas.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,IAAI,EACJ,IAAI,EAEL,MAAM,0CAA0C,CAAC;AAElD,OAAO,EAIL,KAAK,YAAY,EAKlB,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAqMzE,eAAO,MAAM,UAAU,EAKjB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,EAC/D,KAAK,EAAE,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG;IAC3C,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;CACpD,KACE,YAAY,CAAC"}
1
+ {"version":3,"file":"BaseCanvas.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/BaseCanvas/BaseCanvas.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,IAAI,EACJ,IAAI,EAEL,MAAM,0CAA0C,CAAC;AAElD,OAAO,EAIL,KAAK,YAAY,EAKlB,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AA8MzE,eAAO,MAAM,UAAU,EAKjB,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,EAC/D,KAAK,EAAE,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG;IAC3C,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;CACpD,KACE,YAAY,CAAC"}
@@ -10,7 +10,7 @@ import { PanShortcutTeachingUI } from "./PanShortcutTeachingUI.js";
10
10
  const BaseCanvasInnerComponent = (props)=>{
11
11
  const { innerRef, fitViewOptions: fitViewOptionsProps, ...canvasProps } = props;
12
12
  const fitViewOptions = fitViewOptionsProps ?? BASE_CANVAS_DEFAULTS.fitViewOptions;
13
- const { nodes = [], edges = [], nodeTypes, edgeTypes, children, mode = 'view', showBackground = true, backgroundColor = BASE_CANVAS_DEFAULTS.background.color, backgroundSecondaryColor = BASE_CANVAS_DEFAULTS.background.bgColor, backgroundVariant = BASE_CANVAS_DEFAULTS.background.variant, backgroundGap = BASE_CANVAS_DEFAULTS.background.gap, backgroundSize = BASE_CANVAS_DEFAULTS.background.size, isDarkMode, minZoom = BASE_CANVAS_DEFAULTS.zoom.min, maxZoom = BASE_CANVAS_DEFAULTS.zoom.max, defaultViewport = BASE_CANVAS_DEFAULTS.defaultViewport, defaultEdgeOptions = BASE_CANVAS_DEFAULTS.edge, onNodesChange, onEdgesChange, onConnect, onConnectStart, onConnectEnd, onNodeClick, onNodeDragStart, onNodeDrag, onNodeDragStop, onPaneClick, onInit, onSelectionChange, proOptions = BASE_CANVAS_DEFAULTS.pro, connectionMode = ConnectionMode.Loose, connectionLineComponent, connectionLineStyle, deleteKeyCode = null, selectNodesOnDrag = true, nodesDraggable = true, nodesConnectable = true, elementsSelectable = true, onlyRenderVisibleElements = true, zoomOnDoubleClick = true, snapToGrid = BASE_CANVAS_DEFAULTS.snapToGrid, snapGrid = BASE_CANVAS_DEFAULTS.snapGrid, initialAutoLayout, maintainNodesInView, onToolbarAction, breakpoints, panShortcutTeachingUIMessage = 'Hold Space and drag to pan around the canvas!', ...reactFlowProps } = canvasProps;
13
+ const { nodes = [], edges = [], nodeTypes, edgeTypes, children, mode = 'view', showBackground = true, backgroundColor = BASE_CANVAS_DEFAULTS.background.color, backgroundSecondaryColor = BASE_CANVAS_DEFAULTS.background.bgColor, backgroundVariant = BASE_CANVAS_DEFAULTS.background.variant, backgroundGap = BASE_CANVAS_DEFAULTS.background.gap, backgroundSize = BASE_CANVAS_DEFAULTS.background.size, isDarkMode, locale, minZoom = BASE_CANVAS_DEFAULTS.zoom.min, maxZoom = BASE_CANVAS_DEFAULTS.zoom.max, defaultViewport = BASE_CANVAS_DEFAULTS.defaultViewport, defaultEdgeOptions = BASE_CANVAS_DEFAULTS.edge, onNodesChange, onEdgesChange, onConnect, onConnectStart, onConnectEnd, onNodeClick, onNodeDragStart, onNodeDrag, onNodeDragStop, onPaneClick, onInit, onSelectionChange, proOptions = BASE_CANVAS_DEFAULTS.pro, connectionMode = ConnectionMode.Loose, connectionLineComponent, connectionLineStyle, deleteKeyCode = null, selectNodesOnDrag = true, nodesDraggable = true, nodesConnectable = true, elementsSelectable = true, onlyRenderVisibleElements = true, zoomOnDoubleClick = true, snapToGrid = BASE_CANVAS_DEFAULTS.snapToGrid, snapGrid = BASE_CANVAS_DEFAULTS.snapGrid, initialAutoLayout, maintainNodesInView, onToolbarAction, breakpoints, panShortcutTeachingUIMessage = 'Hold Space and drag to pan around the canvas!', ...reactFlowProps } = canvasProps;
14
14
  const isInteractive = 'readonly' !== mode;
15
15
  const isDesignMode = 'design' === mode;
16
16
  const [reactFlowInstance, setReactFlowInstance] = useState();
@@ -46,6 +46,7 @@ const BaseCanvasInnerComponent = (props)=>{
46
46
  edges: edges,
47
47
  mode: mode,
48
48
  isDarkMode: isDarkMode,
49
+ locale: locale,
49
50
  children: /*#__PURE__*/ jsxs(ReactFlow, {
50
51
  ...reactFlowProps,
51
52
  colorMode: '',
@@ -1,5 +1,6 @@
1
1
  import type { BackgroundVariant, Edge, Node, ReactFlowInstance, ReactFlowProps } from '../../xyflow/react.ts';
2
2
  import type { ReactNode } from 'react';
3
+ import type { SupportedLocale } from '../../../i18n';
3
4
  import type { ToolbarActionHandler } from '../../schema/toolbar';
4
5
  export interface BaseCanvasFitViewOptions {
5
6
  padding?: number | {
@@ -28,6 +29,7 @@ export interface BaseCanvasProps<NodeType extends Node = Node, EdgeType extends
28
29
  onToolbarAction?: ToolbarActionHandler;
29
30
  breakpoints?: Set<string>;
30
31
  isDarkMode?: boolean;
32
+ locale?: SupportedLocale;
31
33
  }
32
34
  export interface EnsureNodesInViewOptions {
33
35
  padding?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"BaseCanvas.types.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/BaseCanvas/BaseCanvas.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,IAAI,EACJ,IAAI,EACJ,iBAAiB,EACjB,cAAc,EACf,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAMjE,MAAM,WAAW,wBAAwB;IAOvC,OAAO,CAAC,EACJ,MAAM,GACN;QACE,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IAON,QAAQ,CAAC,EAAE,MAAM,CAAC;IAMlB,OAAO,CAAC,EAAE,MAAM,CAAC;IAMjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AASD,MAAM,WAAW,eAAe,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,CACzF,SAAQ,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAe1C,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;IAOtC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAOrB,cAAc,CAAC,EAAE,OAAO,CAAC;IAKzB,eAAe,CAAC,EAAE,MAAM,CAAC;IAKzB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAOlC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IAOtC,aAAa,CAAC,EAAE,MAAM,CAAC;IAOvB,cAAc,CAAC,EAAE,MAAM,CAAC;IAcxB,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAkB/C,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAM/B,4BAA4B,CAAC,EAAE,MAAM,CAAC;IAUtC,cAAc,CAAC,EAAE,wBAAwB,CAAC;IAK1C,eAAe,CAAC,EAAE,oBAAoB,CAAC;IAMvC,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAW1B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAMD,MAAM,WAAW,wBAAwB;IAKvC,OAAO,CAAC,EAAE,MAAM,CAAC;IAMjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAMlB,OAAO,CAAC,EAAE,MAAM,CAAC;IAMjB,OAAO,CAAC,EAAE,MAAM,CAAC;IAOjB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AASD,MAAM,WAAW,aAAa,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI;IAgBvF,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAa/E,oBAAoB,CAAC,OAAO,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAiB/D,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAyBrE,SAAS,EAAE,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,SAAS,CAAC;CAC9D"}
1
+ {"version":3,"file":"BaseCanvas.types.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/BaseCanvas/BaseCanvas.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,IAAI,EACJ,IAAI,EACJ,iBAAiB,EACjB,cAAc,EACf,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAMjE,MAAM,WAAW,wBAAwB;IAOvC,OAAO,CAAC,EACJ,MAAM,GACN;QACE,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IAON,QAAQ,CAAC,EAAE,MAAM,CAAC;IAMlB,OAAO,CAAC,EAAE,MAAM,CAAC;IAMjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AASD,MAAM,WAAW,eAAe,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI,CACzF,SAAQ,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAe1C,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;IAOtC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAOrB,cAAc,CAAC,EAAE,OAAO,CAAC;IAKzB,eAAe,CAAC,EAAE,MAAM,CAAC;IAKzB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAOlC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IAOtC,aAAa,CAAC,EAAE,MAAM,CAAC;IAOvB,cAAc,CAAC,EAAE,MAAM,CAAC;IAcxB,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAkB/C,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAM/B,4BAA4B,CAAC,EAAE,MAAM,CAAC;IAUtC,cAAc,CAAC,EAAE,wBAAwB,CAAC;IAK1C,eAAe,CAAC,EAAE,oBAAoB,CAAC;IAMvC,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAW1B,UAAU,CAAC,EAAE,OAAO,CAAC;IAOrB,MAAM,CAAC,EAAE,eAAe,CAAC;CAC1B;AAMD,MAAM,WAAW,wBAAwB;IAKvC,OAAO,CAAC,EAAE,MAAM,CAAC;IAMjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAMlB,OAAO,CAAC,EAAE,MAAM,CAAC;IAMjB,OAAO,CAAC,EAAE,MAAM,CAAC;IAOjB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AASD,MAAM,WAAW,aAAa,CAAC,QAAQ,SAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,SAAS,IAAI,GAAG,IAAI;IAgBvF,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAa/E,oBAAoB,CAAC,OAAO,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAiB/D,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAyBrE,SAAS,EAAE,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,SAAS,CAAC;CAC9D"}
@@ -28,25 +28,30 @@ __webpack_require__.d(__webpack_exports__, {
28
28
  });
29
29
  const jsx_runtime_namespaceObject = require("react/jsx-runtime");
30
30
  const tooltip_namespaceObject = require("@uipath/apollo-wind/components/ui/tooltip");
31
+ const index_cjs_namespaceObject = require("../../../i18n/index.cjs");
31
32
  const external_CanvasTooltip_cjs_namespaceObject = require("../CanvasTooltip.cjs");
32
33
  const external_BaseCanvasModeProvider_cjs_namespaceObject = require("./BaseCanvasModeProvider.cjs");
33
34
  const external_CanvasThemeContext_cjs_namespaceObject = require("./CanvasThemeContext.cjs");
34
35
  const external_ConnectedHandlesContext_cjs_namespaceObject = require("./ConnectedHandlesContext.cjs");
35
36
  const external_SelectionStateContext_cjs_namespaceObject = require("./SelectionStateContext.cjs");
36
- function CanvasProviders({ nodes, edges, mode, isDarkMode, children }) {
37
- return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_CanvasThemeContext_cjs_namespaceObject.CanvasThemeProvider, {
38
- isDarkMode: isDarkMode,
39
- children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(tooltip_namespaceObject.TooltipProvider, {
40
- delayDuration: 200,
41
- skipDelayDuration: 100,
42
- children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_CanvasTooltip_cjs_namespaceObject.CanvasTooltipProviderMarker, {
43
- children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_ConnectedHandlesContext_cjs_namespaceObject.ConnectedHandlesProvider, {
44
- edges: edges,
45
- children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_BaseCanvasModeProvider_cjs_namespaceObject.BaseCanvasModeProvider, {
46
- mode: mode,
47
- children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_SelectionStateContext_cjs_namespaceObject.SelectionStateProvider, {
48
- nodes: nodes,
49
- children: children
37
+ function CanvasProviders({ nodes, edges, mode, isDarkMode, locale, children }) {
38
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(index_cjs_namespaceObject.ApI18nProvider, {
39
+ component: "canvas",
40
+ locale: locale,
41
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_CanvasThemeContext_cjs_namespaceObject.CanvasThemeProvider, {
42
+ isDarkMode: isDarkMode,
43
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(tooltip_namespaceObject.TooltipProvider, {
44
+ delayDuration: 200,
45
+ skipDelayDuration: 100,
46
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_CanvasTooltip_cjs_namespaceObject.CanvasTooltipProviderMarker, {
47
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_ConnectedHandlesContext_cjs_namespaceObject.ConnectedHandlesProvider, {
48
+ edges: edges,
49
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_BaseCanvasModeProvider_cjs_namespaceObject.BaseCanvasModeProvider, {
50
+ mode: mode,
51
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_SelectionStateContext_cjs_namespaceObject.SelectionStateProvider, {
52
+ nodes: nodes,
53
+ children: children
54
+ })
50
55
  })
51
56
  })
52
57
  })
@@ -7,7 +7,8 @@ interface CanvasProvidersProps {
7
7
  edges: Edge[];
8
8
  mode: BaseCanvasProps['mode'];
9
9
  isDarkMode?: boolean;
10
+ locale?: BaseCanvasProps['locale'];
10
11
  }
11
- export declare function CanvasProviders({ nodes, edges, mode, isDarkMode, children, }: CanvasProvidersProps): import("react/jsx-runtime").JSX.Element;
12
+ export declare function CanvasProviders({ nodes, edges, mode, isDarkMode, locale, children, }: CanvasProvidersProps): import("react/jsx-runtime").JSX.Element;
12
13
  export {};
13
14
  //# sourceMappingURL=CanvasProviders.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CanvasProviders.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/BaseCanvas/CanvasProviders.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,0CAA0C,CAAC;AAE3E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAM1D,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAQD,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,KAAK,EACL,IAAI,EACJ,UAAU,EACV,QAAQ,GACT,EAAE,oBAAoB,2CActB"}
1
+ {"version":3,"file":"CanvasProviders.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/BaseCanvas/CanvasProviders.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,0CAA0C,CAAC;AAE3E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAM1D,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;CACpC;AAQD,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,KAAK,EACL,IAAI,EACJ,UAAU,EACV,MAAM,EACN,QAAQ,GACT,EAAE,oBAAoB,2CAgBtB"}
@@ -1,24 +1,29 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { TooltipProvider } from "@uipath/apollo-wind/components/ui/tooltip";
3
+ import { ApI18nProvider } from "../../../i18n/index.js";
3
4
  import { CanvasTooltipProviderMarker } from "../CanvasTooltip.js";
4
5
  import { BaseCanvasModeProvider } from "./BaseCanvasModeProvider.js";
5
6
  import { CanvasThemeProvider } from "./CanvasThemeContext.js";
6
7
  import { ConnectedHandlesProvider } from "./ConnectedHandlesContext.js";
7
8
  import { SelectionStateProvider } from "./SelectionStateContext.js";
8
- function CanvasProviders({ nodes, edges, mode, isDarkMode, children }) {
9
- return /*#__PURE__*/ jsx(CanvasThemeProvider, {
10
- isDarkMode: isDarkMode,
11
- children: /*#__PURE__*/ jsx(TooltipProvider, {
12
- delayDuration: 200,
13
- skipDelayDuration: 100,
14
- children: /*#__PURE__*/ jsx(CanvasTooltipProviderMarker, {
15
- children: /*#__PURE__*/ jsx(ConnectedHandlesProvider, {
16
- edges: edges,
17
- children: /*#__PURE__*/ jsx(BaseCanvasModeProvider, {
18
- mode: mode,
19
- children: /*#__PURE__*/ jsx(SelectionStateProvider, {
20
- nodes: nodes,
21
- children: children
9
+ function CanvasProviders({ nodes, edges, mode, isDarkMode, locale, children }) {
10
+ return /*#__PURE__*/ jsx(ApI18nProvider, {
11
+ component: "canvas",
12
+ locale: locale,
13
+ children: /*#__PURE__*/ jsx(CanvasThemeProvider, {
14
+ isDarkMode: isDarkMode,
15
+ children: /*#__PURE__*/ jsx(TooltipProvider, {
16
+ delayDuration: 200,
17
+ skipDelayDuration: 100,
18
+ children: /*#__PURE__*/ jsx(CanvasTooltipProviderMarker, {
19
+ children: /*#__PURE__*/ jsx(ConnectedHandlesProvider, {
20
+ edges: edges,
21
+ children: /*#__PURE__*/ jsx(BaseCanvasModeProvider, {
22
+ mode: mode,
23
+ children: /*#__PURE__*/ jsx(SelectionStateProvider, {
24
+ nodes: nodes,
25
+ children: children
26
+ })
22
27
  })
23
28
  })
24
29
  })
@@ -55,7 +55,11 @@ const getStatusBorder = (status)=>{
55
55
  };
56
56
  const BaseContainer = ({ isSelected, isHovered, isStacked, shape, interactionState, executionStatus, validationStatus, suggestionType, hasFooter, background, loading, children })=>{
57
57
  const activeStatus = suggestionType ?? validationStatus ?? executionStatus;
58
- const className = (0, external_react_namespaceObject.useMemo)(()=>(0, apollo_wind_namespaceObject.cn)('relative flex items-center cursor-pointer bg-surface-overlay border border-border', 'w-(--node-w) h-(--node-h) rounded-(--node-radius)', 'shadow-(--canvas-node-shadow-rest) outline-offset-0 transition-[box-shadow,border-color] duration-150', 'rectangle' === shape ? 'flex-row justify-start gap-3 p-(--node-gap)' : 'flex-col justify-center', hasFooter && 'flex-wrap', getStatusBorder(activeStatus), isHovered && 'shadow-(--canvas-node-shadow-hover) border-border-hover', isSelected && 'outline outline-2 outline-foreground-accent-muted', 'disabled' === interactionState && 'opacity-50 cursor-not-allowed', 'drag' === interactionState && 'cursor-grabbing shadow-(--canvas-node-shadow-lifted)', isStacked && 'before:content-[""] before:absolute before:inset-x-0 before:top-0 before:h-full before:rounded-[inherit] before:bg-surface-overlay before:border before:border-brand before:translate-y-[6px] before:-z-10 before:pointer-events-none'), [
58
+ const className = (0, external_react_namespaceObject.useMemo)(()=>{
59
+ const statusBorder = getStatusBorder(activeStatus);
60
+ const hasStatusBorder = statusBorder.length > 0;
61
+ return (0, apollo_wind_namespaceObject.cn)('relative flex items-center cursor-pointer bg-surface-overlay border border-border', 'w-(--node-w) h-(--node-h) rounded-(--node-radius)', 'shadow-(--canvas-node-shadow-rest) outline-offset-0 transition-[box-shadow,border-color] duration-150', 'rectangle' === shape ? 'flex-row justify-start gap-3 p-(--node-gap)' : 'flex-col justify-center', hasFooter && 'flex-wrap', statusBorder, isHovered && 'shadow-(--canvas-node-shadow-hover)', isHovered && !hasStatusBorder && 'border-border-hover', isSelected && 'outline outline-2 outline-foreground-accent-muted', 'disabled' === interactionState && 'opacity-50 cursor-not-allowed', 'drag' === interactionState && 'cursor-grabbing shadow-(--canvas-node-shadow-lifted)', isStacked && 'before:content-[""] before:absolute before:inset-x-0 before:top-0 before:h-full before:rounded-[inherit] before:bg-surface-overlay before:border before:border-brand before:translate-y-[6px] before:-z-10 before:pointer-events-none');
62
+ }, [
59
63
  shape,
60
64
  hasFooter,
61
65
  activeStatus,
@@ -1 +1 @@
1
- {"version":3,"file":"BaseNodeContainer.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/BaseNode/BaseNodeContainer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEtE,eAAO,MAAM,eAAe,GAC1B,SAAS,mBAAmB,GAAG,uBAAuB,GAAG,cAAc,KACtE,MAsBF,CAAC;AAEF,UAAU,kBAAkB;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,mBAAmB,CAAC;IACtC,gBAAgB,CAAC,EAAE,uBAAuB,CAAC;IAC3C,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,eAAO,MAAM,aAAa,GAAI,6JAa3B,kBAAkB,4CA4CpB,CAAC"}
1
+ {"version":3,"file":"BaseNodeContainer.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/BaseNode/BaseNodeContainer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEtE,eAAO,MAAM,eAAe,GAC1B,SAAS,mBAAmB,GAAG,uBAAuB,GAAG,cAAc,KACtE,MAsBF,CAAC;AAEF,UAAU,kBAAkB;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,mBAAmB,CAAC;IACtC,gBAAgB,CAAC,EAAE,uBAAuB,CAAC;IAC3C,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,eAAO,MAAM,aAAa,GAAI,6JAa3B,kBAAkB,4CA8CpB,CAAC"}
@@ -26,7 +26,11 @@ const getStatusBorder = (status)=>{
26
26
  };
27
27
  const BaseContainer = ({ isSelected, isHovered, isStacked, shape, interactionState, executionStatus, validationStatus, suggestionType, hasFooter, background, loading, children })=>{
28
28
  const activeStatus = suggestionType ?? validationStatus ?? executionStatus;
29
- const className = useMemo(()=>cn('relative flex items-center cursor-pointer bg-surface-overlay border border-border', 'w-(--node-w) h-(--node-h) rounded-(--node-radius)', 'shadow-(--canvas-node-shadow-rest) outline-offset-0 transition-[box-shadow,border-color] duration-150', 'rectangle' === shape ? 'flex-row justify-start gap-3 p-(--node-gap)' : 'flex-col justify-center', hasFooter && 'flex-wrap', getStatusBorder(activeStatus), isHovered && 'shadow-(--canvas-node-shadow-hover) border-border-hover', isSelected && 'outline outline-2 outline-foreground-accent-muted', 'disabled' === interactionState && 'opacity-50 cursor-not-allowed', 'drag' === interactionState && 'cursor-grabbing shadow-(--canvas-node-shadow-lifted)', isStacked && 'before:content-[""] before:absolute before:inset-x-0 before:top-0 before:h-full before:rounded-[inherit] before:bg-surface-overlay before:border before:border-brand before:translate-y-[6px] before:-z-10 before:pointer-events-none'), [
29
+ const className = useMemo(()=>{
30
+ const statusBorder = getStatusBorder(activeStatus);
31
+ const hasStatusBorder = statusBorder.length > 0;
32
+ return cn('relative flex items-center cursor-pointer bg-surface-overlay border border-border', 'w-(--node-w) h-(--node-h) rounded-(--node-radius)', 'shadow-(--canvas-node-shadow-rest) outline-offset-0 transition-[box-shadow,border-color] duration-150', 'rectangle' === shape ? 'flex-row justify-start gap-3 p-(--node-gap)' : 'flex-col justify-center', hasFooter && 'flex-wrap', statusBorder, isHovered && 'shadow-(--canvas-node-shadow-hover)', isHovered && !hasStatusBorder && 'border-border-hover', isSelected && 'outline outline-2 outline-foreground-accent-muted', 'disabled' === interactionState && 'opacity-50 cursor-not-allowed', 'drag' === interactionState && 'cursor-grabbing shadow-(--canvas-node-shadow-lifted)', isStacked && 'before:content-[""] before:absolute before:inset-x-0 before:top-0 before:h-full before:rounded-[inherit] before:bg-surface-overlay before:border before:border-brand before:translate-y-[6px] before:-z-10 before:pointer-events-none');
33
+ }, [
30
34
  shape,
31
35
  hasFooter,
32
36
  activeStatus,
@@ -192,7 +192,7 @@ const ButtonHandleBase = ({ id, nodeId, type, position, connectionPosition = pos
192
192
  const ButtonHandle = /*#__PURE__*/ (0, external_react_namespaceObject.memo)(ButtonHandleBase);
193
193
  function InwardHandleContent({ handleType, isVertical, selected, hovered, showNotch, label, labelIcon, labelBackgroundColor, layout }) {
194
194
  const labelElement = label ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
195
- className: (0, CssUtil_cjs_namespaceObject.cx)('pointer-events-none flex items-center gap-1.5 whitespace-nowrap rounded-full border border-border-subtle bg-transparent px-2 py-0.5', 'text-xs font-medium leading-4 text-foreground-muted'),
195
+ className: (0, CssUtil_cjs_namespaceObject.cx)('pointer-events-none flex items-center gap-1.5 whitespace-nowrap rounded-full border border-border bg-surface px-2 py-0.5', 'text-xs font-medium leading-4 text-foreground-muted'),
196
196
  style: labelBackgroundColor ? {
197
197
  backgroundColor: labelBackgroundColor
198
198
  } : void 0,
@@ -163,7 +163,7 @@ const ButtonHandleBase = ({ id, nodeId, type, position, connectionPosition = pos
163
163
  const ButtonHandle = /*#__PURE__*/ memo(ButtonHandleBase);
164
164
  function InwardHandleContent({ handleType, isVertical, selected, hovered, showNotch, label, labelIcon, labelBackgroundColor, layout }) {
165
165
  const labelElement = label ? /*#__PURE__*/ jsxs("div", {
166
- className: cx('pointer-events-none flex items-center gap-1.5 whitespace-nowrap rounded-full border border-border-subtle bg-transparent px-2 py-0.5', 'text-xs font-medium leading-4 text-foreground-muted'),
166
+ className: cx('pointer-events-none flex items-center gap-1.5 whitespace-nowrap rounded-full border border-border bg-surface px-2 py-0.5', 'text-xs font-medium leading-4 text-foreground-muted'),
167
167
  style: labelBackgroundColor ? {
168
168
  backgroundColor: labelBackgroundColor
169
169
  } : void 0,
@@ -89,6 +89,7 @@ function CanvasTooltip({ content, placement = 'top', smartTooltip = false, delay
89
89
  smartTooltip,
90
90
  truncationDetection.check
91
91
  ]);
92
+ const isEmptyContent = null == content || false === content || 'string' == typeof content && '' === content.trim();
92
93
  const isTooltipHidden = (0, external_react_namespaceObject.useMemo)(()=>{
93
94
  if (null != isOpen) return !isOpen;
94
95
  if (null != hide) return hide;
@@ -100,10 +101,8 @@ function CanvasTooltip({ content, placement = 'top', smartTooltip = false, delay
100
101
  smartTooltip,
101
102
  isTruncated
102
103
  ]);
103
- const effectiveOpen = isTooltipHidden ? false : isOpen ?? hoverOpen;
104
+ const effectiveOpen = isEmptyContent || isTooltipHidden ? false : isOpen ?? hoverOpen;
104
105
  const hasProvider = (0, external_react_namespaceObject.useContext)(HasTooltipProviderContext);
105
- const isEmptyContent = null == content || false === content || 'string' == typeof content && '' === content.trim();
106
- if (isEmptyContent) return children;
107
106
  const tooltip = /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(tooltip_namespaceObject.Tooltip, {
108
107
  open: effectiveOpen,
109
108
  onOpenChange: handleOpenChange,
@@ -1,4 +1,4 @@
1
- import React, { type PropsWithChildren, type ReactNode } from 'react';
1
+ import { type PropsWithChildren, type ReactNode } from 'react';
2
2
  export declare function CanvasTooltipProviderMarker({ children }: PropsWithChildren): import("react/jsx-runtime").JSX.Element;
3
3
  type TooltipPlacement = 'top' | 'bottom' | 'left' | 'right';
4
4
  interface CanvasTooltipProps extends PropsWithChildren {
@@ -9,6 +9,6 @@ interface CanvasTooltipProps extends PropsWithChildren {
9
9
  isOpen?: boolean;
10
10
  hide?: boolean;
11
11
  }
12
- export declare function CanvasTooltip({ content, placement, smartTooltip, delay, isOpen, hide, children, }: Readonly<CanvasTooltipProps>): string | number | bigint | boolean | import("react/jsx-runtime").JSX.Element | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | null | undefined;
12
+ export declare function CanvasTooltip({ content, placement, smartTooltip, delay, isOpen, hide, children, }: Readonly<CanvasTooltipProps>): import("react/jsx-runtime").JSX.Element;
13
13
  export type { CanvasTooltipProps };
14
14
  //# sourceMappingURL=CanvasTooltip.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CanvasTooltip.d.ts","sourceRoot":"","sources":["../../../src/canvas/components/CanvasTooltip.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,EAEZ,KAAK,iBAAiB,EACtB,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AASf,wBAAgB,2BAA2B,CAAC,EAAE,QAAQ,EAAE,EAAE,iBAAiB,2CAI1E;AAED,KAAK,gBAAgB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAE5D,UAAU,kBAAmB,SAAQ,iBAAiB;IAEpD,OAAO,EAAE,SAAS,CAAC;IAEnB,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAE7B,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AASD,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,SAAiB,EACjB,YAAoB,EACpB,KAAa,EACb,MAAM,EACN,IAAI,EACJ,QAAQ,GACT,EAAE,QAAQ,CAAC,kBAAkB,CAAC,yTAkG9B;AAED,YAAY,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"CanvasTooltip.d.ts","sourceRoot":"","sources":["../../../src/canvas/components/CanvasTooltip.tsx"],"names":[],"mappings":"AAOA,OAAc,EAEZ,KAAK,iBAAiB,EACtB,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AASf,wBAAgB,2BAA2B,CAAC,EAAE,QAAQ,EAAE,EAAE,iBAAiB,2CAI1E;AAED,KAAK,gBAAgB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAE5D,UAAU,kBAAmB,SAAQ,iBAAiB;IAEpD,OAAO,EAAE,SAAS,CAAC;IAEnB,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAE7B,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AASD,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,SAAiB,EACjB,YAAoB,EACpB,KAAa,EACb,MAAM,EACN,IAAI,EACJ,QAAQ,GACT,EAAE,QAAQ,CAAC,kBAAkB,CAAC,2CA8F9B;AAED,YAAY,EAAE,kBAAkB,EAAE,CAAC"}
@@ -50,6 +50,7 @@ function CanvasTooltip({ content, placement = 'top', smartTooltip = false, delay
50
50
  smartTooltip,
51
51
  truncationDetection.check
52
52
  ]);
53
+ const isEmptyContent = null == content || false === content || 'string' == typeof content && '' === content.trim();
53
54
  const isTooltipHidden = useMemo(()=>{
54
55
  if (null != isOpen) return !isOpen;
55
56
  if (null != hide) return hide;
@@ -61,10 +62,8 @@ function CanvasTooltip({ content, placement = 'top', smartTooltip = false, delay
61
62
  smartTooltip,
62
63
  isTruncated
63
64
  ]);
64
- const effectiveOpen = isTooltipHidden ? false : isOpen ?? hoverOpen;
65
+ const effectiveOpen = isEmptyContent || isTooltipHidden ? false : isOpen ?? hoverOpen;
65
66
  const hasProvider = useContext(HasTooltipProviderContext);
66
- const isEmptyContent = null == content || false === content || 'string' == typeof content && '' === content.trim();
67
- if (isEmptyContent) return children;
68
67
  const tooltip = /*#__PURE__*/ jsxs(Tooltip, {
69
68
  open: effectiveOpen,
70
69
  onOpenChange: handleOpenChange,
@@ -114,6 +114,7 @@ function ExecutionStatusIcon({ status, size = 16 }) {
114
114
  color: color
115
115
  });
116
116
  case 'Cancelled':
117
+ case 'UserCancelled':
117
118
  return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(icon_registry_cjs_namespaceObject.CanvasIcon, {
118
119
  icon: "circle-stop",
119
120
  size: size,
@@ -1,6 +1,6 @@
1
1
  export declare function getExecutionStatusColor(status: string | undefined): string;
2
2
  export declare function ExecutionStatusIcon({ status, size, }: {
3
- status?: 'InProgress' | 'Cancelled' | 'Completed' | 'Paused' | 'Failed' | 'NotExecuted' | 'Terminated' | 'Warning' | string;
3
+ status?: 'InProgress' | 'Cancelled' | 'UserCancelled' | 'Completed' | 'Paused' | 'Failed' | 'NotExecuted' | 'Terminated' | 'Warning' | string;
4
4
  size?: number;
5
5
  }): import("react/jsx-runtime").JSX.Element | null;
6
6
  //# sourceMappingURL=ExecutionStatusIcon.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExecutionStatusIcon.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/ExecutionStatusIcon/ExecutionStatusIcon.tsx"],"names":[],"mappings":"AAIA,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAsC1E;AAED,wBAAgB,mBAAmB,CAAC,EAClC,MAAM,EACN,IAAS,GACV,EAAE;IACD,MAAM,CAAC,EACH,YAAY,GACZ,WAAW,GACX,WAAW,GACX,QAAQ,GACR,QAAQ,GACR,aAAa,GACb,YAAY,GACZ,SAAS,GACT,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,kDA8BA"}
1
+ {"version":3,"file":"ExecutionStatusIcon.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/ExecutionStatusIcon/ExecutionStatusIcon.tsx"],"names":[],"mappings":"AAIA,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAsC1E;AAED,wBAAgB,mBAAmB,CAAC,EAClC,MAAM,EACN,IAAS,GACV,EAAE;IACD,MAAM,CAAC,EACH,YAAY,GACZ,WAAW,GACX,eAAe,GACf,WAAW,GACX,QAAQ,GACR,QAAQ,GACR,aAAa,GACb,YAAY,GACZ,SAAS,GACT,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,kDA+BA"}
@@ -85,6 +85,7 @@ function ExecutionStatusIcon({ status, size = 16 }) {
85
85
  color: color
86
86
  });
87
87
  case 'Cancelled':
88
+ case 'UserCancelled':
88
89
  return /*#__PURE__*/ jsx(CanvasIcon, {
89
90
  icon: "circle-stop",
90
91
  size: size,
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ IterationNavigator: ()=>IterationNavigator
28
+ });
29
+ const jsx_runtime_namespaceObject = require("react/jsx-runtime");
30
+ const apollo_wind_namespaceObject = require("@uipath/apollo-wind");
31
+ const external_react_namespaceObject = require("react");
32
+ const index_cjs_namespaceObject = require("../../utils/index.cjs");
33
+ const icon_registry_cjs_namespaceObject = require("../../utils/icon-registry.cjs");
34
+ function resolveState(iterationState) {
35
+ if (!Number.isFinite(iterationState.total)) return;
36
+ const total = Math.trunc(iterationState.total);
37
+ if (total <= 0) return;
38
+ const rawActiveIndex = Number.isFinite(iterationState.activeIndex) ? Math.trunc(iterationState.activeIndex) : 0;
39
+ return {
40
+ ...iterationState,
41
+ total,
42
+ activeIndex: (0, index_cjs_namespaceObject.clamp)(rawActiveIndex, 0, total - 1)
43
+ };
44
+ }
45
+ function stopCanvasControlEvent(event) {
46
+ event.stopPropagation();
47
+ }
48
+ function IterationNavigator({ iterationState }) {
49
+ const resolvedState = resolveState(iterationState);
50
+ if (!resolvedState) return null;
51
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(NavigatorContent, {
52
+ iterationState: resolvedState
53
+ });
54
+ }
55
+ function NavigatorContent({ iterationState }) {
56
+ const { activeIndex, total, onActiveIndexChange, disabled, ariaLabel } = iterationState;
57
+ const canInteract = !disabled && 'function' == typeof onActiveIndexChange;
58
+ const canGoPrevious = canInteract && activeIndex > 0;
59
+ const canGoNext = canInteract && activeIndex < total - 1;
60
+ const label = ariaLabel ?? 'Loop iteration';
61
+ const visibleIndex = activeIndex + 1;
62
+ const handlePrevious = (0, external_react_namespaceObject.useCallback)((event)=>{
63
+ event.stopPropagation();
64
+ if (!canGoPrevious) return;
65
+ onActiveIndexChange?.(activeIndex - 1);
66
+ }, [
67
+ activeIndex,
68
+ canGoPrevious,
69
+ onActiveIndexChange
70
+ ]);
71
+ const handleNext = (0, external_react_namespaceObject.useCallback)((event)=>{
72
+ event.stopPropagation();
73
+ if (!canGoNext) return;
74
+ onActiveIndexChange?.(activeIndex + 1);
75
+ }, [
76
+ activeIndex,
77
+ canGoNext,
78
+ onActiveIndexChange
79
+ ]);
80
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("fieldset", {
81
+ className: (0, apollo_wind_namespaceObject.cn)('nodrag nopan pointer-events-auto m-0 flex h-6 min-w-0 shrink-0 items-center gap-1 rounded-full px-1 py-0', 'border border-border bg-surface text-foreground shadow-sm'),
82
+ "data-testid": "loop-iteration-navigator",
83
+ onPointerDown: stopCanvasControlEvent,
84
+ onMouseDown: stopCanvasControlEvent,
85
+ onDoubleClick: stopCanvasControlEvent,
86
+ children: [
87
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("legend", {
88
+ className: "sr-only",
89
+ children: [
90
+ label,
91
+ ": ",
92
+ visibleIndex,
93
+ " of ",
94
+ total
95
+ ]
96
+ }),
97
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("button", {
98
+ type: "button",
99
+ className: (0, apollo_wind_namespaceObject.cn)('nodrag nopan inline-flex h-4 w-4 items-center justify-center rounded-full', 'text-foreground transition-opacity', canGoPrevious ? 'cursor-pointer opacity-100' : 'cursor-not-allowed opacity-40'),
100
+ disabled: !canGoPrevious,
101
+ "aria-label": "Previous loop iteration",
102
+ onClick: handlePrevious,
103
+ onPointerDown: stopCanvasControlEvent,
104
+ onMouseDown: stopCanvasControlEvent,
105
+ "data-testid": "loop-iteration-previous",
106
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(icon_registry_cjs_namespaceObject.CanvasIcon, {
107
+ icon: "chevron-left",
108
+ size: 12
109
+ })
110
+ }),
111
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("span", {
112
+ className: "min-w-8 select-none px-1 text-center text-[11px] font-semibold leading-4",
113
+ "data-testid": "loop-iteration-label",
114
+ children: [
115
+ visibleIndex,
116
+ " / ",
117
+ total
118
+ ]
119
+ }),
120
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("button", {
121
+ type: "button",
122
+ className: (0, apollo_wind_namespaceObject.cn)('nodrag nopan inline-flex h-4 w-4 items-center justify-center rounded-full', 'text-foreground transition-opacity', canGoNext ? 'cursor-pointer opacity-100' : 'cursor-not-allowed opacity-40'),
123
+ disabled: !canGoNext,
124
+ "aria-label": "Next loop iteration",
125
+ onClick: handleNext,
126
+ onPointerDown: stopCanvasControlEvent,
127
+ onMouseDown: stopCanvasControlEvent,
128
+ "data-testid": "loop-iteration-next",
129
+ children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(icon_registry_cjs_namespaceObject.CanvasIcon, {
130
+ icon: "chevron-right",
131
+ size: 12
132
+ })
133
+ })
134
+ ]
135
+ });
136
+ }
137
+ exports.IterationNavigator = __webpack_exports__.IterationNavigator;
138
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
139
+ "IterationNavigator"
140
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
141
+ Object.defineProperty(exports, '__esModule', {
142
+ value: true
143
+ });
@@ -0,0 +1,7 @@
1
+ import type { LoopIterationState } from './LoopNode.types';
2
+ interface IterationNavigatorProps {
3
+ iterationState: LoopIterationState;
4
+ }
5
+ export declare function IterationNavigator({ iterationState }: IterationNavigatorProps): import("react/jsx-runtime").JSX.Element | null;
6
+ export {};
7
+ //# sourceMappingURL=IterationNavigator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IterationNavigator.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/LoopNode/IterationNavigator.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,UAAU,uBAAuB;IAC/B,cAAc,EAAE,kBAAkB,CAAC;CACpC;AA4BD,wBAAgB,kBAAkB,CAAC,EAAE,cAAc,EAAE,EAAE,uBAAuB,kDAQ7E"}
@@ -0,0 +1,109 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { cn } from "@uipath/apollo-wind";
3
+ import { useCallback } from "react";
4
+ import { clamp } from "../../utils/index.js";
5
+ import { CanvasIcon } from "../../utils/icon-registry.js";
6
+ function resolveState(iterationState) {
7
+ if (!Number.isFinite(iterationState.total)) return;
8
+ const total = Math.trunc(iterationState.total);
9
+ if (total <= 0) return;
10
+ const rawActiveIndex = Number.isFinite(iterationState.activeIndex) ? Math.trunc(iterationState.activeIndex) : 0;
11
+ return {
12
+ ...iterationState,
13
+ total,
14
+ activeIndex: clamp(rawActiveIndex, 0, total - 1)
15
+ };
16
+ }
17
+ function stopCanvasControlEvent(event) {
18
+ event.stopPropagation();
19
+ }
20
+ function IterationNavigator({ iterationState }) {
21
+ const resolvedState = resolveState(iterationState);
22
+ if (!resolvedState) return null;
23
+ return /*#__PURE__*/ jsx(NavigatorContent, {
24
+ iterationState: resolvedState
25
+ });
26
+ }
27
+ function NavigatorContent({ iterationState }) {
28
+ const { activeIndex, total, onActiveIndexChange, disabled, ariaLabel } = iterationState;
29
+ const canInteract = !disabled && 'function' == typeof onActiveIndexChange;
30
+ const canGoPrevious = canInteract && activeIndex > 0;
31
+ const canGoNext = canInteract && activeIndex < total - 1;
32
+ const label = ariaLabel ?? 'Loop iteration';
33
+ const visibleIndex = activeIndex + 1;
34
+ const handlePrevious = useCallback((event)=>{
35
+ event.stopPropagation();
36
+ if (!canGoPrevious) return;
37
+ onActiveIndexChange?.(activeIndex - 1);
38
+ }, [
39
+ activeIndex,
40
+ canGoPrevious,
41
+ onActiveIndexChange
42
+ ]);
43
+ const handleNext = useCallback((event)=>{
44
+ event.stopPropagation();
45
+ if (!canGoNext) return;
46
+ onActiveIndexChange?.(activeIndex + 1);
47
+ }, [
48
+ activeIndex,
49
+ canGoNext,
50
+ onActiveIndexChange
51
+ ]);
52
+ return /*#__PURE__*/ jsxs("fieldset", {
53
+ className: cn('nodrag nopan pointer-events-auto m-0 flex h-6 min-w-0 shrink-0 items-center gap-1 rounded-full px-1 py-0', 'border border-border bg-surface text-foreground shadow-sm'),
54
+ "data-testid": "loop-iteration-navigator",
55
+ onPointerDown: stopCanvasControlEvent,
56
+ onMouseDown: stopCanvasControlEvent,
57
+ onDoubleClick: stopCanvasControlEvent,
58
+ children: [
59
+ /*#__PURE__*/ jsxs("legend", {
60
+ className: "sr-only",
61
+ children: [
62
+ label,
63
+ ": ",
64
+ visibleIndex,
65
+ " of ",
66
+ total
67
+ ]
68
+ }),
69
+ /*#__PURE__*/ jsx("button", {
70
+ type: "button",
71
+ className: cn('nodrag nopan inline-flex h-4 w-4 items-center justify-center rounded-full', 'text-foreground transition-opacity', canGoPrevious ? 'cursor-pointer opacity-100' : 'cursor-not-allowed opacity-40'),
72
+ disabled: !canGoPrevious,
73
+ "aria-label": "Previous loop iteration",
74
+ onClick: handlePrevious,
75
+ onPointerDown: stopCanvasControlEvent,
76
+ onMouseDown: stopCanvasControlEvent,
77
+ "data-testid": "loop-iteration-previous",
78
+ children: /*#__PURE__*/ jsx(CanvasIcon, {
79
+ icon: "chevron-left",
80
+ size: 12
81
+ })
82
+ }),
83
+ /*#__PURE__*/ jsxs("span", {
84
+ className: "min-w-8 select-none px-1 text-center text-[11px] font-semibold leading-4",
85
+ "data-testid": "loop-iteration-label",
86
+ children: [
87
+ visibleIndex,
88
+ " / ",
89
+ total
90
+ ]
91
+ }),
92
+ /*#__PURE__*/ jsx("button", {
93
+ type: "button",
94
+ className: cn('nodrag nopan inline-flex h-4 w-4 items-center justify-center rounded-full', 'text-foreground transition-opacity', canGoNext ? 'cursor-pointer opacity-100' : 'cursor-not-allowed opacity-40'),
95
+ disabled: !canGoNext,
96
+ "aria-label": "Next loop iteration",
97
+ onClick: handleNext,
98
+ onPointerDown: stopCanvasControlEvent,
99
+ onMouseDown: stopCanvasControlEvent,
100
+ "data-testid": "loop-iteration-next",
101
+ children: /*#__PURE__*/ jsx(CanvasIcon, {
102
+ icon: "chevron-right",
103
+ size: 12
104
+ })
105
+ })
106
+ ]
107
+ });
108
+ }
109
+ export { IterationNavigator };