@uipath/apollo-react 4.32.0 → 4.32.2

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 (34) hide show
  1. package/dist/canvas/components/AddNodePanel/AddNodeManager.cjs +1 -0
  2. package/dist/canvas/components/AddNodePanel/AddNodeManager.d.ts.map +1 -1
  3. package/dist/canvas/components/AddNodePanel/AddNodeManager.js +1 -0
  4. package/dist/canvas/components/FloatingCanvasPanel/FloatingCanvasPanel.cjs +21 -2
  5. package/dist/canvas/components/FloatingCanvasPanel/FloatingCanvasPanel.d.ts +2 -1
  6. package/dist/canvas/components/FloatingCanvasPanel/FloatingCanvasPanel.d.ts.map +1 -1
  7. package/dist/canvas/components/FloatingCanvasPanel/FloatingCanvasPanel.js +21 -2
  8. package/dist/canvas/components/FloatingCanvasPanel/PanelChrome.cjs +4 -2
  9. package/dist/canvas/components/FloatingCanvasPanel/PanelChrome.d.ts +2 -1
  10. package/dist/canvas/components/FloatingCanvasPanel/PanelChrome.d.ts.map +1 -1
  11. package/dist/canvas/components/FloatingCanvasPanel/PanelChrome.js +4 -2
  12. package/dist/canvas/components/FloatingCanvasPanel/useFloatingPosition.cjs +18 -0
  13. package/dist/canvas/components/FloatingCanvasPanel/useFloatingPosition.d.ts +1 -0
  14. package/dist/canvas/components/FloatingCanvasPanel/useFloatingPosition.d.ts.map +1 -1
  15. package/dist/canvas/components/FloatingCanvasPanel/useFloatingPosition.js +20 -2
  16. package/dist/canvas/components/LoopNode/IterationNavigator.cjs +29 -13
  17. package/dist/canvas/components/LoopNode/IterationNavigator.d.ts.map +1 -1
  18. package/dist/canvas/components/LoopNode/IterationNavigator.js +27 -11
  19. package/dist/canvas/components/LoopNode/LoopNode.cjs +39 -18
  20. package/dist/canvas/components/LoopNode/LoopNode.d.ts.map +1 -1
  21. package/dist/canvas/components/LoopNode/LoopNode.js +37 -16
  22. package/dist/canvas/components/Toolbox/Toolbox.cjs +15 -0
  23. package/dist/canvas/components/Toolbox/Toolbox.d.ts.map +1 -1
  24. package/dist/canvas/components/Toolbox/Toolbox.js +15 -0
  25. package/dist/canvas/components/Toolbox/Toolbox.styles.cjs +2 -2
  26. package/dist/canvas/components/Toolbox/Toolbox.styles.js +2 -2
  27. package/dist/canvas/locales/en.cjs +1 -1
  28. package/dist/canvas/locales/en.d.ts.map +1 -1
  29. package/dist/canvas/locales/en.js +1 -1
  30. package/dist/canvas/styles/tailwind.canvas.css +1 -1
  31. package/dist/i18n/useSafeLingui.cjs +12 -1
  32. package/dist/i18n/useSafeLingui.d.ts.map +1 -1
  33. package/dist/i18n/useSafeLingui.js +12 -1
  34. package/package.json +1 -1
@@ -184,6 +184,7 @@ const AddNodeManager = ({ initializing, customPanel: CustomPanel, createNodeData
184
184
  nodeId: external_constants_cjs_namespaceObject.PREVIEW_NODE_ID,
185
185
  placement: "right-start",
186
186
  offset: external_constants_cjs_namespaceObject.FLOATING_CANVAS_PANEL_OFFSET,
187
+ scrollableContent: !!CustomPanel,
187
188
  children: CustomPanel ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(CustomPanel, {
188
189
  onNodeSelect: (item)=>handleNodeSelect(item),
189
190
  onClose: handleClose
@@ -1 +1 @@
1
- {"version":3,"file":"AddNodeManager.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/AddNodePanel/AddNodeManager.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,0CAA0C,CAAC;AAE3E,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,MAAM,WAAW,mBAAmB;IAKlC,WAAW,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC;IAI7E,YAAY,CAAC,EAAE,OAAO,CAAC;IAIvB,gBAAgB,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAK7F,cAAc,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,YAAY,CAAC,KAAK,YAAY,CAAC;IAOtE,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK;QAAE,OAAO,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,IAAI,EAAE,CAAA;KAAE,CAAC;IAK7F,WAAW,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,KAAK,IAAI,CAAC;IAMpF,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AASD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA2NxD,CAAC"}
1
+ {"version":3,"file":"AddNodeManager.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/AddNodePanel/AddNodeManager.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,0CAA0C,CAAC;AAE3E,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,MAAM,WAAW,mBAAmB;IAKlC,WAAW,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC;IAI7E,YAAY,CAAC,EAAE,OAAO,CAAC;IAIvB,gBAAgB,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAK7F,cAAc,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,YAAY,CAAC,KAAK,YAAY,CAAC;IAOtE,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK;QAAE,OAAO,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,IAAI,EAAE,CAAA;KAAE,CAAC;IAK7F,WAAW,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,KAAK,IAAI,CAAC;IAMpF,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AASD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA8NxD,CAAC"}
@@ -156,6 +156,7 @@ const AddNodeManager = ({ initializing, customPanel: CustomPanel, createNodeData
156
156
  nodeId: PREVIEW_NODE_ID,
157
157
  placement: "right-start",
158
158
  offset: FLOATING_CANVAS_PANEL_OFFSET,
159
+ scrollableContent: !!CustomPanel,
159
160
  children: CustomPanel ? /*#__PURE__*/ jsx(CustomPanel, {
160
161
  onNodeSelect: (item)=>handleNodeSelect(item),
161
162
  onClose: handleClose
@@ -35,10 +35,12 @@ const external_CanvasPortal_cjs_namespaceObject = require("./CanvasPortal.cjs");
35
35
  const external_PanelChrome_cjs_namespaceObject = require("./PanelChrome.cjs");
36
36
  const external_useFloatingPosition_cjs_namespaceObject = require("./useFloatingPosition.cjs");
37
37
  const PANEL_BASE_CLASS = 'text-(--canvas-foreground) bg-(--canvas-background-raised) border border-(--canvas-border-de-emp) text-sm flex flex-col transition-opacity duration-200 ease-in-out';
38
+ const PANEL_FLOATING_MAX_HEIGHT = 600;
39
+ const PANEL_FLOATING_MIN_HEIGHT = 100;
38
40
  const PANEL_FLOATING_CLASS = 'rounded-lg shadow-[0_4px_16px_rgba(0,0,0,0.12)] w-auto min-w-[280px] max-w-none h-auto max-h-[600px]';
39
41
  const PANEL_PINNED_CLASS = 'rounded-none shadow-none w-[320px] min-w-[320px] max-w-[320px] h-screen max-h-screen';
40
- function FloatingCanvasPanel({ open = true, nodeId, anchorRect, placement = 'right-start', offset = 20, fallbackPlacement, isPinned = false, useFixedPosition = false, portalToBody = false, title, header, headerActions, children, onClose, scrollKey, onMouseEnter, onMouseLeave }) {
41
- const { computedAnchor, floatingStyles, refs, mergedReferenceRef } = (0, external_useFloatingPosition_cjs_namespaceObject.useFloatingPosition)({
42
+ function FloatingCanvasPanel({ open = true, nodeId, anchorRect, placement = 'right-start', offset = 20, fallbackPlacement, isPinned = false, useFixedPosition = false, portalToBody = false, title, header, headerActions, children, onClose, scrollKey, scrollableContent = true, onMouseEnter, onMouseLeave }) {
43
+ const { computedAnchor, floatingStyles, availableHeight, refs, mergedReferenceRef } = (0, external_useFloatingPosition_cjs_namespaceObject.useFloatingPosition)({
42
44
  open,
43
45
  nodeId,
44
46
  anchorRect,
@@ -49,6 +51,19 @@ function FloatingCanvasPanel({ open = true, nodeId, anchorRect, placement = 'rig
49
51
  const panelClassName = (0, external_react_namespaceObject.useMemo)(()=>(0, apollo_wind_namespaceObject.cn)(PANEL_BASE_CLASS, isPinned ? PANEL_PINNED_CLASS : PANEL_FLOATING_CLASS), [
50
52
  isPinned
51
53
  ]);
54
+ const sizingStyle = (0, external_react_namespaceObject.useMemo)(()=>{
55
+ if (isPinned || null == availableHeight) return {};
56
+ const maxHeight = Math.min(PANEL_FLOATING_MAX_HEIGHT, availableHeight);
57
+ const occupiedHeight = Math.max(PANEL_FLOATING_MIN_HEIGHT, maxHeight);
58
+ return {
59
+ maxHeight: `${maxHeight}px`,
60
+ minHeight: `${PANEL_FLOATING_MIN_HEIGHT}px`,
61
+ ['--floating-available-height']: `${occupiedHeight}px`
62
+ };
63
+ }, [
64
+ isPinned,
65
+ availableHeight
66
+ ]);
52
67
  if (!open || !computedAnchor) return null;
53
68
  if (useFixedPosition && anchorRect) {
54
69
  const getScreenSpacePosition = ()=>{
@@ -100,6 +115,7 @@ function FloatingCanvasPanel({ open = true, nodeId, anchorRect, placement = 'rig
100
115
  style: {
101
116
  position: 'fixed',
102
117
  ...screenPosition,
118
+ ...sizingStyle,
103
119
  zIndex: 1100,
104
120
  pointerEvents: 'auto'
105
121
  },
@@ -109,6 +125,7 @@ function FloatingCanvasPanel({ open = true, nodeId, anchorRect, placement = 'rig
109
125
  headerActions: headerActions,
110
126
  onClose: onClose,
111
127
  scrollKey: scrollKey,
128
+ scrollableContent: scrollableContent,
112
129
  children: children
113
130
  })
114
131
  });
@@ -123,6 +140,7 @@ function FloatingCanvasPanel({ open = true, nodeId, anchorRect, placement = 'rig
123
140
  onPointerLeave: onMouseLeave,
124
141
  style: {
125
142
  ...isPinned ? {} : floatingStyles,
143
+ ...sizingStyle,
126
144
  position: isPinned ? 'fixed' : 'absolute',
127
145
  right: isPinned ? 0 : void 0,
128
146
  top: isPinned ? 0 : void 0,
@@ -135,6 +153,7 @@ function FloatingCanvasPanel({ open = true, nodeId, anchorRect, placement = 'rig
135
153
  headerActions: headerActions,
136
154
  onClose: onClose,
137
155
  scrollKey: scrollKey,
156
+ scrollableContent: scrollableContent,
138
157
  children: children
139
158
  })
140
159
  });
@@ -17,8 +17,9 @@ export type FloatingCanvasPanelProps = {
17
17
  children?: ReactNode;
18
18
  onClose?: () => void;
19
19
  scrollKey?: string;
20
+ scrollableContent?: boolean;
20
21
  onMouseEnter?: () => void;
21
22
  onMouseLeave?: () => void;
22
23
  };
23
- export declare function FloatingCanvasPanel({ open, nodeId, anchorRect, placement, offset, fallbackPlacement, isPinned, useFixedPosition, portalToBody, title, header, headerActions, children, onClose, scrollKey, onMouseEnter, onMouseLeave, }: FloatingCanvasPanelProps): import("react/jsx-runtime").JSX.Element | null;
24
+ export declare function FloatingCanvasPanel({ open, nodeId, anchorRect, placement, offset, fallbackPlacement, isPinned, useFixedPosition, portalToBody, title, header, headerActions, children, onClose, scrollKey, scrollableContent, onMouseEnter, onMouseLeave, }: FloatingCanvasPanelProps): import("react/jsx-runtime").JSX.Element | null;
24
25
  //# sourceMappingURL=FloatingCanvasPanel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FloatingCanvasPanel.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/FloatingCanvasPanel/FloatingCanvasPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,OAAO,EAAE,KAAK,UAAU,EAAuB,MAAM,uBAAuB,CAAC;AAW7E,MAAM,MAAM,wBAAwB,GAAG;IAErC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAShB,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;IAOnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAM3B,YAAY,CAAC,EAAE,OAAO,CAAC;IAGvB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;CAC3B,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,EAClC,IAAW,EACX,MAAM,EACN,UAAU,EACV,SAAyB,EACzB,MAAW,EACX,iBAAiB,EACjB,QAAgB,EAChB,gBAAwB,EACxB,YAAoB,EACpB,KAAK,EACL,MAAM,EACN,aAAa,EACb,QAAQ,EACR,OAAO,EACP,SAAS,EACT,YAAY,EACZ,YAAY,GACb,EAAE,wBAAwB,kDAgJ1B"}
1
+ {"version":3,"file":"FloatingCanvasPanel.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/FloatingCanvasPanel/FloatingCanvasPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGpD,OAAO,KAAK,EAAiB,SAAS,EAAE,MAAM,OAAO,CAAC;AAKtD,OAAO,EAAE,KAAK,UAAU,EAAuB,MAAM,uBAAuB,CAAC;AA4B7E,MAAM,MAAM,wBAAwB,GAAG;IAErC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAShB,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;IAOnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAM3B,YAAY,CAAC,EAAE,OAAO,CAAC;IAGvB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IAOnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAG5B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;CAC3B,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,EAClC,IAAW,EACX,MAAM,EACN,UAAU,EACV,SAAyB,EACzB,MAAW,EACX,iBAAiB,EACjB,QAAgB,EAChB,gBAAwB,EACxB,YAAoB,EACpB,KAAK,EACL,MAAM,EACN,aAAa,EACb,QAAQ,EACR,OAAO,EACP,SAAS,EACT,iBAAwB,EACxB,YAAY,EACZ,YAAY,GACb,EAAE,wBAAwB,kDAmK1B"}
@@ -7,10 +7,12 @@ import { CanvasPortal } from "./CanvasPortal.js";
7
7
  import { PanelChrome } from "./PanelChrome.js";
8
8
  import { useFloatingPosition } from "./useFloatingPosition.js";
9
9
  const PANEL_BASE_CLASS = 'text-(--canvas-foreground) bg-(--canvas-background-raised) border border-(--canvas-border-de-emp) text-sm flex flex-col transition-opacity duration-200 ease-in-out';
10
+ const PANEL_FLOATING_MAX_HEIGHT = 600;
11
+ const PANEL_FLOATING_MIN_HEIGHT = 100;
10
12
  const PANEL_FLOATING_CLASS = 'rounded-lg shadow-[0_4px_16px_rgba(0,0,0,0.12)] w-auto min-w-[280px] max-w-none h-auto max-h-[600px]';
11
13
  const PANEL_PINNED_CLASS = 'rounded-none shadow-none w-[320px] min-w-[320px] max-w-[320px] h-screen max-h-screen';
12
- function FloatingCanvasPanel({ open = true, nodeId, anchorRect, placement = 'right-start', offset = 20, fallbackPlacement, isPinned = false, useFixedPosition = false, portalToBody = false, title, header, headerActions, children, onClose, scrollKey, onMouseEnter, onMouseLeave }) {
13
- const { computedAnchor, floatingStyles, refs, mergedReferenceRef } = useFloatingPosition({
14
+ function FloatingCanvasPanel({ open = true, nodeId, anchorRect, placement = 'right-start', offset = 20, fallbackPlacement, isPinned = false, useFixedPosition = false, portalToBody = false, title, header, headerActions, children, onClose, scrollKey, scrollableContent = true, onMouseEnter, onMouseLeave }) {
15
+ const { computedAnchor, floatingStyles, availableHeight, refs, mergedReferenceRef } = useFloatingPosition({
14
16
  open,
15
17
  nodeId,
16
18
  anchorRect,
@@ -21,6 +23,19 @@ function FloatingCanvasPanel({ open = true, nodeId, anchorRect, placement = 'rig
21
23
  const panelClassName = useMemo(()=>cn(PANEL_BASE_CLASS, isPinned ? PANEL_PINNED_CLASS : PANEL_FLOATING_CLASS), [
22
24
  isPinned
23
25
  ]);
26
+ const sizingStyle = useMemo(()=>{
27
+ if (isPinned || null == availableHeight) return {};
28
+ const maxHeight = Math.min(PANEL_FLOATING_MAX_HEIGHT, availableHeight);
29
+ const occupiedHeight = Math.max(PANEL_FLOATING_MIN_HEIGHT, maxHeight);
30
+ return {
31
+ maxHeight: `${maxHeight}px`,
32
+ minHeight: `${PANEL_FLOATING_MIN_HEIGHT}px`,
33
+ ['--floating-available-height']: `${occupiedHeight}px`
34
+ };
35
+ }, [
36
+ isPinned,
37
+ availableHeight
38
+ ]);
24
39
  if (!open || !computedAnchor) return null;
25
40
  if (useFixedPosition && anchorRect) {
26
41
  const getScreenSpacePosition = ()=>{
@@ -72,6 +87,7 @@ function FloatingCanvasPanel({ open = true, nodeId, anchorRect, placement = 'rig
72
87
  style: {
73
88
  position: 'fixed',
74
89
  ...screenPosition,
90
+ ...sizingStyle,
75
91
  zIndex: 1100,
76
92
  pointerEvents: 'auto'
77
93
  },
@@ -81,6 +97,7 @@ function FloatingCanvasPanel({ open = true, nodeId, anchorRect, placement = 'rig
81
97
  headerActions: headerActions,
82
98
  onClose: onClose,
83
99
  scrollKey: scrollKey,
100
+ scrollableContent: scrollableContent,
84
101
  children: children
85
102
  })
86
103
  });
@@ -95,6 +112,7 @@ function FloatingCanvasPanel({ open = true, nodeId, anchorRect, placement = 'rig
95
112
  onPointerLeave: onMouseLeave,
96
113
  style: {
97
114
  ...isPinned ? {} : floatingStyles,
115
+ ...sizingStyle,
98
116
  position: isPinned ? 'fixed' : 'absolute',
99
117
  right: isPinned ? 0 : void 0,
100
118
  top: isPinned ? 0 : void 0,
@@ -107,6 +125,7 @@ function FloatingCanvasPanel({ open = true, nodeId, anchorRect, placement = 'rig
107
125
  headerActions: headerActions,
108
126
  onClose: onClose,
109
127
  scrollKey: scrollKey,
128
+ scrollableContent: scrollableContent,
110
129
  children: children
111
130
  })
112
131
  });
@@ -51,7 +51,8 @@ const PanelHeader = styled_default().div`
51
51
  `;
52
52
  const PanelContent = styled_default().div`
53
53
  flex: 1;
54
- overflow-y: auto;
54
+ min-height: 0;
55
+ overflow-y: ${(props)=>false === props.scrollable ? 'hidden' : 'auto'};
55
56
  overflow-x: hidden;
56
57
 
57
58
  &::-webkit-scrollbar {
@@ -72,7 +73,7 @@ const PanelContent = styled_default().div`
72
73
  }
73
74
  }
74
75
  `;
75
- function PanelChrome({ title, header, headerActions, children, onClose, scrollKey }) {
76
+ function PanelChrome({ title, header, headerActions, children, onClose, scrollKey, scrollableContent = true }) {
76
77
  const contentRef = (0, external_react_namespaceObject.useRef)(null);
77
78
  (0, external_react_namespaceObject.useEffect)(()=>{
78
79
  if (contentRef.current && scrollKey) contentRef.current.scrollTop = 0;
@@ -114,6 +115,7 @@ function PanelChrome({ title, header, headerActions, children, onClose, scrollKe
114
115
  }),
115
116
  /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(PanelContent, {
116
117
  ref: contentRef,
118
+ scrollable: scrollableContent,
117
119
  children: children
118
120
  })
119
121
  ]
@@ -6,6 +6,7 @@ export interface PanelChromeProps {
6
6
  children?: ReactNode;
7
7
  onClose?: () => void;
8
8
  scrollKey?: string;
9
+ scrollableContent?: boolean;
9
10
  }
10
- export declare function PanelChrome({ title, header, headerActions, children, onClose, scrollKey, }: PanelChromeProps): import("react/jsx-runtime").JSX.Element;
11
+ export declare function PanelChrome({ title, header, headerActions, children, onClose, scrollKey, scrollableContent, }: PanelChromeProps): import("react/jsx-runtime").JSX.Element;
11
12
  //# sourceMappingURL=PanelChrome.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PanelChrome.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/FloatingCanvasPanel/PanelChrome.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAqCvC,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,MAAM,EACN,aAAa,EACb,QAAQ,EACR,OAAO,EACP,SAAS,GACV,EAAE,gBAAgB,2CAqClB"}
1
+ {"version":3,"file":"PanelChrome.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/FloatingCanvasPanel/PanelChrome.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAsCvC,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,MAAM,EACN,aAAa,EACb,QAAQ,EACR,OAAO,EACP,SAAS,EACT,iBAAwB,GACzB,EAAE,gBAAgB,2CAuClB"}
@@ -13,7 +13,8 @@ const PanelHeader = styled.div`
13
13
  `;
14
14
  const PanelContent = styled.div`
15
15
  flex: 1;
16
- overflow-y: auto;
16
+ min-height: 0;
17
+ overflow-y: ${(props)=>false === props.scrollable ? 'hidden' : 'auto'};
17
18
  overflow-x: hidden;
18
19
 
19
20
  &::-webkit-scrollbar {
@@ -34,7 +35,7 @@ const PanelContent = styled.div`
34
35
  }
35
36
  }
36
37
  `;
37
- function PanelChrome({ title, header, headerActions, children, onClose, scrollKey }) {
38
+ function PanelChrome({ title, header, headerActions, children, onClose, scrollKey, scrollableContent = true }) {
38
39
  const contentRef = useRef(null);
39
40
  useEffect(()=>{
40
41
  if (contentRef.current && scrollKey) contentRef.current.scrollTop = 0;
@@ -76,6 +77,7 @@ function PanelChrome({ title, header, headerActions, children, onClose, scrollKe
76
77
  }),
77
78
  /*#__PURE__*/ jsx(PanelContent, {
78
79
  ref: contentRef,
80
+ scrollable: scrollableContent,
79
81
  children: children
80
82
  })
81
83
  ]
@@ -29,9 +29,11 @@ __webpack_require__.d(__webpack_exports__, {
29
29
  const react_namespaceObject = require("@floating-ui/react");
30
30
  const react_cjs_namespaceObject = require("../../xyflow/react.cjs");
31
31
  const external_react_namespaceObject = require("react");
32
+ const VIEWPORT_PADDING = 8;
32
33
  function useFloatingPosition({ open = true, nodeId, anchorRect, placement = 'right-start', offset: offsetValue = 20, fallbackPlacement = 'none' }) {
33
34
  const referenceRef = (0, external_react_namespaceObject.useRef)(null);
34
35
  const internalNode = (0, react_cjs_namespaceObject.useInternalNode)(nodeId || '');
36
+ const [availableHeight, setAvailableHeight] = (0, external_react_namespaceObject.useState)(null);
35
37
  const computedAnchor = (0, external_react_namespaceObject.useMemo)(()=>{
36
38
  if (anchorRect) return anchorRect;
37
39
  if (!internalNode) return null;
@@ -58,6 +60,16 @@ function useFloatingPosition({ open = true, nodeId, anchorRect, placement = 'rig
58
60
  (0, react_namespaceObject.offset)(offsetValue),
59
61
  (0, react_namespaceObject.flip)({
60
62
  fallbackAxisSideDirection: fallbackPlacement
63
+ }),
64
+ (0, react_namespaceObject.shift)({
65
+ padding: VIEWPORT_PADDING
66
+ }),
67
+ (0, react_namespaceObject.size)({
68
+ padding: VIEWPORT_PADDING,
69
+ apply ({ availableHeight: ah }) {
70
+ const next = Math.max(0, Math.floor(ah));
71
+ setAvailableHeight((prev)=>prev === next ? prev : next);
72
+ }
61
73
  })
62
74
  ],
63
75
  whileElementsMounted: react_namespaceObject.autoUpdate
@@ -66,6 +78,11 @@ function useFloatingPosition({ open = true, nodeId, anchorRect, placement = 'rig
66
78
  refs.setReference,
67
79
  referenceRef
68
80
  ]);
81
+ (0, external_react_namespaceObject.useEffect)(()=>{
82
+ if (!open) setAvailableHeight(null);
83
+ }, [
84
+ open
85
+ ]);
69
86
  (0, external_react_namespaceObject.useEffect)(()=>{
70
87
  if (open) update();
71
88
  }, [
@@ -79,6 +96,7 @@ function useFloatingPosition({ open = true, nodeId, anchorRect, placement = 'rig
79
96
  return {
80
97
  computedAnchor,
81
98
  floatingStyles,
99
+ availableHeight,
82
100
  refs,
83
101
  mergedReferenceRef
84
102
  };
@@ -17,6 +17,7 @@ export interface UseFloatingPositionOptions {
17
17
  export interface UseFloatingPositionReturn {
18
18
  computedAnchor: AnchorRect | null;
19
19
  floatingStyles: CSSProperties;
20
+ availableHeight: number | null;
20
21
  refs: {
21
22
  setReference: RefCallback<Element>;
22
23
  setFloating: RefCallback<HTMLElement>;
@@ -1 +1 @@
1
- {"version":3,"file":"useFloatingPosition.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/FloatingCanvasPanel/useFloatingPosition.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,SAAS,EAGf,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAA8B,MAAM,OAAO,CAAC;AAEzF,MAAM,MAAM,UAAU,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjF,MAAM,WAAW,0BAA0B;IACzC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;CAC9C;AAED,MAAM,WAAW,yBAAyB;IACxC,cAAc,EAAE,UAAU,GAAG,IAAI,CAAC;IAClC,cAAc,EAAE,aAAa,CAAC;IAC9B,IAAI,EAAE;QACJ,YAAY,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;QACnC,WAAW,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;KACvC,CAAC;IACF,kBAAkB,EAAE,CAAC,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;CACjE;AAED,wBAAgB,mBAAmB,CAAC,EAClC,IAAW,EACX,MAAM,EACN,UAAU,EACV,SAAyB,EACzB,MAAM,EAAE,WAAgB,EACxB,iBAA0B,GAC3B,EAAE,0BAA0B,GAAG,yBAAyB,CA8CxD"}
1
+ {"version":3,"file":"useFloatingPosition.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/FloatingCanvasPanel/useFloatingPosition.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,SAAS,EAKf,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAwC,MAAM,OAAO,CAAC;AAEnG,MAAM,MAAM,UAAU,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AASjF,MAAM,WAAW,0BAA0B;IACzC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;CAC9C;AAED,MAAM,WAAW,yBAAyB;IACxC,cAAc,EAAE,UAAU,GAAG,IAAI,CAAC;IAClC,cAAc,EAAE,aAAa,CAAC;IAC9B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,IAAI,EAAE;QACJ,YAAY,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;QACnC,WAAW,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;KACvC,CAAC;IACF,kBAAkB,EAAE,CAAC,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;CACjE;AAED,wBAAgB,mBAAmB,CAAC,EAClC,IAAW,EACX,MAAM,EACN,UAAU,EACV,SAAyB,EACzB,MAAM,EAAE,WAAgB,EACxB,iBAA0B,GAC3B,EAAE,0BAA0B,GAAG,yBAAyB,CAmExD"}
@@ -1,9 +1,11 @@
1
- import { autoUpdate, flip, offset, useFloating, useMergeRefs } from "@floating-ui/react";
1
+ import { autoUpdate, flip, offset, shift, size, useFloating, useMergeRefs } from "@floating-ui/react";
2
2
  import { useInternalNode } from "../../xyflow/react.js";
3
- import { useEffect, useMemo, useRef } from "react";
3
+ import { useEffect, useMemo, useRef, useState } from "react";
4
+ const VIEWPORT_PADDING = 8;
4
5
  function useFloatingPosition({ open = true, nodeId, anchorRect, placement = 'right-start', offset: offsetValue = 20, fallbackPlacement = 'none' }) {
5
6
  const referenceRef = useRef(null);
6
7
  const internalNode = useInternalNode(nodeId || '');
8
+ const [availableHeight, setAvailableHeight] = useState(null);
7
9
  const computedAnchor = useMemo(()=>{
8
10
  if (anchorRect) return anchorRect;
9
11
  if (!internalNode) return null;
@@ -30,6 +32,16 @@ function useFloatingPosition({ open = true, nodeId, anchorRect, placement = 'rig
30
32
  offset(offsetValue),
31
33
  flip({
32
34
  fallbackAxisSideDirection: fallbackPlacement
35
+ }),
36
+ shift({
37
+ padding: VIEWPORT_PADDING
38
+ }),
39
+ size({
40
+ padding: VIEWPORT_PADDING,
41
+ apply ({ availableHeight: ah }) {
42
+ const next = Math.max(0, Math.floor(ah));
43
+ setAvailableHeight((prev)=>prev === next ? prev : next);
44
+ }
33
45
  })
34
46
  ],
35
47
  whileElementsMounted: autoUpdate
@@ -38,6 +50,11 @@ function useFloatingPosition({ open = true, nodeId, anchorRect, placement = 'rig
38
50
  refs.setReference,
39
51
  referenceRef
40
52
  ]);
53
+ useEffect(()=>{
54
+ if (!open) setAvailableHeight(null);
55
+ }, [
56
+ open
57
+ ]);
41
58
  useEffect(()=>{
42
59
  if (open) update();
43
60
  }, [
@@ -51,6 +68,7 @@ function useFloatingPosition({ open = true, nodeId, anchorRect, placement = 'rig
51
68
  return {
52
69
  computedAnchor,
53
70
  floatingStyles,
71
+ availableHeight,
54
72
  refs,
55
73
  mergedReferenceRef
56
74
  };
@@ -29,7 +29,8 @@ __webpack_require__.d(__webpack_exports__, {
29
29
  const jsx_runtime_namespaceObject = require("react/jsx-runtime");
30
30
  const apollo_wind_namespaceObject = require("@uipath/apollo-wind");
31
31
  const external_react_namespaceObject = require("react");
32
- const index_cjs_namespaceObject = require("../../utils/index.cjs");
32
+ const index_cjs_namespaceObject = require("../../../i18n/index.cjs");
33
+ const external_utils_index_cjs_namespaceObject = require("../../utils/index.cjs");
33
34
  const icon_registry_cjs_namespaceObject = require("../../utils/icon-registry.cjs");
34
35
  function resolveState(iterationState) {
35
36
  if (!Number.isFinite(iterationState.total)) return;
@@ -39,7 +40,7 @@ function resolveState(iterationState) {
39
40
  return {
40
41
  ...iterationState,
41
42
  total,
42
- activeIndex: (0, index_cjs_namespaceObject.clamp)(rawActiveIndex, 0, total - 1)
43
+ activeIndex: (0, external_utils_index_cjs_namespaceObject.clamp)(rawActiveIndex, 0, total - 1)
43
44
  };
44
45
  }
45
46
  function stopCanvasControlEvent(event) {
@@ -53,12 +54,33 @@ function IterationNavigator({ iterationState }) {
53
54
  });
54
55
  }
55
56
  function NavigatorContent({ iterationState }) {
57
+ const { _ } = (0, index_cjs_namespaceObject.useSafeLingui)();
56
58
  const { activeIndex, total, onActiveIndexChange, disabled, ariaLabel } = iterationState;
57
59
  const canInteract = !disabled && 'function' == typeof onActiveIndexChange;
58
60
  const canGoPrevious = canInteract && activeIndex > 0;
59
61
  const canGoNext = canInteract && activeIndex < total - 1;
60
- const label = ariaLabel ?? 'Loop iteration';
62
+ const label = ariaLabel ?? _({
63
+ id: 'loop-node.iteration.label',
64
+ message: 'Loop iteration'
65
+ });
61
66
  const visibleIndex = activeIndex + 1;
67
+ const statusLabel = _({
68
+ id: 'loop-node.iteration.status',
69
+ message: '{label}: {visibleIndex} of {total}',
70
+ values: {
71
+ label,
72
+ visibleIndex,
73
+ total
74
+ }
75
+ });
76
+ const previousLabel = _({
77
+ id: 'loop-node.iteration.previous',
78
+ message: 'Previous loop iteration'
79
+ });
80
+ const nextLabel = _({
81
+ id: 'loop-node.iteration.next',
82
+ message: 'Next loop iteration'
83
+ });
62
84
  const handlePrevious = (0, external_react_namespaceObject.useCallback)((event)=>{
63
85
  event.stopPropagation();
64
86
  if (!canGoPrevious) return;
@@ -84,21 +106,15 @@ function NavigatorContent({ iterationState }) {
84
106
  onMouseDown: stopCanvasControlEvent,
85
107
  onDoubleClick: stopCanvasControlEvent,
86
108
  children: [
87
- /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("legend", {
109
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("legend", {
88
110
  className: "sr-only",
89
- children: [
90
- label,
91
- ": ",
92
- visibleIndex,
93
- " of ",
94
- total
95
- ]
111
+ children: statusLabel
96
112
  }),
97
113
  /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("button", {
98
114
  type: "button",
99
115
  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
116
  disabled: !canGoPrevious,
101
- "aria-label": "Previous loop iteration",
117
+ "aria-label": previousLabel,
102
118
  onClick: handlePrevious,
103
119
  onPointerDown: stopCanvasControlEvent,
104
120
  onMouseDown: stopCanvasControlEvent,
@@ -121,7 +137,7 @@ function NavigatorContent({ iterationState }) {
121
137
  type: "button",
122
138
  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
139
  disabled: !canGoNext,
124
- "aria-label": "Next loop iteration",
140
+ "aria-label": nextLabel,
125
141
  onClick: handleNext,
126
142
  onPointerDown: stopCanvasControlEvent,
127
143
  onMouseDown: stopCanvasControlEvent,
@@ -1 +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"}
1
+ {"version":3,"file":"IterationNavigator.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/LoopNode/IterationNavigator.tsx"],"names":[],"mappings":"AAMA,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"}
@@ -1,6 +1,7 @@
1
1
  import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { cn } from "@uipath/apollo-wind";
3
3
  import { useCallback } from "react";
4
+ import { useSafeLingui } from "../../../i18n/index.js";
4
5
  import { clamp } from "../../utils/index.js";
5
6
  import { CanvasIcon } from "../../utils/icon-registry.js";
6
7
  function resolveState(iterationState) {
@@ -25,12 +26,33 @@ function IterationNavigator({ iterationState }) {
25
26
  });
26
27
  }
27
28
  function NavigatorContent({ iterationState }) {
29
+ const { _ } = useSafeLingui();
28
30
  const { activeIndex, total, onActiveIndexChange, disabled, ariaLabel } = iterationState;
29
31
  const canInteract = !disabled && 'function' == typeof onActiveIndexChange;
30
32
  const canGoPrevious = canInteract && activeIndex > 0;
31
33
  const canGoNext = canInteract && activeIndex < total - 1;
32
- const label = ariaLabel ?? 'Loop iteration';
34
+ const label = ariaLabel ?? _({
35
+ id: 'loop-node.iteration.label',
36
+ message: 'Loop iteration'
37
+ });
33
38
  const visibleIndex = activeIndex + 1;
39
+ const statusLabel = _({
40
+ id: 'loop-node.iteration.status',
41
+ message: '{label}: {visibleIndex} of {total}',
42
+ values: {
43
+ label,
44
+ visibleIndex,
45
+ total
46
+ }
47
+ });
48
+ const previousLabel = _({
49
+ id: 'loop-node.iteration.previous',
50
+ message: 'Previous loop iteration'
51
+ });
52
+ const nextLabel = _({
53
+ id: 'loop-node.iteration.next',
54
+ message: 'Next loop iteration'
55
+ });
34
56
  const handlePrevious = useCallback((event)=>{
35
57
  event.stopPropagation();
36
58
  if (!canGoPrevious) return;
@@ -56,21 +78,15 @@ function NavigatorContent({ iterationState }) {
56
78
  onMouseDown: stopCanvasControlEvent,
57
79
  onDoubleClick: stopCanvasControlEvent,
58
80
  children: [
59
- /*#__PURE__*/ jsxs("legend", {
81
+ /*#__PURE__*/ jsx("legend", {
60
82
  className: "sr-only",
61
- children: [
62
- label,
63
- ": ",
64
- visibleIndex,
65
- " of ",
66
- total
67
- ]
83
+ children: statusLabel
68
84
  }),
69
85
  /*#__PURE__*/ jsx("button", {
70
86
  type: "button",
71
87
  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
88
  disabled: !canGoPrevious,
73
- "aria-label": "Previous loop iteration",
89
+ "aria-label": previousLabel,
74
90
  onClick: handlePrevious,
75
91
  onPointerDown: stopCanvasControlEvent,
76
92
  onMouseDown: stopCanvasControlEvent,
@@ -93,7 +109,7 @@ function NavigatorContent({ iterationState }) {
93
109
  type: "button",
94
110
  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
111
  disabled: !canGoNext,
96
- "aria-label": "Next loop iteration",
112
+ "aria-label": nextLabel,
97
113
  onClick: handleNext,
98
114
  onPointerDown: stopCanvasControlEvent,
99
115
  onMouseDown: stopCanvasControlEvent,