groove-dev 0.22.7 → 0.22.9

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 (125) hide show
  1. package/node_modules/@groove-dev/daemon/src/api.js +12 -2
  2. package/node_modules/@groove-dev/daemon/src/gateways/manager.js +3 -0
  3. package/node_modules/@groove-dev/gui/dist/assets/{index-B6DQvtWt.js → index-BKZQfaOu.js} +19 -19
  4. package/node_modules/@groove-dev/gui/dist/assets/index-CDWObHaG.css +1 -0
  5. package/node_modules/@groove-dev/gui/dist/index.html +2 -2
  6. package/node_modules/@groove-dev/gui/src/components/agents/agent-feed.jsx +1 -1
  7. package/node_modules/@groove-dev/gui/src/views/agents.jsx +5 -2
  8. package/package.json +1 -1
  9. package/packages/daemon/src/api.js +12 -2
  10. package/packages/daemon/src/gateways/manager.js +3 -0
  11. package/packages/gui/dist/assets/{index-B6DQvtWt.js → index-BKZQfaOu.js} +19 -19
  12. package/packages/gui/dist/assets/index-CDWObHaG.css +1 -0
  13. package/packages/gui/dist/index.html +2 -2
  14. package/packages/gui/src/components/agents/agent-feed.jsx +1 -1
  15. package/packages/gui/src/views/agents.jsx +5 -2
  16. package/node_modules/@groove-dev/gui/dist/assets/index-DHaSTu1c.css +0 -1
  17. package/packages/gui/dist/assets/index-DHaSTu1c.css +0 -1
  18. package/packages/gui/node_modules/.vite/deps/@codemirror_autocomplete.js +0 -68
  19. package/packages/gui/node_modules/.vite/deps/@codemirror_autocomplete.js.map +0 -7
  20. package/packages/gui/node_modules/.vite/deps/@codemirror_commands.js +0 -1420
  21. package/packages/gui/node_modules/.vite/deps/@codemirror_commands.js.map +0 -7
  22. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-css.js +0 -17
  23. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-css.js.map +0 -7
  24. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-html.js +0 -22
  25. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-html.js.map +0 -7
  26. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-javascript.js +0 -34
  27. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-javascript.js.map +0 -7
  28. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-json.js +0 -101
  29. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-json.js.map +0 -7
  30. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-markdown.js +0 -2534
  31. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-markdown.js.map +0 -7
  32. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-python.js +0 -789
  33. package/packages/gui/node_modules/.vite/deps/@codemirror_lang-python.js.map +0 -7
  34. package/packages/gui/node_modules/.vite/deps/@codemirror_language.js +0 -115
  35. package/packages/gui/node_modules/.vite/deps/@codemirror_language.js.map +0 -7
  36. package/packages/gui/node_modules/.vite/deps/@codemirror_search.js +0 -1136
  37. package/packages/gui/node_modules/.vite/deps/@codemirror_search.js.map +0 -7
  38. package/packages/gui/node_modules/.vite/deps/@codemirror_state.js +0 -63
  39. package/packages/gui/node_modules/.vite/deps/@codemirror_state.js.map +0 -7
  40. package/packages/gui/node_modules/.vite/deps/@codemirror_theme-one-dark.js +0 -179
  41. package/packages/gui/node_modules/.vite/deps/@codemirror_theme-one-dark.js.map +0 -7
  42. package/packages/gui/node_modules/.vite/deps/@codemirror_view.js +0 -104
  43. package/packages/gui/node_modules/.vite/deps/@codemirror_view.js.map +0 -7
  44. package/packages/gui/node_modules/.vite/deps/@radix-ui_react-dialog.js +0 -367
  45. package/packages/gui/node_modules/.vite/deps/@radix-ui_react-dialog.js.map +0 -7
  46. package/packages/gui/node_modules/.vite/deps/@radix-ui_react-scroll-area.js +0 -755
  47. package/packages/gui/node_modules/.vite/deps/@radix-ui_react-scroll-area.js.map +0 -7
  48. package/packages/gui/node_modules/.vite/deps/@radix-ui_react-select.js +0 -1254
  49. package/packages/gui/node_modules/.vite/deps/@radix-ui_react-select.js.map +0 -7
  50. package/packages/gui/node_modules/.vite/deps/@radix-ui_react-tabs.js +0 -436
  51. package/packages/gui/node_modules/.vite/deps/@radix-ui_react-tabs.js.map +0 -7
  52. package/packages/gui/node_modules/.vite/deps/@radix-ui_react-tooltip.js +0 -531
  53. package/packages/gui/node_modules/.vite/deps/@radix-ui_react-tooltip.js.map +0 -7
  54. package/packages/gui/node_modules/.vite/deps/@xterm_addon-fit.js +0 -46
  55. package/packages/gui/node_modules/.vite/deps/@xterm_addon-fit.js.map +0 -7
  56. package/packages/gui/node_modules/.vite/deps/@xterm_addon-web-links.js +0 -121
  57. package/packages/gui/node_modules/.vite/deps/@xterm_addon-web-links.js.map +0 -7
  58. package/packages/gui/node_modules/.vite/deps/@xterm_xterm.js +0 -9237
  59. package/packages/gui/node_modules/.vite/deps/@xterm_xterm.js.map +0 -7
  60. package/packages/gui/node_modules/.vite/deps/@xyflow_react.js +0 -9934
  61. package/packages/gui/node_modules/.vite/deps/@xyflow_react.js.map +0 -7
  62. package/packages/gui/node_modules/.vite/deps/_metadata.json +0 -265
  63. package/packages/gui/node_modules/.vite/deps/chunk-3EE34IFC.js +0 -5169
  64. package/packages/gui/node_modules/.vite/deps/chunk-3EE34IFC.js.map +0 -7
  65. package/packages/gui/node_modules/.vite/deps/chunk-3IB5EUP7.js +0 -2000
  66. package/packages/gui/node_modules/.vite/deps/chunk-3IB5EUP7.js.map +0 -7
  67. package/packages/gui/node_modules/.vite/deps/chunk-3LBP22MX.js +0 -1115
  68. package/packages/gui/node_modules/.vite/deps/chunk-3LBP22MX.js.map +0 -7
  69. package/packages/gui/node_modules/.vite/deps/chunk-3Q7HT7ZF.js +0 -701
  70. package/packages/gui/node_modules/.vite/deps/chunk-3Q7HT7ZF.js.map +0 -7
  71. package/packages/gui/node_modules/.vite/deps/chunk-44CLUOQE.js +0 -1776
  72. package/packages/gui/node_modules/.vite/deps/chunk-44CLUOQE.js.map +0 -7
  73. package/packages/gui/node_modules/.vite/deps/chunk-6DLNZUA5.js +0 -142
  74. package/packages/gui/node_modules/.vite/deps/chunk-6DLNZUA5.js.map +0 -7
  75. package/packages/gui/node_modules/.vite/deps/chunk-ACEP5X2F.js +0 -292
  76. package/packages/gui/node_modules/.vite/deps/chunk-ACEP5X2F.js.map +0 -7
  77. package/packages/gui/node_modules/.vite/deps/chunk-AZUN7XMC.js +0 -87
  78. package/packages/gui/node_modules/.vite/deps/chunk-AZUN7XMC.js.map +0 -7
  79. package/packages/gui/node_modules/.vite/deps/chunk-CDLO3JFW.js +0 -1004
  80. package/packages/gui/node_modules/.vite/deps/chunk-CDLO3JFW.js.map +0 -7
  81. package/packages/gui/node_modules/.vite/deps/chunk-HPXOV7QR.js +0 -23
  82. package/packages/gui/node_modules/.vite/deps/chunk-HPXOV7QR.js.map +0 -7
  83. package/packages/gui/node_modules/.vite/deps/chunk-HVFOBSCQ.js +0 -1062
  84. package/packages/gui/node_modules/.vite/deps/chunk-HVFOBSCQ.js.map +0 -7
  85. package/packages/gui/node_modules/.vite/deps/chunk-I2PYXDFH.js +0 -1106
  86. package/packages/gui/node_modules/.vite/deps/chunk-I2PYXDFH.js.map +0 -7
  87. package/packages/gui/node_modules/.vite/deps/chunk-JPXYHBLX.js +0 -306
  88. package/packages/gui/node_modules/.vite/deps/chunk-JPXYHBLX.js.map +0 -7
  89. package/packages/gui/node_modules/.vite/deps/chunk-JYDZ3XIW.js +0 -264
  90. package/packages/gui/node_modules/.vite/deps/chunk-JYDZ3XIW.js.map +0 -7
  91. package/packages/gui/node_modules/.vite/deps/chunk-PR4QN5HX.js +0 -42
  92. package/packages/gui/node_modules/.vite/deps/chunk-PR4QN5HX.js.map +0 -7
  93. package/packages/gui/node_modules/.vite/deps/chunk-QZQGPDRM.js +0 -2328
  94. package/packages/gui/node_modules/.vite/deps/chunk-QZQGPDRM.js.map +0 -7
  95. package/packages/gui/node_modules/.vite/deps/chunk-RE2FU7ZU.js +0 -10985
  96. package/packages/gui/node_modules/.vite/deps/chunk-RE2FU7ZU.js.map +0 -7
  97. package/packages/gui/node_modules/.vite/deps/chunk-UO4Y2XXS.js +0 -105
  98. package/packages/gui/node_modules/.vite/deps/chunk-UO4Y2XXS.js.map +0 -7
  99. package/packages/gui/node_modules/.vite/deps/chunk-VW6LO3QI.js +0 -9
  100. package/packages/gui/node_modules/.vite/deps/chunk-VW6LO3QI.js.map +0 -7
  101. package/packages/gui/node_modules/.vite/deps/chunk-YAD7VOVN.js +0 -280
  102. package/packages/gui/node_modules/.vite/deps/chunk-YAD7VOVN.js.map +0 -7
  103. package/packages/gui/node_modules/.vite/deps/chunk-YYJMNVCJ.js +0 -3459
  104. package/packages/gui/node_modules/.vite/deps/chunk-YYJMNVCJ.js.map +0 -7
  105. package/packages/gui/node_modules/.vite/deps/clsx.js +0 -22
  106. package/packages/gui/node_modules/.vite/deps/clsx.js.map +0 -7
  107. package/packages/gui/node_modules/.vite/deps/framer-motion.js +0 -12732
  108. package/packages/gui/node_modules/.vite/deps/framer-motion.js.map +0 -7
  109. package/packages/gui/node_modules/.vite/deps/lucide-react.js +0 -29653
  110. package/packages/gui/node_modules/.vite/deps/lucide-react.js.map +0 -7
  111. package/packages/gui/node_modules/.vite/deps/package.json +0 -3
  112. package/packages/gui/node_modules/.vite/deps/react-dom.js +0 -6
  113. package/packages/gui/node_modules/.vite/deps/react-dom.js.map +0 -7
  114. package/packages/gui/node_modules/.vite/deps/react-dom_client.js +0 -20217
  115. package/packages/gui/node_modules/.vite/deps/react-dom_client.js.map +0 -7
  116. package/packages/gui/node_modules/.vite/deps/react.js +0 -5
  117. package/packages/gui/node_modules/.vite/deps/react.js.map +0 -7
  118. package/packages/gui/node_modules/.vite/deps/react_jsx-dev-runtime.js +0 -278
  119. package/packages/gui/node_modules/.vite/deps/react_jsx-dev-runtime.js.map +0 -7
  120. package/packages/gui/node_modules/.vite/deps/react_jsx-runtime.js +0 -6
  121. package/packages/gui/node_modules/.vite/deps/react_jsx-runtime.js.map +0 -7
  122. package/packages/gui/node_modules/.vite/deps/tailwind-merge.js +0 -3263
  123. package/packages/gui/node_modules/.vite/deps/tailwind-merge.js.map +0 -7
  124. package/packages/gui/node_modules/.vite/deps/zustand.js +0 -56
  125. package/packages/gui/node_modules/.vite/deps/zustand.js.map +0 -7
@@ -1,436 +0,0 @@
1
- "use client";
2
- import {
3
- createCollection
4
- } from "./chunk-AZUN7XMC.js";
5
- import {
6
- useDirection
7
- } from "./chunk-HPXOV7QR.js";
8
- import {
9
- useControllableState,
10
- useId
11
- } from "./chunk-UO4Y2XXS.js";
12
- import {
13
- Presence
14
- } from "./chunk-6DLNZUA5.js";
15
- import {
16
- Primitive,
17
- composeEventHandlers,
18
- createContextScope,
19
- useCallbackRef,
20
- useComposedRefs
21
- } from "./chunk-JPXYHBLX.js";
22
- import "./chunk-YAD7VOVN.js";
23
- import {
24
- require_jsx_runtime
25
- } from "./chunk-ACEP5X2F.js";
26
- import {
27
- require_react
28
- } from "./chunk-CDLO3JFW.js";
29
- import {
30
- __toESM
31
- } from "./chunk-PR4QN5HX.js";
32
-
33
- // ../../node_modules/@radix-ui/react-tabs/dist/index.mjs
34
- var React2 = __toESM(require_react(), 1);
35
-
36
- // ../../node_modules/@radix-ui/react-roving-focus/dist/index.mjs
37
- var React = __toESM(require_react(), 1);
38
- var import_jsx_runtime = __toESM(require_jsx_runtime(), 1);
39
- var ENTRY_FOCUS = "rovingFocusGroup.onEntryFocus";
40
- var EVENT_OPTIONS = { bubbles: false, cancelable: true };
41
- var GROUP_NAME = "RovingFocusGroup";
42
- var [Collection, useCollection, createCollectionScope] = createCollection(GROUP_NAME);
43
- var [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContextScope(
44
- GROUP_NAME,
45
- [createCollectionScope]
46
- );
47
- var [RovingFocusProvider, useRovingFocusContext] = createRovingFocusGroupContext(GROUP_NAME);
48
- var RovingFocusGroup = React.forwardRef(
49
- (props, forwardedRef) => {
50
- return (0, import_jsx_runtime.jsx)(Collection.Provider, { scope: props.__scopeRovingFocusGroup, children: (0, import_jsx_runtime.jsx)(Collection.Slot, { scope: props.__scopeRovingFocusGroup, children: (0, import_jsx_runtime.jsx)(RovingFocusGroupImpl, { ...props, ref: forwardedRef }) }) });
51
- }
52
- );
53
- RovingFocusGroup.displayName = GROUP_NAME;
54
- var RovingFocusGroupImpl = React.forwardRef((props, forwardedRef) => {
55
- const {
56
- __scopeRovingFocusGroup,
57
- orientation,
58
- loop = false,
59
- dir,
60
- currentTabStopId: currentTabStopIdProp,
61
- defaultCurrentTabStopId,
62
- onCurrentTabStopIdChange,
63
- onEntryFocus,
64
- preventScrollOnEntryFocus = false,
65
- ...groupProps
66
- } = props;
67
- const ref = React.useRef(null);
68
- const composedRefs = useComposedRefs(forwardedRef, ref);
69
- const direction = useDirection(dir);
70
- const [currentTabStopId, setCurrentTabStopId] = useControllableState({
71
- prop: currentTabStopIdProp,
72
- defaultProp: defaultCurrentTabStopId ?? null,
73
- onChange: onCurrentTabStopIdChange,
74
- caller: GROUP_NAME
75
- });
76
- const [isTabbingBackOut, setIsTabbingBackOut] = React.useState(false);
77
- const handleEntryFocus = useCallbackRef(onEntryFocus);
78
- const getItems = useCollection(__scopeRovingFocusGroup);
79
- const isClickFocusRef = React.useRef(false);
80
- const [focusableItemsCount, setFocusableItemsCount] = React.useState(0);
81
- React.useEffect(() => {
82
- const node = ref.current;
83
- if (node) {
84
- node.addEventListener(ENTRY_FOCUS, handleEntryFocus);
85
- return () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);
86
- }
87
- }, [handleEntryFocus]);
88
- return (0, import_jsx_runtime.jsx)(
89
- RovingFocusProvider,
90
- {
91
- scope: __scopeRovingFocusGroup,
92
- orientation,
93
- dir: direction,
94
- loop,
95
- currentTabStopId,
96
- onItemFocus: React.useCallback(
97
- (tabStopId) => setCurrentTabStopId(tabStopId),
98
- [setCurrentTabStopId]
99
- ),
100
- onItemShiftTab: React.useCallback(() => setIsTabbingBackOut(true), []),
101
- onFocusableItemAdd: React.useCallback(
102
- () => setFocusableItemsCount((prevCount) => prevCount + 1),
103
- []
104
- ),
105
- onFocusableItemRemove: React.useCallback(
106
- () => setFocusableItemsCount((prevCount) => prevCount - 1),
107
- []
108
- ),
109
- children: (0, import_jsx_runtime.jsx)(
110
- Primitive.div,
111
- {
112
- tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0,
113
- "data-orientation": orientation,
114
- ...groupProps,
115
- ref: composedRefs,
116
- style: { outline: "none", ...props.style },
117
- onMouseDown: composeEventHandlers(props.onMouseDown, () => {
118
- isClickFocusRef.current = true;
119
- }),
120
- onFocus: composeEventHandlers(props.onFocus, (event) => {
121
- const isKeyboardFocus = !isClickFocusRef.current;
122
- if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {
123
- const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);
124
- event.currentTarget.dispatchEvent(entryFocusEvent);
125
- if (!entryFocusEvent.defaultPrevented) {
126
- const items = getItems().filter((item) => item.focusable);
127
- const activeItem = items.find((item) => item.active);
128
- const currentItem = items.find((item) => item.id === currentTabStopId);
129
- const candidateItems = [activeItem, currentItem, ...items].filter(
130
- Boolean
131
- );
132
- const candidateNodes = candidateItems.map((item) => item.ref.current);
133
- focusFirst(candidateNodes, preventScrollOnEntryFocus);
134
- }
135
- }
136
- isClickFocusRef.current = false;
137
- }),
138
- onBlur: composeEventHandlers(props.onBlur, () => setIsTabbingBackOut(false))
139
- }
140
- )
141
- }
142
- );
143
- });
144
- var ITEM_NAME = "RovingFocusGroupItem";
145
- var RovingFocusGroupItem = React.forwardRef(
146
- (props, forwardedRef) => {
147
- const {
148
- __scopeRovingFocusGroup,
149
- focusable = true,
150
- active = false,
151
- tabStopId,
152
- children,
153
- ...itemProps
154
- } = props;
155
- const autoId = useId();
156
- const id = tabStopId || autoId;
157
- const context = useRovingFocusContext(ITEM_NAME, __scopeRovingFocusGroup);
158
- const isCurrentTabStop = context.currentTabStopId === id;
159
- const getItems = useCollection(__scopeRovingFocusGroup);
160
- const { onFocusableItemAdd, onFocusableItemRemove, currentTabStopId } = context;
161
- React.useEffect(() => {
162
- if (focusable) {
163
- onFocusableItemAdd();
164
- return () => onFocusableItemRemove();
165
- }
166
- }, [focusable, onFocusableItemAdd, onFocusableItemRemove]);
167
- return (0, import_jsx_runtime.jsx)(
168
- Collection.ItemSlot,
169
- {
170
- scope: __scopeRovingFocusGroup,
171
- id,
172
- focusable,
173
- active,
174
- children: (0, import_jsx_runtime.jsx)(
175
- Primitive.span,
176
- {
177
- tabIndex: isCurrentTabStop ? 0 : -1,
178
- "data-orientation": context.orientation,
179
- ...itemProps,
180
- ref: forwardedRef,
181
- onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {
182
- if (!focusable) event.preventDefault();
183
- else context.onItemFocus(id);
184
- }),
185
- onFocus: composeEventHandlers(props.onFocus, () => context.onItemFocus(id)),
186
- onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {
187
- if (event.key === "Tab" && event.shiftKey) {
188
- context.onItemShiftTab();
189
- return;
190
- }
191
- if (event.target !== event.currentTarget) return;
192
- const focusIntent = getFocusIntent(event, context.orientation, context.dir);
193
- if (focusIntent !== void 0) {
194
- if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) return;
195
- event.preventDefault();
196
- const items = getItems().filter((item) => item.focusable);
197
- let candidateNodes = items.map((item) => item.ref.current);
198
- if (focusIntent === "last") candidateNodes.reverse();
199
- else if (focusIntent === "prev" || focusIntent === "next") {
200
- if (focusIntent === "prev") candidateNodes.reverse();
201
- const currentIndex = candidateNodes.indexOf(event.currentTarget);
202
- candidateNodes = context.loop ? wrapArray(candidateNodes, currentIndex + 1) : candidateNodes.slice(currentIndex + 1);
203
- }
204
- setTimeout(() => focusFirst(candidateNodes));
205
- }
206
- }),
207
- children: typeof children === "function" ? children({ isCurrentTabStop, hasTabStop: currentTabStopId != null }) : children
208
- }
209
- )
210
- }
211
- );
212
- }
213
- );
214
- RovingFocusGroupItem.displayName = ITEM_NAME;
215
- var MAP_KEY_TO_FOCUS_INTENT = {
216
- ArrowLeft: "prev",
217
- ArrowUp: "prev",
218
- ArrowRight: "next",
219
- ArrowDown: "next",
220
- PageUp: "first",
221
- Home: "first",
222
- PageDown: "last",
223
- End: "last"
224
- };
225
- function getDirectionAwareKey(key, dir) {
226
- if (dir !== "rtl") return key;
227
- return key === "ArrowLeft" ? "ArrowRight" : key === "ArrowRight" ? "ArrowLeft" : key;
228
- }
229
- function getFocusIntent(event, orientation, dir) {
230
- const key = getDirectionAwareKey(event.key, dir);
231
- if (orientation === "vertical" && ["ArrowLeft", "ArrowRight"].includes(key)) return void 0;
232
- if (orientation === "horizontal" && ["ArrowUp", "ArrowDown"].includes(key)) return void 0;
233
- return MAP_KEY_TO_FOCUS_INTENT[key];
234
- }
235
- function focusFirst(candidates, preventScroll = false) {
236
- const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;
237
- for (const candidate of candidates) {
238
- if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;
239
- candidate.focus({ preventScroll });
240
- if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;
241
- }
242
- }
243
- function wrapArray(array, startIndex) {
244
- return array.map((_, index) => array[(startIndex + index) % array.length]);
245
- }
246
- var Root = RovingFocusGroup;
247
- var Item = RovingFocusGroupItem;
248
-
249
- // ../../node_modules/@radix-ui/react-tabs/dist/index.mjs
250
- var import_jsx_runtime2 = __toESM(require_jsx_runtime(), 1);
251
- var TABS_NAME = "Tabs";
252
- var [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [
253
- createRovingFocusGroupScope
254
- ]);
255
- var useRovingFocusGroupScope = createRovingFocusGroupScope();
256
- var [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME);
257
- var Tabs = React2.forwardRef(
258
- (props, forwardedRef) => {
259
- const {
260
- __scopeTabs,
261
- value: valueProp,
262
- onValueChange,
263
- defaultValue,
264
- orientation = "horizontal",
265
- dir,
266
- activationMode = "automatic",
267
- ...tabsProps
268
- } = props;
269
- const direction = useDirection(dir);
270
- const [value, setValue] = useControllableState({
271
- prop: valueProp,
272
- onChange: onValueChange,
273
- defaultProp: defaultValue ?? "",
274
- caller: TABS_NAME
275
- });
276
- return (0, import_jsx_runtime2.jsx)(
277
- TabsProvider,
278
- {
279
- scope: __scopeTabs,
280
- baseId: useId(),
281
- value,
282
- onValueChange: setValue,
283
- orientation,
284
- dir: direction,
285
- activationMode,
286
- children: (0, import_jsx_runtime2.jsx)(
287
- Primitive.div,
288
- {
289
- dir: direction,
290
- "data-orientation": orientation,
291
- ...tabsProps,
292
- ref: forwardedRef
293
- }
294
- )
295
- }
296
- );
297
- }
298
- );
299
- Tabs.displayName = TABS_NAME;
300
- var TAB_LIST_NAME = "TabsList";
301
- var TabsList = React2.forwardRef(
302
- (props, forwardedRef) => {
303
- const { __scopeTabs, loop = true, ...listProps } = props;
304
- const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);
305
- const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);
306
- return (0, import_jsx_runtime2.jsx)(
307
- Root,
308
- {
309
- asChild: true,
310
- ...rovingFocusGroupScope,
311
- orientation: context.orientation,
312
- dir: context.dir,
313
- loop,
314
- children: (0, import_jsx_runtime2.jsx)(
315
- Primitive.div,
316
- {
317
- role: "tablist",
318
- "aria-orientation": context.orientation,
319
- ...listProps,
320
- ref: forwardedRef
321
- }
322
- )
323
- }
324
- );
325
- }
326
- );
327
- TabsList.displayName = TAB_LIST_NAME;
328
- var TRIGGER_NAME = "TabsTrigger";
329
- var TabsTrigger = React2.forwardRef(
330
- (props, forwardedRef) => {
331
- const { __scopeTabs, value, disabled = false, ...triggerProps } = props;
332
- const context = useTabsContext(TRIGGER_NAME, __scopeTabs);
333
- const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);
334
- const triggerId = makeTriggerId(context.baseId, value);
335
- const contentId = makeContentId(context.baseId, value);
336
- const isSelected = value === context.value;
337
- return (0, import_jsx_runtime2.jsx)(
338
- Item,
339
- {
340
- asChild: true,
341
- ...rovingFocusGroupScope,
342
- focusable: !disabled,
343
- active: isSelected,
344
- children: (0, import_jsx_runtime2.jsx)(
345
- Primitive.button,
346
- {
347
- type: "button",
348
- role: "tab",
349
- "aria-selected": isSelected,
350
- "aria-controls": contentId,
351
- "data-state": isSelected ? "active" : "inactive",
352
- "data-disabled": disabled ? "" : void 0,
353
- disabled,
354
- id: triggerId,
355
- ...triggerProps,
356
- ref: forwardedRef,
357
- onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {
358
- if (!disabled && event.button === 0 && event.ctrlKey === false) {
359
- context.onValueChange(value);
360
- } else {
361
- event.preventDefault();
362
- }
363
- }),
364
- onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {
365
- if ([" ", "Enter"].includes(event.key)) context.onValueChange(value);
366
- }),
367
- onFocus: composeEventHandlers(props.onFocus, () => {
368
- const isAutomaticActivation = context.activationMode !== "manual";
369
- if (!isSelected && !disabled && isAutomaticActivation) {
370
- context.onValueChange(value);
371
- }
372
- })
373
- }
374
- )
375
- }
376
- );
377
- }
378
- );
379
- TabsTrigger.displayName = TRIGGER_NAME;
380
- var CONTENT_NAME = "TabsContent";
381
- var TabsContent = React2.forwardRef(
382
- (props, forwardedRef) => {
383
- const { __scopeTabs, value, forceMount, children, ...contentProps } = props;
384
- const context = useTabsContext(CONTENT_NAME, __scopeTabs);
385
- const triggerId = makeTriggerId(context.baseId, value);
386
- const contentId = makeContentId(context.baseId, value);
387
- const isSelected = value === context.value;
388
- const isMountAnimationPreventedRef = React2.useRef(isSelected);
389
- React2.useEffect(() => {
390
- const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);
391
- return () => cancelAnimationFrame(rAF);
392
- }, []);
393
- return (0, import_jsx_runtime2.jsx)(Presence, { present: forceMount || isSelected, children: ({ present }) => (0, import_jsx_runtime2.jsx)(
394
- Primitive.div,
395
- {
396
- "data-state": isSelected ? "active" : "inactive",
397
- "data-orientation": context.orientation,
398
- role: "tabpanel",
399
- "aria-labelledby": triggerId,
400
- hidden: !present,
401
- id: contentId,
402
- tabIndex: 0,
403
- ...contentProps,
404
- ref: forwardedRef,
405
- style: {
406
- ...props.style,
407
- animationDuration: isMountAnimationPreventedRef.current ? "0s" : void 0
408
- },
409
- children: present && children
410
- }
411
- ) });
412
- }
413
- );
414
- TabsContent.displayName = CONTENT_NAME;
415
- function makeTriggerId(baseId, value) {
416
- return `${baseId}-trigger-${value}`;
417
- }
418
- function makeContentId(baseId, value) {
419
- return `${baseId}-content-${value}`;
420
- }
421
- var Root2 = Tabs;
422
- var List = TabsList;
423
- var Trigger = TabsTrigger;
424
- var Content = TabsContent;
425
- export {
426
- Content,
427
- List,
428
- Root2 as Root,
429
- Tabs,
430
- TabsContent,
431
- TabsList,
432
- TabsTrigger,
433
- Trigger,
434
- createTabsScope
435
- };
436
- //# sourceMappingURL=@radix-ui_react-tabs.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../../node_modules/@radix-ui/react-tabs/src/tabs.tsx", "../../../../../node_modules/@radix-ui/react-roving-focus/src/roving-focus-group.tsx"],
4
- "sourcesContent": ["import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { createRovingFocusGroupScope } from '@radix-ui/react-roving-focus';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport * as RovingFocusGroup from '@radix-ui/react-roving-focus';\nimport { useDirection } from '@radix-ui/react-direction';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useId } from '@radix-ui/react-id';\n\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * Tabs\n * -----------------------------------------------------------------------------------------------*/\n\nconst TABS_NAME = 'Tabs';\n\ntype ScopedProps<P> = P & { __scopeTabs?: Scope };\nconst [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n createRovingFocusGroupScope,\n]);\nconst useRovingFocusGroupScope = createRovingFocusGroupScope();\n\ntype TabsContextValue = {\n baseId: string;\n value: string;\n onValueChange: (value: string) => void;\n orientation?: TabsProps['orientation'];\n dir?: TabsProps['dir'];\n activationMode?: TabsProps['activationMode'];\n};\n\nconst [TabsProvider, useTabsContext] = createTabsContext<TabsContextValue>(TABS_NAME);\n\ntype TabsElement = React.ComponentRef<typeof Primitive.div>;\ntype RovingFocusGroupProps = React.ComponentPropsWithoutRef<typeof RovingFocusGroup.Root>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface TabsProps extends PrimitiveDivProps {\n /** The value for the selected tab, if controlled */\n value?: string;\n /** The value of the tab to select by default, if uncontrolled */\n defaultValue?: string;\n /** A function called when a new tab is selected */\n onValueChange?: (value: string) => void;\n /**\n * The orientation the tabs are layed out.\n * Mainly so arrow navigation is done accordingly (left & right vs. up & down)\n * @defaultValue horizontal\n */\n orientation?: RovingFocusGroupProps['orientation'];\n /**\n * The direction of navigation between toolbar items.\n */\n dir?: RovingFocusGroupProps['dir'];\n /**\n * Whether a tab is activated automatically or manually.\n * @defaultValue automatic\n * */\n activationMode?: 'automatic' | 'manual';\n}\n\nconst Tabs = React.forwardRef<TabsElement, TabsProps>(\n (props: ScopedProps<TabsProps>, forwardedRef) => {\n const {\n __scopeTabs,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = 'horizontal',\n dir,\n activationMode = 'automatic',\n ...tabsProps\n } = props;\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue ?? '',\n caller: TABS_NAME,\n });\n\n return (\n <TabsProvider\n scope={__scopeTabs}\n baseId={useId()}\n value={value}\n onValueChange={setValue}\n orientation={orientation}\n dir={direction}\n activationMode={activationMode}\n >\n <Primitive.div\n dir={direction}\n data-orientation={orientation}\n {...tabsProps}\n ref={forwardedRef}\n />\n </TabsProvider>\n );\n }\n);\n\nTabs.displayName = TABS_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsList\n * -----------------------------------------------------------------------------------------------*/\n\nconst TAB_LIST_NAME = 'TabsList';\n\ntype TabsListElement = React.ComponentRef<typeof Primitive.div>;\ninterface TabsListProps extends PrimitiveDivProps {\n loop?: RovingFocusGroupProps['loop'];\n}\n\nconst TabsList = React.forwardRef<TabsListElement, TabsListProps>(\n (props: ScopedProps<TabsListProps>, forwardedRef) => {\n const { __scopeTabs, loop = true, ...listProps } = props;\n const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n return (\n <RovingFocusGroup.Root\n asChild\n {...rovingFocusGroupScope}\n orientation={context.orientation}\n dir={context.dir}\n loop={loop}\n >\n <Primitive.div\n role=\"tablist\"\n aria-orientation={context.orientation}\n {...listProps}\n ref={forwardedRef}\n />\n </RovingFocusGroup.Root>\n );\n }\n);\n\nTabsList.displayName = TAB_LIST_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsTrigger\n * -----------------------------------------------------------------------------------------------*/\n\nconst TRIGGER_NAME = 'TabsTrigger';\n\ntype TabsTriggerElement = React.ComponentRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = React.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface TabsTriggerProps extends PrimitiveButtonProps {\n value: string;\n}\n\nconst TabsTrigger = React.forwardRef<TabsTriggerElement, TabsTriggerProps>(\n (props: ScopedProps<TabsTriggerProps>, forwardedRef) => {\n const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n return (\n <RovingFocusGroup.Item\n asChild\n {...rovingFocusGroupScope}\n focusable={!disabled}\n active={isSelected}\n >\n <Primitive.button\n type=\"button\"\n role=\"tab\"\n aria-selected={isSelected}\n aria-controls={contentId}\n data-state={isSelected ? 'active' : 'inactive'}\n data-disabled={disabled ? '' : undefined}\n disabled={disabled}\n id={triggerId}\n {...triggerProps}\n ref={forwardedRef}\n onMouseDown={composeEventHandlers(props.onMouseDown, (event) => {\n // only call handler if it's the left button (mousedown gets triggered by all mouse buttons)\n // but not when the control key is pressed (avoiding MacOS right click)\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onValueChange(value);\n } else {\n // prevent focus to avoid accidental activation\n event.preventDefault();\n }\n })}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n if ([' ', 'Enter'].includes(event.key)) context.onValueChange(value);\n })}\n onFocus={composeEventHandlers(props.onFocus, () => {\n // handle \"automatic\" activation if necessary\n // ie. activate tab following focus\n const isAutomaticActivation = context.activationMode !== 'manual';\n if (!isSelected && !disabled && isAutomaticActivation) {\n context.onValueChange(value);\n }\n })}\n />\n </RovingFocusGroup.Item>\n );\n }\n);\n\nTabsTrigger.displayName = TRIGGER_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * TabsContent\n * -----------------------------------------------------------------------------------------------*/\n\nconst CONTENT_NAME = 'TabsContent';\n\ntype TabsContentElement = React.ComponentRef<typeof Primitive.div>;\ninterface TabsContentProps extends PrimitiveDivProps {\n value: string;\n\n /**\n * Used to force mounting when more control is needed. Useful when\n * controlling animation with React animation libraries.\n */\n forceMount?: true;\n}\n\nconst TabsContent = React.forwardRef<TabsContentElement, TabsContentProps>(\n (props: ScopedProps<TabsContentProps>, forwardedRef) => {\n const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n const isMountAnimationPreventedRef = React.useRef(isSelected);\n\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => (isMountAnimationPreventedRef.current = false));\n return () => cancelAnimationFrame(rAF);\n }, []);\n\n return (\n <Presence present={forceMount || isSelected}>\n {({ present }) => (\n <Primitive.div\n data-state={isSelected ? 'active' : 'inactive'}\n data-orientation={context.orientation}\n role=\"tabpanel\"\n aria-labelledby={triggerId}\n hidden={!present}\n id={contentId}\n tabIndex={0}\n {...contentProps}\n ref={forwardedRef}\n style={{\n ...props.style,\n animationDuration: isMountAnimationPreventedRef.current ? '0s' : undefined,\n }}\n >\n {present && children}\n </Primitive.div>\n )}\n </Presence>\n );\n }\n);\n\nTabsContent.displayName = CONTENT_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\nfunction makeTriggerId(baseId: string, value: string) {\n return `${baseId}-trigger-${value}`;\n}\n\nfunction makeContentId(baseId: string, value: string) {\n return `${baseId}-content-${value}`;\n}\n\nconst Root = Tabs;\nconst List = TabsList;\nconst Trigger = TabsTrigger;\nconst Content = TabsContent;\n\nexport {\n createTabsScope,\n //\n Tabs,\n TabsList,\n TabsTrigger,\n TabsContent,\n //\n Root,\n List,\n Trigger,\n Content,\n};\nexport type { TabsProps, TabsListProps, TabsTriggerProps, TabsContentProps };\n", "import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { createCollection } from '@radix-ui/react-collection';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useId } from '@radix-ui/react-id';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useDirection } from '@radix-ui/react-direction';\n\nimport type { Scope } from '@radix-ui/react-context';\n\nconst ENTRY_FOCUS = 'rovingFocusGroup.onEntryFocus';\nconst EVENT_OPTIONS = { bubbles: false, cancelable: true };\n\n/* -------------------------------------------------------------------------------------------------\n * RovingFocusGroup\n * -----------------------------------------------------------------------------------------------*/\n\nconst GROUP_NAME = 'RovingFocusGroup';\n\ntype ItemData = { id: string; focusable: boolean; active: boolean };\nconst [Collection, useCollection, createCollectionScope] = createCollection<\n HTMLSpanElement,\n ItemData\n>(GROUP_NAME);\n\ntype ScopedProps<P> = P & { __scopeRovingFocusGroup?: Scope };\nconst [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContextScope(\n GROUP_NAME,\n [createCollectionScope]\n);\n\ntype Orientation = React.AriaAttributes['aria-orientation'];\ntype Direction = 'ltr' | 'rtl';\n\ninterface RovingFocusGroupOptions {\n /**\n * The orientation of the group.\n * Mainly so arrow navigation is done accordingly (left & right vs. up & down)\n */\n orientation?: Orientation;\n /**\n * The direction of navigation between items.\n */\n dir?: Direction;\n /**\n * Whether keyboard navigation should loop around\n * @defaultValue false\n */\n loop?: boolean;\n}\n\ntype RovingContextValue = RovingFocusGroupOptions & {\n currentTabStopId: string | null;\n onItemFocus(tabStopId: string): void;\n onItemShiftTab(): void;\n onFocusableItemAdd(): void;\n onFocusableItemRemove(): void;\n};\n\nconst [RovingFocusProvider, useRovingFocusContext] =\n createRovingFocusGroupContext<RovingContextValue>(GROUP_NAME);\n\ntype RovingFocusGroupElement = RovingFocusGroupImplElement;\ninterface RovingFocusGroupProps extends RovingFocusGroupImplProps {}\n\nconst RovingFocusGroup = React.forwardRef<RovingFocusGroupElement, RovingFocusGroupProps>(\n (props: ScopedProps<RovingFocusGroupProps>, forwardedRef) => {\n return (\n <Collection.Provider scope={props.__scopeRovingFocusGroup}>\n <Collection.Slot scope={props.__scopeRovingFocusGroup}>\n <RovingFocusGroupImpl {...props} ref={forwardedRef} />\n </Collection.Slot>\n </Collection.Provider>\n );\n }\n);\n\nRovingFocusGroup.displayName = GROUP_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype RovingFocusGroupImplElement = React.ComponentRef<typeof Primitive.div>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface RovingFocusGroupImplProps\n extends Omit<PrimitiveDivProps, 'dir'>,\n RovingFocusGroupOptions {\n currentTabStopId?: string | null;\n defaultCurrentTabStopId?: string;\n onCurrentTabStopIdChange?: (tabStopId: string | null) => void;\n onEntryFocus?: (event: Event) => void;\n preventScrollOnEntryFocus?: boolean;\n}\n\nconst RovingFocusGroupImpl = React.forwardRef<\n RovingFocusGroupImplElement,\n RovingFocusGroupImplProps\n>((props: ScopedProps<RovingFocusGroupImplProps>, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n orientation,\n loop = false,\n dir,\n currentTabStopId: currentTabStopIdProp,\n defaultCurrentTabStopId,\n onCurrentTabStopIdChange,\n onEntryFocus,\n preventScrollOnEntryFocus = false,\n ...groupProps\n } = props;\n const ref = React.useRef<RovingFocusGroupImplElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const direction = useDirection(dir);\n const [currentTabStopId, setCurrentTabStopId] = useControllableState({\n prop: currentTabStopIdProp,\n defaultProp: defaultCurrentTabStopId ?? null,\n onChange: onCurrentTabStopIdChange,\n caller: GROUP_NAME,\n });\n const [isTabbingBackOut, setIsTabbingBackOut] = React.useState(false);\n const handleEntryFocus = useCallbackRef(onEntryFocus);\n const getItems = useCollection(__scopeRovingFocusGroup);\n const isClickFocusRef = React.useRef(false);\n const [focusableItemsCount, setFocusableItemsCount] = React.useState(0);\n\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n node.addEventListener(ENTRY_FOCUS, handleEntryFocus);\n return () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);\n }\n }, [handleEntryFocus]);\n\n return (\n <RovingFocusProvider\n scope={__scopeRovingFocusGroup}\n orientation={orientation}\n dir={direction}\n loop={loop}\n currentTabStopId={currentTabStopId}\n onItemFocus={React.useCallback(\n (tabStopId) => setCurrentTabStopId(tabStopId),\n [setCurrentTabStopId]\n )}\n onItemShiftTab={React.useCallback(() => setIsTabbingBackOut(true), [])}\n onFocusableItemAdd={React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount + 1),\n []\n )}\n onFocusableItemRemove={React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount - 1),\n []\n )}\n >\n <Primitive.div\n tabIndex={isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0}\n data-orientation={orientation}\n {...groupProps}\n ref={composedRefs}\n style={{ outline: 'none', ...props.style }}\n onMouseDown={composeEventHandlers(props.onMouseDown, () => {\n isClickFocusRef.current = true;\n })}\n onFocus={composeEventHandlers(props.onFocus, (event) => {\n // We normally wouldn't need this check, because we already check\n // that the focus is on the current target and not bubbling to it.\n // We do this because Safari doesn't focus buttons when clicked, and\n // instead, the wrapper will get focused and not through a bubbling event.\n const isKeyboardFocus = !isClickFocusRef.current;\n\n if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {\n const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n event.currentTarget.dispatchEvent(entryFocusEvent);\n\n if (!entryFocusEvent.defaultPrevented) {\n const items = getItems().filter((item) => item.focusable);\n const activeItem = items.find((item) => item.active);\n const currentItem = items.find((item) => item.id === currentTabStopId);\n const candidateItems = [activeItem, currentItem, ...items].filter(\n Boolean\n ) as typeof items;\n const candidateNodes = candidateItems.map((item) => item.ref.current!);\n focusFirst(candidateNodes, preventScrollOnEntryFocus);\n }\n }\n\n isClickFocusRef.current = false;\n })}\n onBlur={composeEventHandlers(props.onBlur, () => setIsTabbingBackOut(false))}\n />\n </RovingFocusProvider>\n );\n});\n\n/* -------------------------------------------------------------------------------------------------\n * RovingFocusGroupItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_NAME = 'RovingFocusGroupItem';\n\ntype RovingFocusItemElement = React.ComponentRef<typeof Primitive.span>;\ntype PrimitiveSpanProps = React.ComponentPropsWithoutRef<typeof Primitive.span>;\ninterface RovingFocusItemProps extends Omit<PrimitiveSpanProps, 'children'> {\n tabStopId?: string;\n focusable?: boolean;\n active?: boolean;\n children?:\n | React.ReactNode\n | ((props: { hasTabStop: boolean; isCurrentTabStop: boolean }) => React.ReactNode);\n}\n\nconst RovingFocusGroupItem = React.forwardRef<RovingFocusItemElement, RovingFocusItemProps>(\n (props: ScopedProps<RovingFocusItemProps>, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n focusable = true,\n active = false,\n tabStopId,\n children,\n ...itemProps\n } = props;\n const autoId = useId();\n const id = tabStopId || autoId;\n const context = useRovingFocusContext(ITEM_NAME, __scopeRovingFocusGroup);\n const isCurrentTabStop = context.currentTabStopId === id;\n const getItems = useCollection(__scopeRovingFocusGroup);\n\n const { onFocusableItemAdd, onFocusableItemRemove, currentTabStopId } = context;\n\n React.useEffect(() => {\n if (focusable) {\n onFocusableItemAdd();\n return () => onFocusableItemRemove();\n }\n }, [focusable, onFocusableItemAdd, onFocusableItemRemove]);\n\n return (\n <Collection.ItemSlot\n scope={__scopeRovingFocusGroup}\n id={id}\n focusable={focusable}\n active={active}\n >\n <Primitive.span\n tabIndex={isCurrentTabStop ? 0 : -1}\n data-orientation={context.orientation}\n {...itemProps}\n ref={forwardedRef}\n onMouseDown={composeEventHandlers(props.onMouseDown, (event) => {\n // We prevent focusing non-focusable items on `mousedown`.\n // Even though the item has tabIndex={-1}, that only means take it out of the tab order.\n if (!focusable) event.preventDefault();\n // Safari doesn't focus a button when clicked so we run our logic on mousedown also\n else context.onItemFocus(id);\n })}\n onFocus={composeEventHandlers(props.onFocus, () => context.onItemFocus(id))}\n onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === 'Tab' && event.shiftKey) {\n context.onItemShiftTab();\n return;\n }\n\n if (event.target !== event.currentTarget) return;\n\n const focusIntent = getFocusIntent(event, context.orientation, context.dir);\n\n if (focusIntent !== undefined) {\n if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) return;\n event.preventDefault();\n const items = getItems().filter((item) => item.focusable);\n let candidateNodes = items.map((item) => item.ref.current!);\n\n if (focusIntent === 'last') candidateNodes.reverse();\n else if (focusIntent === 'prev' || focusIntent === 'next') {\n if (focusIntent === 'prev') candidateNodes.reverse();\n const currentIndex = candidateNodes.indexOf(event.currentTarget);\n candidateNodes = context.loop\n ? wrapArray(candidateNodes, currentIndex + 1)\n : candidateNodes.slice(currentIndex + 1);\n }\n\n /**\n * Imperative focus during keydown is risky so we prevent React's batching updates\n * to avoid potential bugs. See: https://github.com/facebook/react/issues/20332\n */\n setTimeout(() => focusFirst(candidateNodes));\n }\n })}\n >\n {typeof children === 'function'\n ? children({ isCurrentTabStop, hasTabStop: currentTabStopId != null })\n : children}\n </Primitive.span>\n </Collection.ItemSlot>\n );\n }\n);\n\nRovingFocusGroupItem.displayName = ITEM_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\n// prettier-ignore\nconst MAP_KEY_TO_FOCUS_INTENT: Record<string, FocusIntent> = {\n ArrowLeft: 'prev', ArrowUp: 'prev',\n ArrowRight: 'next', ArrowDown: 'next',\n PageUp: 'first', Home: 'first',\n PageDown: 'last', End: 'last',\n};\n\nfunction getDirectionAwareKey(key: string, dir?: Direction) {\n if (dir !== 'rtl') return key;\n return key === 'ArrowLeft' ? 'ArrowRight' : key === 'ArrowRight' ? 'ArrowLeft' : key;\n}\n\ntype FocusIntent = 'first' | 'last' | 'prev' | 'next';\n\nfunction getFocusIntent(event: React.KeyboardEvent, orientation?: Orientation, dir?: Direction) {\n const key = getDirectionAwareKey(event.key, dir);\n if (orientation === 'vertical' && ['ArrowLeft', 'ArrowRight'].includes(key)) return undefined;\n if (orientation === 'horizontal' && ['ArrowUp', 'ArrowDown'].includes(key)) return undefined;\n return MAP_KEY_TO_FOCUS_INTENT[key];\n}\n\nfunction focusFirst(candidates: HTMLElement[], preventScroll = false) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n // if focus is already where we want to go, we don't want to keep going through the candidates\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus({ preventScroll });\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\n\n/**\n * Wraps an array around itself at a given start index\n * Example: `wrapArray(['a', 'b', 'c', 'd'], 2) === ['c', 'd', 'a', 'b']`\n */\nfunction wrapArray<T>(array: T[], startIndex: number) {\n return array.map<T>((_, index) => array[(startIndex + index) % array.length]!);\n}\n\nconst Root = RovingFocusGroup;\nconst Item = RovingFocusGroupItem;\n\nexport {\n createRovingFocusGroupScope,\n //\n RovingFocusGroup,\n RovingFocusGroupItem,\n //\n Root,\n Item,\n};\nexport type { RovingFocusGroupProps, RovingFocusItemProps };\n"],
5
- "mappings": "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",
6
- "names": ["React", "import_jsx_runtime", "Root"]
7
- }