tmex-cli 0.4.5 → 0.5.0

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 (22) hide show
  1. package/dist/runtime/server.js +340 -36
  2. package/package.json +1 -1
  3. package/resources/fe-dist/assets/DevicePage-c0xvFVOR.js +36 -0
  4. package/resources/fe-dist/assets/DevicePage-c0xvFVOR.js.map +1 -0
  5. package/resources/fe-dist/assets/{DevicesPage-dj7Pel6f.js → DevicesPage-Bos2klmd.js} +2 -2
  6. package/resources/fe-dist/assets/{DevicesPage-dj7Pel6f.js.map → DevicesPage-Bos2klmd.js.map} +1 -1
  7. package/resources/fe-dist/assets/{SettingsPage-DwpbDA_e.js → SettingsPage-3wTqyDjG.js} +2 -2
  8. package/resources/fe-dist/assets/{SettingsPage-DwpbDA_e.js.map → SettingsPage-3wTqyDjG.js.map} +1 -1
  9. package/resources/fe-dist/assets/{index-61hq_aNX.js → index-Ct9A2pvj.js} +8 -8
  10. package/resources/fe-dist/assets/index-Ct9A2pvj.js.map +1 -0
  11. package/resources/fe-dist/assets/index-otkzncJS.css +1 -0
  12. package/resources/fe-dist/assets/{select-DI4HQZd4.js → select-C4GOQfW-.js} +2 -2
  13. package/resources/fe-dist/assets/{select-DI4HQZd4.js.map → select-C4GOQfW-.js.map} +1 -1
  14. package/resources/fe-dist/assets/{switch-DsfDIUrU.js → switch-B99WcFEc.js} +2 -2
  15. package/resources/fe-dist/assets/{switch-DsfDIUrU.js.map → switch-B99WcFEc.js.map} +1 -1
  16. package/resources/fe-dist/assets/{useValueChanged-AVaPYvln.js → useValueChanged-C4_y3Agi.js} +2 -2
  17. package/resources/fe-dist/assets/{useValueChanged-AVaPYvln.js.map → useValueChanged-C4_y3Agi.js.map} +1 -1
  18. package/resources/fe-dist/index.html +2 -2
  19. package/resources/fe-dist/assets/DevicePage-Di11uzbS.js +0 -26
  20. package/resources/fe-dist/assets/DevicePage-Di11uzbS.js.map +0 -1
  21. package/resources/fe-dist/assets/index-40zyi_9K.css +0 -1
  22. package/resources/fe-dist/assets/index-61hq_aNX.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"select-DI4HQZd4.js","sources":["../../../../node_modules/.bun/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/mutationObserver.js","../../../../node_modules/.bun/@tanstack+react-query@5.90.20+b1ab299f0a400331/node_modules/@tanstack/react-query/build/modern/useMutation.js","../../../../node_modules/.bun/lucide-react@0.564.0+b1ab299f0a400331/node_modules/lucide-react/dist/esm/icons/check.js","../../../../node_modules/.bun/lucide-react@0.564.0+b1ab299f0a400331/node_modules/lucide-react/dist/esm/icons/chevron-down.js","../../../../node_modules/.bun/lucide-react@0.564.0+b1ab299f0a400331/node_modules/lucide-react/dist/esm/icons/chevron-up.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/floating-ui-react/utils/composite.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/field/control/FieldControl.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/input/Input.js","../../src/components/ui/input.tsx","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/floating-ui-react/hooks/useClick.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/floating-ui-react/hooks/useListNavigation.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/floating-ui-react/hooks/useTypeahead.js","../../src/components/ui/card.tsx","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/root/SelectRootContext.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/utils/itemEquality.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/utils/serializeValue.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/utils/resolveValueLabel.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/store.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/root/SelectRoot.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/utils/getPseudoElementBounds.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/trigger/SelectTrigger.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/value/SelectValue.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/icon/SelectIcon.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/portal/SelectPortalContext.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/portal/SelectPortal.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/composite/list/CompositeListContext.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/composite/list/CompositeList.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/positioner/SelectPositionerContext.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/popup/utils.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/positioner/SelectPositioner.js","../../../../node_modules/.bun/@base-ui+utils@0.2.5+ca9c98c9db1b76d1/node_modules/@base-ui/utils/esm/isMouseWithinBounds.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/toolbar/root/ToolbarRootContext.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/popup/SelectPopup.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/list/SelectList.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/composite/list/useCompositeListItem.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/item/SelectItemContext.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/item/SelectItem.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/item-indicator/SelectItemIndicator.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/item-text/SelectItemText.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/scroll-arrow/SelectScrollArrow.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/scroll-down-arrow/SelectScrollDownArrow.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/scroll-up-arrow/SelectScrollUpArrow.js","../../src/components/ui/select.tsx"],"sourcesContent":["// src/mutationObserver.ts\nimport { getDefaultState } from \"./mutation.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { hashKey, shallowEqualObjects } from \"./utils.js\";\nvar MutationObserver = class extends Subscribable {\n #client;\n #currentResult = void 0;\n #currentMutation;\n #mutateOptions;\n constructor(client, options) {\n super();\n this.#client = client;\n this.setOptions(options);\n this.bindMethods();\n this.#updateResult();\n }\n bindMethods() {\n this.mutate = this.mutate.bind(this);\n this.reset = this.reset.bind(this);\n }\n setOptions(options) {\n const prevOptions = this.options;\n this.options = this.#client.defaultMutationOptions(options);\n if (!shallowEqualObjects(this.options, prevOptions)) {\n this.#client.getMutationCache().notify({\n type: \"observerOptionsUpdated\",\n mutation: this.#currentMutation,\n observer: this\n });\n }\n if (prevOptions?.mutationKey && this.options.mutationKey && hashKey(prevOptions.mutationKey) !== hashKey(this.options.mutationKey)) {\n this.reset();\n } else if (this.#currentMutation?.state.status === \"pending\") {\n this.#currentMutation.setOptions(this.options);\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#currentMutation?.removeObserver(this);\n }\n }\n onMutationUpdate(action) {\n this.#updateResult();\n this.#notify(action);\n }\n getCurrentResult() {\n return this.#currentResult;\n }\n reset() {\n this.#currentMutation?.removeObserver(this);\n this.#currentMutation = void 0;\n this.#updateResult();\n this.#notify();\n }\n mutate(variables, options) {\n this.#mutateOptions = options;\n this.#currentMutation?.removeObserver(this);\n this.#currentMutation = this.#client.getMutationCache().build(this.#client, this.options);\n this.#currentMutation.addObserver(this);\n return this.#currentMutation.execute(variables);\n }\n #updateResult() {\n const state = this.#currentMutation?.state ?? getDefaultState();\n this.#currentResult = {\n ...state,\n isPending: state.status === \"pending\",\n isSuccess: state.status === \"success\",\n isError: state.status === \"error\",\n isIdle: state.status === \"idle\",\n mutate: this.mutate,\n reset: this.reset\n };\n }\n #notify(action) {\n notifyManager.batch(() => {\n if (this.#mutateOptions && this.hasListeners()) {\n const variables = this.#currentResult.variables;\n const onMutateResult = this.#currentResult.context;\n const context = {\n client: this.#client,\n meta: this.options.meta,\n mutationKey: this.options.mutationKey\n };\n if (action?.type === \"success\") {\n try {\n this.#mutateOptions.onSuccess?.(\n action.data,\n variables,\n onMutateResult,\n context\n );\n } catch (e) {\n void Promise.reject(e);\n }\n try {\n this.#mutateOptions.onSettled?.(\n action.data,\n null,\n variables,\n onMutateResult,\n context\n );\n } catch (e) {\n void Promise.reject(e);\n }\n } else if (action?.type === \"error\") {\n try {\n this.#mutateOptions.onError?.(\n action.error,\n variables,\n onMutateResult,\n context\n );\n } catch (e) {\n void Promise.reject(e);\n }\n try {\n this.#mutateOptions.onSettled?.(\n void 0,\n action.error,\n variables,\n onMutateResult,\n context\n );\n } catch (e) {\n void Promise.reject(e);\n }\n }\n }\n this.listeners.forEach((listener) => {\n listener(this.#currentResult);\n });\n });\n }\n};\nexport {\n MutationObserver\n};\n//# sourceMappingURL=mutationObserver.js.map","\"use client\";\n\n// src/useMutation.ts\nimport * as React from \"react\";\nimport {\n MutationObserver,\n noop,\n notifyManager,\n shouldThrowError\n} from \"@tanstack/query-core\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nfunction useMutation(options, queryClient) {\n const client = useQueryClient(queryClient);\n const [observer] = React.useState(\n () => new MutationObserver(\n client,\n options\n )\n );\n React.useEffect(() => {\n observer.setOptions(options);\n }, [observer, options]);\n const result = React.useSyncExternalStore(\n React.useCallback(\n (onStoreChange) => observer.subscribe(notifyManager.batchCalls(onStoreChange)),\n [observer]\n ),\n () => observer.getCurrentResult(),\n () => observer.getCurrentResult()\n );\n const mutate = React.useCallback(\n (variables, mutateOptions) => {\n observer.mutate(variables, mutateOptions).catch(noop);\n },\n [observer]\n );\n if (result.error && shouldThrowError(observer.options.throwOnError, [result.error])) {\n throw result.error;\n }\n return { ...result, mutate, mutateAsync: result.mutate };\n}\nexport {\n useMutation\n};\n//# sourceMappingURL=useMutation.js.map","/**\n * @license lucide-react v0.564.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"M20 6 9 17l-5-5\", key: \"1gmf2c\" }]];\nconst Check = createLucideIcon(\"check\", __iconNode);\n\nexport { __iconNode, Check as default };\n//# sourceMappingURL=check.js.map\n","/**\n * @license lucide-react v0.564.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"m6 9 6 6 6-6\", key: \"qrunsl\" }]];\nconst ChevronDown = createLucideIcon(\"chevron-down\", __iconNode);\n\nexport { __iconNode, ChevronDown as default };\n//# sourceMappingURL=chevron-down.js.map\n","/**\n * @license lucide-react v0.564.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"m18 15-6-6-6 6\", key: \"153udz\" }]];\nconst ChevronUp = createLucideIcon(\"chevron-up\", __iconNode);\n\nexport { __iconNode, ChevronUp as default };\n//# sourceMappingURL=chevron-up.js.map\n","import { floor } from '@floating-ui/utils';\nimport { stopEvent } from \"./event.js\";\nimport { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP } from \"./constants.js\";\nexport function isDifferentGridRow(index, cols, prevRow) {\n return Math.floor(index / cols) !== prevRow;\n}\nexport function isIndexOutOfListBounds(listRef, index) {\n return index < 0 || index >= listRef.current.length;\n}\nexport function getMinListIndex(listRef, disabledIndices) {\n return findNonDisabledListIndex(listRef, {\n disabledIndices\n });\n}\nexport function getMaxListIndex(listRef, disabledIndices) {\n return findNonDisabledListIndex(listRef, {\n decrement: true,\n startingIndex: listRef.current.length,\n disabledIndices\n });\n}\nexport function findNonDisabledListIndex(listRef, {\n startingIndex = -1,\n decrement = false,\n disabledIndices,\n amount = 1\n} = {}) {\n let index = startingIndex;\n do {\n index += decrement ? -amount : amount;\n } while (index >= 0 && index <= listRef.current.length - 1 && isListIndexDisabled(listRef, index, disabledIndices));\n return index;\n}\nexport function getGridNavigatedIndex(listRef, {\n event,\n orientation,\n loopFocus,\n rtl,\n cols,\n disabledIndices,\n minIndex,\n maxIndex,\n prevIndex,\n stopEvent: stop = false\n}) {\n let nextIndex = prevIndex;\n\n // ---------------------------------------------------------------------------\n // Detect row structure based on DOM. This works when items are grouped inside\n // elements that declare `role=\"row\"` (e.g., Combobox.Row). We build a matrix\n // where each entry is the array of item indices for that visual row. The\n // algorithm gracefully falls back to regular `cols`-based handling when no\n // row structure can be detected.\n // ---------------------------------------------------------------------------\n const rows = [];\n const rowIndexMap = {};\n let hasRoleRow = false;\n {\n let currentRowEl = null;\n let currentRowIndex = -1;\n listRef.current.forEach((el, idx) => {\n if (el == null) {\n return;\n }\n const rowEl = el.closest('[role=\"row\"]');\n if (rowEl) {\n hasRoleRow = true;\n }\n if (rowEl !== currentRowEl || currentRowIndex === -1) {\n currentRowEl = rowEl;\n currentRowIndex += 1;\n rows[currentRowIndex] = [];\n }\n rows[currentRowIndex].push(idx);\n rowIndexMap[idx] = currentRowIndex;\n });\n }\n const hasDomRows = hasRoleRow && rows.length > 0 && rows.some(row => row.length !== cols);\n function navigateVertically(direction) {\n if (!hasDomRows || prevIndex === -1) {\n return undefined;\n }\n const currentRow = rowIndexMap[prevIndex];\n if (currentRow == null) {\n return undefined;\n }\n const colInRow = rows[currentRow].indexOf(prevIndex);\n let nextRow = direction === 'up' ? currentRow - 1 : currentRow + 1;\n if (loopFocus) {\n if (nextRow < 0) {\n nextRow = rows.length - 1;\n } else if (nextRow >= rows.length) {\n nextRow = 0;\n }\n }\n const visited = new Set();\n while (nextRow >= 0 && nextRow < rows.length && !visited.has(nextRow)) {\n visited.add(nextRow);\n const targetRow = rows[nextRow];\n if (targetRow.length === 0) {\n nextRow = direction === 'up' ? nextRow - 1 : nextRow + 1;\n continue;\n }\n const clampedCol = Math.min(colInRow, targetRow.length - 1);\n // Start from the preferred column, fallback leftwards until first\n // enabled item is found.\n for (let col = clampedCol; col >= 0; col -= 1) {\n const candidate = targetRow[col];\n if (!isListIndexDisabled(listRef, candidate, disabledIndices)) {\n return candidate;\n }\n }\n // Row had no enabled items, move to next row in the same direction.\n nextRow = direction === 'up' ? nextRow - 1 : nextRow + 1;\n if (loopFocus) {\n if (nextRow < 0) {\n nextRow = rows.length - 1;\n } else if (nextRow >= rows.length) {\n nextRow = 0;\n }\n }\n }\n return undefined;\n }\n if (event.key === ARROW_UP) {\n const domBasedCandidate = navigateVertically('up');\n if (domBasedCandidate !== undefined) {\n if (stop) {\n stopEvent(event);\n }\n nextIndex = domBasedCandidate;\n } else {\n // fallback to original logic\n if (stop) {\n stopEvent(event);\n }\n if (prevIndex === -1) {\n nextIndex = maxIndex;\n } else {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: nextIndex,\n amount: cols,\n decrement: true,\n disabledIndices\n });\n if (loopFocus && (prevIndex - cols < minIndex || nextIndex < 0)) {\n const col = prevIndex % cols;\n const maxCol = maxIndex % cols;\n const offset = maxIndex - (maxCol - col);\n if (maxCol === col) {\n nextIndex = maxIndex;\n } else {\n nextIndex = maxCol > col ? offset : offset - cols;\n }\n }\n }\n if (isIndexOutOfListBounds(listRef, nextIndex)) {\n nextIndex = prevIndex;\n }\n }\n }\n if (event.key === ARROW_DOWN) {\n const domBasedCandidate = navigateVertically('down');\n if (domBasedCandidate !== undefined) {\n if (stop) {\n stopEvent(event);\n }\n nextIndex = domBasedCandidate;\n } else {\n if (stop) {\n stopEvent(event);\n }\n if (prevIndex === -1) {\n nextIndex = minIndex;\n } else {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex,\n amount: cols,\n disabledIndices\n });\n if (loopFocus && prevIndex + cols > maxIndex) {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex % cols - cols,\n amount: cols,\n disabledIndices\n });\n }\n }\n if (isIndexOutOfListBounds(listRef, nextIndex)) {\n nextIndex = prevIndex;\n }\n }\n }\n\n // Remains on the same row/column.\n if (orientation === 'both') {\n const prevRow = floor(prevIndex / cols);\n if (event.key === (rtl ? ARROW_LEFT : ARROW_RIGHT)) {\n if (stop) {\n stopEvent(event);\n }\n if (prevIndex % cols !== cols - 1) {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex,\n disabledIndices\n });\n if (loopFocus && isDifferentGridRow(nextIndex, cols, prevRow)) {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex - prevIndex % cols - 1,\n disabledIndices\n });\n }\n } else if (loopFocus) {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex - prevIndex % cols - 1,\n disabledIndices\n });\n }\n if (isDifferentGridRow(nextIndex, cols, prevRow)) {\n nextIndex = prevIndex;\n }\n }\n if (event.key === (rtl ? ARROW_RIGHT : ARROW_LEFT)) {\n if (stop) {\n stopEvent(event);\n }\n if (prevIndex % cols !== 0) {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex,\n decrement: true,\n disabledIndices\n });\n if (loopFocus && isDifferentGridRow(nextIndex, cols, prevRow)) {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex + (cols - prevIndex % cols),\n decrement: true,\n disabledIndices\n });\n }\n } else if (loopFocus) {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex + (cols - prevIndex % cols),\n decrement: true,\n disabledIndices\n });\n }\n if (isDifferentGridRow(nextIndex, cols, prevRow)) {\n nextIndex = prevIndex;\n }\n }\n const lastRow = floor(maxIndex / cols) === prevRow;\n if (isIndexOutOfListBounds(listRef, nextIndex)) {\n if (loopFocus && lastRow) {\n nextIndex = event.key === (rtl ? ARROW_RIGHT : ARROW_LEFT) ? maxIndex : findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex - prevIndex % cols - 1,\n disabledIndices\n });\n } else {\n nextIndex = prevIndex;\n }\n }\n }\n return nextIndex;\n}\n\n/** For each cell index, gets the item index that occupies that cell */\nexport function createGridCellMap(sizes, cols, dense) {\n const cellMap = [];\n let startIndex = 0;\n sizes.forEach(({\n width,\n height\n }, index) => {\n if (width > cols) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`[Floating UI]: Invalid grid - item width at index ${index} is greater than grid columns`);\n }\n }\n let itemPlaced = false;\n if (dense) {\n startIndex = 0;\n }\n while (!itemPlaced) {\n const targetCells = [];\n for (let i = 0; i < width; i += 1) {\n for (let j = 0; j < height; j += 1) {\n targetCells.push(startIndex + i + j * cols);\n }\n }\n if (startIndex % cols + width <= cols && targetCells.every(cell => cellMap[cell] == null)) {\n targetCells.forEach(cell => {\n cellMap[cell] = index;\n });\n itemPlaced = true;\n } else {\n startIndex += 1;\n }\n }\n });\n\n // convert into a non-sparse array\n return [...cellMap];\n}\n\n/** Gets cell index of an item's corner or -1 when index is -1. */\nexport function getGridCellIndexOfCorner(index, sizes, cellMap, cols, corner) {\n if (index === -1) {\n return -1;\n }\n const firstCellIndex = cellMap.indexOf(index);\n const sizeItem = sizes[index];\n switch (corner) {\n case 'tl':\n return firstCellIndex;\n case 'tr':\n if (!sizeItem) {\n return firstCellIndex;\n }\n return firstCellIndex + sizeItem.width - 1;\n case 'bl':\n if (!sizeItem) {\n return firstCellIndex;\n }\n return firstCellIndex + (sizeItem.height - 1) * cols;\n case 'br':\n return cellMap.lastIndexOf(index);\n default:\n return -1;\n }\n}\n\n/** Gets all cell indices that correspond to the specified indices */\nexport function getGridCellIndices(indices, cellMap) {\n return cellMap.flatMap((index, cellIndex) => indices.includes(index) ? [cellIndex] : []);\n}\nexport function isListIndexDisabled(listRef, index, disabledIndices) {\n if (typeof disabledIndices === 'function') {\n return disabledIndices(index);\n }\n if (disabledIndices) {\n return disabledIndices.includes(index);\n }\n const element = listRef.current[index];\n if (!element) {\n return false;\n }\n return element.hasAttribute('disabled') || element.getAttribute('aria-disabled') === 'true';\n}","'use client';\n\nimport * as React from 'react';\nimport { useControlled } from '@base-ui/utils/useControlled';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { ownerDocument } from '@base-ui/utils/owner';\nimport { useFieldRootContext } from \"../root/FieldRootContext.js\";\nimport { useLabelableContext } from \"../../labelable-provider/LabelableContext.js\";\nimport { useLabelableId } from \"../../labelable-provider/useLabelableId.js\";\nimport { fieldValidityMapping } from \"../utils/constants.js\";\nimport { useRenderElement } from \"../../utils/useRenderElement.js\";\nimport { useField } from \"../useField.js\";\nimport { createChangeEventDetails } from \"../../utils/createBaseUIEventDetails.js\";\nimport { REASONS } from \"../../utils/reasons.js\";\nimport { activeElement } from \"../../floating-ui-react/utils.js\";\n\n/**\n * The form control to label and validate.\n * Renders an `<input>` element.\n *\n * You can omit this part and use any Base UI input component instead. For example,\n * [Input](https://base-ui.com/react/components/input), [Checkbox](https://base-ui.com/react/components/checkbox),\n * or [Select](https://base-ui.com/react/components/select), among others, will work with Field out of the box.\n *\n * Documentation: [Base UI Field](https://base-ui.com/react/components/field)\n */\nexport const FieldControl = /*#__PURE__*/React.forwardRef(function FieldControl(componentProps, forwardedRef) {\n const {\n render,\n className,\n id: idProp,\n name: nameProp,\n value: valueProp,\n disabled: disabledProp = false,\n onValueChange,\n defaultValue,\n autoFocus = false,\n ...elementProps\n } = componentProps;\n const {\n state: fieldState,\n name: fieldName,\n disabled: fieldDisabled,\n setTouched,\n setDirty,\n validityData,\n setFocused,\n setFilled,\n validationMode,\n validation\n } = useFieldRootContext();\n const disabled = fieldDisabled || disabledProp;\n const name = fieldName ?? nameProp;\n const state = {\n ...fieldState,\n disabled\n };\n const {\n labelId\n } = useLabelableContext();\n const id = useLabelableId({\n id: idProp\n });\n useIsoLayoutEffect(() => {\n const hasExternalValue = valueProp != null;\n if (validation.inputRef.current?.value || hasExternalValue && valueProp !== '') {\n setFilled(true);\n } else if (hasExternalValue && valueProp === '') {\n setFilled(false);\n }\n }, [validation.inputRef, setFilled, valueProp]);\n const inputRef = React.useRef(null);\n useIsoLayoutEffect(() => {\n if (autoFocus && inputRef.current === activeElement(ownerDocument(inputRef.current))) {\n setFocused(true);\n }\n }, [autoFocus, setFocused]);\n const [valueUnwrapped] = useControlled({\n controlled: valueProp,\n default: defaultValue,\n name: 'FieldControl',\n state: 'value'\n });\n const isControlled = valueProp !== undefined;\n const value = isControlled ? valueUnwrapped : undefined;\n useField({\n id,\n name,\n commit: validation.commit,\n value,\n getValue: () => validation.inputRef.current?.value,\n controlRef: validation.inputRef\n });\n const element = useRenderElement('input', componentProps, {\n ref: [forwardedRef, inputRef],\n state,\n props: [{\n id,\n disabled,\n name,\n ref: validation.inputRef,\n 'aria-labelledby': labelId,\n autoFocus,\n ...(isControlled ? {\n value\n } : {\n defaultValue\n }),\n onChange(event) {\n const inputValue = event.currentTarget.value;\n onValueChange?.(inputValue, createChangeEventDetails(REASONS.none, event.nativeEvent));\n setDirty(inputValue !== validityData.initialValue);\n setFilled(inputValue !== '');\n },\n onFocus() {\n setFocused(true);\n },\n onBlur(event) {\n setTouched(true);\n setFocused(false);\n if (validationMode === 'onBlur') {\n validation.commit(event.currentTarget.value);\n }\n },\n onKeyDown(event) {\n if (event.currentTarget.tagName === 'INPUT' && event.key === 'Enter') {\n setTouched(true);\n validation.commit(event.currentTarget.value);\n }\n }\n }, validation.getInputValidationProps(), elementProps],\n stateAttributesMapping: fieldValidityMapping\n });\n return element;\n});\nif (process.env.NODE_ENV !== \"production\") FieldControl.displayName = \"FieldControl\";","'use client';\n\nimport * as React from 'react';\nimport { Field } from \"../field/index.js\";\n\n/**\n * A native input element that automatically works with [Field](https://base-ui.com/react/components/field).\n * Renders an `<input>` element.\n *\n * Documentation: [Base UI Input](https://base-ui.com/react/components/input)\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const Input = /*#__PURE__*/React.forwardRef(function Input(props, forwardedRef) {\n return /*#__PURE__*/_jsx(Field.Control, {\n ref: forwardedRef,\n ...props\n });\n});\nif (process.env.NODE_ENV !== \"production\") Input.displayName = \"Input\";","import * as React from \"react\"\nimport { Input as InputPrimitive } from \"@base-ui/react/input\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <InputPrimitive\n type={type}\n data-slot=\"input\"\n className={cn(\n \"dark:bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 disabled:bg-input/50 dark:disabled:bg-input/80 h-8 rounded-lg border bg-transparent px-2.5 py-1 text-base transition-colors file:h-6 file:text-sm file:font-medium focus-visible:ring-2 aria-invalid:ring-2 md:text-sm file:text-foreground placeholder:text-muted-foreground w-full min-w-0 outline-none file:inline-flex file:border-0 file:bg-transparent disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Input }\n","'use client';\n\nimport * as React from 'react';\nimport { useAnimationFrame } from '@base-ui/utils/useAnimationFrame';\nimport { useTimeout } from '@base-ui/utils/useTimeout';\nimport { EMPTY_OBJECT } from \"../../utils/constants.js\";\nimport { isClickLikeEvent, isMouseLikePointerType, isTypeableElement } from \"../utils.js\";\nimport { createChangeEventDetails } from \"../../utils/createBaseUIEventDetails.js\";\nimport { REASONS } from \"../../utils/reasons.js\";\n/**\n * Opens or closes the floating element when clicking the reference element.\n * @see https://floating-ui.com/docs/useClick\n */\nexport function useClick(context, props = {}) {\n const store = 'rootStore' in context ? context.rootStore : context;\n const dataRef = store.context.dataRef;\n const {\n enabled = true,\n event: eventOption = 'click',\n toggle = true,\n ignoreMouse = false,\n stickIfOpen = true,\n touchOpenDelay = 0,\n reason = REASONS.triggerPress\n } = props;\n const pointerTypeRef = React.useRef(undefined);\n const frame = useAnimationFrame();\n const touchOpenTimeout = useTimeout();\n const reference = React.useMemo(() => ({\n onPointerDown(event) {\n pointerTypeRef.current = event.pointerType;\n },\n onMouseDown(event) {\n const pointerType = pointerTypeRef.current;\n const nativeEvent = event.nativeEvent;\n const open = store.select('open');\n\n // Ignore all buttons except for the \"main\" button.\n // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button\n if (event.button !== 0 || eventOption === 'click' || isMouseLikePointerType(pointerType, true) && ignoreMouse) {\n return;\n }\n const openEvent = dataRef.current.openEvent;\n const openEventType = openEvent?.type;\n const hasClickedOnInactiveTrigger = store.select('domReferenceElement') !== event.currentTarget;\n const nextOpen = open && hasClickedOnInactiveTrigger || !(open && toggle && (openEvent && stickIfOpen ? openEventType === 'click' || openEventType === 'mousedown' : true));\n\n // Animations sometimes won't run on a typeable element if using a rAF.\n // Focus is always set on these elements. For touch, we may delay opening.\n if (isTypeableElement(nativeEvent.target)) {\n const details = createChangeEventDetails(reason, nativeEvent, nativeEvent.target);\n if (nextOpen && pointerType === 'touch' && touchOpenDelay > 0) {\n touchOpenTimeout.start(touchOpenDelay, () => {\n store.setOpen(true, details);\n });\n } else {\n store.setOpen(nextOpen, details);\n }\n return;\n }\n\n // Capture the currentTarget before the rAF.\n // as React sets it to null after the event handler completes.\n const eventCurrentTarget = event.currentTarget;\n\n // Wait until focus is set on the element. This is an alternative to\n // `event.preventDefault()` to avoid :focus-visible from appearing when using a pointer.\n frame.request(() => {\n const details = createChangeEventDetails(reason, nativeEvent, eventCurrentTarget);\n if (nextOpen && pointerType === 'touch' && touchOpenDelay > 0) {\n touchOpenTimeout.start(touchOpenDelay, () => {\n store.setOpen(true, details);\n });\n } else {\n store.setOpen(nextOpen, details);\n }\n });\n },\n onClick(event) {\n if (eventOption === 'mousedown-only') {\n return;\n }\n const pointerType = pointerTypeRef.current;\n if (eventOption === 'mousedown' && pointerType) {\n pointerTypeRef.current = undefined;\n return;\n }\n if (isMouseLikePointerType(pointerType, true) && ignoreMouse) {\n return;\n }\n const open = store.select('open');\n const openEvent = dataRef.current.openEvent;\n const hasClickedOnInactiveTrigger = store.select('domReferenceElement') !== event.currentTarget;\n const nextOpen = open && hasClickedOnInactiveTrigger || !(open && toggle && (openEvent && stickIfOpen ? isClickLikeEvent(openEvent) : true));\n const details = createChangeEventDetails(reason, event.nativeEvent, event.currentTarget);\n if (nextOpen && pointerType === 'touch' && touchOpenDelay > 0) {\n touchOpenTimeout.start(touchOpenDelay, () => {\n store.setOpen(true, details);\n });\n } else {\n store.setOpen(nextOpen, details);\n }\n },\n onKeyDown() {\n pointerTypeRef.current = undefined;\n }\n }), [dataRef, eventOption, ignoreMouse, store, stickIfOpen, toggle, frame, touchOpenTimeout, touchOpenDelay, reason]);\n return React.useMemo(() => enabled ? {\n reference\n } : EMPTY_OBJECT, [enabled, reference]);\n}","'use client';\n\nimport * as React from 'react';\nimport { isHTMLElement } from '@floating-ui/utils/dom';\nimport { useValueAsRef } from '@base-ui/utils/useValueAsRef';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { ownerDocument } from '@base-ui/utils/owner';\nimport { activeElement, contains, getTarget, isTypeableCombobox, isVirtualClick, isVirtualPointerEvent, stopEvent, getFloatingFocusElement, isIndexOutOfListBounds, getMinListIndex, getMaxListIndex, getGridNavigatedIndex, isListIndexDisabled, createGridCellMap, getGridCellIndices, getGridCellIndexOfCorner, findNonDisabledListIndex } from \"../utils.js\";\nimport { useFloatingParentNodeId, useFloatingTree } from \"../components/FloatingTree.js\";\nimport { createChangeEventDetails } from \"../../utils/createBaseUIEventDetails.js\";\nimport { REASONS } from \"../../utils/reasons.js\";\nimport { enqueueFocus } from \"../utils/enqueueFocus.js\";\nimport { ARROW_UP, ARROW_DOWN, ARROW_RIGHT, ARROW_LEFT } from \"../utils/constants.js\";\nexport const ESCAPE = 'Escape';\nfunction doSwitch(orientation, vertical, horizontal) {\n switch (orientation) {\n case 'vertical':\n return vertical;\n case 'horizontal':\n return horizontal;\n default:\n return vertical || horizontal;\n }\n}\nfunction isMainOrientationKey(key, orientation) {\n const vertical = key === ARROW_UP || key === ARROW_DOWN;\n const horizontal = key === ARROW_LEFT || key === ARROW_RIGHT;\n return doSwitch(orientation, vertical, horizontal);\n}\nfunction isMainOrientationToEndKey(key, orientation, rtl) {\n const vertical = key === ARROW_DOWN;\n const horizontal = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;\n return doSwitch(orientation, vertical, horizontal) || key === 'Enter' || key === ' ' || key === '';\n}\nfunction isCrossOrientationOpenKey(key, orientation, rtl) {\n const vertical = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;\n const horizontal = key === ARROW_DOWN;\n return doSwitch(orientation, vertical, horizontal);\n}\nfunction isCrossOrientationCloseKey(key, orientation, rtl, cols) {\n const vertical = rtl ? key === ARROW_RIGHT : key === ARROW_LEFT;\n const horizontal = key === ARROW_UP;\n if (orientation === 'both' || orientation === 'horizontal' && cols && cols > 1) {\n return key === ESCAPE;\n }\n return doSwitch(orientation, vertical, horizontal);\n}\n/**\n * Adds arrow key-based navigation of a list of items, either using real DOM\n * focus or virtual focus.\n * @see https://floating-ui.com/docs/useListNavigation\n */\nexport function useListNavigation(context, props) {\n const store = 'rootStore' in context ? context.rootStore : context;\n const open = store.useState('open');\n const floatingElement = store.useState('floatingElement');\n const domReferenceElement = store.useState('domReferenceElement');\n const dataRef = store.context.dataRef;\n const {\n listRef,\n activeIndex,\n onNavigate: onNavigateProp = () => {},\n enabled = true,\n selectedIndex = null,\n allowEscape = false,\n loopFocus = false,\n nested = false,\n rtl = false,\n virtual = false,\n focusItemOnOpen = 'auto',\n focusItemOnHover = true,\n openOnArrowKeyDown = true,\n disabledIndices = undefined,\n orientation = 'vertical',\n parentOrientation,\n cols = 1,\n id,\n resetOnPointerLeave = true,\n externalTree\n } = props;\n if (process.env.NODE_ENV !== 'production') {\n if (allowEscape) {\n if (!loopFocus) {\n console.warn('`useListNavigation` looping must be enabled to allow escaping.');\n }\n if (!virtual) {\n console.warn('`useListNavigation` must be virtual to allow escaping.');\n }\n }\n if (orientation === 'vertical' && cols > 1) {\n console.warn('In grid list navigation mode (`cols` > 1), the `orientation` should', 'be either \"horizontal\" or \"both\".');\n }\n }\n const floatingFocusElement = getFloatingFocusElement(floatingElement);\n const floatingFocusElementRef = useValueAsRef(floatingFocusElement);\n const parentId = useFloatingParentNodeId();\n const tree = useFloatingTree(externalTree);\n useIsoLayoutEffect(() => {\n dataRef.current.orientation = orientation;\n }, [dataRef, orientation]);\n const typeableComboboxReference = isTypeableCombobox(domReferenceElement);\n const focusItemOnOpenRef = React.useRef(focusItemOnOpen);\n const indexRef = React.useRef(selectedIndex ?? -1);\n const keyRef = React.useRef(null);\n const isPointerModalityRef = React.useRef(true);\n const onNavigate = useStableCallback(event => {\n onNavigateProp(indexRef.current === -1 ? null : indexRef.current, event);\n });\n const previousOnNavigateRef = React.useRef(onNavigate);\n const previousMountedRef = React.useRef(!!floatingElement);\n const previousOpenRef = React.useRef(open);\n const forceSyncFocusRef = React.useRef(false);\n const forceScrollIntoViewRef = React.useRef(false);\n const disabledIndicesRef = useValueAsRef(disabledIndices);\n const latestOpenRef = useValueAsRef(open);\n const selectedIndexRef = useValueAsRef(selectedIndex);\n const resetOnPointerLeaveRef = useValueAsRef(resetOnPointerLeave);\n const focusItem = useStableCallback(() => {\n function runFocus(item) {\n if (virtual) {\n tree?.events.emit('virtualfocus', item);\n } else {\n enqueueFocus(item, {\n sync: forceSyncFocusRef.current,\n preventScroll: true\n });\n }\n }\n const initialItem = listRef.current[indexRef.current];\n const forceScrollIntoView = forceScrollIntoViewRef.current;\n if (initialItem) {\n runFocus(initialItem);\n }\n const scheduler = forceSyncFocusRef.current ? v => v() : requestAnimationFrame;\n scheduler(() => {\n const waitedItem = listRef.current[indexRef.current] || initialItem;\n if (!waitedItem) {\n return;\n }\n if (!initialItem) {\n runFocus(waitedItem);\n }\n const shouldScrollIntoView =\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n item && (forceScrollIntoView || !isPointerModalityRef.current);\n if (shouldScrollIntoView) {\n // JSDOM doesn't support `.scrollIntoView()` but it's widely supported\n // by all browsers.\n waitedItem.scrollIntoView?.({\n block: 'nearest',\n inline: 'nearest'\n });\n }\n });\n });\n\n // Sync `selectedIndex` to be the `activeIndex` upon opening the floating\n // element. Also, reset `activeIndex` upon closing the floating element.\n useIsoLayoutEffect(() => {\n if (!enabled) {\n return;\n }\n if (open && floatingElement) {\n indexRef.current = selectedIndex ?? -1;\n if (focusItemOnOpenRef.current && selectedIndex != null) {\n // Regardless of the pointer modality, we want to ensure the selected\n // item comes into view when the floating element is opened.\n forceScrollIntoViewRef.current = true;\n onNavigate();\n }\n } else if (previousMountedRef.current) {\n // Since the user can specify `onNavigate` conditionally\n // (onNavigate: open ? setActiveIndex : setSelectedIndex),\n // we store and call the previous function.\n indexRef.current = -1;\n previousOnNavigateRef.current();\n }\n }, [enabled, open, floatingElement, selectedIndex, onNavigate]);\n\n // Sync `activeIndex` to be the focused item while the floating element is\n // open.\n useIsoLayoutEffect(() => {\n if (!enabled) {\n return;\n }\n if (!open) {\n forceSyncFocusRef.current = false;\n return;\n }\n if (!floatingElement) {\n return;\n }\n if (activeIndex == null) {\n forceSyncFocusRef.current = false;\n if (selectedIndexRef.current != null) {\n return;\n }\n\n // Reset while the floating element was open (e.g. the list changed).\n if (previousMountedRef.current) {\n indexRef.current = -1;\n focusItem();\n }\n\n // Initial sync.\n if ((!previousOpenRef.current || !previousMountedRef.current) && focusItemOnOpenRef.current && (keyRef.current != null || focusItemOnOpenRef.current === true && keyRef.current == null)) {\n let runs = 0;\n const waitForListPopulated = () => {\n if (listRef.current[0] == null) {\n // Avoid letting the browser paint if possible on the first try,\n // otherwise use rAF. Don't try more than twice, since something\n // is wrong otherwise.\n if (runs < 2) {\n const scheduler = runs ? requestAnimationFrame : queueMicrotask;\n scheduler(waitForListPopulated);\n }\n runs += 1;\n } else {\n // initially focus the first non-disabled item\n indexRef.current = keyRef.current == null || isMainOrientationToEndKey(keyRef.current, orientation, rtl) || nested ? getMinListIndex(listRef) : getMaxListIndex(listRef);\n keyRef.current = null;\n onNavigate();\n }\n };\n waitForListPopulated();\n }\n } else if (!isIndexOutOfListBounds(listRef, activeIndex)) {\n indexRef.current = activeIndex;\n focusItem();\n forceScrollIntoViewRef.current = false;\n }\n }, [enabled, open, floatingElement, activeIndex, selectedIndexRef, nested, listRef, orientation, rtl, onNavigate, focusItem, disabledIndicesRef]);\n\n // Ensure the parent floating element has focus when a nested child closes\n // to allow arrow key navigation to work after the pointer leaves the child.\n useIsoLayoutEffect(() => {\n if (!enabled || floatingElement || !tree || virtual || !previousMountedRef.current) {\n return;\n }\n const nodes = tree.nodesRef.current;\n const parent = nodes.find(node => node.id === parentId)?.context?.elements.floating;\n const activeEl = activeElement(ownerDocument(floatingElement));\n const treeContainsActiveEl = nodes.some(node => node.context && contains(node.context.elements.floating, activeEl));\n if (parent && !treeContainsActiveEl && isPointerModalityRef.current) {\n parent.focus({\n preventScroll: true\n });\n }\n }, [enabled, floatingElement, tree, parentId, virtual]);\n useIsoLayoutEffect(() => {\n previousOnNavigateRef.current = onNavigate;\n previousOpenRef.current = open;\n previousMountedRef.current = !!floatingElement;\n });\n useIsoLayoutEffect(() => {\n if (!open) {\n keyRef.current = null;\n focusItemOnOpenRef.current = focusItemOnOpen;\n }\n }, [open, focusItemOnOpen]);\n const hasActiveIndex = activeIndex != null;\n const item = React.useMemo(() => {\n function syncCurrentTarget(event) {\n if (!latestOpenRef.current) {\n return;\n }\n const index = listRef.current.indexOf(event.currentTarget);\n if (index !== -1 && indexRef.current !== index) {\n indexRef.current = index;\n onNavigate(event);\n }\n }\n const itemProps = {\n onFocus(event) {\n forceSyncFocusRef.current = true;\n syncCurrentTarget(event);\n },\n onClick: ({\n currentTarget\n }) => currentTarget.focus({\n preventScroll: true\n }),\n // Safari\n onMouseMove(event) {\n forceSyncFocusRef.current = true;\n forceScrollIntoViewRef.current = false;\n if (focusItemOnHover) {\n syncCurrentTarget(event);\n }\n },\n onPointerLeave(event) {\n if (!latestOpenRef.current || !isPointerModalityRef.current || event.pointerType === 'touch') {\n return;\n }\n forceSyncFocusRef.current = true;\n const relatedTarget = event.relatedTarget;\n if (!focusItemOnHover || listRef.current.includes(relatedTarget)) {\n return;\n }\n if (!resetOnPointerLeaveRef.current) {\n return;\n }\n enqueueFocus(null, {\n sync: true\n });\n indexRef.current = -1;\n onNavigate(event);\n if (!virtual) {\n floatingFocusElementRef.current?.focus({\n preventScroll: true\n });\n }\n }\n };\n return itemProps;\n }, [latestOpenRef, floatingFocusElementRef, focusItemOnHover, listRef, onNavigate, resetOnPointerLeaveRef, virtual]);\n const getParentOrientation = React.useCallback(() => {\n return parentOrientation ?? tree?.nodesRef.current.find(node => node.id === parentId)?.context?.dataRef?.current.orientation;\n }, [parentId, tree, parentOrientation]);\n const commonOnKeyDown = useStableCallback(event => {\n isPointerModalityRef.current = false;\n forceSyncFocusRef.current = true;\n\n // When composing a character, Chrome fires ArrowDown twice. Firefox/Safari\n // don't appear to suffer from this. `event.isComposing` is avoided due to\n // Safari not supporting it properly (although it's not needed in the first\n // place for Safari, just avoiding any possible issues).\n if (event.which === 229) {\n return;\n }\n\n // If the floating element is animating out, ignore navigation. Otherwise,\n // the `activeIndex` gets set to 0 despite not being open so the next time\n // the user ArrowDowns, the first item won't be focused.\n if (!latestOpenRef.current && event.currentTarget === floatingFocusElementRef.current) {\n return;\n }\n if (nested && isCrossOrientationCloseKey(event.key, orientation, rtl, cols)) {\n // If the nested list's close key is also the parent navigation key,\n // let the parent navigate. Otherwise, stop propagating the event.\n if (!isMainOrientationKey(event.key, getParentOrientation())) {\n stopEvent(event);\n }\n store.setOpen(false, createChangeEventDetails(REASONS.listNavigation, event.nativeEvent));\n if (isHTMLElement(domReferenceElement)) {\n if (virtual) {\n tree?.events.emit('virtualfocus', domReferenceElement);\n } else {\n domReferenceElement.focus();\n }\n }\n return;\n }\n const currentIndex = indexRef.current;\n const minIndex = getMinListIndex(listRef, disabledIndices);\n const maxIndex = getMaxListIndex(listRef, disabledIndices);\n if (!typeableComboboxReference) {\n if (event.key === 'Home') {\n stopEvent(event);\n indexRef.current = minIndex;\n onNavigate(event);\n }\n if (event.key === 'End') {\n stopEvent(event);\n indexRef.current = maxIndex;\n onNavigate(event);\n }\n }\n\n // Grid navigation.\n if (cols > 1) {\n const sizes = Array.from({\n length: listRef.current.length\n }, () => ({\n width: 1,\n height: 1\n }));\n // To calculate movements on the grid, we use hypothetical cell indices\n // as if every item was 1x1, then convert back to real indices.\n const cellMap = createGridCellMap(sizes, cols, false);\n const minGridIndex = cellMap.findIndex(index => index != null && !isListIndexDisabled(listRef, index, disabledIndices));\n // last enabled index\n const maxGridIndex = cellMap.reduce((foundIndex, index, cellIndex) => index != null && !isListIndexDisabled(listRef, index, disabledIndices) ? cellIndex : foundIndex, -1);\n const index = cellMap[getGridNavigatedIndex({\n current: cellMap.map(itemIndex => itemIndex != null ? listRef.current[itemIndex] : null)\n }, {\n event,\n orientation,\n loopFocus,\n rtl,\n cols,\n // treat undefined (empty grid spaces) as disabled indices so we\n // don't end up in them\n disabledIndices: getGridCellIndices([...((typeof disabledIndices !== 'function' ? disabledIndices : null) || listRef.current.map((_, listIndex) => isListIndexDisabled(listRef, listIndex, disabledIndices) ? listIndex : undefined)), undefined], cellMap),\n minIndex: minGridIndex,\n maxIndex: maxGridIndex,\n prevIndex: getGridCellIndexOfCorner(indexRef.current > maxIndex ? minIndex : indexRef.current, sizes, cellMap, cols,\n // use a corner matching the edge closest to the direction\n // we're moving in so we don't end up in the same item. Prefer\n // top/left over bottom/right.\n // eslint-disable-next-line no-nested-ternary\n event.key === ARROW_DOWN ? 'bl' : event.key === (rtl ? ARROW_LEFT : ARROW_RIGHT) ? 'tr' : 'tl'),\n stopEvent: true\n })];\n if (index != null) {\n indexRef.current = index;\n onNavigate(event);\n }\n if (orientation === 'both') {\n return;\n }\n }\n if (isMainOrientationKey(event.key, orientation)) {\n stopEvent(event);\n\n // Reset the index if no item is focused.\n if (open && !virtual && activeElement(event.currentTarget.ownerDocument) === event.currentTarget) {\n indexRef.current = isMainOrientationToEndKey(event.key, orientation, rtl) ? minIndex : maxIndex;\n onNavigate(event);\n return;\n }\n if (isMainOrientationToEndKey(event.key, orientation, rtl)) {\n if (loopFocus) {\n if (currentIndex >= maxIndex) {\n if (allowEscape && currentIndex !== listRef.current.length) {\n indexRef.current = -1;\n } else {\n // Give time for virtualizers to update the listRef.\n forceSyncFocusRef.current = false;\n indexRef.current = minIndex;\n }\n } else {\n indexRef.current = findNonDisabledListIndex(listRef, {\n startingIndex: currentIndex,\n disabledIndices\n });\n }\n } else {\n indexRef.current = Math.min(maxIndex, findNonDisabledListIndex(listRef, {\n startingIndex: currentIndex,\n disabledIndices\n }));\n }\n } else if (loopFocus) {\n if (currentIndex <= minIndex) {\n if (allowEscape && currentIndex !== -1) {\n indexRef.current = listRef.current.length;\n } else {\n // Give time for virtualizers to update the listRef.\n forceSyncFocusRef.current = false;\n indexRef.current = maxIndex;\n }\n } else {\n indexRef.current = findNonDisabledListIndex(listRef, {\n startingIndex: currentIndex,\n decrement: true,\n disabledIndices\n });\n }\n } else {\n indexRef.current = Math.max(minIndex, findNonDisabledListIndex(listRef, {\n startingIndex: currentIndex,\n decrement: true,\n disabledIndices\n }));\n }\n if (isIndexOutOfListBounds(listRef, indexRef.current)) {\n indexRef.current = -1;\n }\n onNavigate(event);\n }\n });\n const ariaActiveDescendantProp = React.useMemo(() => {\n return virtual && open && hasActiveIndex && {\n 'aria-activedescendant': `${id}-${activeIndex}`\n };\n }, [virtual, open, hasActiveIndex, id, activeIndex]);\n const floating = React.useMemo(() => {\n return {\n 'aria-orientation': orientation === 'both' ? undefined : orientation,\n ...(!typeableComboboxReference ? ariaActiveDescendantProp : {}),\n onKeyDown(event) {\n // Close submenu on Shift+Tab\n if (event.key === 'Tab' && event.shiftKey && open && !virtual) {\n // If the event originated from within a nested element (e.g., a Dialog opened from\n // within the menu), don't close the menu. The nested element has its own focus\n // management and should handle the Tab key.\n const target = getTarget(event.nativeEvent);\n if (target && !contains(floatingFocusElementRef.current, target)) {\n return;\n }\n stopEvent(event);\n store.setOpen(false, createChangeEventDetails(REASONS.focusOut, event.nativeEvent));\n if (isHTMLElement(domReferenceElement)) {\n domReferenceElement.focus();\n }\n return;\n }\n commonOnKeyDown(event);\n },\n onPointerMove() {\n isPointerModalityRef.current = true;\n }\n };\n }, [ariaActiveDescendantProp, commonOnKeyDown, floatingFocusElementRef, orientation, typeableComboboxReference, store, open, virtual, domReferenceElement]);\n const trigger = React.useMemo(() => {\n function checkVirtualMouse(event) {\n if (focusItemOnOpen === 'auto' && isVirtualClick(event.nativeEvent)) {\n focusItemOnOpenRef.current = !virtual;\n }\n }\n function checkVirtualPointer(event) {\n // `pointerdown` fires first, reset the state then perform the checks.\n focusItemOnOpenRef.current = focusItemOnOpen;\n if (focusItemOnOpen === 'auto' && isVirtualPointerEvent(event.nativeEvent)) {\n focusItemOnOpenRef.current = true;\n }\n }\n return {\n onKeyDown(event) {\n // non-reactive open state (to prevent re-creation of the handler)\n const currentOpen = store.select('open');\n isPointerModalityRef.current = false;\n const isArrowKey = event.key.startsWith('Arrow');\n const isParentCrossOpenKey = isCrossOrientationOpenKey(event.key, getParentOrientation(), rtl);\n const isMainKey = isMainOrientationKey(event.key, orientation);\n const isNavigationKey = (nested ? isParentCrossOpenKey : isMainKey) || event.key === 'Enter' || event.key.trim() === '';\n if (virtual && currentOpen) {\n return commonOnKeyDown(event);\n }\n\n // If a floating element should not open on arrow key down, avoid\n // setting `activeIndex` while it's closed.\n if (!currentOpen && !openOnArrowKeyDown && isArrowKey) {\n return undefined;\n }\n if (isNavigationKey) {\n const isParentMainKey = isMainOrientationKey(event.key, getParentOrientation());\n keyRef.current = nested && isParentMainKey ? null : event.key;\n }\n if (nested) {\n if (isParentCrossOpenKey) {\n stopEvent(event);\n if (currentOpen) {\n indexRef.current = getMinListIndex(listRef, disabledIndicesRef.current);\n onNavigate(event);\n } else {\n store.setOpen(true, createChangeEventDetails(REASONS.listNavigation, event.nativeEvent, event.currentTarget));\n }\n }\n return undefined;\n }\n if (isMainKey) {\n if (selectedIndexRef.current != null) {\n indexRef.current = selectedIndexRef.current;\n }\n stopEvent(event);\n if (!currentOpen && openOnArrowKeyDown) {\n store.setOpen(true, createChangeEventDetails(REASONS.listNavigation, event.nativeEvent, event.currentTarget));\n } else {\n commonOnKeyDown(event);\n }\n if (currentOpen) {\n onNavigate(event);\n }\n }\n return undefined;\n },\n onFocus(event) {\n if (store.select('open') && !virtual) {\n indexRef.current = -1;\n onNavigate(event);\n }\n },\n onPointerDown: checkVirtualPointer,\n onPointerEnter: checkVirtualPointer,\n onMouseDown: checkVirtualMouse,\n onClick: checkVirtualMouse\n };\n }, [commonOnKeyDown, disabledIndicesRef, focusItemOnOpen, listRef, nested, onNavigate, store, openOnArrowKeyDown, orientation, getParentOrientation, rtl, selectedIndexRef, virtual]);\n const reference = React.useMemo(() => {\n return {\n ...ariaActiveDescendantProp,\n ...trigger\n };\n }, [ariaActiveDescendantProp, trigger]);\n return React.useMemo(() => enabled ? {\n reference,\n floating,\n item,\n trigger\n } : {}, [enabled, reference, floating, trigger, item]);\n}","'use client';\n\nimport * as React from 'react';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useTimeout } from '@base-ui/utils/useTimeout';\nimport { contains, stopEvent } from \"../utils.js\";\n/**\n * Provides a matching callback that can be used to focus an item as the user\n * types, often used in tandem with `useListNavigation()`.\n * @see https://floating-ui.com/docs/useTypeahead\n */\nexport function useTypeahead(context, props) {\n const store = 'rootStore' in context ? context.rootStore : context;\n const dataRef = store.context.dataRef;\n const open = store.useState('open');\n const {\n listRef,\n activeIndex,\n onMatch: onMatchProp,\n onTypingChange,\n enabled = true,\n resetMs = 750,\n selectedIndex = null\n } = props;\n const timeout = useTimeout();\n const stringRef = React.useRef('');\n const prevIndexRef = React.useRef(selectedIndex ?? activeIndex ?? -1);\n const matchIndexRef = React.useRef(null);\n useIsoLayoutEffect(() => {\n if (!open && selectedIndex !== null) {\n return;\n }\n timeout.clear();\n matchIndexRef.current = null;\n if (stringRef.current !== '') {\n stringRef.current = '';\n }\n }, [open, selectedIndex, timeout]);\n useIsoLayoutEffect(() => {\n // Sync arrow key navigation but not typeahead navigation.\n if (open && stringRef.current === '') {\n prevIndexRef.current = selectedIndex ?? activeIndex ?? -1;\n }\n }, [open, selectedIndex, activeIndex]);\n const setTypingChange = useStableCallback(value => {\n if (value) {\n if (!dataRef.current.typing) {\n dataRef.current.typing = value;\n onTypingChange?.(value);\n }\n } else if (dataRef.current.typing) {\n dataRef.current.typing = value;\n onTypingChange?.(value);\n }\n });\n const onKeyDown = useStableCallback(event => {\n function getMatchingIndex(list, orderedList, string) {\n const str = orderedList.find(text => text?.toLocaleLowerCase().indexOf(string.toLocaleLowerCase()) === 0);\n return str ? list.indexOf(str) : -1;\n }\n const listContent = listRef.current;\n if (stringRef.current.length > 0 && stringRef.current[0] !== ' ') {\n if (getMatchingIndex(listContent, listContent, stringRef.current) === -1) {\n setTypingChange(false);\n } else if (event.key === ' ') {\n stopEvent(event);\n }\n }\n if (listContent == null ||\n // Character key.\n event.key.length !== 1 ||\n // Modifier key.\n event.ctrlKey || event.metaKey || event.altKey) {\n return;\n }\n if (open && event.key !== ' ') {\n stopEvent(event);\n setTypingChange(true);\n }\n\n // Capture whether this is a new typing session before mutating the string.\n const isNewSession = stringRef.current === '';\n if (isNewSession) {\n prevIndexRef.current = selectedIndex ?? activeIndex ?? -1;\n }\n\n // Bail out if the list contains a word like \"llama\" or \"aaron\". TODO:\n // allow it in this case, too.\n const allowRapidSuccessionOfFirstLetter = listContent.every(text => text ? text[0]?.toLocaleLowerCase() !== text[1]?.toLocaleLowerCase() : true);\n\n // Allows the user to cycle through items that start with the same letter\n // in rapid succession.\n if (allowRapidSuccessionOfFirstLetter && stringRef.current === event.key) {\n stringRef.current = '';\n prevIndexRef.current = matchIndexRef.current;\n }\n stringRef.current += event.key;\n timeout.start(resetMs, () => {\n stringRef.current = '';\n prevIndexRef.current = matchIndexRef.current;\n setTypingChange(false);\n });\n\n // Compute the starting index for this search.\n // If this is a new typing session (string is empty), base it on the current\n // selection/active item; otherwise continue from the last matched index.\n const prevIndex = isNewSession ? selectedIndex ?? activeIndex ?? -1 : prevIndexRef.current;\n const index = getMatchingIndex(listContent, [...listContent.slice((prevIndex || 0) + 1), ...listContent.slice(0, (prevIndex || 0) + 1)], stringRef.current);\n if (index !== -1) {\n onMatchProp?.(index);\n matchIndexRef.current = index;\n } else if (event.key !== ' ') {\n stringRef.current = '';\n setTypingChange(false);\n }\n });\n const onBlur = useStableCallback(event => {\n const next = event.relatedTarget;\n const currentDomReferenceElement = store.select('domReferenceElement');\n const currentFloatingElement = store.select('floatingElement');\n const withinReference = contains(currentDomReferenceElement, next);\n const withinFloating = contains(currentFloatingElement, next);\n\n // Keep the session if focus moves within the composite (reference <-> floating).\n if (withinReference || withinFloating) {\n return;\n }\n\n // End the current typing session when focus leaves the composite entirely.\n timeout.clear();\n stringRef.current = '';\n prevIndexRef.current = matchIndexRef.current;\n setTypingChange(false);\n });\n const reference = React.useMemo(() => ({\n onKeyDown,\n onBlur\n }), [onKeyDown, onBlur]);\n const floating = React.useMemo(() => {\n return {\n onKeyDown,\n onKeyUp(event) {\n if (event.key === ' ') {\n setTypingChange(false);\n }\n },\n onBlur\n };\n }, [onKeyDown, onBlur, setTypingChange]);\n return React.useMemo(() => enabled ? {\n reference,\n floating\n } : {}, [enabled, reference, floating]);\n}","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Card({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n return (\n <div\n data-slot=\"card\"\n data-size={size}\n className={cn(\"ring-foreground/10 bg-card text-card-foreground gap-4 overflow-hidden rounded-xl py-4 text-sm ring-1 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl group/card flex flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3 group/card-header @container/card-header grid auto-rows-min items-start has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"text-base leading-snug font-medium group-data-[size=sm]/card:text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-4 group-data-[size=sm]/card:px-3\", className)}\n {...props}\n />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"bg-muted/50 rounded-b-xl border-t p-4 group-data-[size=sm]/card:p-3 flex items-center\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const SelectRootContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") SelectRootContext.displayName = \"SelectRootContext\";\nexport const SelectFloatingContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") SelectFloatingContext.displayName = \"SelectFloatingContext\";\nexport function useSelectRootContext() {\n const context = React.useContext(SelectRootContext);\n if (context === null) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: SelectRootContext is missing. Select parts must be placed within <Select.Root>.' : _formatErrorMessage(60));\n }\n return context;\n}\nexport function useSelectFloatingContext() {\n const context = React.useContext(SelectFloatingContext);\n if (context === null) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: SelectFloatingContext is missing. Select parts must be placed within <Select.Root>.' : _formatErrorMessage(61));\n }\n return context;\n}","export const defaultItemEquality = (itemValue, selectedValue) => Object.is(itemValue, selectedValue);\nexport function compareItemEquality(itemValue, selectedValue, comparer) {\n if (itemValue == null || selectedValue == null) {\n return Object.is(itemValue, selectedValue);\n }\n return comparer(itemValue, selectedValue);\n}\nexport function selectedValueIncludes(selectedValues, itemValue, comparer) {\n if (!selectedValues || selectedValues.length === 0) {\n return false;\n }\n return selectedValues.some(selectedValue => {\n if (selectedValue === undefined) {\n return false;\n }\n return compareItemEquality(itemValue, selectedValue, comparer);\n });\n}\nexport function findItemIndex(itemValues, selectedValue, comparer) {\n if (!itemValues || itemValues.length === 0) {\n return -1;\n }\n return itemValues.findIndex(itemValue => {\n if (itemValue === undefined) {\n return false;\n }\n return compareItemEquality(itemValue, selectedValue, comparer);\n });\n}\nexport function removeItem(selectedValues, itemValue, comparer) {\n return selectedValues.filter(selectedValue => !compareItemEquality(itemValue, selectedValue, comparer));\n}","export function serializeValue(value) {\n if (value == null) {\n return '';\n }\n if (typeof value === 'string') {\n return value;\n }\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n}","'use client';\n\nimport * as React from 'react';\nimport { serializeValue } from \"./serializeValue.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function isGroupedItems(items) {\n return items != null && items.length > 0 && typeof items[0] === 'object' && items[0] != null && 'items' in items[0];\n}\n\n/**\n * Checks if the items array contains an item with a null value that has a non-null label.\n */\nexport function hasNullItemLabel(items) {\n if (!Array.isArray(items)) {\n return items != null && !('null' in items);\n }\n if (isGroupedItems(items)) {\n for (const group of items) {\n for (const item of group.items) {\n if (item && item.value == null && item.label != null) {\n return true;\n }\n }\n }\n return false;\n }\n for (const item of items) {\n if (item && item.value == null && item.label != null) {\n return true;\n }\n }\n return false;\n}\nexport function stringifyAsLabel(item, itemToStringLabel) {\n if (itemToStringLabel && item != null) {\n return itemToStringLabel(item) ?? '';\n }\n if (item && typeof item === 'object') {\n if ('label' in item && item.label != null) {\n return String(item.label);\n }\n if ('value' in item) {\n return String(item.value);\n }\n }\n return serializeValue(item);\n}\nexport function stringifyAsValue(item, itemToStringValue) {\n if (itemToStringValue && item != null) {\n return itemToStringValue(item) ?? '';\n }\n if (item && typeof item === 'object' && 'value' in item && 'label' in item) {\n return serializeValue(item.value);\n }\n return serializeValue(item);\n}\nexport function resolveSelectedLabel(value, items, itemToStringLabel) {\n function fallback() {\n return stringifyAsLabel(value, itemToStringLabel);\n }\n if (itemToStringLabel && value != null) {\n return itemToStringLabel(value);\n }\n\n // Custom object with explicit label takes precedence\n if (value && typeof value === 'object' && 'label' in value && value.label != null) {\n return value.label;\n }\n\n // Items provided as plain record map\n if (items && !Array.isArray(items)) {\n return items[value] ?? fallback();\n }\n\n // Items provided as array (flat or grouped)\n if (Array.isArray(items)) {\n const flatItems = isGroupedItems(items) ? items.flatMap(g => g.items) : items;\n if (value == null || typeof value !== 'object') {\n const match = flatItems.find(item => item.value === value);\n if (match && match.label != null) {\n return match.label;\n }\n return fallback();\n }\n\n // Object without explicit label: try matching by its `value` property\n if ('value' in value) {\n const match = flatItems.find(item => item && item.value === value.value);\n if (match && match.label != null) {\n return match.label;\n }\n }\n }\n return fallback();\n}\nexport function resolveMultipleLabels(values, items, itemToStringLabel) {\n return values.reduce((acc, value, index) => {\n if (index > 0) {\n acc.push(', ');\n }\n acc.push(/*#__PURE__*/_jsx(React.Fragment, {\n children: resolveSelectedLabel(value, items, itemToStringLabel)\n }, index));\n return acc;\n }, []);\n}","import { createSelector } from '@base-ui/utils/store';\nimport { compareItemEquality } from \"../utils/itemEquality.js\";\nimport { hasNullItemLabel, stringifyAsValue } from \"../utils/resolveValueLabel.js\";\nexport const selectors = {\n id: createSelector(state => state.id),\n modal: createSelector(state => state.modal),\n multiple: createSelector(state => state.multiple),\n items: createSelector(state => state.items),\n itemToStringLabel: createSelector(state => state.itemToStringLabel),\n itemToStringValue: createSelector(state => state.itemToStringValue),\n isItemEqualToValue: createSelector(state => state.isItemEqualToValue),\n value: createSelector(state => state.value),\n hasSelectedValue: createSelector(state => {\n const {\n value,\n multiple,\n itemToStringValue\n } = state;\n if (value == null) {\n return false;\n }\n if (multiple && Array.isArray(value)) {\n return value.length > 0;\n }\n return stringifyAsValue(value, itemToStringValue) !== '';\n }),\n hasNullItemLabel: createSelector((state, enabled) => {\n return enabled ? hasNullItemLabel(state.items) : false;\n }),\n open: createSelector(state => state.open),\n mounted: createSelector(state => state.mounted),\n forceMount: createSelector(state => state.forceMount),\n transitionStatus: createSelector(state => state.transitionStatus),\n openMethod: createSelector(state => state.openMethod),\n activeIndex: createSelector(state => state.activeIndex),\n selectedIndex: createSelector(state => state.selectedIndex),\n isActive: createSelector((state, index) => state.activeIndex === index),\n isSelected: createSelector((state, index, itemValue) => {\n const comparer = state.isItemEqualToValue;\n const storeValue = state.value;\n if (state.multiple) {\n return Array.isArray(storeValue) && storeValue.some(selectedItem => compareItemEquality(itemValue, selectedItem, comparer));\n }\n\n // `selectedIndex` is only updated after the items mount for the first time,\n // the value check avoids a re-render for the initially selected item.\n if (state.selectedIndex === index && state.selectedIndex !== null) {\n return true;\n }\n return compareItemEquality(itemValue, storeValue, comparer);\n }),\n isSelectedByFocus: createSelector((state, index) => {\n return state.selectedIndex === index;\n }),\n popupProps: createSelector(state => state.popupProps),\n triggerProps: createSelector(state => state.triggerProps),\n triggerElement: createSelector(state => state.triggerElement),\n positionerElement: createSelector(state => state.positionerElement),\n listElement: createSelector(state => state.listElement),\n scrollUpArrowVisible: createSelector(state => state.scrollUpArrowVisible),\n scrollDownArrowVisible: createSelector(state => state.scrollDownArrowVisible),\n hasScrollArrows: createSelector(state => state.hasScrollArrows)\n};","'use client';\n\nimport * as React from 'react';\nimport { visuallyHidden, visuallyHiddenInput } from '@base-ui/utils/visuallyHidden';\nimport { useMergedRefs } from '@base-ui/utils/useMergedRefs';\nimport { useRefWithInit } from '@base-ui/utils/useRefWithInit';\nimport { useOnFirstRender } from '@base-ui/utils/useOnFirstRender';\nimport { useControlled } from '@base-ui/utils/useControlled';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useValueAsRef } from '@base-ui/utils/useValueAsRef';\nimport { useStore, Store } from '@base-ui/utils/store';\nimport { useClick, useDismiss, useFloatingRootContext, useInteractions, useListNavigation, useTypeahead } from \"../../floating-ui-react/index.js\";\nimport { SelectRootContext, SelectFloatingContext } from \"./SelectRootContext.js\";\nimport { useFieldRootContext } from \"../../field/root/FieldRootContext.js\";\nimport { useLabelableId } from \"../../labelable-provider/useLabelableId.js\";\nimport { useTransitionStatus } from \"../../utils/useTransitionStatus.js\";\nimport { selectors } from \"../store.js\";\nimport { createChangeEventDetails } from \"../../utils/createBaseUIEventDetails.js\";\nimport { REASONS } from \"../../utils/reasons.js\";\nimport { useOpenChangeComplete } from \"../../utils/useOpenChangeComplete.js\";\nimport { useFormContext } from \"../../form/FormContext.js\";\nimport { useField } from \"../../field/useField.js\";\nimport { stringifyAsValue } from \"../../utils/resolveValueLabel.js\";\nimport { EMPTY_ARRAY, EMPTY_OBJECT } from \"../../utils/constants.js\";\nimport { defaultItemEquality, findItemIndex } from \"../../utils/itemEquality.js\";\nimport { useValueChanged } from \"../../utils/useValueChanged.js\";\nimport { useOpenInteractionType } from \"../../utils/useOpenInteractionType.js\";\nimport { mergeProps } from \"../../merge-props/index.js\";\n\n/**\n * Groups all parts of the select.\n * Doesn’t render its own HTML element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function SelectRoot(props) {\n const {\n id,\n value: valueProp,\n defaultValue = null,\n onValueChange,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n name: nameProp,\n autoComplete,\n disabled: disabledProp = false,\n readOnly = false,\n required = false,\n modal = true,\n actionsRef,\n inputRef,\n onOpenChangeComplete,\n items,\n multiple = false,\n itemToStringLabel,\n itemToStringValue,\n isItemEqualToValue = defaultItemEquality,\n highlightItemOnHover = true,\n children\n } = props;\n const {\n clearErrors\n } = useFormContext();\n const {\n setDirty,\n setTouched,\n setFocused,\n shouldValidateOnChange,\n validityData,\n setFilled,\n name: fieldName,\n disabled: fieldDisabled,\n validation,\n validationMode\n } = useFieldRootContext();\n const generatedId = useLabelableId({\n id\n });\n const disabled = fieldDisabled || disabledProp;\n const name = fieldName ?? nameProp;\n const [value, setValueUnwrapped] = useControlled({\n controlled: valueProp,\n default: multiple ? defaultValue ?? EMPTY_ARRAY : defaultValue,\n name: 'Select',\n state: 'value'\n });\n const [open, setOpenUnwrapped] = useControlled({\n controlled: openProp,\n default: defaultOpen,\n name: 'Select',\n state: 'open'\n });\n const listRef = React.useRef([]);\n const labelsRef = React.useRef([]);\n const popupRef = React.useRef(null);\n const scrollHandlerRef = React.useRef(null);\n const scrollArrowsMountedCountRef = React.useRef(0);\n const valueRef = React.useRef(null);\n const valuesRef = React.useRef([]);\n const typingRef = React.useRef(false);\n const keyboardActiveRef = React.useRef(false);\n const selectedItemTextRef = React.useRef(null);\n const selectionRef = React.useRef({\n allowSelectedMouseUp: false,\n allowUnselectedMouseUp: false\n });\n const alignItemWithTriggerActiveRef = React.useRef(false);\n const {\n mounted,\n setMounted,\n transitionStatus\n } = useTransitionStatus(open);\n const {\n openMethod,\n triggerProps: interactionTypeProps,\n reset: resetOpenInteractionType\n } = useOpenInteractionType(open);\n const store = useRefWithInit(() => new Store({\n id: generatedId,\n modal,\n multiple,\n itemToStringLabel,\n itemToStringValue,\n isItemEqualToValue,\n value,\n open,\n mounted,\n transitionStatus,\n items,\n forceMount: false,\n openMethod: null,\n activeIndex: null,\n selectedIndex: null,\n popupProps: {},\n triggerProps: {},\n triggerElement: null,\n positionerElement: null,\n listElement: null,\n scrollUpArrowVisible: false,\n scrollDownArrowVisible: false,\n hasScrollArrows: false\n })).current;\n const activeIndex = useStore(store, selectors.activeIndex);\n const selectedIndex = useStore(store, selectors.selectedIndex);\n const triggerElement = useStore(store, selectors.triggerElement);\n const positionerElement = useStore(store, selectors.positionerElement);\n const serializedValue = React.useMemo(() => {\n if (multiple && Array.isArray(value) && value.length === 0) {\n return '';\n }\n return stringifyAsValue(value, itemToStringValue);\n }, [multiple, value, itemToStringValue]);\n const fieldStringValue = React.useMemo(() => {\n if (multiple && Array.isArray(value)) {\n return value.map(currentValue => stringifyAsValue(currentValue, itemToStringValue));\n }\n return stringifyAsValue(value, itemToStringValue);\n }, [multiple, value, itemToStringValue]);\n const controlRef = useValueAsRef(store.state.triggerElement);\n useField({\n id: generatedId,\n commit: validation.commit,\n value,\n controlRef,\n name,\n getValue: () => fieldStringValue\n });\n const initialValueRef = React.useRef(value);\n useIsoLayoutEffect(() => {\n // Ensure the values and labels are registered for programmatic value changes.\n if (value !== initialValueRef.current) {\n store.set('forceMount', true);\n }\n }, [store, value]);\n useIsoLayoutEffect(() => {\n setFilled(multiple ? Array.isArray(value) && value.length > 0 : value != null);\n }, [multiple, value, setFilled]);\n useIsoLayoutEffect(function syncSelectedIndex() {\n if (open) {\n return;\n }\n const registry = valuesRef.current;\n if (multiple) {\n const currentValue = Array.isArray(value) ? value : [];\n if (currentValue.length === 0) {\n store.set('selectedIndex', null);\n return;\n }\n const lastValue = currentValue[currentValue.length - 1];\n const lastIndex = findItemIndex(registry, lastValue, isItemEqualToValue);\n store.set('selectedIndex', lastIndex === -1 ? null : lastIndex);\n return;\n }\n const index = findItemIndex(registry, value, isItemEqualToValue);\n store.set('selectedIndex', index === -1 ? null : index);\n }, [multiple, open, value, valuesRef, isItemEqualToValue, store]);\n useValueChanged(value, () => {\n clearErrors(name);\n setDirty(value !== validityData.initialValue);\n if (shouldValidateOnChange()) {\n validation.commit(value);\n } else {\n validation.commit(value, true);\n }\n });\n const setOpen = useStableCallback((nextOpen, eventDetails) => {\n onOpenChange?.(nextOpen, eventDetails);\n if (eventDetails.isCanceled) {\n return;\n }\n setOpenUnwrapped(nextOpen);\n if (!nextOpen && (eventDetails.reason === REASONS.focusOut || eventDetails.reason === REASONS.outsidePress)) {\n setTouched(true);\n setFocused(false);\n if (validationMode === 'onBlur') {\n validation.commit(value);\n }\n }\n\n // The active index will sync to the last selected index on the next open.\n // Workaround `enableFocusInside` in Floating UI setting `tabindex=0` of a non-highlighted\n // option upon close when tabbing out due to `keepMounted=true`:\n // https://github.com/floating-ui/floating-ui/pull/3004/files#diff-962a7439cdeb09ea98d4b622a45d517bce07ad8c3f866e089bda05f4b0bbd875R194-R199\n // This otherwise causes options to retain `tabindex=0` incorrectly when the popup is closed\n // when tabbing outside.\n if (!nextOpen && store.state.activeIndex !== null) {\n const activeOption = listRef.current[store.state.activeIndex];\n // Wait for Floating UI's focus effect to have fired\n queueMicrotask(() => {\n activeOption?.setAttribute('tabindex', '-1');\n });\n }\n });\n const handleUnmount = useStableCallback(() => {\n setMounted(false);\n store.set('activeIndex', null);\n resetOpenInteractionType();\n onOpenChangeComplete?.(false);\n });\n useOpenChangeComplete({\n enabled: !actionsRef,\n open,\n ref: popupRef,\n onComplete() {\n if (!open) {\n handleUnmount();\n }\n }\n });\n React.useImperativeHandle(actionsRef, () => ({\n unmount: handleUnmount\n }), [handleUnmount]);\n const setValue = useStableCallback((nextValue, eventDetails) => {\n onValueChange?.(nextValue, eventDetails);\n if (eventDetails.isCanceled) {\n return;\n }\n setValueUnwrapped(nextValue);\n });\n const handleScrollArrowVisibility = useStableCallback(() => {\n const scroller = store.state.listElement || popupRef.current;\n if (!scroller) {\n return;\n }\n const viewportTop = scroller.scrollTop;\n const viewportBottom = scroller.scrollTop + scroller.clientHeight;\n const shouldShowUp = viewportTop > 1;\n const shouldShowDown = viewportBottom < scroller.scrollHeight - 1;\n if (store.state.scrollUpArrowVisible !== shouldShowUp) {\n store.set('scrollUpArrowVisible', shouldShowUp);\n }\n if (store.state.scrollDownArrowVisible !== shouldShowDown) {\n store.set('scrollDownArrowVisible', shouldShowDown);\n }\n });\n const floatingContext = useFloatingRootContext({\n open,\n onOpenChange: setOpen,\n elements: {\n reference: triggerElement,\n floating: positionerElement\n }\n });\n const click = useClick(floatingContext, {\n enabled: !readOnly && !disabled,\n event: 'mousedown'\n });\n const dismiss = useDismiss(floatingContext, {\n bubbles: false\n });\n const listNavigation = useListNavigation(floatingContext, {\n enabled: !readOnly && !disabled,\n listRef,\n activeIndex,\n selectedIndex,\n disabledIndices: EMPTY_ARRAY,\n onNavigate(nextActiveIndex) {\n // Retain the highlight while transitioning out.\n if (nextActiveIndex === null && !open) {\n return;\n }\n store.set('activeIndex', nextActiveIndex);\n },\n // Implement our own listeners since `onPointerLeave` on each option fires while scrolling with\n // the `alignItemWithTrigger=true`, causing a performance issue on Chrome.\n focusItemOnHover: false\n });\n const typeahead = useTypeahead(floatingContext, {\n enabled: !readOnly && !disabled && (open || !multiple),\n listRef: labelsRef,\n activeIndex,\n selectedIndex,\n onMatch(index) {\n if (open) {\n store.set('activeIndex', index);\n } else {\n setValue(valuesRef.current[index], createChangeEventDetails('none'));\n }\n },\n onTypingChange(typing) {\n // FIXME: Floating UI doesn't support allowing space to select an item while the popup is\n // closed and the trigger isn't a native <button>.\n typingRef.current = typing;\n }\n });\n const {\n getReferenceProps,\n getFloatingProps,\n getItemProps\n } = useInteractions([click, dismiss, listNavigation, typeahead]);\n const mergedTriggerProps = React.useMemo(() => {\n return mergeProps(getReferenceProps(), interactionTypeProps, generatedId ? {\n id: generatedId\n } : EMPTY_OBJECT);\n }, [getReferenceProps, interactionTypeProps, generatedId]);\n useOnFirstRender(() => {\n store.update({\n popupProps: getFloatingProps(),\n triggerProps: mergedTriggerProps\n });\n });\n useIsoLayoutEffect(() => {\n store.update({\n id: generatedId,\n modal,\n multiple,\n value,\n open,\n mounted,\n transitionStatus,\n popupProps: getFloatingProps(),\n triggerProps: mergedTriggerProps,\n items,\n itemToStringLabel,\n itemToStringValue,\n isItemEqualToValue,\n openMethod\n });\n }, [store, generatedId, modal, multiple, value, open, mounted, transitionStatus, getFloatingProps, mergedTriggerProps, items, itemToStringLabel, itemToStringValue, isItemEqualToValue, openMethod]);\n const contextValue = React.useMemo(() => ({\n store,\n name,\n required,\n disabled,\n readOnly,\n multiple,\n itemToStringLabel,\n itemToStringValue,\n highlightItemOnHover,\n setValue,\n setOpen,\n listRef,\n popupRef,\n scrollHandlerRef,\n handleScrollArrowVisibility,\n scrollArrowsMountedCountRef,\n getItemProps,\n events: floatingContext.context.events,\n valueRef,\n valuesRef,\n labelsRef,\n typingRef,\n selectionRef,\n selectedItemTextRef,\n validation,\n onOpenChangeComplete,\n keyboardActiveRef,\n alignItemWithTriggerActiveRef,\n initialValueRef\n }), [store, name, required, disabled, readOnly, multiple, itemToStringLabel, itemToStringValue, highlightItemOnHover, setValue, setOpen, getItemProps, floatingContext.context.events, validation, onOpenChangeComplete, handleScrollArrowVisibility]);\n const ref = useMergedRefs(inputRef, validation.inputRef);\n const hasMultipleSelection = multiple && Array.isArray(value) && value.length > 0;\n const hiddenInputs = React.useMemo(() => {\n if (!multiple || !Array.isArray(value) || !name) {\n return null;\n }\n return value.map(v => {\n const currentSerializedValue = stringifyAsValue(v, itemToStringValue);\n return /*#__PURE__*/_jsx(\"input\", {\n type: \"hidden\",\n name: name,\n value: currentSerializedValue\n }, currentSerializedValue);\n });\n }, [multiple, value, name, itemToStringValue]);\n return /*#__PURE__*/_jsx(SelectRootContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/_jsxs(SelectFloatingContext.Provider, {\n value: floatingContext,\n children: [children, /*#__PURE__*/_jsx(\"input\", {\n ...validation.getInputValidationProps({\n onFocus() {\n // Move focus to the trigger element when the hidden input is focused.\n store.state.triggerElement?.focus({\n // Supported in Chrome from 144 (January 2026)\n // @ts-expect-error - focusVisible is not yet in the lib.dom.d.ts\n focusVisible: true\n });\n },\n // Handle browser autofill.\n onChange(event) {\n // Workaround for https://github.com/facebook/react/issues/9023\n if (event.nativeEvent.defaultPrevented) {\n return;\n }\n const nextValue = event.target.value;\n const details = createChangeEventDetails(REASONS.none, event.nativeEvent);\n function handleChange() {\n if (multiple) {\n // Browser autofill only writes a single scalar value.\n return;\n }\n\n // Handle single selection: match against registered values using serialization\n const matchingValue = valuesRef.current.find(v => {\n const candidate = stringifyAsValue(v, itemToStringValue);\n if (candidate.toLowerCase() === nextValue.toLowerCase()) {\n return true;\n }\n return false;\n });\n if (matchingValue != null) {\n setDirty(matchingValue !== validityData.initialValue);\n setValue(matchingValue, details);\n if (shouldValidateOnChange()) {\n validation.commit(matchingValue);\n }\n }\n }\n store.set('forceMount', true);\n queueMicrotask(handleChange);\n }\n }),\n name: multiple ? undefined : name,\n autoComplete: autoComplete,\n value: serializedValue,\n disabled: disabled,\n required: required && !hasMultipleSelection,\n readOnly: readOnly,\n ref: ref,\n style: name ? visuallyHiddenInput : visuallyHidden,\n tabIndex: -1,\n \"aria-hidden\": true\n }), hiddenInputs]\n })\n });\n}","export function getPseudoElementBounds(element) {\n const elementRect = element.getBoundingClientRect();\n\n // Avoid \"Not implemented: window.getComputedStyle(elt, pseudoElt)\"\n if (process.env.NODE_ENV !== 'production') {\n return elementRect;\n }\n const beforeStyles = window.getComputedStyle(element, '::before');\n const afterStyles = window.getComputedStyle(element, '::after');\n const hasPseudoElements = beforeStyles.content !== 'none' || afterStyles.content !== 'none';\n if (!hasPseudoElements) {\n return elementRect;\n }\n\n // Get dimensions of pseudo-elements\n const beforeWidth = parseFloat(beforeStyles.width) || 0;\n const beforeHeight = parseFloat(beforeStyles.height) || 0;\n const afterWidth = parseFloat(afterStyles.width) || 0;\n const afterHeight = parseFloat(afterStyles.height) || 0;\n\n // Calculate max dimensions including pseudo-elements\n const totalWidth = Math.max(elementRect.width, beforeWidth, afterWidth);\n const totalHeight = Math.max(elementRect.height, beforeHeight, afterHeight);\n\n // Calculate the differences to extend the bounds\n const widthDiff = totalWidth - elementRect.width;\n const heightDiff = totalHeight - elementRect.height;\n return {\n left: elementRect.left - widthDiff / 2,\n right: elementRect.right + widthDiff / 2,\n top: elementRect.top - heightDiff / 2,\n bottom: elementRect.bottom + heightDiff / 2\n };\n}","'use client';\n\nimport * as React from 'react';\nimport { ownerDocument } from '@base-ui/utils/owner';\nimport { useTimeout } from '@base-ui/utils/useTimeout';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useMergedRefs } from '@base-ui/utils/useMergedRefs';\nimport { useValueAsRef } from '@base-ui/utils/useValueAsRef';\nimport { useStore } from '@base-ui/utils/store';\nimport { useSelectRootContext } from \"../root/SelectRootContext.js\";\nimport { useFieldRootContext } from \"../../field/root/FieldRootContext.js\";\nimport { useLabelableContext } from \"../../labelable-provider/LabelableContext.js\";\nimport { pressableTriggerOpenStateMapping } from \"../../utils/popupStateMapping.js\";\nimport { fieldValidityMapping } from \"../../field/utils/constants.js\";\nimport { useRenderElement } from \"../../utils/useRenderElement.js\";\nimport { selectors } from \"../store.js\";\nimport { getPseudoElementBounds } from \"../../utils/getPseudoElementBounds.js\";\nimport { contains, getFloatingFocusElement } from \"../../floating-ui-react/utils.js\";\nimport { mergeProps } from \"../../merge-props/index.js\";\nimport { useButton } from \"../../use-button/index.js\";\nimport { createChangeEventDetails } from \"../../utils/createBaseUIEventDetails.js\";\nimport { REASONS } from \"../../utils/reasons.js\";\nimport { useLabelableId } from \"../../labelable-provider/useLabelableId.js\";\nconst BOUNDARY_OFFSET = 2;\nconst SELECTED_DELAY = 400;\nconst UNSELECTED_DELAY = 200;\nconst stateAttributesMapping = {\n ...pressableTriggerOpenStateMapping,\n ...fieldValidityMapping,\n value: () => null\n};\n\n/**\n * A button that opens the select popup.\n * Renders a `<button>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nexport const SelectTrigger = /*#__PURE__*/React.forwardRef(function SelectTrigger(componentProps, forwardedRef) {\n const {\n render,\n className,\n id: idProp,\n disabled: disabledProp = false,\n nativeButton = true,\n ...elementProps\n } = componentProps;\n const {\n setTouched,\n setFocused,\n validationMode,\n state: fieldState,\n disabled: fieldDisabled\n } = useFieldRootContext();\n const {\n labelId\n } = useLabelableContext();\n const {\n store,\n setOpen,\n selectionRef,\n validation,\n readOnly,\n required,\n alignItemWithTriggerActiveRef,\n disabled: selectDisabled,\n keyboardActiveRef\n } = useSelectRootContext();\n const disabled = fieldDisabled || selectDisabled || disabledProp;\n const open = useStore(store, selectors.open);\n const value = useStore(store, selectors.value);\n const triggerProps = useStore(store, selectors.triggerProps);\n const positionerElement = useStore(store, selectors.positionerElement);\n const listElement = useStore(store, selectors.listElement);\n const rootId = useStore(store, selectors.id);\n const hasSelectedValue = useStore(store, selectors.hasSelectedValue);\n const shouldCheckNullItemLabel = !hasSelectedValue && open;\n const hasNullItemLabel = useStore(store, selectors.hasNullItemLabel, shouldCheckNullItemLabel);\n const id = idProp ?? rootId;\n useLabelableId({\n id\n });\n const positionerRef = useValueAsRef(positionerElement);\n const triggerRef = React.useRef(null);\n const {\n getButtonProps,\n buttonRef\n } = useButton({\n disabled,\n native: nativeButton\n });\n const setTriggerElement = useStableCallback(element => {\n store.set('triggerElement', element);\n });\n const mergedRef = useMergedRefs(forwardedRef, triggerRef, buttonRef, setTriggerElement);\n const timeoutFocus = useTimeout();\n const timeoutMouseDown = useTimeout();\n const selectedDelayTimeout = useTimeout();\n const unselectedDelayTimeout = useTimeout();\n React.useEffect(() => {\n if (open) {\n const hasSelectedItemInList = hasSelectedValue || hasNullItemLabel;\n const shouldDelayUnselectedMouseUpLonger = !hasSelectedItemInList;\n\n // When there is no selected item in the list (placeholder-only selects), a mousedown\n // on the trigger followed by a quick mouseup over the first option can accidentally select\n // within 200ms. Delay unselected mouseup to match the safer 400ms window.\n if (shouldDelayUnselectedMouseUpLonger) {\n selectedDelayTimeout.start(SELECTED_DELAY, () => {\n selectionRef.current.allowUnselectedMouseUp = true;\n selectionRef.current.allowSelectedMouseUp = true;\n });\n } else {\n // mousedown -> move to unselected item -> mouseup should not select within 200ms.\n unselectedDelayTimeout.start(UNSELECTED_DELAY, () => {\n selectionRef.current.allowUnselectedMouseUp = true;\n\n // mousedown -> mouseup on selected item should not select within 400ms.\n selectedDelayTimeout.start(UNSELECTED_DELAY, () => {\n selectionRef.current.allowSelectedMouseUp = true;\n });\n });\n }\n return () => {\n selectedDelayTimeout.clear();\n unselectedDelayTimeout.clear();\n };\n }\n selectionRef.current = {\n allowSelectedMouseUp: false,\n allowUnselectedMouseUp: false\n };\n timeoutMouseDown.clear();\n return undefined;\n }, [open, hasSelectedValue, hasNullItemLabel, selectionRef, timeoutMouseDown, selectedDelayTimeout, unselectedDelayTimeout]);\n const ariaControlsId = React.useMemo(() => {\n return listElement?.id ?? getFloatingFocusElement(positionerElement)?.id;\n }, [listElement, positionerElement]);\n const props = mergeProps(triggerProps, {\n id,\n role: 'combobox',\n 'aria-expanded': open ? 'true' : 'false',\n 'aria-haspopup': 'listbox',\n 'aria-controls': open ? ariaControlsId : undefined,\n 'aria-labelledby': labelId,\n 'aria-readonly': readOnly || undefined,\n 'aria-required': required || undefined,\n tabIndex: disabled ? -1 : 0,\n ref: mergedRef,\n onFocus(event) {\n setFocused(true);\n\n // The popup element shouldn't obscure the focused trigger.\n if (open && alignItemWithTriggerActiveRef.current) {\n setOpen(false, createChangeEventDetails(REASONS.none, event.nativeEvent));\n }\n\n // Saves a re-render on initial click: `forceMount === true` mounts\n // the items before `open === true`. We could sync those cycles better\n // without a timeout, but this is enough for now.\n //\n // XXX: might be causing `act()` warnings.\n timeoutFocus.start(0, () => {\n store.set('forceMount', true);\n });\n },\n onBlur(event) {\n // If focus is moving into the popup, don't count it as a blur.\n if (contains(positionerElement, event.relatedTarget)) {\n return;\n }\n setTouched(true);\n setFocused(false);\n if (validationMode === 'onBlur') {\n validation.commit(value);\n }\n },\n onPointerMove() {\n keyboardActiveRef.current = false;\n },\n onKeyDown() {\n keyboardActiveRef.current = true;\n },\n onMouseDown(event) {\n if (open) {\n return;\n }\n const doc = ownerDocument(event.currentTarget);\n function handleMouseUp(mouseEvent) {\n if (!triggerRef.current) {\n return;\n }\n const mouseUpTarget = mouseEvent.target;\n\n // Early return if clicked on trigger element or its children\n if (contains(triggerRef.current, mouseUpTarget) || contains(positionerRef.current, mouseUpTarget) || mouseUpTarget === triggerRef.current) {\n return;\n }\n const bounds = getPseudoElementBounds(triggerRef.current);\n if (mouseEvent.clientX >= bounds.left - BOUNDARY_OFFSET && mouseEvent.clientX <= bounds.right + BOUNDARY_OFFSET && mouseEvent.clientY >= bounds.top - BOUNDARY_OFFSET && mouseEvent.clientY <= bounds.bottom + BOUNDARY_OFFSET) {\n return;\n }\n setOpen(false, createChangeEventDetails(REASONS.cancelOpen, mouseEvent));\n }\n\n // Firefox can fire this upon mousedown\n timeoutMouseDown.start(0, () => {\n doc.addEventListener('mouseup', handleMouseUp, {\n once: true\n });\n });\n }\n }, validation.getValidationProps, elementProps, getButtonProps);\n\n // ensure nested useButton does not overwrite the combobox role:\n // <Toolbar.Button render={<Select.Trigger />} />\n props.role = 'combobox';\n const state = {\n ...fieldState,\n open,\n disabled,\n value,\n readOnly,\n placeholder: !hasSelectedValue\n };\n return useRenderElement('button', componentProps, {\n ref: [forwardedRef, triggerRef],\n state,\n stateAttributesMapping,\n props\n });\n});\nif (process.env.NODE_ENV !== \"production\") SelectTrigger.displayName = \"SelectTrigger\";","'use client';\n\nimport * as React from 'react';\nimport { useStore } from '@base-ui/utils/store';\nimport { useRenderElement } from \"../../utils/useRenderElement.js\";\nimport { useSelectRootContext } from \"../root/SelectRootContext.js\";\nimport { resolveMultipleLabels, resolveSelectedLabel } from \"../../utils/resolveValueLabel.js\";\nimport { selectors } from \"../store.js\";\nconst stateAttributesMapping = {\n value: () => null\n};\n\n/**\n * A text label of the currently selected item.\n * Renders a `<span>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nexport const SelectValue = /*#__PURE__*/React.forwardRef(function SelectValue(componentProps, forwardedRef) {\n const {\n className,\n render,\n children: childrenProp,\n placeholder,\n ...elementProps\n } = componentProps;\n const {\n store,\n valueRef\n } = useSelectRootContext();\n const value = useStore(store, selectors.value);\n const items = useStore(store, selectors.items);\n const itemToStringLabel = useStore(store, selectors.itemToStringLabel);\n const hasSelectedValue = useStore(store, selectors.hasSelectedValue);\n const shouldCheckNullItemLabel = !hasSelectedValue && placeholder != null && childrenProp == null;\n const hasNullLabel = useStore(store, selectors.hasNullItemLabel, shouldCheckNullItemLabel);\n const state = {\n value,\n placeholder: !hasSelectedValue\n };\n let children = null;\n if (typeof childrenProp === 'function') {\n children = childrenProp(value);\n } else if (childrenProp != null) {\n children = childrenProp;\n } else if (!hasSelectedValue && placeholder != null && !hasNullLabel) {\n children = placeholder;\n } else if (Array.isArray(value)) {\n children = resolveMultipleLabels(value, items, itemToStringLabel);\n } else {\n children = resolveSelectedLabel(value, items, itemToStringLabel);\n }\n const element = useRenderElement('span', componentProps, {\n state,\n ref: [forwardedRef, valueRef],\n props: [{\n children\n }, elementProps],\n stateAttributesMapping\n });\n return element;\n});\nif (process.env.NODE_ENV !== \"production\") SelectValue.displayName = \"SelectValue\";","'use client';\n\nimport * as React from 'react';\nimport { useStore } from '@base-ui/utils/store';\nimport { useRenderElement } from \"../../utils/useRenderElement.js\";\nimport { useSelectRootContext } from \"../root/SelectRootContext.js\";\nimport { triggerOpenStateMapping } from \"../../utils/popupStateMapping.js\";\nimport { selectors } from \"../store.js\";\n\n/**\n * An icon that indicates that the trigger button opens a select popup.\n * Renders a `<span>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nexport const SelectIcon = /*#__PURE__*/React.forwardRef(function SelectIcon(componentProps, forwardedRef) {\n const {\n className,\n render,\n ...elementProps\n } = componentProps;\n const {\n store\n } = useSelectRootContext();\n const open = useStore(store, selectors.open);\n const state = {\n open\n };\n const element = useRenderElement('span', componentProps, {\n state,\n ref: forwardedRef,\n props: [{\n 'aria-hidden': true,\n children: '▼'\n }, elementProps],\n stateAttributesMapping: triggerOpenStateMapping\n });\n return element;\n});\nif (process.env.NODE_ENV !== \"production\") SelectIcon.displayName = \"SelectIcon\";","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const SelectPortalContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") SelectPortalContext.displayName = \"SelectPortalContext\";\nexport function useSelectPortalContext() {\n const value = React.useContext(SelectPortalContext);\n if (value === undefined) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: <Select.Portal> is missing.' : _formatErrorMessage(58));\n }\n return value;\n}","'use client';\n\nimport * as React from 'react';\nimport { useStore } from '@base-ui/utils/store';\nimport { FloatingPortal } from \"../../floating-ui-react/index.js\";\nimport { SelectPortalContext } from \"./SelectPortalContext.js\";\nimport { useSelectRootContext } from \"../root/SelectRootContext.js\";\nimport { selectors } from \"../store.js\";\n\n/**\n * A portal element that moves the popup to a different part of the DOM.\n * By default, the portal element is appended to `<body>`.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const SelectPortal = /*#__PURE__*/React.forwardRef(function SelectPortal(portalProps, forwardedRef) {\n const {\n store\n } = useSelectRootContext();\n const mounted = useStore(store, selectors.mounted);\n const forceMount = useStore(store, selectors.forceMount);\n const shouldRender = mounted || forceMount;\n if (!shouldRender) {\n return null;\n }\n return /*#__PURE__*/_jsx(SelectPortalContext.Provider, {\n value: true,\n children: /*#__PURE__*/_jsx(FloatingPortal, {\n ref: forwardedRef,\n ...portalProps\n })\n });\n});\nif (process.env.NODE_ENV !== \"production\") SelectPortal.displayName = \"SelectPortal\";","'use client';\n\nimport * as React from 'react';\nexport const CompositeListContext = /*#__PURE__*/React.createContext({\n register: () => {},\n unregister: () => {},\n subscribeMapChange: () => {\n return () => {};\n },\n elementsRef: {\n current: []\n },\n nextIndexRef: {\n current: 0\n }\n});\nif (process.env.NODE_ENV !== \"production\") CompositeListContext.displayName = \"CompositeListContext\";\nexport function useCompositeListContext() {\n return React.useContext(CompositeListContext);\n}","/* eslint-disable no-bitwise */\n'use client';\n\nimport * as React from 'react';\nimport { useRefWithInit } from '@base-ui/utils/useRefWithInit';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { CompositeListContext } from \"./CompositeListContext.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Provides context for a list of items in a composite component.\n * @internal\n */\nexport function CompositeList(props) {\n const {\n children,\n elementsRef,\n labelsRef,\n onMapChange: onMapChangeProp\n } = props;\n const onMapChange = useStableCallback(onMapChangeProp);\n const nextIndexRef = React.useRef(0);\n const listeners = useRefWithInit(createListeners).current;\n\n // We use a stable `map` to avoid O(n^2) re-allocation costs for large lists.\n // `mapTick` is our re-render trigger mechanism. We also need to update the\n // elements and label refs, but there's a lot of async work going on and sometimes\n // the effect that handles `onMapChange` gets called after those refs have been\n // filled, and we don't want to lose those values by setting their lengths to `0`.\n // We also need to have them at the proper length because floating-ui uses that\n // information for list navigation.\n\n const map = useRefWithInit(createMap).current;\n // `mapTick` uses a counter rather than objects for low precision-loss risk and better memory efficiency\n const [mapTick, setMapTick] = React.useState(0);\n const lastTickRef = React.useRef(mapTick);\n const register = useStableCallback((node, metadata) => {\n map.set(node, metadata ?? null);\n lastTickRef.current += 1;\n setMapTick(lastTickRef.current);\n });\n const unregister = useStableCallback(node => {\n map.delete(node);\n lastTickRef.current += 1;\n setMapTick(lastTickRef.current);\n });\n const sortedMap = React.useMemo(() => {\n // `mapTick` is the `useMemo` trigger as `map` is stable.\n disableEslintWarning(mapTick);\n const newMap = new Map();\n // Filter out disconnected elements before sorting to avoid inconsistent\n // compareDocumentPosition results when elements are detached from the DOM.\n const sortedNodes = Array.from(map.keys()).filter(node => node.isConnected).sort(sortByDocumentPosition);\n sortedNodes.forEach((node, index) => {\n const metadata = map.get(node) ?? {};\n newMap.set(node, {\n ...metadata,\n index\n });\n });\n return newMap;\n }, [map, mapTick]);\n useIsoLayoutEffect(() => {\n if (typeof MutationObserver !== 'function' || sortedMap.size === 0) {\n return undefined;\n }\n const mutationObserver = new MutationObserver(entries => {\n const diff = new Set();\n const updateDiff = node => diff.has(node) ? diff.delete(node) : diff.add(node);\n entries.forEach(entry => {\n entry.removedNodes.forEach(updateDiff);\n entry.addedNodes.forEach(updateDiff);\n });\n if (diff.size === 0) {\n lastTickRef.current += 1;\n setMapTick(lastTickRef.current);\n }\n });\n sortedMap.forEach((_, node) => {\n if (node.parentElement) {\n mutationObserver.observe(node.parentElement, {\n childList: true\n });\n }\n });\n return () => {\n mutationObserver.disconnect();\n };\n }, [sortedMap]);\n useIsoLayoutEffect(() => {\n const shouldUpdateLengths = lastTickRef.current === mapTick;\n if (shouldUpdateLengths) {\n if (elementsRef.current.length !== sortedMap.size) {\n elementsRef.current.length = sortedMap.size;\n }\n if (labelsRef && labelsRef.current.length !== sortedMap.size) {\n labelsRef.current.length = sortedMap.size;\n }\n nextIndexRef.current = sortedMap.size;\n }\n onMapChange(sortedMap);\n }, [onMapChange, sortedMap, elementsRef, labelsRef, mapTick]);\n useIsoLayoutEffect(() => {\n return () => {\n elementsRef.current = [];\n };\n }, [elementsRef]);\n useIsoLayoutEffect(() => {\n return () => {\n if (labelsRef) {\n labelsRef.current = [];\n }\n };\n }, [labelsRef]);\n const subscribeMapChange = useStableCallback(fn => {\n listeners.add(fn);\n return () => {\n listeners.delete(fn);\n };\n });\n useIsoLayoutEffect(() => {\n listeners.forEach(l => l(sortedMap));\n }, [listeners, sortedMap]);\n const contextValue = React.useMemo(() => ({\n register,\n unregister,\n subscribeMapChange,\n elementsRef,\n labelsRef,\n nextIndexRef\n }), [register, unregister, subscribeMapChange, elementsRef, labelsRef, nextIndexRef]);\n return /*#__PURE__*/_jsx(CompositeListContext.Provider, {\n value: contextValue,\n children: children\n });\n}\nfunction createMap() {\n return new Map();\n}\nfunction createListeners() {\n return new Set();\n}\nfunction sortByDocumentPosition(a, b) {\n const position = a.compareDocumentPosition(b);\n if (position & Node.DOCUMENT_POSITION_FOLLOWING || position & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return -1;\n }\n if (position & Node.DOCUMENT_POSITION_PRECEDING || position & Node.DOCUMENT_POSITION_CONTAINS) {\n return 1;\n }\n return 0;\n}\nfunction disableEslintWarning(_) {}","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const SelectPositionerContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") SelectPositionerContext.displayName = \"SelectPositionerContext\";\nexport function useSelectPositionerContext() {\n const context = React.useContext(SelectPositionerContext);\n if (!context) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: SelectPositionerContext is missing. SelectPositioner parts must be placed within <Select.Positioner>.' : _formatErrorMessage(59));\n }\n return context;\n}","export function clearStyles(element, originalStyles) {\n if (element) {\n Object.assign(element.style, originalStyles);\n }\n}\nexport const LIST_FUNCTIONAL_STYLES = {\n position: 'relative',\n maxHeight: '100%',\n overflowX: 'hidden',\n overflowY: 'auto'\n};","'use client';\n\nimport * as React from 'react';\nimport { inertValue } from '@base-ui/utils/inertValue';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useScrollLock } from '@base-ui/utils/useScrollLock';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useStore } from '@base-ui/utils/store';\nimport { useSelectRootContext, useSelectFloatingContext } from \"../root/SelectRootContext.js\";\nimport { CompositeList } from \"../../composite/list/CompositeList.js\";\nimport { popupStateMapping } from \"../../utils/popupStateMapping.js\";\nimport { useAnchorPositioning } from \"../../utils/useAnchorPositioning.js\";\nimport { SelectPositionerContext } from \"./SelectPositionerContext.js\";\nimport { InternalBackdrop } from \"../../utils/InternalBackdrop.js\";\nimport { useRenderElement } from \"../../utils/useRenderElement.js\";\nimport { DROPDOWN_COLLISION_AVOIDANCE } from \"../../utils/constants.js\";\nimport { getDisabledMountTransitionStyles } from \"../../utils/getDisabledMountTransitionStyles.js\";\nimport { clearStyles } from \"../popup/utils.js\";\nimport { selectors } from \"../store.js\";\nimport { createChangeEventDetails } from \"../../utils/createBaseUIEventDetails.js\";\nimport { REASONS } from \"../../utils/reasons.js\";\nimport { findItemIndex, selectedValueIncludes } from \"../../utils/itemEquality.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst FIXED = {\n position: 'fixed'\n};\n\n/**\n * Positions the select popup.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nexport const SelectPositioner = /*#__PURE__*/React.forwardRef(function SelectPositioner(componentProps, forwardedRef) {\n const {\n anchor,\n positionMethod = 'absolute',\n className,\n render,\n side = 'bottom',\n align = 'center',\n sideOffset = 0,\n alignOffset = 0,\n collisionBoundary = 'clipping-ancestors',\n collisionPadding,\n arrowPadding = 5,\n sticky = false,\n disableAnchorTracking,\n alignItemWithTrigger = true,\n collisionAvoidance = DROPDOWN_COLLISION_AVOIDANCE,\n ...elementProps\n } = componentProps;\n const {\n store,\n listRef,\n labelsRef,\n alignItemWithTriggerActiveRef,\n selectedItemTextRef,\n valuesRef,\n initialValueRef,\n popupRef,\n setValue\n } = useSelectRootContext();\n const floatingRootContext = useSelectFloatingContext();\n const open = useStore(store, selectors.open);\n const mounted = useStore(store, selectors.mounted);\n const modal = useStore(store, selectors.modal);\n const value = useStore(store, selectors.value);\n const openMethod = useStore(store, selectors.openMethod);\n const positionerElement = useStore(store, selectors.positionerElement);\n const triggerElement = useStore(store, selectors.triggerElement);\n const isItemEqualToValue = useStore(store, selectors.isItemEqualToValue);\n const transitionStatus = useStore(store, selectors.transitionStatus);\n const scrollUpArrowRef = React.useRef(null);\n const scrollDownArrowRef = React.useRef(null);\n const [controlledAlignItemWithTrigger, setControlledAlignItemWithTrigger] = React.useState(alignItemWithTrigger);\n const alignItemWithTriggerActive = mounted && controlledAlignItemWithTrigger && openMethod !== 'touch';\n if (!mounted && controlledAlignItemWithTrigger !== alignItemWithTrigger) {\n setControlledAlignItemWithTrigger(alignItemWithTrigger);\n }\n useIsoLayoutEffect(() => {\n if (!mounted) {\n if (selectors.scrollUpArrowVisible(store.state)) {\n store.set('scrollUpArrowVisible', false);\n }\n if (selectors.scrollDownArrowVisible(store.state)) {\n store.set('scrollDownArrowVisible', false);\n }\n }\n }, [store, mounted]);\n React.useImperativeHandle(alignItemWithTriggerActiveRef, () => alignItemWithTriggerActive);\n useScrollLock((alignItemWithTriggerActive || modal) && open && openMethod !== 'touch', triggerElement);\n const positioning = useAnchorPositioning({\n anchor,\n floatingRootContext,\n positionMethod,\n mounted,\n side,\n sideOffset,\n align,\n alignOffset,\n arrowPadding,\n collisionBoundary,\n collisionPadding,\n sticky,\n disableAnchorTracking: disableAnchorTracking ?? alignItemWithTriggerActive,\n collisionAvoidance,\n keepMounted: true\n });\n const renderedSide = alignItemWithTriggerActive ? 'none' : positioning.side;\n const positionerStyles = alignItemWithTriggerActive ? FIXED : positioning.positionerStyles;\n const defaultProps = React.useMemo(() => {\n const hiddenStyles = {};\n if (!open) {\n hiddenStyles.pointerEvents = 'none';\n }\n return {\n role: 'presentation',\n hidden: !mounted,\n style: {\n ...positionerStyles,\n ...hiddenStyles\n }\n };\n }, [open, mounted, positionerStyles]);\n const state = {\n open,\n side: renderedSide,\n align: positioning.align,\n anchorHidden: positioning.anchorHidden\n };\n const setPositionerElement = useStableCallback(element => {\n store.set('positionerElement', element);\n });\n const element = useRenderElement('div', componentProps, {\n ref: [forwardedRef, setPositionerElement],\n state,\n stateAttributesMapping: popupStateMapping,\n props: [defaultProps, getDisabledMountTransitionStyles(transitionStatus), elementProps]\n });\n const prevMapSizeRef = React.useRef(0);\n const onMapChange = useStableCallback(map => {\n if (map.size === 0 && prevMapSizeRef.current === 0) {\n return;\n }\n if (valuesRef.current.length === 0) {\n return;\n }\n const prevSize = prevMapSizeRef.current;\n prevMapSizeRef.current = map.size;\n if (map.size === prevSize) {\n return;\n }\n const eventDetails = createChangeEventDetails(REASONS.none);\n if (prevSize !== 0 && !store.state.multiple && value !== null) {\n const selectedValueIndex = findItemIndex(valuesRef.current, value, isItemEqualToValue);\n if (selectedValueIndex === -1) {\n const initialSelectedValue = initialValueRef.current;\n const hasInitial = initialSelectedValue != null && findItemIndex(valuesRef.current, initialSelectedValue, isItemEqualToValue) !== -1;\n const nextValue = hasInitial ? initialSelectedValue : null;\n setValue(nextValue, eventDetails);\n if (nextValue === null) {\n store.set('selectedIndex', null);\n selectedItemTextRef.current = null;\n }\n }\n }\n if (prevSize !== 0 && store.state.multiple && Array.isArray(value)) {\n const hasVisibleItem = selectedItemValue => findItemIndex(valuesRef.current, selectedItemValue, isItemEqualToValue) !== -1;\n const nextValue = value.filter(selectedItemValue => hasVisibleItem(selectedItemValue));\n if (nextValue.length !== value.length || nextValue.some(selectedItemValue => !selectedValueIncludes(value, selectedItemValue, isItemEqualToValue))) {\n setValue(nextValue, eventDetails);\n if (nextValue.length === 0) {\n store.set('selectedIndex', null);\n selectedItemTextRef.current = null;\n }\n }\n }\n if (open && alignItemWithTriggerActive) {\n store.update({\n scrollUpArrowVisible: false,\n scrollDownArrowVisible: false\n });\n const stylesToClear = {\n height: ''\n };\n clearStyles(positionerElement, stylesToClear);\n clearStyles(popupRef.current, stylesToClear);\n }\n });\n const contextValue = React.useMemo(() => ({\n ...positioning,\n side: renderedSide,\n alignItemWithTriggerActive,\n setControlledAlignItemWithTrigger,\n scrollUpArrowRef,\n scrollDownArrowRef\n }), [positioning, renderedSide, alignItemWithTriggerActive, setControlledAlignItemWithTrigger]);\n return /*#__PURE__*/_jsx(CompositeList, {\n elementsRef: listRef,\n labelsRef: labelsRef,\n onMapChange: onMapChange,\n children: /*#__PURE__*/_jsxs(SelectPositionerContext.Provider, {\n value: contextValue,\n children: [mounted && modal && /*#__PURE__*/_jsx(InternalBackdrop, {\n inert: inertValue(!open),\n cutout: triggerElement\n }), element]\n })\n });\n});\nif (process.env.NODE_ENV !== \"production\") SelectPositioner.displayName = \"SelectPositioner\";","export function isMouseWithinBounds(event) {\n const targetRect = event.currentTarget.getBoundingClientRect();\n\n // Safari randomly fires `mouseleave` incorrectly when the item is\n // aligned to the trigger. This is a workaround to prevent the highlight\n // from being removed while the cursor is still within the bounds of the item.\n // https://github.com/mui/base-ui/issues/869\n const isWithinBounds = targetRect.top + 1 <= event.clientY && event.clientY <= targetRect.bottom - 1 && targetRect.left + 1 <= event.clientX && event.clientX <= targetRect.right - 1;\n return isWithinBounds;\n}","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const ToolbarRootContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") ToolbarRootContext.displayName = \"ToolbarRootContext\";\nexport function useToolbarRootContext(optional) {\n const context = React.useContext(ToolbarRootContext);\n if (context === undefined && !optional) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: ToolbarRootContext is missing. Toolbar parts must be placed within <Toolbar.Root>.' : _formatErrorMessage(69));\n }\n return context;\n}","'use client';\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { useTimeout } from '@base-ui/utils/useTimeout';\nimport { isWebKit } from '@base-ui/utils/detectBrowser';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { ownerDocument, ownerWindow } from '@base-ui/utils/owner';\nimport { isMouseWithinBounds } from '@base-ui/utils/isMouseWithinBounds';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useStore } from '@base-ui/utils/store';\nimport { useAnimationFrame } from '@base-ui/utils/useAnimationFrame';\nimport { FloatingFocusManager } from \"../../floating-ui-react/index.js\";\nimport { useSelectFloatingContext, useSelectRootContext } from \"../root/SelectRootContext.js\";\nimport { popupStateMapping } from \"../../utils/popupStateMapping.js\";\nimport { useSelectPositionerContext } from \"../positioner/SelectPositionerContext.js\";\nimport { styleDisableScrollbar } from \"../../utils/styles.js\";\nimport { transitionStatusMapping } from \"../../utils/stateAttributesMapping.js\";\nimport { useOpenChangeComplete } from \"../../utils/useOpenChangeComplete.js\";\nimport { useRenderElement } from \"../../utils/useRenderElement.js\";\nimport { selectors } from \"../store.js\";\nimport { clearStyles, LIST_FUNCTIONAL_STYLES } from \"./utils.js\";\nimport { createChangeEventDetails } from \"../../utils/createBaseUIEventDetails.js\";\nimport { REASONS } from \"../../utils/reasons.js\";\nimport { useToolbarRootContext } from \"../../toolbar/root/ToolbarRootContext.js\";\nimport { COMPOSITE_KEYS } from \"../../composite/composite.js\";\nimport { getDisabledMountTransitionStyles } from \"../../utils/getDisabledMountTransitionStyles.js\";\nimport { clamp } from \"../../utils/clamp.js\";\nimport { useCSPContext } from \"../../csp-provider/CSPContext.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst SCROLL_EPS_PX = 1;\nconst stateAttributesMapping = {\n ...popupStateMapping,\n ...transitionStatusMapping\n};\n\n/**\n * A container for the select list.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nexport const SelectPopup = /*#__PURE__*/React.forwardRef(function SelectPopup(componentProps, forwardedRef) {\n const {\n render,\n className,\n finalFocus,\n ...elementProps\n } = componentProps;\n const {\n store,\n popupRef,\n onOpenChangeComplete,\n setOpen,\n valueRef,\n selectedItemTextRef,\n keyboardActiveRef,\n multiple,\n handleScrollArrowVisibility,\n scrollHandlerRef,\n highlightItemOnHover\n } = useSelectRootContext();\n const {\n side,\n align,\n alignItemWithTriggerActive,\n setControlledAlignItemWithTrigger,\n scrollDownArrowRef,\n scrollUpArrowRef\n } = useSelectPositionerContext();\n const insideToolbar = useToolbarRootContext(true) != null;\n const floatingRootContext = useSelectFloatingContext();\n const {\n nonce,\n disableStyleElements\n } = useCSPContext();\n const highlightTimeout = useTimeout();\n const id = useStore(store, selectors.id);\n const open = useStore(store, selectors.open);\n const mounted = useStore(store, selectors.mounted);\n const popupProps = useStore(store, selectors.popupProps);\n const transitionStatus = useStore(store, selectors.transitionStatus);\n const triggerElement = useStore(store, selectors.triggerElement);\n const positionerElement = useStore(store, selectors.positionerElement);\n const listElement = useStore(store, selectors.listElement);\n const initialHeightRef = React.useRef(0);\n const reachedMaxHeightRef = React.useRef(false);\n const maxHeightRef = React.useRef(0);\n const initialPlacedRef = React.useRef(false);\n const originalPositionerStylesRef = React.useRef({});\n const scrollArrowFrame = useAnimationFrame();\n const handleScroll = useStableCallback(scroller => {\n if (!positionerElement || !popupRef.current || !initialPlacedRef.current) {\n return;\n }\n if (reachedMaxHeightRef.current || !alignItemWithTriggerActive) {\n handleScrollArrowVisibility();\n return;\n }\n const isTopPositioned = positionerElement.style.top === '0px';\n const isBottomPositioned = positionerElement.style.bottom === '0px';\n const currentHeight = positionerElement.getBoundingClientRect().height;\n const doc = ownerDocument(positionerElement);\n const positionerStyles = getComputedStyle(positionerElement);\n const marginTop = parseFloat(positionerStyles.marginTop);\n const marginBottom = parseFloat(positionerStyles.marginBottom);\n const maxPopupHeight = getMaxPopupHeight(getComputedStyle(popupRef.current));\n const maxAvailableHeight = Math.min(doc.documentElement.clientHeight - marginTop - marginBottom, maxPopupHeight);\n const scrollTop = scroller.scrollTop;\n const maxScrollTop = getMaxScrollTop(scroller);\n let nextPositionerHeight = 0;\n let nextScrollTop = null;\n let setReachedMax = false;\n let scrollToMax = false;\n const setHeight = height => {\n positionerElement.style.height = `${height}px`;\n };\n const handleSmallDiff = (diff, targetScrollTop) => {\n const heightDelta = clamp(diff, 0, maxAvailableHeight - currentHeight);\n if (heightDelta > 0) {\n // Consume the remaining scroll in height.\n setHeight(currentHeight + heightDelta);\n }\n scroller.scrollTop = targetScrollTop;\n if (maxAvailableHeight - (currentHeight + heightDelta) <= SCROLL_EPS_PX) {\n reachedMaxHeightRef.current = true;\n }\n handleScrollArrowVisibility();\n };\n if (isTopPositioned) {\n const diff = maxScrollTop - scrollTop;\n const idealHeight = currentHeight + diff;\n const nextHeight = Math.min(idealHeight, maxAvailableHeight);\n nextPositionerHeight = nextHeight;\n if (diff <= SCROLL_EPS_PX) {\n handleSmallDiff(diff, maxScrollTop);\n return;\n }\n if (maxAvailableHeight - nextHeight > SCROLL_EPS_PX) {\n scrollToMax = true;\n } else {\n setReachedMax = true;\n }\n } else if (isBottomPositioned) {\n const diff = scrollTop;\n const idealHeight = currentHeight + diff;\n const nextHeight = Math.min(idealHeight, maxAvailableHeight);\n const overshoot = idealHeight - maxAvailableHeight;\n nextPositionerHeight = nextHeight;\n if (diff <= SCROLL_EPS_PX) {\n handleSmallDiff(diff, 0);\n return;\n }\n if (maxAvailableHeight - nextHeight > SCROLL_EPS_PX) {\n nextScrollTop = 0;\n } else {\n setReachedMax = true;\n if (scrollTop < maxScrollTop) {\n nextScrollTop = scrollTop - (diff - overshoot);\n }\n }\n }\n nextPositionerHeight = Math.ceil(nextPositionerHeight);\n if (nextPositionerHeight !== 0) {\n setHeight(nextPositionerHeight);\n }\n if (scrollToMax || nextScrollTop != null) {\n // Recompute bounds after resizing (clientHeight likely changed).\n const nextMaxScrollTop = getMaxScrollTop(scroller);\n const target = scrollToMax ? nextMaxScrollTop : clamp(nextScrollTop, 0, nextMaxScrollTop);\n\n // Avoid adjustments that re-trigger scroll events forever.\n if (Math.abs(scroller.scrollTop - target) > SCROLL_EPS_PX) {\n scroller.scrollTop = target;\n }\n }\n if (setReachedMax || nextPositionerHeight >= maxAvailableHeight - SCROLL_EPS_PX) {\n reachedMaxHeightRef.current = true;\n }\n handleScrollArrowVisibility();\n });\n React.useImperativeHandle(scrollHandlerRef, () => handleScroll, [handleScroll]);\n useOpenChangeComplete({\n open,\n ref: popupRef,\n onComplete() {\n if (open) {\n onOpenChangeComplete?.(true);\n }\n }\n });\n const state = {\n open,\n transitionStatus,\n side,\n align\n };\n useIsoLayoutEffect(() => {\n if (!positionerElement || !popupRef.current || Object.keys(originalPositionerStylesRef.current).length) {\n return;\n }\n originalPositionerStylesRef.current = {\n top: positionerElement.style.top || '0',\n left: positionerElement.style.left || '0',\n right: positionerElement.style.right,\n height: positionerElement.style.height,\n bottom: positionerElement.style.bottom,\n minHeight: positionerElement.style.minHeight,\n maxHeight: positionerElement.style.maxHeight,\n marginTop: positionerElement.style.marginTop,\n marginBottom: positionerElement.style.marginBottom\n };\n }, [popupRef, positionerElement]);\n useIsoLayoutEffect(() => {\n if (open || alignItemWithTriggerActive) {\n return;\n }\n initialPlacedRef.current = false;\n reachedMaxHeightRef.current = false;\n initialHeightRef.current = 0;\n maxHeightRef.current = 0;\n clearStyles(positionerElement, originalPositionerStylesRef.current);\n }, [open, alignItemWithTriggerActive, positionerElement, popupRef]);\n useIsoLayoutEffect(() => {\n const popupElement = popupRef.current;\n if (!open || !triggerElement || !positionerElement || !popupElement || store.state.transitionStatus === 'ending') {\n return;\n }\n if (!alignItemWithTriggerActive) {\n initialPlacedRef.current = true;\n scrollArrowFrame.request(handleScrollArrowVisibility);\n popupElement.style.removeProperty('--transform-origin');\n return;\n }\n\n // Wait for `selectedItemTextRef.current` to be set.\n queueMicrotask(() => {\n // Ensure we remove any transforms that can affect the location of the popup\n // and therefore the calculations.\n const restoreTransformStyles = unsetTransformStyles(popupElement);\n popupElement.style.removeProperty('--transform-origin');\n try {\n const positionerStyles = getComputedStyle(positionerElement);\n const popupStyles = getComputedStyle(popupElement);\n const doc = ownerDocument(triggerElement);\n const win = ownerWindow(positionerElement);\n const triggerRect = triggerElement.getBoundingClientRect();\n const positionerRect = positionerElement.getBoundingClientRect();\n const triggerX = triggerRect.left;\n const triggerHeight = triggerRect.height;\n const scroller = listElement || popupElement;\n const scrollHeight = scroller.scrollHeight;\n const borderBottom = parseFloat(popupStyles.borderBottomWidth);\n const marginTop = parseFloat(positionerStyles.marginTop) || 10;\n const marginBottom = parseFloat(positionerStyles.marginBottom) || 10;\n const minHeight = parseFloat(positionerStyles.minHeight) || 100;\n const maxPopupHeight = getMaxPopupHeight(popupStyles);\n const paddingLeft = 5;\n const paddingRight = 5;\n const triggerCollisionThreshold = 20;\n const viewportHeight = doc.documentElement.clientHeight - marginTop - marginBottom;\n const viewportWidth = doc.documentElement.clientWidth;\n const availableSpaceBeneathTrigger = viewportHeight - triggerRect.bottom + triggerHeight;\n const textElement = selectedItemTextRef.current;\n const valueElement = valueRef.current;\n let textRect;\n let offsetX = 0;\n let offsetY = 0;\n if (textElement && valueElement) {\n const valueRect = valueElement.getBoundingClientRect();\n textRect = textElement.getBoundingClientRect();\n const valueLeftFromTriggerLeft = valueRect.left - triggerX;\n const textLeftFromPositionerLeft = textRect.left - positionerRect.left;\n const valueCenterFromPositionerTop = valueRect.top - triggerRect.top + valueRect.height / 2;\n const textCenterFromTriggerTop = textRect.top - positionerRect.top + textRect.height / 2;\n offsetX = valueLeftFromTriggerLeft - textLeftFromPositionerLeft;\n offsetY = textCenterFromTriggerTop - valueCenterFromPositionerTop;\n }\n const idealHeight = availableSpaceBeneathTrigger + offsetY + marginBottom + borderBottom;\n let height = Math.min(viewportHeight, idealHeight);\n const maxHeight = viewportHeight - marginTop - marginBottom;\n const scrollTop = idealHeight - height;\n const left = Math.max(paddingLeft, triggerX + offsetX);\n const maxRight = viewportWidth - paddingRight;\n const rightOverflow = Math.max(0, left + positionerRect.width - maxRight);\n positionerElement.style.left = `${left - rightOverflow}px`;\n positionerElement.style.height = `${height}px`;\n positionerElement.style.maxHeight = 'auto';\n positionerElement.style.marginTop = `${marginTop}px`;\n positionerElement.style.marginBottom = `${marginBottom}px`;\n popupElement.style.height = '100%';\n const maxScrollTop = scroller.scrollHeight - scroller.clientHeight;\n const isTopPositioned = scrollTop >= maxScrollTop;\n if (isTopPositioned) {\n height = Math.min(viewportHeight, positionerRect.height) - (scrollTop - maxScrollTop);\n }\n\n // When the trigger is too close to the top or bottom of the viewport, or the minHeight is\n // reached, we fallback to aligning the popup to the trigger as the UX is poor otherwise.\n const fallbackToAlignPopupToTrigger = triggerRect.top < triggerCollisionThreshold || triggerRect.bottom > viewportHeight - triggerCollisionThreshold || height < Math.min(scrollHeight, minHeight);\n\n // Safari doesn't position the popup correctly when pinch-zoomed.\n const isPinchZoomed = (win.visualViewport?.scale ?? 1) !== 1 && isWebKit;\n if (fallbackToAlignPopupToTrigger || isPinchZoomed) {\n initialPlacedRef.current = true;\n clearStyles(positionerElement, originalPositionerStylesRef.current);\n ReactDOM.flushSync(() => setControlledAlignItemWithTrigger(false));\n return;\n }\n if (isTopPositioned) {\n const topOffset = Math.max(0, viewportHeight - idealHeight);\n positionerElement.style.top = positionerRect.height >= maxHeight ? '0' : `${topOffset}px`;\n positionerElement.style.height = `${height}px`;\n scroller.scrollTop = scroller.scrollHeight - scroller.clientHeight;\n initialHeightRef.current = Math.max(minHeight, height);\n } else {\n positionerElement.style.bottom = '0';\n initialHeightRef.current = Math.max(minHeight, height);\n scroller.scrollTop = scrollTop;\n }\n if (textRect) {\n const popupTop = positionerRect.top;\n const popupHeight = positionerRect.height;\n const textCenterY = textRect.top + textRect.height / 2;\n const transformOriginY = popupHeight > 0 ? (textCenterY - popupTop) / popupHeight * 100 : 50;\n const clampedY = clamp(transformOriginY, 0, 100);\n popupElement.style.setProperty('--transform-origin', `50% ${clampedY}%`);\n }\n if (initialHeightRef.current === viewportHeight || height >= maxPopupHeight) {\n reachedMaxHeightRef.current = true;\n }\n handleScrollArrowVisibility();\n\n // Avoid the `onScroll` event logic from triggering before the popup is placed.\n setTimeout(() => {\n initialPlacedRef.current = true;\n });\n } finally {\n restoreTransformStyles();\n }\n });\n }, [store, open, positionerElement, triggerElement, valueRef, selectedItemTextRef, popupRef, handleScrollArrowVisibility, alignItemWithTriggerActive, setControlledAlignItemWithTrigger, scrollArrowFrame, scrollDownArrowRef, scrollUpArrowRef, listElement]);\n React.useEffect(() => {\n if (!alignItemWithTriggerActive || !positionerElement || !open) {\n return undefined;\n }\n const win = ownerWindow(positionerElement);\n function handleResize(event) {\n setOpen(false, createChangeEventDetails(REASONS.windowResize, event));\n }\n win.addEventListener('resize', handleResize);\n return () => {\n win.removeEventListener('resize', handleResize);\n };\n }, [setOpen, alignItemWithTriggerActive, positionerElement, open]);\n const defaultProps = {\n ...(listElement ? {\n role: 'presentation',\n 'aria-orientation': undefined\n } : {\n role: 'listbox',\n 'aria-multiselectable': multiple || undefined,\n id: `${id}-list`\n }),\n onKeyDown(event) {\n keyboardActiveRef.current = true;\n if (insideToolbar && COMPOSITE_KEYS.has(event.key)) {\n event.stopPropagation();\n }\n },\n onMouseMove() {\n keyboardActiveRef.current = false;\n },\n onPointerLeave(event) {\n if (!highlightItemOnHover || isMouseWithinBounds(event) || event.pointerType === 'touch') {\n return;\n }\n const popup = event.currentTarget;\n highlightTimeout.start(0, () => {\n store.set('activeIndex', null);\n popup.focus({\n preventScroll: true\n });\n });\n },\n onScroll(event) {\n if (listElement) {\n return;\n }\n handleScroll(event.currentTarget);\n },\n ...(alignItemWithTriggerActive && {\n style: listElement ? {\n height: '100%'\n } : LIST_FUNCTIONAL_STYLES\n })\n };\n const element = useRenderElement('div', componentProps, {\n ref: [forwardedRef, popupRef],\n state,\n stateAttributesMapping,\n props: [popupProps, defaultProps, getDisabledMountTransitionStyles(transitionStatus), {\n className: !listElement && alignItemWithTriggerActive ? styleDisableScrollbar.className : undefined\n }, elementProps]\n });\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [!disableStyleElements && styleDisableScrollbar.getElement(nonce), /*#__PURE__*/_jsx(FloatingFocusManager, {\n context: floatingRootContext,\n modal: false,\n disabled: !mounted,\n returnFocus: finalFocus,\n restoreFocus: true,\n children: element\n })]\n });\n});\nif (process.env.NODE_ENV !== \"production\") SelectPopup.displayName = \"SelectPopup\";\nfunction getMaxPopupHeight(popupStyles) {\n const maxHeightStyle = popupStyles.maxHeight || '';\n return maxHeightStyle.endsWith('px') ? parseFloat(maxHeightStyle) || Infinity : Infinity;\n}\nfunction getMaxScrollTop(scroller) {\n return Math.max(0, scroller.scrollHeight - scroller.clientHeight);\n}\nconst TRANSFORM_STYLE_RESETS = [['transform', 'none'], ['scale', '1'], ['translate', '0 0']];\nfunction unsetTransformStyles(popupElement) {\n const {\n style\n } = popupElement;\n const originalStyles = {};\n for (const [property, value] of TRANSFORM_STYLE_RESETS) {\n originalStyles[property] = style.getPropertyValue(property);\n style.setProperty(property, value, 'important');\n }\n return () => {\n for (const [property] of TRANSFORM_STYLE_RESETS) {\n const originalValue = originalStyles[property];\n if (originalValue) {\n style.setProperty(property, originalValue);\n } else {\n style.removeProperty(property);\n }\n }\n };\n}","'use client';\n\nimport * as React from 'react';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useStore } from '@base-ui/utils/store';\nimport { useSelectRootContext } from \"../root/SelectRootContext.js\";\nimport { useSelectPositionerContext } from \"../positioner/SelectPositionerContext.js\";\nimport { useRenderElement } from \"../../utils/useRenderElement.js\";\nimport { styleDisableScrollbar } from \"../../utils/styles.js\";\nimport { LIST_FUNCTIONAL_STYLES } from \"../popup/utils.js\";\nimport { selectors } from \"../store.js\";\n\n/**\n * A container for the select items.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nexport const SelectList = /*#__PURE__*/React.forwardRef(function SelectList(componentProps, forwardedRef) {\n const {\n className,\n render,\n ...elementProps\n } = componentProps;\n const {\n store,\n scrollHandlerRef\n } = useSelectRootContext();\n const {\n alignItemWithTriggerActive\n } = useSelectPositionerContext();\n const hasScrollArrows = useStore(store, selectors.hasScrollArrows);\n const openMethod = useStore(store, selectors.openMethod);\n const multiple = useStore(store, selectors.multiple);\n const id = useStore(store, selectors.id);\n const defaultProps = {\n id: `${id}-list`,\n role: 'listbox',\n 'aria-multiselectable': multiple || undefined,\n onScroll(event) {\n scrollHandlerRef.current?.(event.currentTarget);\n },\n ...(alignItemWithTriggerActive && {\n style: LIST_FUNCTIONAL_STYLES\n }),\n className: hasScrollArrows && openMethod !== 'touch' ? styleDisableScrollbar.className : undefined\n };\n const setListElement = useStableCallback(element => {\n store.set('listElement', element);\n });\n return useRenderElement('div', componentProps, {\n ref: [forwardedRef, setListElement],\n props: [defaultProps, elementProps]\n });\n});\nif (process.env.NODE_ENV !== \"production\") SelectList.displayName = \"SelectList\";","'use client';\n\nimport * as React from 'react';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useCompositeListContext } from \"./CompositeListContext.js\";\nexport let IndexGuessBehavior = /*#__PURE__*/function (IndexGuessBehavior) {\n IndexGuessBehavior[IndexGuessBehavior[\"None\"] = 0] = \"None\";\n IndexGuessBehavior[IndexGuessBehavior[\"GuessFromOrder\"] = 1] = \"GuessFromOrder\";\n return IndexGuessBehavior;\n}({});\n\n/**\n * Used to register a list item and its index (DOM position) in the `CompositeList`.\n */\nexport function useCompositeListItem(params = {}) {\n const {\n label,\n metadata,\n textRef,\n indexGuessBehavior,\n index: externalIndex\n } = params;\n const {\n register,\n unregister,\n subscribeMapChange,\n elementsRef,\n labelsRef,\n nextIndexRef\n } = useCompositeListContext();\n const indexRef = React.useRef(-1);\n const [index, setIndex] = React.useState(externalIndex ?? (indexGuessBehavior === IndexGuessBehavior.GuessFromOrder ? () => {\n if (indexRef.current === -1) {\n const newIndex = nextIndexRef.current;\n nextIndexRef.current += 1;\n indexRef.current = newIndex;\n }\n return indexRef.current;\n } : -1));\n const componentRef = React.useRef(null);\n const ref = React.useCallback(node => {\n componentRef.current = node;\n if (index !== -1 && node !== null) {\n elementsRef.current[index] = node;\n if (labelsRef) {\n const isLabelDefined = label !== undefined;\n labelsRef.current[index] = isLabelDefined ? label : textRef?.current?.textContent ?? node.textContent;\n }\n }\n }, [index, elementsRef, labelsRef, label, textRef]);\n useIsoLayoutEffect(() => {\n if (externalIndex != null) {\n return undefined;\n }\n const node = componentRef.current;\n if (node) {\n register(node, metadata);\n return () => {\n unregister(node);\n };\n }\n return undefined;\n }, [externalIndex, register, unregister, metadata]);\n useIsoLayoutEffect(() => {\n if (externalIndex != null) {\n return undefined;\n }\n return subscribeMapChange(map => {\n const i = componentRef.current ? map.get(componentRef.current)?.index : null;\n if (i != null) {\n setIndex(i);\n }\n });\n }, [externalIndex, subscribeMapChange, setIndex]);\n return React.useMemo(() => ({\n ref,\n index\n }), [index, ref]);\n}","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const SelectItemContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") SelectItemContext.displayName = \"SelectItemContext\";\nexport function useSelectItemContext() {\n const context = React.useContext(SelectItemContext);\n if (!context) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: SelectItemContext is missing. SelectItem parts must be placed within <Select.Item>.' : _formatErrorMessage(57));\n }\n return context;\n}","'use client';\n\nimport * as React from 'react';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useValueAsRef } from '@base-ui/utils/useValueAsRef';\nimport { isMouseWithinBounds } from '@base-ui/utils/isMouseWithinBounds';\nimport { useTimeout } from '@base-ui/utils/useTimeout';\nimport { useStore } from '@base-ui/utils/store';\nimport { useSelectRootContext } from \"../root/SelectRootContext.js\";\nimport { useCompositeListItem, IndexGuessBehavior } from \"../../composite/list/useCompositeListItem.js\";\nimport { useRenderElement } from \"../../utils/useRenderElement.js\";\nimport { SelectItemContext } from \"./SelectItemContext.js\";\nimport { selectors } from \"../store.js\";\nimport { useButton } from \"../../use-button/index.js\";\nimport { createChangeEventDetails } from \"../../utils/createBaseUIEventDetails.js\";\nimport { REASONS } from \"../../utils/reasons.js\";\nimport { compareItemEquality, removeItem } from \"../../utils/itemEquality.js\";\n\n/**\n * An individual option in the select popup.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const SelectItem = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function SelectItem(componentProps, forwardedRef) {\n const {\n render,\n className,\n value: itemValue = null,\n label,\n disabled = false,\n nativeButton = false,\n ...elementProps\n } = componentProps;\n const textRef = React.useRef(null);\n const listItem = useCompositeListItem({\n label,\n textRef,\n indexGuessBehavior: IndexGuessBehavior.GuessFromOrder\n });\n const {\n store,\n getItemProps,\n setOpen,\n setValue,\n selectionRef,\n typingRef,\n valuesRef,\n keyboardActiveRef,\n multiple,\n highlightItemOnHover\n } = useSelectRootContext();\n const highlightTimeout = useTimeout();\n const highlighted = useStore(store, selectors.isActive, listItem.index);\n const selected = useStore(store, selectors.isSelected, listItem.index, itemValue);\n const selectedByFocus = useStore(store, selectors.isSelectedByFocus, listItem.index);\n const isItemEqualToValue = useStore(store, selectors.isItemEqualToValue);\n const index = listItem.index;\n const hasRegistered = index !== -1;\n const itemRef = React.useRef(null);\n const indexRef = useValueAsRef(index);\n useIsoLayoutEffect(() => {\n if (!hasRegistered) {\n return undefined;\n }\n const values = valuesRef.current;\n values[index] = itemValue;\n return () => {\n delete values[index];\n };\n }, [hasRegistered, index, itemValue, valuesRef]);\n useIsoLayoutEffect(() => {\n if (!hasRegistered) {\n return undefined;\n }\n const selectedValue = store.state.value;\n let selectedCandidate = selectedValue;\n if (multiple && Array.isArray(selectedValue) && selectedValue.length > 0) {\n selectedCandidate = selectedValue[selectedValue.length - 1];\n }\n if (selectedCandidate !== undefined && compareItemEquality(itemValue, selectedCandidate, isItemEqualToValue)) {\n store.set('selectedIndex', index);\n }\n return undefined;\n }, [hasRegistered, index, multiple, isItemEqualToValue, store, itemValue]);\n const state = {\n disabled,\n selected,\n highlighted\n };\n const rootProps = getItemProps({\n active: highlighted,\n selected\n });\n // With our custom `focusItemOnHover` implementation, this interferes with the logic and can\n // cause the index state to be stuck when leaving the select popup.\n rootProps.onFocus = undefined;\n rootProps.id = undefined;\n const lastKeyRef = React.useRef(null);\n const pointerTypeRef = React.useRef('mouse');\n const didPointerDownRef = React.useRef(false);\n const {\n getButtonProps,\n buttonRef\n } = useButton({\n disabled,\n focusableWhenDisabled: true,\n native: nativeButton\n });\n function commitSelection(event) {\n const selectedValue = store.state.value;\n if (multiple) {\n const currentValue = Array.isArray(selectedValue) ? selectedValue : [];\n const nextValue = selected ? removeItem(currentValue, itemValue, isItemEqualToValue) : [...currentValue, itemValue];\n setValue(nextValue, createChangeEventDetails(REASONS.itemPress, event));\n } else {\n setValue(itemValue, createChangeEventDetails(REASONS.itemPress, event));\n setOpen(false, createChangeEventDetails(REASONS.itemPress, event));\n }\n }\n const defaultProps = {\n role: 'option',\n 'aria-selected': selected,\n tabIndex: highlighted ? 0 : -1,\n onFocus() {\n store.set('activeIndex', index);\n },\n onMouseEnter() {\n if (!keyboardActiveRef.current && store.state.selectedIndex === null && highlightItemOnHover) {\n store.set('activeIndex', index);\n }\n },\n onMouseMove() {\n if (highlightItemOnHover) {\n store.set('activeIndex', index);\n }\n },\n onMouseLeave(event) {\n if (!highlightItemOnHover || keyboardActiveRef.current || isMouseWithinBounds(event)) {\n return;\n }\n highlightTimeout.start(0, () => {\n if (store.state.activeIndex === index) {\n store.set('activeIndex', null);\n }\n });\n },\n onTouchStart() {\n selectionRef.current = {\n allowSelectedMouseUp: false,\n allowUnselectedMouseUp: false\n };\n },\n onKeyDown(event) {\n lastKeyRef.current = event.key;\n store.set('activeIndex', index);\n },\n onClick(event) {\n didPointerDownRef.current = false;\n\n // Prevent double commit on {Enter}\n if (event.type === 'keydown' && lastKeyRef.current === null) {\n return;\n }\n if (disabled || lastKeyRef.current === ' ' && typingRef.current || pointerTypeRef.current !== 'touch' && !highlighted) {\n return;\n }\n lastKeyRef.current = null;\n commitSelection(event.nativeEvent);\n },\n onPointerEnter(event) {\n pointerTypeRef.current = event.pointerType;\n },\n onPointerDown(event) {\n pointerTypeRef.current = event.pointerType;\n didPointerDownRef.current = true;\n },\n onMouseUp(event) {\n if (disabled) {\n return;\n }\n if (didPointerDownRef.current) {\n didPointerDownRef.current = false;\n return;\n }\n const disallowSelectedMouseUp = !selectionRef.current.allowSelectedMouseUp && selected;\n const disallowUnselectedMouseUp = !selectionRef.current.allowUnselectedMouseUp && !selected;\n if (disallowSelectedMouseUp || disallowUnselectedMouseUp || pointerTypeRef.current !== 'touch' && !highlighted) {\n return;\n }\n commitSelection(event.nativeEvent);\n }\n };\n const element = useRenderElement('div', componentProps, {\n ref: [buttonRef, forwardedRef, listItem.ref, itemRef],\n state,\n props: [rootProps, defaultProps, elementProps, getButtonProps]\n });\n const contextValue = React.useMemo(() => ({\n selected,\n indexRef,\n textRef,\n selectedByFocus,\n hasRegistered\n }), [selected, indexRef, textRef, selectedByFocus, hasRegistered]);\n return /*#__PURE__*/_jsx(SelectItemContext.Provider, {\n value: contextValue,\n children: element\n });\n}));\nif (process.env.NODE_ENV !== \"production\") SelectItem.displayName = \"SelectItem\";","'use client';\n\nimport * as React from 'react';\nimport { useSelectItemContext } from \"../item/SelectItemContext.js\";\nimport { useTransitionStatus } from \"../../utils/useTransitionStatus.js\";\nimport { useOpenChangeComplete } from \"../../utils/useOpenChangeComplete.js\";\nimport { useRenderElement } from \"../../utils/useRenderElement.js\";\nimport { transitionStatusMapping } from \"../../utils/stateAttributesMapping.js\";\n\n/**\n * Indicates whether the select item is selected.\n * Renders a `<span>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const SelectItemIndicator = /*#__PURE__*/React.forwardRef(function SelectItemIndicator(componentProps, forwardedRef) {\n const keepMounted = componentProps.keepMounted ?? false;\n const {\n selected\n } = useSelectItemContext();\n const shouldRender = keepMounted || selected;\n if (!shouldRender) {\n return null;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return /*#__PURE__*/_jsx(Inner, {\n ...componentProps,\n ref: forwardedRef\n });\n});\n\n/** The core implementation of the indicator is split here to avoid paying the hooks\n * costs unless the element needs to be mounted. */\nif (process.env.NODE_ENV !== \"production\") SelectItemIndicator.displayName = \"SelectItemIndicator\";\nconst Inner = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef((componentProps, forwardedRef) => {\n const {\n render,\n className,\n keepMounted,\n ...elementProps\n } = componentProps;\n const {\n selected\n } = useSelectItemContext();\n const indicatorRef = React.useRef(null);\n const {\n transitionStatus,\n setMounted\n } = useTransitionStatus(selected);\n const state = {\n selected,\n transitionStatus\n };\n const element = useRenderElement('span', componentProps, {\n ref: [forwardedRef, indicatorRef],\n state,\n props: [{\n 'aria-hidden': true,\n children: '✔️'\n }, elementProps],\n stateAttributesMapping: transitionStatusMapping\n });\n useOpenChangeComplete({\n open: selected,\n ref: indicatorRef,\n onComplete() {\n if (!selected) {\n setMounted(false);\n }\n }\n });\n return element;\n}));\nif (process.env.NODE_ENV !== \"production\") Inner.displayName = \"Inner\";","'use client';\n\nimport * as React from 'react';\nimport { useSelectRootContext } from \"../root/SelectRootContext.js\";\nimport { useSelectItemContext } from \"../item/SelectItemContext.js\";\nimport { useRenderElement } from \"../../utils/useRenderElement.js\";\n\n/**\n * A text label of the select item.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nexport const SelectItemText = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function SelectItemText(componentProps, forwardedRef) {\n const {\n indexRef,\n textRef,\n selectedByFocus,\n hasRegistered\n } = useSelectItemContext();\n const {\n selectedItemTextRef\n } = useSelectRootContext();\n const {\n className,\n render,\n ...elementProps\n } = componentProps;\n const localRef = React.useCallback(node => {\n if (!node || !hasRegistered) {\n return;\n }\n const hasNoSelectedItemText = selectedItemTextRef.current === null || !selectedItemTextRef.current.isConnected;\n if (selectedByFocus || hasNoSelectedItemText && indexRef.current === 0) {\n selectedItemTextRef.current = node;\n }\n }, [selectedItemTextRef, indexRef, selectedByFocus, hasRegistered]);\n const element = useRenderElement('div', componentProps, {\n ref: [localRef, forwardedRef, textRef],\n props: elementProps\n });\n return element;\n}));\nif (process.env.NODE_ENV !== \"production\") SelectItemText.displayName = \"SelectItemText\";","'use client';\n\nimport * as React from 'react';\nimport { useTimeout } from '@base-ui/utils/useTimeout';\nimport { useStore } from '@base-ui/utils/store';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useSelectRootContext } from \"../root/SelectRootContext.js\";\nimport { useSelectPositionerContext } from \"../positioner/SelectPositionerContext.js\";\nimport { useTransitionStatus } from \"../../utils/useTransitionStatus.js\";\nimport { useOpenChangeComplete } from \"../../utils/useOpenChangeComplete.js\";\nimport { useRenderElement } from \"../../utils/useRenderElement.js\";\nimport { selectors } from \"../store.js\";\n\n/**\n * @internal\n */\nexport const SelectScrollArrow = /*#__PURE__*/React.forwardRef(function SelectScrollArrow(componentProps, forwardedRef) {\n const {\n render,\n className,\n direction,\n keepMounted = false,\n ...elementProps\n } = componentProps;\n const {\n store,\n popupRef,\n listRef,\n handleScrollArrowVisibility,\n scrollArrowsMountedCountRef\n } = useSelectRootContext();\n const {\n side,\n scrollDownArrowRef,\n scrollUpArrowRef\n } = useSelectPositionerContext();\n const visibleSelector = direction === 'up' ? selectors.scrollUpArrowVisible : selectors.scrollDownArrowVisible;\n const stateVisible = useStore(store, visibleSelector);\n const openMethod = useStore(store, selectors.openMethod);\n\n // Scroll arrows are disabled for touch modality as they are a hover-only element.\n const visible = stateVisible && openMethod !== 'touch';\n const timeout = useTimeout();\n const scrollArrowRef = direction === 'up' ? scrollUpArrowRef : scrollDownArrowRef;\n const {\n transitionStatus,\n setMounted\n } = useTransitionStatus(visible);\n useIsoLayoutEffect(() => {\n scrollArrowsMountedCountRef.current += 1;\n if (!store.state.hasScrollArrows) {\n store.set('hasScrollArrows', true);\n }\n return () => {\n scrollArrowsMountedCountRef.current = Math.max(0, scrollArrowsMountedCountRef.current - 1);\n if (scrollArrowsMountedCountRef.current === 0 && store.state.hasScrollArrows) {\n store.set('hasScrollArrows', false);\n }\n };\n }, [store, scrollArrowsMountedCountRef]);\n useOpenChangeComplete({\n open: visible,\n ref: scrollArrowRef,\n onComplete() {\n if (!visible) {\n setMounted(false);\n }\n }\n });\n const state = {\n direction,\n visible,\n side,\n transitionStatus\n };\n const defaultProps = {\n 'aria-hidden': true,\n children: direction === 'up' ? '▲' : '▼',\n style: {\n position: 'absolute'\n },\n onMouseMove(event) {\n if (event.movementX === 0 && event.movementY === 0 || timeout.isStarted()) {\n return;\n }\n store.set('activeIndex', null);\n function scrollNextItem() {\n const scroller = store.state.listElement ?? popupRef.current;\n if (!scroller) {\n return;\n }\n store.set('activeIndex', null);\n handleScrollArrowVisibility();\n const isScrolledToTop = scroller.scrollTop === 0;\n const isScrolledToBottom = Math.round(scroller.scrollTop + scroller.clientHeight) >= scroller.scrollHeight;\n const list = listRef.current;\n\n // Fallback when there are no items registered yet.\n if (list.length === 0) {\n if (direction === 'up') {\n store.set('scrollUpArrowVisible', !isScrolledToTop);\n } else {\n store.set('scrollDownArrowVisible', !isScrolledToBottom);\n }\n }\n if (direction === 'up' && isScrolledToTop || direction === 'down' && isScrolledToBottom) {\n timeout.clear();\n return;\n }\n if ((store.state.listElement || popupRef.current) && listRef.current && listRef.current.length > 0) {\n const items = listRef.current;\n const scrollArrowHeight = scrollArrowRef.current?.offsetHeight || 0;\n if (direction === 'up') {\n let firstVisibleIndex = 0;\n const scrollTop = scroller.scrollTop + scrollArrowHeight;\n for (let i = 0; i < items.length; i += 1) {\n const item = items[i];\n if (item) {\n const itemTop = item.offsetTop;\n if (itemTop >= scrollTop) {\n firstVisibleIndex = i;\n break;\n }\n }\n }\n const targetIndex = Math.max(0, firstVisibleIndex - 1);\n if (targetIndex < firstVisibleIndex) {\n const targetItem = items[targetIndex];\n if (targetItem) {\n scroller.scrollTop = Math.max(0, targetItem.offsetTop - scrollArrowHeight);\n }\n } else {\n // Already at the first item; ensure we reach the absolute top to account for group labels.\n scroller.scrollTop = 0;\n }\n } else {\n let lastVisibleIndex = items.length - 1;\n const scrollBottom = scroller.scrollTop + scroller.clientHeight - scrollArrowHeight;\n for (let i = 0; i < items.length; i += 1) {\n const item = items[i];\n if (item) {\n const itemBottom = item.offsetTop + item.offsetHeight;\n if (itemBottom > scrollBottom) {\n lastVisibleIndex = Math.max(0, i - 1);\n break;\n }\n }\n }\n const targetIndex = Math.min(items.length - 1, lastVisibleIndex + 1);\n if (targetIndex > lastVisibleIndex) {\n const targetItem = items[targetIndex];\n if (targetItem) {\n scroller.scrollTop = targetItem.offsetTop + targetItem.offsetHeight - scroller.clientHeight + scrollArrowHeight;\n }\n } else {\n // Already at the last item; ensure we reach the true bottom.\n scroller.scrollTop = scroller.scrollHeight - scroller.clientHeight;\n }\n }\n }\n timeout.start(40, scrollNextItem);\n }\n timeout.start(40, scrollNextItem);\n },\n onMouseLeave() {\n timeout.clear();\n }\n };\n const element = useRenderElement('div', componentProps, {\n ref: [forwardedRef, scrollArrowRef],\n state,\n props: [defaultProps, elementProps]\n });\n const shouldRender = visible || keepMounted;\n if (!shouldRender) {\n return null;\n }\n return element;\n});\nif (process.env.NODE_ENV !== \"production\") SelectScrollArrow.displayName = \"SelectScrollArrow\";","'use client';\n\nimport * as React from 'react';\nimport { SelectScrollArrow } from \"../scroll-arrow/SelectScrollArrow.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * An element that scrolls the select popup down when hovered. Does not render when using touch input.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nexport const SelectScrollDownArrow = /*#__PURE__*/React.forwardRef(function SelectScrollDownArrow(props, forwardedRef) {\n return /*#__PURE__*/_jsx(SelectScrollArrow, {\n ...props,\n ref: forwardedRef,\n direction: \"down\"\n });\n});\nif (process.env.NODE_ENV !== \"production\") SelectScrollDownArrow.displayName = \"SelectScrollDownArrow\";","'use client';\n\nimport * as React from 'react';\nimport { SelectScrollArrow } from \"../scroll-arrow/SelectScrollArrow.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * An element that scrolls the select popup up when hovered. Does not render when using touch input.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nexport const SelectScrollUpArrow = /*#__PURE__*/React.forwardRef(function SelectScrollUpArrow(props, forwardedRef) {\n return /*#__PURE__*/_jsx(SelectScrollArrow, {\n ...props,\n ref: forwardedRef,\n direction: \"up\"\n });\n});\nif (process.env.NODE_ENV !== \"production\") SelectScrollUpArrow.displayName = \"SelectScrollUpArrow\";","import * as React from \"react\"\nimport { Select as SelectPrimitive } from \"@base-ui/react/select\"\n\nimport { cn } from \"@/lib/utils\"\nimport { ChevronDownIcon, CheckIcon, ChevronUpIcon } from \"lucide-react\"\n\nconst Select = SelectPrimitive.Root\n\nfunction SelectGroup({ className, ...props }: SelectPrimitive.Group.Props) {\n return (\n <SelectPrimitive.Group\n data-slot=\"select-group\"\n className={cn(\"scroll-my-1 p-1\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectValue({ className, ...props }: SelectPrimitive.Value.Props) {\n return (\n <SelectPrimitive.Value\n data-slot=\"select-value\"\n className={cn(\"flex flex-1 text-left\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: SelectPrimitive.Trigger.Props & {\n size?: \"sm\" | \"default\"\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input data-placeholder:text-muted-foreground dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 gap-1.5 rounded-lg border bg-transparent py-2 pr-2 pl-2.5 text-sm transition-colors select-none focus-visible:ring-2 aria-invalid:ring-2 data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*='size-'])]:size-4 flex w-fit items-center justify-between whitespace-nowrap outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon\n render={\n <ChevronDownIcon className=\"text-muted-foreground size-4 pointer-events-none\" />\n }\n />\n </SelectPrimitive.Trigger>\n )\n}\n\nfunction SelectContent({\n className,\n children,\n side = \"bottom\",\n sideOffset = 4,\n align = \"center\",\n alignOffset = 0,\n alignItemWithTrigger = true,\n ...props\n}: SelectPrimitive.Popup.Props &\n Pick<\n SelectPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\" | \"alignItemWithTrigger\"\n >) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Positioner\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n alignItemWithTrigger={alignItemWithTrigger}\n className=\"isolate z-50\"\n >\n <SelectPrimitive.Popup\n data-slot=\"select-content\"\n data-align-trigger={alignItemWithTrigger}\n className={cn(\"bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-36 rounded-lg shadow-md ring-1 duration-100 data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2 relative isolate z-50 max-h-(--available-height) w-(--anchor-width) origin-(--transform-origin) overflow-x-hidden overflow-y-auto data-[align-trigger=true]:animate-none\", className )}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.List>{children}</SelectPrimitive.List>\n <SelectScrollDownButton />\n </SelectPrimitive.Popup>\n </SelectPrimitive.Positioner>\n </SelectPrimitive.Portal>\n )\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: SelectPrimitive.GroupLabel.Props) {\n return (\n <SelectPrimitive.GroupLabel\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-1.5 py-1 text-xs\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: SelectPrimitive.Item.Props) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 relative flex w-full cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className\n )}\n {...props}\n >\n <SelectPrimitive.ItemText className=\"flex flex-1 gap-2 shrink-0 whitespace-nowrap\">\n {children}\n </SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator\n render={<span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\" />}\n >\n <CheckIcon className=\"pointer-events-none\" />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n )\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: SelectPrimitive.Separator.Props) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px pointer-events-none\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpArrow>) {\n return (\n <SelectPrimitive.ScrollUpArrow\n data-slot=\"select-scroll-up-button\"\n className={cn(\"bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4 top-0 w-full\", className)}\n {...props}\n >\n <ChevronUpIcon\n />\n </SelectPrimitive.ScrollUpArrow>\n )\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownArrow>) {\n return (\n <SelectPrimitive.ScrollDownArrow\n data-slot=\"select-scroll-down-button\"\n className={cn(\"bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4 bottom-0 w-full\", className)}\n {...props}\n >\n <ChevronDownIcon\n />\n </SelectPrimitive.ScrollDownArrow>\n )\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n}\n"],"names":["MutationObserver","_a","Subscribable","client","options","__privateAdd","_MutationObserver_instances","_client","_currentResult","_currentMutation","_mutateOptions","__privateSet","__privateMethod","updateResult_fn","prevOptions","__privateGet","shallowEqualObjects","hashKey","action","notify_fn","variables","state","getDefaultState","notifyManager","onMutateResult","context","_b","e","_d","_c","_f","_e","_h","_g","listener","useMutation","queryClient","useQueryClient","observer","React.useState","React.useEffect","result","React.useSyncExternalStore","React.useCallback","onStoreChange","mutate","mutateOptions","noop","shouldThrowError","__iconNode","Check","createLucideIcon","ChevronDown","ChevronUp","isDifferentGridRow","index","cols","prevRow","isIndexOutOfListBounds","listRef","getMinListIndex","disabledIndices","findNonDisabledListIndex","getMaxListIndex","startingIndex","decrement","amount","isListIndexDisabled","getGridNavigatedIndex","event","orientation","loopFocus","rtl","minIndex","maxIndex","prevIndex","stop","nextIndex","rows","rowIndexMap","hasRoleRow","currentRowEl","currentRowIndex","el","idx","rowEl","hasDomRows","row","navigateVertically","direction","currentRow","colInRow","nextRow","visited","targetRow","clampedCol","col","candidate","ARROW_UP","domBasedCandidate","stopEvent","maxCol","offset","ARROW_DOWN","floor","ARROW_LEFT","ARROW_RIGHT","lastRow","createGridCellMap","sizes","dense","cellMap","startIndex","width","height","itemPlaced","targetCells","i","j","cell","getGridCellIndexOfCorner","corner","firstCellIndex","sizeItem","getGridCellIndices","indices","cellIndex","element","FieldControl","React.forwardRef","componentProps","forwardedRef","render","className","idProp","nameProp","valueProp","disabledProp","onValueChange","defaultValue","autoFocus","elementProps","fieldState","fieldName","fieldDisabled","setTouched","setDirty","validityData","setFocused","setFilled","validationMode","validation","useFieldRootContext","disabled","name","labelId","useLabelableContext","id","useLabelableId","useIsoLayoutEffect","hasExternalValue","inputRef","React.useRef","activeElement","ownerDocument","valueUnwrapped","useControlled","isControlled","value","useField","useRenderElement","inputValue","createChangeEventDetails","REASONS.none","fieldValidityMapping","Input","props","_jsx","Field.Control","type","jsx","InputPrimitive","cn","useClick","store","dataRef","enabled","eventOption","toggle","ignoreMouse","stickIfOpen","touchOpenDelay","reason","REASONS.triggerPress","pointerTypeRef","frame","useAnimationFrame","touchOpenTimeout","useTimeout","reference","React.useMemo","pointerType","nativeEvent","open","isMouseLikePointerType","openEvent","openEventType","hasClickedOnInactiveTrigger","nextOpen","isTypeableElement","details","eventCurrentTarget","isClickLikeEvent","EMPTY_OBJECT","ESCAPE","doSwitch","vertical","horizontal","isMainOrientationKey","key","isMainOrientationToEndKey","isCrossOrientationOpenKey","isCrossOrientationCloseKey","useListNavigation","floatingElement","domReferenceElement","activeIndex","onNavigateProp","selectedIndex","allowEscape","nested","virtual","focusItemOnOpen","focusItemOnHover","openOnArrowKeyDown","parentOrientation","resetOnPointerLeave","externalTree","floatingFocusElement","getFloatingFocusElement","floatingFocusElementRef","useValueAsRef","parentId","useFloatingParentNodeId","tree","useFloatingTree","typeableComboboxReference","isTypeableCombobox","focusItemOnOpenRef","indexRef","keyRef","isPointerModalityRef","onNavigate","useStableCallback","previousOnNavigateRef","previousMountedRef","previousOpenRef","forceSyncFocusRef","forceScrollIntoViewRef","disabledIndicesRef","latestOpenRef","selectedIndexRef","resetOnPointerLeaveRef","focusItem","runFocus","item","enqueueFocus","initialItem","forceScrollIntoView","v","waitedItem","runs","waitForListPopulated","nodes","parent","node","activeEl","treeContainsActiveEl","contains","hasActiveIndex","syncCurrentTarget","currentTarget","relatedTarget","getParentOrientation","commonOnKeyDown","REASONS.listNavigation","isHTMLElement","currentIndex","minGridIndex","maxGridIndex","foundIndex","itemIndex","_","listIndex","ariaActiveDescendantProp","floating","target","getTarget","REASONS.focusOut","trigger","checkVirtualMouse","isVirtualClick","checkVirtualPointer","isVirtualPointerEvent","currentOpen","isArrowKey","isParentCrossOpenKey","isMainKey","isNavigationKey","isParentMainKey","useTypeahead","onMatchProp","onTypingChange","resetMs","timeout","stringRef","prevIndexRef","matchIndexRef","setTypingChange","onKeyDown","getMatchingIndex","list","orderedList","string","str","text","listContent","isNewSession","onBlur","next","currentDomReferenceElement","currentFloatingElement","withinReference","withinFloating","Card","size","CardHeader","CardTitle","CardDescription","CardContent","SelectRootContext","React.createContext","SelectFloatingContext","useSelectRootContext","React.useContext","_formatErrorMessage","useSelectFloatingContext","defaultItemEquality","itemValue","selectedValue","compareItemEquality","comparer","selectedValueIncludes","selectedValues","findItemIndex","itemValues","removeItem","serializeValue","isGroupedItems","items","hasNullItemLabel","group","stringifyAsLabel","itemToStringLabel","stringifyAsValue","itemToStringValue","resolveSelectedLabel","fallback","flatItems","g","match","resolveMultipleLabels","values","acc","React.Fragment","selectors","createSelector","multiple","storeValue","selectedItem","SelectRoot","openProp","defaultOpen","onOpenChange","autoComplete","readOnly","required","modal","actionsRef","onOpenChangeComplete","isItemEqualToValue","highlightItemOnHover","children","clearErrors","useFormContext","shouldValidateOnChange","generatedId","setValueUnwrapped","EMPTY_ARRAY","setOpenUnwrapped","labelsRef","popupRef","scrollHandlerRef","scrollArrowsMountedCountRef","valueRef","valuesRef","typingRef","keyboardActiveRef","selectedItemTextRef","selectionRef","alignItemWithTriggerActiveRef","mounted","setMounted","transitionStatus","useTransitionStatus","openMethod","interactionTypeProps","resetOpenInteractionType","useOpenInteractionType","useRefWithInit","Store","useStore","triggerElement","positionerElement","serializedValue","fieldStringValue","currentValue","controlRef","initialValueRef","registry","lastValue","lastIndex","useValueChanged","setOpen","eventDetails","REASONS.outsidePress","activeOption","handleUnmount","useOpenChangeComplete","React.useImperativeHandle","setValue","nextValue","handleScrollArrowVisibility","scroller","viewportTop","viewportBottom","shouldShowUp","shouldShowDown","floatingContext","useFloatingRootContext","click","dismiss","useDismiss","listNavigation","nextActiveIndex","typeahead","typing","getReferenceProps","getFloatingProps","getItemProps","useInteractions","mergedTriggerProps","mergeProps","useOnFirstRender","contextValue","ref","useMergedRefs","hasMultipleSelection","hiddenInputs","currentSerializedValue","_jsxs","handleChange","matchingValue","visuallyHiddenInput","visuallyHidden","getPseudoElementBounds","elementRect","beforeStyles","afterStyles","beforeWidth","beforeHeight","afterWidth","afterHeight","totalWidth","totalHeight","widthDiff","heightDiff","BOUNDARY_OFFSET","SELECTED_DELAY","UNSELECTED_DELAY","stateAttributesMapping","pressableTriggerOpenStateMapping","SelectTrigger","nativeButton","selectDisabled","triggerProps","listElement","rootId","hasSelectedValue","shouldCheckNullItemLabel","positionerRef","triggerRef","getButtonProps","buttonRef","useButton","setTriggerElement","mergedRef","timeoutFocus","timeoutMouseDown","selectedDelayTimeout","unselectedDelayTimeout","ariaControlsId","doc","handleMouseUp","mouseEvent","mouseUpTarget","bounds","REASONS.cancelOpen","SelectValue","childrenProp","placeholder","hasNullLabel","SelectIcon","triggerOpenStateMapping","SelectPortalContext","SelectPortal","portalProps","forceMount","FloatingPortal","CompositeListContext","useCompositeListContext","CompositeList","elementsRef","onMapChangeProp","onMapChange","nextIndexRef","listeners","createListeners","map","createMap","mapTick","setMapTick","lastTickRef","register","metadata","unregister","sortedMap","newMap","sortByDocumentPosition","mutationObserver","entries","diff","updateDiff","entry","subscribeMapChange","fn","l","a","b","position","SelectPositionerContext","useSelectPositionerContext","clearStyles","originalStyles","LIST_FUNCTIONAL_STYLES","FIXED","SelectPositioner","anchor","positionMethod","side","align","sideOffset","alignOffset","collisionBoundary","collisionPadding","arrowPadding","sticky","disableAnchorTracking","alignItemWithTrigger","collisionAvoidance","DROPDOWN_COLLISION_AVOIDANCE","floatingRootContext","scrollUpArrowRef","scrollDownArrowRef","controlledAlignItemWithTrigger","setControlledAlignItemWithTrigger","alignItemWithTriggerActive","useScrollLock","positioning","useAnchorPositioning","renderedSide","positionerStyles","defaultProps","hiddenStyles","setPositionerElement","popupStateMapping","getDisabledMountTransitionStyles","prevMapSizeRef","prevSize","initialSelectedValue","hasVisibleItem","selectedItemValue","stylesToClear","InternalBackdrop","inertValue","isMouseWithinBounds","targetRect","ToolbarRootContext","useToolbarRootContext","optional","SCROLL_EPS_PX","transitionStatusMapping","SelectPopup","finalFocus","insideToolbar","nonce","disableStyleElements","useCSPContext","highlightTimeout","popupProps","initialHeightRef","reachedMaxHeightRef","maxHeightRef","initialPlacedRef","originalPositionerStylesRef","scrollArrowFrame","handleScroll","isTopPositioned","isBottomPositioned","currentHeight","marginTop","marginBottom","maxPopupHeight","getMaxPopupHeight","maxAvailableHeight","scrollTop","maxScrollTop","getMaxScrollTop","nextPositionerHeight","nextScrollTop","setReachedMax","scrollToMax","setHeight","handleSmallDiff","targetScrollTop","heightDelta","clamp","idealHeight","nextHeight","overshoot","nextMaxScrollTop","popupElement","restoreTransformStyles","unsetTransformStyles","popupStyles","win","ownerWindow","triggerRect","positionerRect","triggerX","triggerHeight","scrollHeight","borderBottom","minHeight","paddingLeft","paddingRight","triggerCollisionThreshold","viewportHeight","viewportWidth","availableSpaceBeneathTrigger","textElement","valueElement","textRect","offsetX","offsetY","valueRect","valueLeftFromTriggerLeft","textLeftFromPositionerLeft","valueCenterFromPositionerTop","textCenterFromTriggerTop","maxHeight","left","maxRight","rightOverflow","fallbackToAlignPopupToTrigger","isPinchZoomed","isWebKit","ReactDOM.flushSync","topOffset","popupTop","popupHeight","textCenterY","transformOriginY","clampedY","handleResize","REASONS.windowResize","COMPOSITE_KEYS","popup","styleDisableScrollbar","FloatingFocusManager","maxHeightStyle","TRANSFORM_STYLE_RESETS","style","property","originalValue","SelectList","hasScrollArrows","setListElement","IndexGuessBehavior","useCompositeListItem","params","label","textRef","indexGuessBehavior","externalIndex","setIndex","newIndex","componentRef","isLabelDefined","SelectItemContext","useSelectItemContext","SelectItem","listItem","highlighted","selected","selectedByFocus","hasRegistered","itemRef","selectedCandidate","rootProps","lastKeyRef","didPointerDownRef","commitSelection","REASONS.itemPress","disallowSelectedMouseUp","disallowUnselectedMouseUp","SelectItemIndicator","keepMounted","Inner","React.memo","indicatorRef","SelectItemText","localRef","hasNoSelectedItemText","SelectScrollArrow","visibleSelector","stateVisible","visible","scrollArrowRef","scrollNextItem","isScrolledToTop","isScrolledToBottom","scrollArrowHeight","firstVisibleIndex","targetIndex","targetItem","lastVisibleIndex","scrollBottom","SelectScrollDownArrow","SelectScrollUpArrow","Select","SelectPrimitive.Root","SelectPrimitive.Value","jsxs","SelectPrimitive.Trigger","SelectPrimitive.Icon","ChevronDownIcon","SelectContent","SelectPrimitive.Portal","SelectPrimitive.Positioner","SelectPrimitive.Popup","SelectScrollUpButton","SelectPrimitive.List","SelectScrollDownButton","SelectPrimitive.Item","SelectPrimitive.ItemText","SelectPrimitive.ItemIndicator","CheckIcon","SelectPrimitive.ScrollUpArrow","ChevronUpIcon","SelectPrimitive.ScrollDownArrow"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,9,10,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41]}
1
+ {"version":3,"file":"select-C4GOQfW-.js","sources":["../../../../node_modules/.bun/@tanstack+query-core@5.90.20/node_modules/@tanstack/query-core/build/modern/mutationObserver.js","../../../../node_modules/.bun/@tanstack+react-query@5.90.20+b1ab299f0a400331/node_modules/@tanstack/react-query/build/modern/useMutation.js","../../../../node_modules/.bun/lucide-react@0.564.0+b1ab299f0a400331/node_modules/lucide-react/dist/esm/icons/check.js","../../../../node_modules/.bun/lucide-react@0.564.0+b1ab299f0a400331/node_modules/lucide-react/dist/esm/icons/chevron-down.js","../../../../node_modules/.bun/lucide-react@0.564.0+b1ab299f0a400331/node_modules/lucide-react/dist/esm/icons/chevron-up.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/floating-ui-react/utils/composite.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/field/control/FieldControl.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/input/Input.js","../../src/components/ui/input.tsx","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/floating-ui-react/hooks/useClick.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/floating-ui-react/hooks/useListNavigation.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/floating-ui-react/hooks/useTypeahead.js","../../src/components/ui/card.tsx","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/root/SelectRootContext.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/utils/itemEquality.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/utils/serializeValue.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/utils/resolveValueLabel.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/store.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/root/SelectRoot.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/utils/getPseudoElementBounds.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/trigger/SelectTrigger.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/value/SelectValue.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/icon/SelectIcon.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/portal/SelectPortalContext.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/portal/SelectPortal.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/composite/list/CompositeListContext.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/composite/list/CompositeList.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/positioner/SelectPositionerContext.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/popup/utils.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/positioner/SelectPositioner.js","../../../../node_modules/.bun/@base-ui+utils@0.2.5+ca9c98c9db1b76d1/node_modules/@base-ui/utils/esm/isMouseWithinBounds.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/toolbar/root/ToolbarRootContext.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/popup/SelectPopup.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/list/SelectList.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/composite/list/useCompositeListItem.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/item/SelectItemContext.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/item/SelectItem.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/item-indicator/SelectItemIndicator.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/item-text/SelectItemText.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/scroll-arrow/SelectScrollArrow.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/scroll-down-arrow/SelectScrollDownArrow.js","../../../../node_modules/.bun/@base-ui+react@1.2.0+ca9c98c9db1b76d1/node_modules/@base-ui/react/esm/select/scroll-up-arrow/SelectScrollUpArrow.js","../../src/components/ui/select.tsx"],"sourcesContent":["// src/mutationObserver.ts\nimport { getDefaultState } from \"./mutation.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { hashKey, shallowEqualObjects } from \"./utils.js\";\nvar MutationObserver = class extends Subscribable {\n #client;\n #currentResult = void 0;\n #currentMutation;\n #mutateOptions;\n constructor(client, options) {\n super();\n this.#client = client;\n this.setOptions(options);\n this.bindMethods();\n this.#updateResult();\n }\n bindMethods() {\n this.mutate = this.mutate.bind(this);\n this.reset = this.reset.bind(this);\n }\n setOptions(options) {\n const prevOptions = this.options;\n this.options = this.#client.defaultMutationOptions(options);\n if (!shallowEqualObjects(this.options, prevOptions)) {\n this.#client.getMutationCache().notify({\n type: \"observerOptionsUpdated\",\n mutation: this.#currentMutation,\n observer: this\n });\n }\n if (prevOptions?.mutationKey && this.options.mutationKey && hashKey(prevOptions.mutationKey) !== hashKey(this.options.mutationKey)) {\n this.reset();\n } else if (this.#currentMutation?.state.status === \"pending\") {\n this.#currentMutation.setOptions(this.options);\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.#currentMutation?.removeObserver(this);\n }\n }\n onMutationUpdate(action) {\n this.#updateResult();\n this.#notify(action);\n }\n getCurrentResult() {\n return this.#currentResult;\n }\n reset() {\n this.#currentMutation?.removeObserver(this);\n this.#currentMutation = void 0;\n this.#updateResult();\n this.#notify();\n }\n mutate(variables, options) {\n this.#mutateOptions = options;\n this.#currentMutation?.removeObserver(this);\n this.#currentMutation = this.#client.getMutationCache().build(this.#client, this.options);\n this.#currentMutation.addObserver(this);\n return this.#currentMutation.execute(variables);\n }\n #updateResult() {\n const state = this.#currentMutation?.state ?? getDefaultState();\n this.#currentResult = {\n ...state,\n isPending: state.status === \"pending\",\n isSuccess: state.status === \"success\",\n isError: state.status === \"error\",\n isIdle: state.status === \"idle\",\n mutate: this.mutate,\n reset: this.reset\n };\n }\n #notify(action) {\n notifyManager.batch(() => {\n if (this.#mutateOptions && this.hasListeners()) {\n const variables = this.#currentResult.variables;\n const onMutateResult = this.#currentResult.context;\n const context = {\n client: this.#client,\n meta: this.options.meta,\n mutationKey: this.options.mutationKey\n };\n if (action?.type === \"success\") {\n try {\n this.#mutateOptions.onSuccess?.(\n action.data,\n variables,\n onMutateResult,\n context\n );\n } catch (e) {\n void Promise.reject(e);\n }\n try {\n this.#mutateOptions.onSettled?.(\n action.data,\n null,\n variables,\n onMutateResult,\n context\n );\n } catch (e) {\n void Promise.reject(e);\n }\n } else if (action?.type === \"error\") {\n try {\n this.#mutateOptions.onError?.(\n action.error,\n variables,\n onMutateResult,\n context\n );\n } catch (e) {\n void Promise.reject(e);\n }\n try {\n this.#mutateOptions.onSettled?.(\n void 0,\n action.error,\n variables,\n onMutateResult,\n context\n );\n } catch (e) {\n void Promise.reject(e);\n }\n }\n }\n this.listeners.forEach((listener) => {\n listener(this.#currentResult);\n });\n });\n }\n};\nexport {\n MutationObserver\n};\n//# sourceMappingURL=mutationObserver.js.map","\"use client\";\n\n// src/useMutation.ts\nimport * as React from \"react\";\nimport {\n MutationObserver,\n noop,\n notifyManager,\n shouldThrowError\n} from \"@tanstack/query-core\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nfunction useMutation(options, queryClient) {\n const client = useQueryClient(queryClient);\n const [observer] = React.useState(\n () => new MutationObserver(\n client,\n options\n )\n );\n React.useEffect(() => {\n observer.setOptions(options);\n }, [observer, options]);\n const result = React.useSyncExternalStore(\n React.useCallback(\n (onStoreChange) => observer.subscribe(notifyManager.batchCalls(onStoreChange)),\n [observer]\n ),\n () => observer.getCurrentResult(),\n () => observer.getCurrentResult()\n );\n const mutate = React.useCallback(\n (variables, mutateOptions) => {\n observer.mutate(variables, mutateOptions).catch(noop);\n },\n [observer]\n );\n if (result.error && shouldThrowError(observer.options.throwOnError, [result.error])) {\n throw result.error;\n }\n return { ...result, mutate, mutateAsync: result.mutate };\n}\nexport {\n useMutation\n};\n//# sourceMappingURL=useMutation.js.map","/**\n * @license lucide-react v0.564.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"M20 6 9 17l-5-5\", key: \"1gmf2c\" }]];\nconst Check = createLucideIcon(\"check\", __iconNode);\n\nexport { __iconNode, Check as default };\n//# sourceMappingURL=check.js.map\n","/**\n * @license lucide-react v0.564.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"m6 9 6 6 6-6\", key: \"qrunsl\" }]];\nconst ChevronDown = createLucideIcon(\"chevron-down\", __iconNode);\n\nexport { __iconNode, ChevronDown as default };\n//# sourceMappingURL=chevron-down.js.map\n","/**\n * @license lucide-react v0.564.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"m18 15-6-6-6 6\", key: \"153udz\" }]];\nconst ChevronUp = createLucideIcon(\"chevron-up\", __iconNode);\n\nexport { __iconNode, ChevronUp as default };\n//# sourceMappingURL=chevron-up.js.map\n","import { floor } from '@floating-ui/utils';\nimport { stopEvent } from \"./event.js\";\nimport { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP } from \"./constants.js\";\nexport function isDifferentGridRow(index, cols, prevRow) {\n return Math.floor(index / cols) !== prevRow;\n}\nexport function isIndexOutOfListBounds(listRef, index) {\n return index < 0 || index >= listRef.current.length;\n}\nexport function getMinListIndex(listRef, disabledIndices) {\n return findNonDisabledListIndex(listRef, {\n disabledIndices\n });\n}\nexport function getMaxListIndex(listRef, disabledIndices) {\n return findNonDisabledListIndex(listRef, {\n decrement: true,\n startingIndex: listRef.current.length,\n disabledIndices\n });\n}\nexport function findNonDisabledListIndex(listRef, {\n startingIndex = -1,\n decrement = false,\n disabledIndices,\n amount = 1\n} = {}) {\n let index = startingIndex;\n do {\n index += decrement ? -amount : amount;\n } while (index >= 0 && index <= listRef.current.length - 1 && isListIndexDisabled(listRef, index, disabledIndices));\n return index;\n}\nexport function getGridNavigatedIndex(listRef, {\n event,\n orientation,\n loopFocus,\n rtl,\n cols,\n disabledIndices,\n minIndex,\n maxIndex,\n prevIndex,\n stopEvent: stop = false\n}) {\n let nextIndex = prevIndex;\n\n // ---------------------------------------------------------------------------\n // Detect row structure based on DOM. This works when items are grouped inside\n // elements that declare `role=\"row\"` (e.g., Combobox.Row). We build a matrix\n // where each entry is the array of item indices for that visual row. The\n // algorithm gracefully falls back to regular `cols`-based handling when no\n // row structure can be detected.\n // ---------------------------------------------------------------------------\n const rows = [];\n const rowIndexMap = {};\n let hasRoleRow = false;\n {\n let currentRowEl = null;\n let currentRowIndex = -1;\n listRef.current.forEach((el, idx) => {\n if (el == null) {\n return;\n }\n const rowEl = el.closest('[role=\"row\"]');\n if (rowEl) {\n hasRoleRow = true;\n }\n if (rowEl !== currentRowEl || currentRowIndex === -1) {\n currentRowEl = rowEl;\n currentRowIndex += 1;\n rows[currentRowIndex] = [];\n }\n rows[currentRowIndex].push(idx);\n rowIndexMap[idx] = currentRowIndex;\n });\n }\n const hasDomRows = hasRoleRow && rows.length > 0 && rows.some(row => row.length !== cols);\n function navigateVertically(direction) {\n if (!hasDomRows || prevIndex === -1) {\n return undefined;\n }\n const currentRow = rowIndexMap[prevIndex];\n if (currentRow == null) {\n return undefined;\n }\n const colInRow = rows[currentRow].indexOf(prevIndex);\n let nextRow = direction === 'up' ? currentRow - 1 : currentRow + 1;\n if (loopFocus) {\n if (nextRow < 0) {\n nextRow = rows.length - 1;\n } else if (nextRow >= rows.length) {\n nextRow = 0;\n }\n }\n const visited = new Set();\n while (nextRow >= 0 && nextRow < rows.length && !visited.has(nextRow)) {\n visited.add(nextRow);\n const targetRow = rows[nextRow];\n if (targetRow.length === 0) {\n nextRow = direction === 'up' ? nextRow - 1 : nextRow + 1;\n continue;\n }\n const clampedCol = Math.min(colInRow, targetRow.length - 1);\n // Start from the preferred column, fallback leftwards until first\n // enabled item is found.\n for (let col = clampedCol; col >= 0; col -= 1) {\n const candidate = targetRow[col];\n if (!isListIndexDisabled(listRef, candidate, disabledIndices)) {\n return candidate;\n }\n }\n // Row had no enabled items, move to next row in the same direction.\n nextRow = direction === 'up' ? nextRow - 1 : nextRow + 1;\n if (loopFocus) {\n if (nextRow < 0) {\n nextRow = rows.length - 1;\n } else if (nextRow >= rows.length) {\n nextRow = 0;\n }\n }\n }\n return undefined;\n }\n if (event.key === ARROW_UP) {\n const domBasedCandidate = navigateVertically('up');\n if (domBasedCandidate !== undefined) {\n if (stop) {\n stopEvent(event);\n }\n nextIndex = domBasedCandidate;\n } else {\n // fallback to original logic\n if (stop) {\n stopEvent(event);\n }\n if (prevIndex === -1) {\n nextIndex = maxIndex;\n } else {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: nextIndex,\n amount: cols,\n decrement: true,\n disabledIndices\n });\n if (loopFocus && (prevIndex - cols < minIndex || nextIndex < 0)) {\n const col = prevIndex % cols;\n const maxCol = maxIndex % cols;\n const offset = maxIndex - (maxCol - col);\n if (maxCol === col) {\n nextIndex = maxIndex;\n } else {\n nextIndex = maxCol > col ? offset : offset - cols;\n }\n }\n }\n if (isIndexOutOfListBounds(listRef, nextIndex)) {\n nextIndex = prevIndex;\n }\n }\n }\n if (event.key === ARROW_DOWN) {\n const domBasedCandidate = navigateVertically('down');\n if (domBasedCandidate !== undefined) {\n if (stop) {\n stopEvent(event);\n }\n nextIndex = domBasedCandidate;\n } else {\n if (stop) {\n stopEvent(event);\n }\n if (prevIndex === -1) {\n nextIndex = minIndex;\n } else {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex,\n amount: cols,\n disabledIndices\n });\n if (loopFocus && prevIndex + cols > maxIndex) {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex % cols - cols,\n amount: cols,\n disabledIndices\n });\n }\n }\n if (isIndexOutOfListBounds(listRef, nextIndex)) {\n nextIndex = prevIndex;\n }\n }\n }\n\n // Remains on the same row/column.\n if (orientation === 'both') {\n const prevRow = floor(prevIndex / cols);\n if (event.key === (rtl ? ARROW_LEFT : ARROW_RIGHT)) {\n if (stop) {\n stopEvent(event);\n }\n if (prevIndex % cols !== cols - 1) {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex,\n disabledIndices\n });\n if (loopFocus && isDifferentGridRow(nextIndex, cols, prevRow)) {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex - prevIndex % cols - 1,\n disabledIndices\n });\n }\n } else if (loopFocus) {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex - prevIndex % cols - 1,\n disabledIndices\n });\n }\n if (isDifferentGridRow(nextIndex, cols, prevRow)) {\n nextIndex = prevIndex;\n }\n }\n if (event.key === (rtl ? ARROW_RIGHT : ARROW_LEFT)) {\n if (stop) {\n stopEvent(event);\n }\n if (prevIndex % cols !== 0) {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex,\n decrement: true,\n disabledIndices\n });\n if (loopFocus && isDifferentGridRow(nextIndex, cols, prevRow)) {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex + (cols - prevIndex % cols),\n decrement: true,\n disabledIndices\n });\n }\n } else if (loopFocus) {\n nextIndex = findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex + (cols - prevIndex % cols),\n decrement: true,\n disabledIndices\n });\n }\n if (isDifferentGridRow(nextIndex, cols, prevRow)) {\n nextIndex = prevIndex;\n }\n }\n const lastRow = floor(maxIndex / cols) === prevRow;\n if (isIndexOutOfListBounds(listRef, nextIndex)) {\n if (loopFocus && lastRow) {\n nextIndex = event.key === (rtl ? ARROW_RIGHT : ARROW_LEFT) ? maxIndex : findNonDisabledListIndex(listRef, {\n startingIndex: prevIndex - prevIndex % cols - 1,\n disabledIndices\n });\n } else {\n nextIndex = prevIndex;\n }\n }\n }\n return nextIndex;\n}\n\n/** For each cell index, gets the item index that occupies that cell */\nexport function createGridCellMap(sizes, cols, dense) {\n const cellMap = [];\n let startIndex = 0;\n sizes.forEach(({\n width,\n height\n }, index) => {\n if (width > cols) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(`[Floating UI]: Invalid grid - item width at index ${index} is greater than grid columns`);\n }\n }\n let itemPlaced = false;\n if (dense) {\n startIndex = 0;\n }\n while (!itemPlaced) {\n const targetCells = [];\n for (let i = 0; i < width; i += 1) {\n for (let j = 0; j < height; j += 1) {\n targetCells.push(startIndex + i + j * cols);\n }\n }\n if (startIndex % cols + width <= cols && targetCells.every(cell => cellMap[cell] == null)) {\n targetCells.forEach(cell => {\n cellMap[cell] = index;\n });\n itemPlaced = true;\n } else {\n startIndex += 1;\n }\n }\n });\n\n // convert into a non-sparse array\n return [...cellMap];\n}\n\n/** Gets cell index of an item's corner or -1 when index is -1. */\nexport function getGridCellIndexOfCorner(index, sizes, cellMap, cols, corner) {\n if (index === -1) {\n return -1;\n }\n const firstCellIndex = cellMap.indexOf(index);\n const sizeItem = sizes[index];\n switch (corner) {\n case 'tl':\n return firstCellIndex;\n case 'tr':\n if (!sizeItem) {\n return firstCellIndex;\n }\n return firstCellIndex + sizeItem.width - 1;\n case 'bl':\n if (!sizeItem) {\n return firstCellIndex;\n }\n return firstCellIndex + (sizeItem.height - 1) * cols;\n case 'br':\n return cellMap.lastIndexOf(index);\n default:\n return -1;\n }\n}\n\n/** Gets all cell indices that correspond to the specified indices */\nexport function getGridCellIndices(indices, cellMap) {\n return cellMap.flatMap((index, cellIndex) => indices.includes(index) ? [cellIndex] : []);\n}\nexport function isListIndexDisabled(listRef, index, disabledIndices) {\n if (typeof disabledIndices === 'function') {\n return disabledIndices(index);\n }\n if (disabledIndices) {\n return disabledIndices.includes(index);\n }\n const element = listRef.current[index];\n if (!element) {\n return false;\n }\n return element.hasAttribute('disabled') || element.getAttribute('aria-disabled') === 'true';\n}","'use client';\n\nimport * as React from 'react';\nimport { useControlled } from '@base-ui/utils/useControlled';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { ownerDocument } from '@base-ui/utils/owner';\nimport { useFieldRootContext } from \"../root/FieldRootContext.js\";\nimport { useLabelableContext } from \"../../labelable-provider/LabelableContext.js\";\nimport { useLabelableId } from \"../../labelable-provider/useLabelableId.js\";\nimport { fieldValidityMapping } from \"../utils/constants.js\";\nimport { useRenderElement } from \"../../utils/useRenderElement.js\";\nimport { useField } from \"../useField.js\";\nimport { createChangeEventDetails } from \"../../utils/createBaseUIEventDetails.js\";\nimport { REASONS } from \"../../utils/reasons.js\";\nimport { activeElement } from \"../../floating-ui-react/utils.js\";\n\n/**\n * The form control to label and validate.\n * Renders an `<input>` element.\n *\n * You can omit this part and use any Base UI input component instead. For example,\n * [Input](https://base-ui.com/react/components/input), [Checkbox](https://base-ui.com/react/components/checkbox),\n * or [Select](https://base-ui.com/react/components/select), among others, will work with Field out of the box.\n *\n * Documentation: [Base UI Field](https://base-ui.com/react/components/field)\n */\nexport const FieldControl = /*#__PURE__*/React.forwardRef(function FieldControl(componentProps, forwardedRef) {\n const {\n render,\n className,\n id: idProp,\n name: nameProp,\n value: valueProp,\n disabled: disabledProp = false,\n onValueChange,\n defaultValue,\n autoFocus = false,\n ...elementProps\n } = componentProps;\n const {\n state: fieldState,\n name: fieldName,\n disabled: fieldDisabled,\n setTouched,\n setDirty,\n validityData,\n setFocused,\n setFilled,\n validationMode,\n validation\n } = useFieldRootContext();\n const disabled = fieldDisabled || disabledProp;\n const name = fieldName ?? nameProp;\n const state = {\n ...fieldState,\n disabled\n };\n const {\n labelId\n } = useLabelableContext();\n const id = useLabelableId({\n id: idProp\n });\n useIsoLayoutEffect(() => {\n const hasExternalValue = valueProp != null;\n if (validation.inputRef.current?.value || hasExternalValue && valueProp !== '') {\n setFilled(true);\n } else if (hasExternalValue && valueProp === '') {\n setFilled(false);\n }\n }, [validation.inputRef, setFilled, valueProp]);\n const inputRef = React.useRef(null);\n useIsoLayoutEffect(() => {\n if (autoFocus && inputRef.current === activeElement(ownerDocument(inputRef.current))) {\n setFocused(true);\n }\n }, [autoFocus, setFocused]);\n const [valueUnwrapped] = useControlled({\n controlled: valueProp,\n default: defaultValue,\n name: 'FieldControl',\n state: 'value'\n });\n const isControlled = valueProp !== undefined;\n const value = isControlled ? valueUnwrapped : undefined;\n useField({\n id,\n name,\n commit: validation.commit,\n value,\n getValue: () => validation.inputRef.current?.value,\n controlRef: validation.inputRef\n });\n const element = useRenderElement('input', componentProps, {\n ref: [forwardedRef, inputRef],\n state,\n props: [{\n id,\n disabled,\n name,\n ref: validation.inputRef,\n 'aria-labelledby': labelId,\n autoFocus,\n ...(isControlled ? {\n value\n } : {\n defaultValue\n }),\n onChange(event) {\n const inputValue = event.currentTarget.value;\n onValueChange?.(inputValue, createChangeEventDetails(REASONS.none, event.nativeEvent));\n setDirty(inputValue !== validityData.initialValue);\n setFilled(inputValue !== '');\n },\n onFocus() {\n setFocused(true);\n },\n onBlur(event) {\n setTouched(true);\n setFocused(false);\n if (validationMode === 'onBlur') {\n validation.commit(event.currentTarget.value);\n }\n },\n onKeyDown(event) {\n if (event.currentTarget.tagName === 'INPUT' && event.key === 'Enter') {\n setTouched(true);\n validation.commit(event.currentTarget.value);\n }\n }\n }, validation.getInputValidationProps(), elementProps],\n stateAttributesMapping: fieldValidityMapping\n });\n return element;\n});\nif (process.env.NODE_ENV !== \"production\") FieldControl.displayName = \"FieldControl\";","'use client';\n\nimport * as React from 'react';\nimport { Field } from \"../field/index.js\";\n\n/**\n * A native input element that automatically works with [Field](https://base-ui.com/react/components/field).\n * Renders an `<input>` element.\n *\n * Documentation: [Base UI Input](https://base-ui.com/react/components/input)\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const Input = /*#__PURE__*/React.forwardRef(function Input(props, forwardedRef) {\n return /*#__PURE__*/_jsx(Field.Control, {\n ref: forwardedRef,\n ...props\n });\n});\nif (process.env.NODE_ENV !== \"production\") Input.displayName = \"Input\";","import * as React from \"react\"\nimport { Input as InputPrimitive } from \"@base-ui/react/input\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <InputPrimitive\n type={type}\n data-slot=\"input\"\n className={cn(\n \"dark:bg-input/30 border-input focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 disabled:bg-input/50 dark:disabled:bg-input/80 h-8 rounded-lg border bg-transparent px-2.5 py-1 text-base transition-colors file:h-6 file:text-sm file:font-medium focus-visible:ring-2 aria-invalid:ring-2 md:text-sm file:text-foreground placeholder:text-muted-foreground w-full min-w-0 outline-none file:inline-flex file:border-0 file:bg-transparent disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Input }\n","'use client';\n\nimport * as React from 'react';\nimport { useAnimationFrame } from '@base-ui/utils/useAnimationFrame';\nimport { useTimeout } from '@base-ui/utils/useTimeout';\nimport { EMPTY_OBJECT } from \"../../utils/constants.js\";\nimport { isClickLikeEvent, isMouseLikePointerType, isTypeableElement } from \"../utils.js\";\nimport { createChangeEventDetails } from \"../../utils/createBaseUIEventDetails.js\";\nimport { REASONS } from \"../../utils/reasons.js\";\n/**\n * Opens or closes the floating element when clicking the reference element.\n * @see https://floating-ui.com/docs/useClick\n */\nexport function useClick(context, props = {}) {\n const store = 'rootStore' in context ? context.rootStore : context;\n const dataRef = store.context.dataRef;\n const {\n enabled = true,\n event: eventOption = 'click',\n toggle = true,\n ignoreMouse = false,\n stickIfOpen = true,\n touchOpenDelay = 0,\n reason = REASONS.triggerPress\n } = props;\n const pointerTypeRef = React.useRef(undefined);\n const frame = useAnimationFrame();\n const touchOpenTimeout = useTimeout();\n const reference = React.useMemo(() => ({\n onPointerDown(event) {\n pointerTypeRef.current = event.pointerType;\n },\n onMouseDown(event) {\n const pointerType = pointerTypeRef.current;\n const nativeEvent = event.nativeEvent;\n const open = store.select('open');\n\n // Ignore all buttons except for the \"main\" button.\n // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button\n if (event.button !== 0 || eventOption === 'click' || isMouseLikePointerType(pointerType, true) && ignoreMouse) {\n return;\n }\n const openEvent = dataRef.current.openEvent;\n const openEventType = openEvent?.type;\n const hasClickedOnInactiveTrigger = store.select('domReferenceElement') !== event.currentTarget;\n const nextOpen = open && hasClickedOnInactiveTrigger || !(open && toggle && (openEvent && stickIfOpen ? openEventType === 'click' || openEventType === 'mousedown' : true));\n\n // Animations sometimes won't run on a typeable element if using a rAF.\n // Focus is always set on these elements. For touch, we may delay opening.\n if (isTypeableElement(nativeEvent.target)) {\n const details = createChangeEventDetails(reason, nativeEvent, nativeEvent.target);\n if (nextOpen && pointerType === 'touch' && touchOpenDelay > 0) {\n touchOpenTimeout.start(touchOpenDelay, () => {\n store.setOpen(true, details);\n });\n } else {\n store.setOpen(nextOpen, details);\n }\n return;\n }\n\n // Capture the currentTarget before the rAF.\n // as React sets it to null after the event handler completes.\n const eventCurrentTarget = event.currentTarget;\n\n // Wait until focus is set on the element. This is an alternative to\n // `event.preventDefault()` to avoid :focus-visible from appearing when using a pointer.\n frame.request(() => {\n const details = createChangeEventDetails(reason, nativeEvent, eventCurrentTarget);\n if (nextOpen && pointerType === 'touch' && touchOpenDelay > 0) {\n touchOpenTimeout.start(touchOpenDelay, () => {\n store.setOpen(true, details);\n });\n } else {\n store.setOpen(nextOpen, details);\n }\n });\n },\n onClick(event) {\n if (eventOption === 'mousedown-only') {\n return;\n }\n const pointerType = pointerTypeRef.current;\n if (eventOption === 'mousedown' && pointerType) {\n pointerTypeRef.current = undefined;\n return;\n }\n if (isMouseLikePointerType(pointerType, true) && ignoreMouse) {\n return;\n }\n const open = store.select('open');\n const openEvent = dataRef.current.openEvent;\n const hasClickedOnInactiveTrigger = store.select('domReferenceElement') !== event.currentTarget;\n const nextOpen = open && hasClickedOnInactiveTrigger || !(open && toggle && (openEvent && stickIfOpen ? isClickLikeEvent(openEvent) : true));\n const details = createChangeEventDetails(reason, event.nativeEvent, event.currentTarget);\n if (nextOpen && pointerType === 'touch' && touchOpenDelay > 0) {\n touchOpenTimeout.start(touchOpenDelay, () => {\n store.setOpen(true, details);\n });\n } else {\n store.setOpen(nextOpen, details);\n }\n },\n onKeyDown() {\n pointerTypeRef.current = undefined;\n }\n }), [dataRef, eventOption, ignoreMouse, store, stickIfOpen, toggle, frame, touchOpenTimeout, touchOpenDelay, reason]);\n return React.useMemo(() => enabled ? {\n reference\n } : EMPTY_OBJECT, [enabled, reference]);\n}","'use client';\n\nimport * as React from 'react';\nimport { isHTMLElement } from '@floating-ui/utils/dom';\nimport { useValueAsRef } from '@base-ui/utils/useValueAsRef';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { ownerDocument } from '@base-ui/utils/owner';\nimport { activeElement, contains, getTarget, isTypeableCombobox, isVirtualClick, isVirtualPointerEvent, stopEvent, getFloatingFocusElement, isIndexOutOfListBounds, getMinListIndex, getMaxListIndex, getGridNavigatedIndex, isListIndexDisabled, createGridCellMap, getGridCellIndices, getGridCellIndexOfCorner, findNonDisabledListIndex } from \"../utils.js\";\nimport { useFloatingParentNodeId, useFloatingTree } from \"../components/FloatingTree.js\";\nimport { createChangeEventDetails } from \"../../utils/createBaseUIEventDetails.js\";\nimport { REASONS } from \"../../utils/reasons.js\";\nimport { enqueueFocus } from \"../utils/enqueueFocus.js\";\nimport { ARROW_UP, ARROW_DOWN, ARROW_RIGHT, ARROW_LEFT } from \"../utils/constants.js\";\nexport const ESCAPE = 'Escape';\nfunction doSwitch(orientation, vertical, horizontal) {\n switch (orientation) {\n case 'vertical':\n return vertical;\n case 'horizontal':\n return horizontal;\n default:\n return vertical || horizontal;\n }\n}\nfunction isMainOrientationKey(key, orientation) {\n const vertical = key === ARROW_UP || key === ARROW_DOWN;\n const horizontal = key === ARROW_LEFT || key === ARROW_RIGHT;\n return doSwitch(orientation, vertical, horizontal);\n}\nfunction isMainOrientationToEndKey(key, orientation, rtl) {\n const vertical = key === ARROW_DOWN;\n const horizontal = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;\n return doSwitch(orientation, vertical, horizontal) || key === 'Enter' || key === ' ' || key === '';\n}\nfunction isCrossOrientationOpenKey(key, orientation, rtl) {\n const vertical = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;\n const horizontal = key === ARROW_DOWN;\n return doSwitch(orientation, vertical, horizontal);\n}\nfunction isCrossOrientationCloseKey(key, orientation, rtl, cols) {\n const vertical = rtl ? key === ARROW_RIGHT : key === ARROW_LEFT;\n const horizontal = key === ARROW_UP;\n if (orientation === 'both' || orientation === 'horizontal' && cols && cols > 1) {\n return key === ESCAPE;\n }\n return doSwitch(orientation, vertical, horizontal);\n}\n/**\n * Adds arrow key-based navigation of a list of items, either using real DOM\n * focus or virtual focus.\n * @see https://floating-ui.com/docs/useListNavigation\n */\nexport function useListNavigation(context, props) {\n const store = 'rootStore' in context ? context.rootStore : context;\n const open = store.useState('open');\n const floatingElement = store.useState('floatingElement');\n const domReferenceElement = store.useState('domReferenceElement');\n const dataRef = store.context.dataRef;\n const {\n listRef,\n activeIndex,\n onNavigate: onNavigateProp = () => {},\n enabled = true,\n selectedIndex = null,\n allowEscape = false,\n loopFocus = false,\n nested = false,\n rtl = false,\n virtual = false,\n focusItemOnOpen = 'auto',\n focusItemOnHover = true,\n openOnArrowKeyDown = true,\n disabledIndices = undefined,\n orientation = 'vertical',\n parentOrientation,\n cols = 1,\n id,\n resetOnPointerLeave = true,\n externalTree\n } = props;\n if (process.env.NODE_ENV !== 'production') {\n if (allowEscape) {\n if (!loopFocus) {\n console.warn('`useListNavigation` looping must be enabled to allow escaping.');\n }\n if (!virtual) {\n console.warn('`useListNavigation` must be virtual to allow escaping.');\n }\n }\n if (orientation === 'vertical' && cols > 1) {\n console.warn('In grid list navigation mode (`cols` > 1), the `orientation` should', 'be either \"horizontal\" or \"both\".');\n }\n }\n const floatingFocusElement = getFloatingFocusElement(floatingElement);\n const floatingFocusElementRef = useValueAsRef(floatingFocusElement);\n const parentId = useFloatingParentNodeId();\n const tree = useFloatingTree(externalTree);\n useIsoLayoutEffect(() => {\n dataRef.current.orientation = orientation;\n }, [dataRef, orientation]);\n const typeableComboboxReference = isTypeableCombobox(domReferenceElement);\n const focusItemOnOpenRef = React.useRef(focusItemOnOpen);\n const indexRef = React.useRef(selectedIndex ?? -1);\n const keyRef = React.useRef(null);\n const isPointerModalityRef = React.useRef(true);\n const onNavigate = useStableCallback(event => {\n onNavigateProp(indexRef.current === -1 ? null : indexRef.current, event);\n });\n const previousOnNavigateRef = React.useRef(onNavigate);\n const previousMountedRef = React.useRef(!!floatingElement);\n const previousOpenRef = React.useRef(open);\n const forceSyncFocusRef = React.useRef(false);\n const forceScrollIntoViewRef = React.useRef(false);\n const disabledIndicesRef = useValueAsRef(disabledIndices);\n const latestOpenRef = useValueAsRef(open);\n const selectedIndexRef = useValueAsRef(selectedIndex);\n const resetOnPointerLeaveRef = useValueAsRef(resetOnPointerLeave);\n const focusItem = useStableCallback(() => {\n function runFocus(item) {\n if (virtual) {\n tree?.events.emit('virtualfocus', item);\n } else {\n enqueueFocus(item, {\n sync: forceSyncFocusRef.current,\n preventScroll: true\n });\n }\n }\n const initialItem = listRef.current[indexRef.current];\n const forceScrollIntoView = forceScrollIntoViewRef.current;\n if (initialItem) {\n runFocus(initialItem);\n }\n const scheduler = forceSyncFocusRef.current ? v => v() : requestAnimationFrame;\n scheduler(() => {\n const waitedItem = listRef.current[indexRef.current] || initialItem;\n if (!waitedItem) {\n return;\n }\n if (!initialItem) {\n runFocus(waitedItem);\n }\n const shouldScrollIntoView =\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n item && (forceScrollIntoView || !isPointerModalityRef.current);\n if (shouldScrollIntoView) {\n // JSDOM doesn't support `.scrollIntoView()` but it's widely supported\n // by all browsers.\n waitedItem.scrollIntoView?.({\n block: 'nearest',\n inline: 'nearest'\n });\n }\n });\n });\n\n // Sync `selectedIndex` to be the `activeIndex` upon opening the floating\n // element. Also, reset `activeIndex` upon closing the floating element.\n useIsoLayoutEffect(() => {\n if (!enabled) {\n return;\n }\n if (open && floatingElement) {\n indexRef.current = selectedIndex ?? -1;\n if (focusItemOnOpenRef.current && selectedIndex != null) {\n // Regardless of the pointer modality, we want to ensure the selected\n // item comes into view when the floating element is opened.\n forceScrollIntoViewRef.current = true;\n onNavigate();\n }\n } else if (previousMountedRef.current) {\n // Since the user can specify `onNavigate` conditionally\n // (onNavigate: open ? setActiveIndex : setSelectedIndex),\n // we store and call the previous function.\n indexRef.current = -1;\n previousOnNavigateRef.current();\n }\n }, [enabled, open, floatingElement, selectedIndex, onNavigate]);\n\n // Sync `activeIndex` to be the focused item while the floating element is\n // open.\n useIsoLayoutEffect(() => {\n if (!enabled) {\n return;\n }\n if (!open) {\n forceSyncFocusRef.current = false;\n return;\n }\n if (!floatingElement) {\n return;\n }\n if (activeIndex == null) {\n forceSyncFocusRef.current = false;\n if (selectedIndexRef.current != null) {\n return;\n }\n\n // Reset while the floating element was open (e.g. the list changed).\n if (previousMountedRef.current) {\n indexRef.current = -1;\n focusItem();\n }\n\n // Initial sync.\n if ((!previousOpenRef.current || !previousMountedRef.current) && focusItemOnOpenRef.current && (keyRef.current != null || focusItemOnOpenRef.current === true && keyRef.current == null)) {\n let runs = 0;\n const waitForListPopulated = () => {\n if (listRef.current[0] == null) {\n // Avoid letting the browser paint if possible on the first try,\n // otherwise use rAF. Don't try more than twice, since something\n // is wrong otherwise.\n if (runs < 2) {\n const scheduler = runs ? requestAnimationFrame : queueMicrotask;\n scheduler(waitForListPopulated);\n }\n runs += 1;\n } else {\n // initially focus the first non-disabled item\n indexRef.current = keyRef.current == null || isMainOrientationToEndKey(keyRef.current, orientation, rtl) || nested ? getMinListIndex(listRef) : getMaxListIndex(listRef);\n keyRef.current = null;\n onNavigate();\n }\n };\n waitForListPopulated();\n }\n } else if (!isIndexOutOfListBounds(listRef, activeIndex)) {\n indexRef.current = activeIndex;\n focusItem();\n forceScrollIntoViewRef.current = false;\n }\n }, [enabled, open, floatingElement, activeIndex, selectedIndexRef, nested, listRef, orientation, rtl, onNavigate, focusItem, disabledIndicesRef]);\n\n // Ensure the parent floating element has focus when a nested child closes\n // to allow arrow key navigation to work after the pointer leaves the child.\n useIsoLayoutEffect(() => {\n if (!enabled || floatingElement || !tree || virtual || !previousMountedRef.current) {\n return;\n }\n const nodes = tree.nodesRef.current;\n const parent = nodes.find(node => node.id === parentId)?.context?.elements.floating;\n const activeEl = activeElement(ownerDocument(floatingElement));\n const treeContainsActiveEl = nodes.some(node => node.context && contains(node.context.elements.floating, activeEl));\n if (parent && !treeContainsActiveEl && isPointerModalityRef.current) {\n parent.focus({\n preventScroll: true\n });\n }\n }, [enabled, floatingElement, tree, parentId, virtual]);\n useIsoLayoutEffect(() => {\n previousOnNavigateRef.current = onNavigate;\n previousOpenRef.current = open;\n previousMountedRef.current = !!floatingElement;\n });\n useIsoLayoutEffect(() => {\n if (!open) {\n keyRef.current = null;\n focusItemOnOpenRef.current = focusItemOnOpen;\n }\n }, [open, focusItemOnOpen]);\n const hasActiveIndex = activeIndex != null;\n const item = React.useMemo(() => {\n function syncCurrentTarget(event) {\n if (!latestOpenRef.current) {\n return;\n }\n const index = listRef.current.indexOf(event.currentTarget);\n if (index !== -1 && indexRef.current !== index) {\n indexRef.current = index;\n onNavigate(event);\n }\n }\n const itemProps = {\n onFocus(event) {\n forceSyncFocusRef.current = true;\n syncCurrentTarget(event);\n },\n onClick: ({\n currentTarget\n }) => currentTarget.focus({\n preventScroll: true\n }),\n // Safari\n onMouseMove(event) {\n forceSyncFocusRef.current = true;\n forceScrollIntoViewRef.current = false;\n if (focusItemOnHover) {\n syncCurrentTarget(event);\n }\n },\n onPointerLeave(event) {\n if (!latestOpenRef.current || !isPointerModalityRef.current || event.pointerType === 'touch') {\n return;\n }\n forceSyncFocusRef.current = true;\n const relatedTarget = event.relatedTarget;\n if (!focusItemOnHover || listRef.current.includes(relatedTarget)) {\n return;\n }\n if (!resetOnPointerLeaveRef.current) {\n return;\n }\n enqueueFocus(null, {\n sync: true\n });\n indexRef.current = -1;\n onNavigate(event);\n if (!virtual) {\n floatingFocusElementRef.current?.focus({\n preventScroll: true\n });\n }\n }\n };\n return itemProps;\n }, [latestOpenRef, floatingFocusElementRef, focusItemOnHover, listRef, onNavigate, resetOnPointerLeaveRef, virtual]);\n const getParentOrientation = React.useCallback(() => {\n return parentOrientation ?? tree?.nodesRef.current.find(node => node.id === parentId)?.context?.dataRef?.current.orientation;\n }, [parentId, tree, parentOrientation]);\n const commonOnKeyDown = useStableCallback(event => {\n isPointerModalityRef.current = false;\n forceSyncFocusRef.current = true;\n\n // When composing a character, Chrome fires ArrowDown twice. Firefox/Safari\n // don't appear to suffer from this. `event.isComposing` is avoided due to\n // Safari not supporting it properly (although it's not needed in the first\n // place for Safari, just avoiding any possible issues).\n if (event.which === 229) {\n return;\n }\n\n // If the floating element is animating out, ignore navigation. Otherwise,\n // the `activeIndex` gets set to 0 despite not being open so the next time\n // the user ArrowDowns, the first item won't be focused.\n if (!latestOpenRef.current && event.currentTarget === floatingFocusElementRef.current) {\n return;\n }\n if (nested && isCrossOrientationCloseKey(event.key, orientation, rtl, cols)) {\n // If the nested list's close key is also the parent navigation key,\n // let the parent navigate. Otherwise, stop propagating the event.\n if (!isMainOrientationKey(event.key, getParentOrientation())) {\n stopEvent(event);\n }\n store.setOpen(false, createChangeEventDetails(REASONS.listNavigation, event.nativeEvent));\n if (isHTMLElement(domReferenceElement)) {\n if (virtual) {\n tree?.events.emit('virtualfocus', domReferenceElement);\n } else {\n domReferenceElement.focus();\n }\n }\n return;\n }\n const currentIndex = indexRef.current;\n const minIndex = getMinListIndex(listRef, disabledIndices);\n const maxIndex = getMaxListIndex(listRef, disabledIndices);\n if (!typeableComboboxReference) {\n if (event.key === 'Home') {\n stopEvent(event);\n indexRef.current = minIndex;\n onNavigate(event);\n }\n if (event.key === 'End') {\n stopEvent(event);\n indexRef.current = maxIndex;\n onNavigate(event);\n }\n }\n\n // Grid navigation.\n if (cols > 1) {\n const sizes = Array.from({\n length: listRef.current.length\n }, () => ({\n width: 1,\n height: 1\n }));\n // To calculate movements on the grid, we use hypothetical cell indices\n // as if every item was 1x1, then convert back to real indices.\n const cellMap = createGridCellMap(sizes, cols, false);\n const minGridIndex = cellMap.findIndex(index => index != null && !isListIndexDisabled(listRef, index, disabledIndices));\n // last enabled index\n const maxGridIndex = cellMap.reduce((foundIndex, index, cellIndex) => index != null && !isListIndexDisabled(listRef, index, disabledIndices) ? cellIndex : foundIndex, -1);\n const index = cellMap[getGridNavigatedIndex({\n current: cellMap.map(itemIndex => itemIndex != null ? listRef.current[itemIndex] : null)\n }, {\n event,\n orientation,\n loopFocus,\n rtl,\n cols,\n // treat undefined (empty grid spaces) as disabled indices so we\n // don't end up in them\n disabledIndices: getGridCellIndices([...((typeof disabledIndices !== 'function' ? disabledIndices : null) || listRef.current.map((_, listIndex) => isListIndexDisabled(listRef, listIndex, disabledIndices) ? listIndex : undefined)), undefined], cellMap),\n minIndex: minGridIndex,\n maxIndex: maxGridIndex,\n prevIndex: getGridCellIndexOfCorner(indexRef.current > maxIndex ? minIndex : indexRef.current, sizes, cellMap, cols,\n // use a corner matching the edge closest to the direction\n // we're moving in so we don't end up in the same item. Prefer\n // top/left over bottom/right.\n // eslint-disable-next-line no-nested-ternary\n event.key === ARROW_DOWN ? 'bl' : event.key === (rtl ? ARROW_LEFT : ARROW_RIGHT) ? 'tr' : 'tl'),\n stopEvent: true\n })];\n if (index != null) {\n indexRef.current = index;\n onNavigate(event);\n }\n if (orientation === 'both') {\n return;\n }\n }\n if (isMainOrientationKey(event.key, orientation)) {\n stopEvent(event);\n\n // Reset the index if no item is focused.\n if (open && !virtual && activeElement(event.currentTarget.ownerDocument) === event.currentTarget) {\n indexRef.current = isMainOrientationToEndKey(event.key, orientation, rtl) ? minIndex : maxIndex;\n onNavigate(event);\n return;\n }\n if (isMainOrientationToEndKey(event.key, orientation, rtl)) {\n if (loopFocus) {\n if (currentIndex >= maxIndex) {\n if (allowEscape && currentIndex !== listRef.current.length) {\n indexRef.current = -1;\n } else {\n // Give time for virtualizers to update the listRef.\n forceSyncFocusRef.current = false;\n indexRef.current = minIndex;\n }\n } else {\n indexRef.current = findNonDisabledListIndex(listRef, {\n startingIndex: currentIndex,\n disabledIndices\n });\n }\n } else {\n indexRef.current = Math.min(maxIndex, findNonDisabledListIndex(listRef, {\n startingIndex: currentIndex,\n disabledIndices\n }));\n }\n } else if (loopFocus) {\n if (currentIndex <= minIndex) {\n if (allowEscape && currentIndex !== -1) {\n indexRef.current = listRef.current.length;\n } else {\n // Give time for virtualizers to update the listRef.\n forceSyncFocusRef.current = false;\n indexRef.current = maxIndex;\n }\n } else {\n indexRef.current = findNonDisabledListIndex(listRef, {\n startingIndex: currentIndex,\n decrement: true,\n disabledIndices\n });\n }\n } else {\n indexRef.current = Math.max(minIndex, findNonDisabledListIndex(listRef, {\n startingIndex: currentIndex,\n decrement: true,\n disabledIndices\n }));\n }\n if (isIndexOutOfListBounds(listRef, indexRef.current)) {\n indexRef.current = -1;\n }\n onNavigate(event);\n }\n });\n const ariaActiveDescendantProp = React.useMemo(() => {\n return virtual && open && hasActiveIndex && {\n 'aria-activedescendant': `${id}-${activeIndex}`\n };\n }, [virtual, open, hasActiveIndex, id, activeIndex]);\n const floating = React.useMemo(() => {\n return {\n 'aria-orientation': orientation === 'both' ? undefined : orientation,\n ...(!typeableComboboxReference ? ariaActiveDescendantProp : {}),\n onKeyDown(event) {\n // Close submenu on Shift+Tab\n if (event.key === 'Tab' && event.shiftKey && open && !virtual) {\n // If the event originated from within a nested element (e.g., a Dialog opened from\n // within the menu), don't close the menu. The nested element has its own focus\n // management and should handle the Tab key.\n const target = getTarget(event.nativeEvent);\n if (target && !contains(floatingFocusElementRef.current, target)) {\n return;\n }\n stopEvent(event);\n store.setOpen(false, createChangeEventDetails(REASONS.focusOut, event.nativeEvent));\n if (isHTMLElement(domReferenceElement)) {\n domReferenceElement.focus();\n }\n return;\n }\n commonOnKeyDown(event);\n },\n onPointerMove() {\n isPointerModalityRef.current = true;\n }\n };\n }, [ariaActiveDescendantProp, commonOnKeyDown, floatingFocusElementRef, orientation, typeableComboboxReference, store, open, virtual, domReferenceElement]);\n const trigger = React.useMemo(() => {\n function checkVirtualMouse(event) {\n if (focusItemOnOpen === 'auto' && isVirtualClick(event.nativeEvent)) {\n focusItemOnOpenRef.current = !virtual;\n }\n }\n function checkVirtualPointer(event) {\n // `pointerdown` fires first, reset the state then perform the checks.\n focusItemOnOpenRef.current = focusItemOnOpen;\n if (focusItemOnOpen === 'auto' && isVirtualPointerEvent(event.nativeEvent)) {\n focusItemOnOpenRef.current = true;\n }\n }\n return {\n onKeyDown(event) {\n // non-reactive open state (to prevent re-creation of the handler)\n const currentOpen = store.select('open');\n isPointerModalityRef.current = false;\n const isArrowKey = event.key.startsWith('Arrow');\n const isParentCrossOpenKey = isCrossOrientationOpenKey(event.key, getParentOrientation(), rtl);\n const isMainKey = isMainOrientationKey(event.key, orientation);\n const isNavigationKey = (nested ? isParentCrossOpenKey : isMainKey) || event.key === 'Enter' || event.key.trim() === '';\n if (virtual && currentOpen) {\n return commonOnKeyDown(event);\n }\n\n // If a floating element should not open on arrow key down, avoid\n // setting `activeIndex` while it's closed.\n if (!currentOpen && !openOnArrowKeyDown && isArrowKey) {\n return undefined;\n }\n if (isNavigationKey) {\n const isParentMainKey = isMainOrientationKey(event.key, getParentOrientation());\n keyRef.current = nested && isParentMainKey ? null : event.key;\n }\n if (nested) {\n if (isParentCrossOpenKey) {\n stopEvent(event);\n if (currentOpen) {\n indexRef.current = getMinListIndex(listRef, disabledIndicesRef.current);\n onNavigate(event);\n } else {\n store.setOpen(true, createChangeEventDetails(REASONS.listNavigation, event.nativeEvent, event.currentTarget));\n }\n }\n return undefined;\n }\n if (isMainKey) {\n if (selectedIndexRef.current != null) {\n indexRef.current = selectedIndexRef.current;\n }\n stopEvent(event);\n if (!currentOpen && openOnArrowKeyDown) {\n store.setOpen(true, createChangeEventDetails(REASONS.listNavigation, event.nativeEvent, event.currentTarget));\n } else {\n commonOnKeyDown(event);\n }\n if (currentOpen) {\n onNavigate(event);\n }\n }\n return undefined;\n },\n onFocus(event) {\n if (store.select('open') && !virtual) {\n indexRef.current = -1;\n onNavigate(event);\n }\n },\n onPointerDown: checkVirtualPointer,\n onPointerEnter: checkVirtualPointer,\n onMouseDown: checkVirtualMouse,\n onClick: checkVirtualMouse\n };\n }, [commonOnKeyDown, disabledIndicesRef, focusItemOnOpen, listRef, nested, onNavigate, store, openOnArrowKeyDown, orientation, getParentOrientation, rtl, selectedIndexRef, virtual]);\n const reference = React.useMemo(() => {\n return {\n ...ariaActiveDescendantProp,\n ...trigger\n };\n }, [ariaActiveDescendantProp, trigger]);\n return React.useMemo(() => enabled ? {\n reference,\n floating,\n item,\n trigger\n } : {}, [enabled, reference, floating, trigger, item]);\n}","'use client';\n\nimport * as React from 'react';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useTimeout } from '@base-ui/utils/useTimeout';\nimport { contains, stopEvent } from \"../utils.js\";\n/**\n * Provides a matching callback that can be used to focus an item as the user\n * types, often used in tandem with `useListNavigation()`.\n * @see https://floating-ui.com/docs/useTypeahead\n */\nexport function useTypeahead(context, props) {\n const store = 'rootStore' in context ? context.rootStore : context;\n const dataRef = store.context.dataRef;\n const open = store.useState('open');\n const {\n listRef,\n activeIndex,\n onMatch: onMatchProp,\n onTypingChange,\n enabled = true,\n resetMs = 750,\n selectedIndex = null\n } = props;\n const timeout = useTimeout();\n const stringRef = React.useRef('');\n const prevIndexRef = React.useRef(selectedIndex ?? activeIndex ?? -1);\n const matchIndexRef = React.useRef(null);\n useIsoLayoutEffect(() => {\n if (!open && selectedIndex !== null) {\n return;\n }\n timeout.clear();\n matchIndexRef.current = null;\n if (stringRef.current !== '') {\n stringRef.current = '';\n }\n }, [open, selectedIndex, timeout]);\n useIsoLayoutEffect(() => {\n // Sync arrow key navigation but not typeahead navigation.\n if (open && stringRef.current === '') {\n prevIndexRef.current = selectedIndex ?? activeIndex ?? -1;\n }\n }, [open, selectedIndex, activeIndex]);\n const setTypingChange = useStableCallback(value => {\n if (value) {\n if (!dataRef.current.typing) {\n dataRef.current.typing = value;\n onTypingChange?.(value);\n }\n } else if (dataRef.current.typing) {\n dataRef.current.typing = value;\n onTypingChange?.(value);\n }\n });\n const onKeyDown = useStableCallback(event => {\n function getMatchingIndex(list, orderedList, string) {\n const str = orderedList.find(text => text?.toLocaleLowerCase().indexOf(string.toLocaleLowerCase()) === 0);\n return str ? list.indexOf(str) : -1;\n }\n const listContent = listRef.current;\n if (stringRef.current.length > 0 && stringRef.current[0] !== ' ') {\n if (getMatchingIndex(listContent, listContent, stringRef.current) === -1) {\n setTypingChange(false);\n } else if (event.key === ' ') {\n stopEvent(event);\n }\n }\n if (listContent == null ||\n // Character key.\n event.key.length !== 1 ||\n // Modifier key.\n event.ctrlKey || event.metaKey || event.altKey) {\n return;\n }\n if (open && event.key !== ' ') {\n stopEvent(event);\n setTypingChange(true);\n }\n\n // Capture whether this is a new typing session before mutating the string.\n const isNewSession = stringRef.current === '';\n if (isNewSession) {\n prevIndexRef.current = selectedIndex ?? activeIndex ?? -1;\n }\n\n // Bail out if the list contains a word like \"llama\" or \"aaron\". TODO:\n // allow it in this case, too.\n const allowRapidSuccessionOfFirstLetter = listContent.every(text => text ? text[0]?.toLocaleLowerCase() !== text[1]?.toLocaleLowerCase() : true);\n\n // Allows the user to cycle through items that start with the same letter\n // in rapid succession.\n if (allowRapidSuccessionOfFirstLetter && stringRef.current === event.key) {\n stringRef.current = '';\n prevIndexRef.current = matchIndexRef.current;\n }\n stringRef.current += event.key;\n timeout.start(resetMs, () => {\n stringRef.current = '';\n prevIndexRef.current = matchIndexRef.current;\n setTypingChange(false);\n });\n\n // Compute the starting index for this search.\n // If this is a new typing session (string is empty), base it on the current\n // selection/active item; otherwise continue from the last matched index.\n const prevIndex = isNewSession ? selectedIndex ?? activeIndex ?? -1 : prevIndexRef.current;\n const index = getMatchingIndex(listContent, [...listContent.slice((prevIndex || 0) + 1), ...listContent.slice(0, (prevIndex || 0) + 1)], stringRef.current);\n if (index !== -1) {\n onMatchProp?.(index);\n matchIndexRef.current = index;\n } else if (event.key !== ' ') {\n stringRef.current = '';\n setTypingChange(false);\n }\n });\n const onBlur = useStableCallback(event => {\n const next = event.relatedTarget;\n const currentDomReferenceElement = store.select('domReferenceElement');\n const currentFloatingElement = store.select('floatingElement');\n const withinReference = contains(currentDomReferenceElement, next);\n const withinFloating = contains(currentFloatingElement, next);\n\n // Keep the session if focus moves within the composite (reference <-> floating).\n if (withinReference || withinFloating) {\n return;\n }\n\n // End the current typing session when focus leaves the composite entirely.\n timeout.clear();\n stringRef.current = '';\n prevIndexRef.current = matchIndexRef.current;\n setTypingChange(false);\n });\n const reference = React.useMemo(() => ({\n onKeyDown,\n onBlur\n }), [onKeyDown, onBlur]);\n const floating = React.useMemo(() => {\n return {\n onKeyDown,\n onKeyUp(event) {\n if (event.key === ' ') {\n setTypingChange(false);\n }\n },\n onBlur\n };\n }, [onKeyDown, onBlur, setTypingChange]);\n return React.useMemo(() => enabled ? {\n reference,\n floating\n } : {}, [enabled, reference, floating]);\n}","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Card({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n return (\n <div\n data-slot=\"card\"\n data-size={size}\n className={cn(\"ring-foreground/10 bg-card text-card-foreground gap-4 overflow-hidden rounded-xl py-4 text-sm ring-1 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl group/card flex flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"gap-1 rounded-t-xl px-4 group-data-[size=sm]/card:px-3 [.border-b]:pb-4 group-data-[size=sm]/card:[.border-b]:pb-3 group/card-header @container/card-header grid auto-rows-min items-start has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"text-base leading-snug font-medium group-data-[size=sm]/card:text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-4 group-data-[size=sm]/card:px-3\", className)}\n {...props}\n />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"bg-muted/50 rounded-b-xl border-t p-4 group-data-[size=sm]/card:p-3 flex items-center\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const SelectRootContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") SelectRootContext.displayName = \"SelectRootContext\";\nexport const SelectFloatingContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") SelectFloatingContext.displayName = \"SelectFloatingContext\";\nexport function useSelectRootContext() {\n const context = React.useContext(SelectRootContext);\n if (context === null) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: SelectRootContext is missing. Select parts must be placed within <Select.Root>.' : _formatErrorMessage(60));\n }\n return context;\n}\nexport function useSelectFloatingContext() {\n const context = React.useContext(SelectFloatingContext);\n if (context === null) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: SelectFloatingContext is missing. Select parts must be placed within <Select.Root>.' : _formatErrorMessage(61));\n }\n return context;\n}","export const defaultItemEquality = (itemValue, selectedValue) => Object.is(itemValue, selectedValue);\nexport function compareItemEquality(itemValue, selectedValue, comparer) {\n if (itemValue == null || selectedValue == null) {\n return Object.is(itemValue, selectedValue);\n }\n return comparer(itemValue, selectedValue);\n}\nexport function selectedValueIncludes(selectedValues, itemValue, comparer) {\n if (!selectedValues || selectedValues.length === 0) {\n return false;\n }\n return selectedValues.some(selectedValue => {\n if (selectedValue === undefined) {\n return false;\n }\n return compareItemEquality(itemValue, selectedValue, comparer);\n });\n}\nexport function findItemIndex(itemValues, selectedValue, comparer) {\n if (!itemValues || itemValues.length === 0) {\n return -1;\n }\n return itemValues.findIndex(itemValue => {\n if (itemValue === undefined) {\n return false;\n }\n return compareItemEquality(itemValue, selectedValue, comparer);\n });\n}\nexport function removeItem(selectedValues, itemValue, comparer) {\n return selectedValues.filter(selectedValue => !compareItemEquality(itemValue, selectedValue, comparer));\n}","export function serializeValue(value) {\n if (value == null) {\n return '';\n }\n if (typeof value === 'string') {\n return value;\n }\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n}","'use client';\n\nimport * as React from 'react';\nimport { serializeValue } from \"./serializeValue.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function isGroupedItems(items) {\n return items != null && items.length > 0 && typeof items[0] === 'object' && items[0] != null && 'items' in items[0];\n}\n\n/**\n * Checks if the items array contains an item with a null value that has a non-null label.\n */\nexport function hasNullItemLabel(items) {\n if (!Array.isArray(items)) {\n return items != null && !('null' in items);\n }\n if (isGroupedItems(items)) {\n for (const group of items) {\n for (const item of group.items) {\n if (item && item.value == null && item.label != null) {\n return true;\n }\n }\n }\n return false;\n }\n for (const item of items) {\n if (item && item.value == null && item.label != null) {\n return true;\n }\n }\n return false;\n}\nexport function stringifyAsLabel(item, itemToStringLabel) {\n if (itemToStringLabel && item != null) {\n return itemToStringLabel(item) ?? '';\n }\n if (item && typeof item === 'object') {\n if ('label' in item && item.label != null) {\n return String(item.label);\n }\n if ('value' in item) {\n return String(item.value);\n }\n }\n return serializeValue(item);\n}\nexport function stringifyAsValue(item, itemToStringValue) {\n if (itemToStringValue && item != null) {\n return itemToStringValue(item) ?? '';\n }\n if (item && typeof item === 'object' && 'value' in item && 'label' in item) {\n return serializeValue(item.value);\n }\n return serializeValue(item);\n}\nexport function resolveSelectedLabel(value, items, itemToStringLabel) {\n function fallback() {\n return stringifyAsLabel(value, itemToStringLabel);\n }\n if (itemToStringLabel && value != null) {\n return itemToStringLabel(value);\n }\n\n // Custom object with explicit label takes precedence\n if (value && typeof value === 'object' && 'label' in value && value.label != null) {\n return value.label;\n }\n\n // Items provided as plain record map\n if (items && !Array.isArray(items)) {\n return items[value] ?? fallback();\n }\n\n // Items provided as array (flat or grouped)\n if (Array.isArray(items)) {\n const flatItems = isGroupedItems(items) ? items.flatMap(g => g.items) : items;\n if (value == null || typeof value !== 'object') {\n const match = flatItems.find(item => item.value === value);\n if (match && match.label != null) {\n return match.label;\n }\n return fallback();\n }\n\n // Object without explicit label: try matching by its `value` property\n if ('value' in value) {\n const match = flatItems.find(item => item && item.value === value.value);\n if (match && match.label != null) {\n return match.label;\n }\n }\n }\n return fallback();\n}\nexport function resolveMultipleLabels(values, items, itemToStringLabel) {\n return values.reduce((acc, value, index) => {\n if (index > 0) {\n acc.push(', ');\n }\n acc.push(/*#__PURE__*/_jsx(React.Fragment, {\n children: resolveSelectedLabel(value, items, itemToStringLabel)\n }, index));\n return acc;\n }, []);\n}","import { createSelector } from '@base-ui/utils/store';\nimport { compareItemEquality } from \"../utils/itemEquality.js\";\nimport { hasNullItemLabel, stringifyAsValue } from \"../utils/resolveValueLabel.js\";\nexport const selectors = {\n id: createSelector(state => state.id),\n modal: createSelector(state => state.modal),\n multiple: createSelector(state => state.multiple),\n items: createSelector(state => state.items),\n itemToStringLabel: createSelector(state => state.itemToStringLabel),\n itemToStringValue: createSelector(state => state.itemToStringValue),\n isItemEqualToValue: createSelector(state => state.isItemEqualToValue),\n value: createSelector(state => state.value),\n hasSelectedValue: createSelector(state => {\n const {\n value,\n multiple,\n itemToStringValue\n } = state;\n if (value == null) {\n return false;\n }\n if (multiple && Array.isArray(value)) {\n return value.length > 0;\n }\n return stringifyAsValue(value, itemToStringValue) !== '';\n }),\n hasNullItemLabel: createSelector((state, enabled) => {\n return enabled ? hasNullItemLabel(state.items) : false;\n }),\n open: createSelector(state => state.open),\n mounted: createSelector(state => state.mounted),\n forceMount: createSelector(state => state.forceMount),\n transitionStatus: createSelector(state => state.transitionStatus),\n openMethod: createSelector(state => state.openMethod),\n activeIndex: createSelector(state => state.activeIndex),\n selectedIndex: createSelector(state => state.selectedIndex),\n isActive: createSelector((state, index) => state.activeIndex === index),\n isSelected: createSelector((state, index, itemValue) => {\n const comparer = state.isItemEqualToValue;\n const storeValue = state.value;\n if (state.multiple) {\n return Array.isArray(storeValue) && storeValue.some(selectedItem => compareItemEquality(itemValue, selectedItem, comparer));\n }\n\n // `selectedIndex` is only updated after the items mount for the first time,\n // the value check avoids a re-render for the initially selected item.\n if (state.selectedIndex === index && state.selectedIndex !== null) {\n return true;\n }\n return compareItemEquality(itemValue, storeValue, comparer);\n }),\n isSelectedByFocus: createSelector((state, index) => {\n return state.selectedIndex === index;\n }),\n popupProps: createSelector(state => state.popupProps),\n triggerProps: createSelector(state => state.triggerProps),\n triggerElement: createSelector(state => state.triggerElement),\n positionerElement: createSelector(state => state.positionerElement),\n listElement: createSelector(state => state.listElement),\n scrollUpArrowVisible: createSelector(state => state.scrollUpArrowVisible),\n scrollDownArrowVisible: createSelector(state => state.scrollDownArrowVisible),\n hasScrollArrows: createSelector(state => state.hasScrollArrows)\n};","'use client';\n\nimport * as React from 'react';\nimport { visuallyHidden, visuallyHiddenInput } from '@base-ui/utils/visuallyHidden';\nimport { useMergedRefs } from '@base-ui/utils/useMergedRefs';\nimport { useRefWithInit } from '@base-ui/utils/useRefWithInit';\nimport { useOnFirstRender } from '@base-ui/utils/useOnFirstRender';\nimport { useControlled } from '@base-ui/utils/useControlled';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useValueAsRef } from '@base-ui/utils/useValueAsRef';\nimport { useStore, Store } from '@base-ui/utils/store';\nimport { useClick, useDismiss, useFloatingRootContext, useInteractions, useListNavigation, useTypeahead } from \"../../floating-ui-react/index.js\";\nimport { SelectRootContext, SelectFloatingContext } from \"./SelectRootContext.js\";\nimport { useFieldRootContext } from \"../../field/root/FieldRootContext.js\";\nimport { useLabelableId } from \"../../labelable-provider/useLabelableId.js\";\nimport { useTransitionStatus } from \"../../utils/useTransitionStatus.js\";\nimport { selectors } from \"../store.js\";\nimport { createChangeEventDetails } from \"../../utils/createBaseUIEventDetails.js\";\nimport { REASONS } from \"../../utils/reasons.js\";\nimport { useOpenChangeComplete } from \"../../utils/useOpenChangeComplete.js\";\nimport { useFormContext } from \"../../form/FormContext.js\";\nimport { useField } from \"../../field/useField.js\";\nimport { stringifyAsValue } from \"../../utils/resolveValueLabel.js\";\nimport { EMPTY_ARRAY, EMPTY_OBJECT } from \"../../utils/constants.js\";\nimport { defaultItemEquality, findItemIndex } from \"../../utils/itemEquality.js\";\nimport { useValueChanged } from \"../../utils/useValueChanged.js\";\nimport { useOpenInteractionType } from \"../../utils/useOpenInteractionType.js\";\nimport { mergeProps } from \"../../merge-props/index.js\";\n\n/**\n * Groups all parts of the select.\n * Doesn’t render its own HTML element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function SelectRoot(props) {\n const {\n id,\n value: valueProp,\n defaultValue = null,\n onValueChange,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n name: nameProp,\n autoComplete,\n disabled: disabledProp = false,\n readOnly = false,\n required = false,\n modal = true,\n actionsRef,\n inputRef,\n onOpenChangeComplete,\n items,\n multiple = false,\n itemToStringLabel,\n itemToStringValue,\n isItemEqualToValue = defaultItemEquality,\n highlightItemOnHover = true,\n children\n } = props;\n const {\n clearErrors\n } = useFormContext();\n const {\n setDirty,\n setTouched,\n setFocused,\n shouldValidateOnChange,\n validityData,\n setFilled,\n name: fieldName,\n disabled: fieldDisabled,\n validation,\n validationMode\n } = useFieldRootContext();\n const generatedId = useLabelableId({\n id\n });\n const disabled = fieldDisabled || disabledProp;\n const name = fieldName ?? nameProp;\n const [value, setValueUnwrapped] = useControlled({\n controlled: valueProp,\n default: multiple ? defaultValue ?? EMPTY_ARRAY : defaultValue,\n name: 'Select',\n state: 'value'\n });\n const [open, setOpenUnwrapped] = useControlled({\n controlled: openProp,\n default: defaultOpen,\n name: 'Select',\n state: 'open'\n });\n const listRef = React.useRef([]);\n const labelsRef = React.useRef([]);\n const popupRef = React.useRef(null);\n const scrollHandlerRef = React.useRef(null);\n const scrollArrowsMountedCountRef = React.useRef(0);\n const valueRef = React.useRef(null);\n const valuesRef = React.useRef([]);\n const typingRef = React.useRef(false);\n const keyboardActiveRef = React.useRef(false);\n const selectedItemTextRef = React.useRef(null);\n const selectionRef = React.useRef({\n allowSelectedMouseUp: false,\n allowUnselectedMouseUp: false\n });\n const alignItemWithTriggerActiveRef = React.useRef(false);\n const {\n mounted,\n setMounted,\n transitionStatus\n } = useTransitionStatus(open);\n const {\n openMethod,\n triggerProps: interactionTypeProps,\n reset: resetOpenInteractionType\n } = useOpenInteractionType(open);\n const store = useRefWithInit(() => new Store({\n id: generatedId,\n modal,\n multiple,\n itemToStringLabel,\n itemToStringValue,\n isItemEqualToValue,\n value,\n open,\n mounted,\n transitionStatus,\n items,\n forceMount: false,\n openMethod: null,\n activeIndex: null,\n selectedIndex: null,\n popupProps: {},\n triggerProps: {},\n triggerElement: null,\n positionerElement: null,\n listElement: null,\n scrollUpArrowVisible: false,\n scrollDownArrowVisible: false,\n hasScrollArrows: false\n })).current;\n const activeIndex = useStore(store, selectors.activeIndex);\n const selectedIndex = useStore(store, selectors.selectedIndex);\n const triggerElement = useStore(store, selectors.triggerElement);\n const positionerElement = useStore(store, selectors.positionerElement);\n const serializedValue = React.useMemo(() => {\n if (multiple && Array.isArray(value) && value.length === 0) {\n return '';\n }\n return stringifyAsValue(value, itemToStringValue);\n }, [multiple, value, itemToStringValue]);\n const fieldStringValue = React.useMemo(() => {\n if (multiple && Array.isArray(value)) {\n return value.map(currentValue => stringifyAsValue(currentValue, itemToStringValue));\n }\n return stringifyAsValue(value, itemToStringValue);\n }, [multiple, value, itemToStringValue]);\n const controlRef = useValueAsRef(store.state.triggerElement);\n useField({\n id: generatedId,\n commit: validation.commit,\n value,\n controlRef,\n name,\n getValue: () => fieldStringValue\n });\n const initialValueRef = React.useRef(value);\n useIsoLayoutEffect(() => {\n // Ensure the values and labels are registered for programmatic value changes.\n if (value !== initialValueRef.current) {\n store.set('forceMount', true);\n }\n }, [store, value]);\n useIsoLayoutEffect(() => {\n setFilled(multiple ? Array.isArray(value) && value.length > 0 : value != null);\n }, [multiple, value, setFilled]);\n useIsoLayoutEffect(function syncSelectedIndex() {\n if (open) {\n return;\n }\n const registry = valuesRef.current;\n if (multiple) {\n const currentValue = Array.isArray(value) ? value : [];\n if (currentValue.length === 0) {\n store.set('selectedIndex', null);\n return;\n }\n const lastValue = currentValue[currentValue.length - 1];\n const lastIndex = findItemIndex(registry, lastValue, isItemEqualToValue);\n store.set('selectedIndex', lastIndex === -1 ? null : lastIndex);\n return;\n }\n const index = findItemIndex(registry, value, isItemEqualToValue);\n store.set('selectedIndex', index === -1 ? null : index);\n }, [multiple, open, value, valuesRef, isItemEqualToValue, store]);\n useValueChanged(value, () => {\n clearErrors(name);\n setDirty(value !== validityData.initialValue);\n if (shouldValidateOnChange()) {\n validation.commit(value);\n } else {\n validation.commit(value, true);\n }\n });\n const setOpen = useStableCallback((nextOpen, eventDetails) => {\n onOpenChange?.(nextOpen, eventDetails);\n if (eventDetails.isCanceled) {\n return;\n }\n setOpenUnwrapped(nextOpen);\n if (!nextOpen && (eventDetails.reason === REASONS.focusOut || eventDetails.reason === REASONS.outsidePress)) {\n setTouched(true);\n setFocused(false);\n if (validationMode === 'onBlur') {\n validation.commit(value);\n }\n }\n\n // The active index will sync to the last selected index on the next open.\n // Workaround `enableFocusInside` in Floating UI setting `tabindex=0` of a non-highlighted\n // option upon close when tabbing out due to `keepMounted=true`:\n // https://github.com/floating-ui/floating-ui/pull/3004/files#diff-962a7439cdeb09ea98d4b622a45d517bce07ad8c3f866e089bda05f4b0bbd875R194-R199\n // This otherwise causes options to retain `tabindex=0` incorrectly when the popup is closed\n // when tabbing outside.\n if (!nextOpen && store.state.activeIndex !== null) {\n const activeOption = listRef.current[store.state.activeIndex];\n // Wait for Floating UI's focus effect to have fired\n queueMicrotask(() => {\n activeOption?.setAttribute('tabindex', '-1');\n });\n }\n });\n const handleUnmount = useStableCallback(() => {\n setMounted(false);\n store.set('activeIndex', null);\n resetOpenInteractionType();\n onOpenChangeComplete?.(false);\n });\n useOpenChangeComplete({\n enabled: !actionsRef,\n open,\n ref: popupRef,\n onComplete() {\n if (!open) {\n handleUnmount();\n }\n }\n });\n React.useImperativeHandle(actionsRef, () => ({\n unmount: handleUnmount\n }), [handleUnmount]);\n const setValue = useStableCallback((nextValue, eventDetails) => {\n onValueChange?.(nextValue, eventDetails);\n if (eventDetails.isCanceled) {\n return;\n }\n setValueUnwrapped(nextValue);\n });\n const handleScrollArrowVisibility = useStableCallback(() => {\n const scroller = store.state.listElement || popupRef.current;\n if (!scroller) {\n return;\n }\n const viewportTop = scroller.scrollTop;\n const viewportBottom = scroller.scrollTop + scroller.clientHeight;\n const shouldShowUp = viewportTop > 1;\n const shouldShowDown = viewportBottom < scroller.scrollHeight - 1;\n if (store.state.scrollUpArrowVisible !== shouldShowUp) {\n store.set('scrollUpArrowVisible', shouldShowUp);\n }\n if (store.state.scrollDownArrowVisible !== shouldShowDown) {\n store.set('scrollDownArrowVisible', shouldShowDown);\n }\n });\n const floatingContext = useFloatingRootContext({\n open,\n onOpenChange: setOpen,\n elements: {\n reference: triggerElement,\n floating: positionerElement\n }\n });\n const click = useClick(floatingContext, {\n enabled: !readOnly && !disabled,\n event: 'mousedown'\n });\n const dismiss = useDismiss(floatingContext, {\n bubbles: false\n });\n const listNavigation = useListNavigation(floatingContext, {\n enabled: !readOnly && !disabled,\n listRef,\n activeIndex,\n selectedIndex,\n disabledIndices: EMPTY_ARRAY,\n onNavigate(nextActiveIndex) {\n // Retain the highlight while transitioning out.\n if (nextActiveIndex === null && !open) {\n return;\n }\n store.set('activeIndex', nextActiveIndex);\n },\n // Implement our own listeners since `onPointerLeave` on each option fires while scrolling with\n // the `alignItemWithTrigger=true`, causing a performance issue on Chrome.\n focusItemOnHover: false\n });\n const typeahead = useTypeahead(floatingContext, {\n enabled: !readOnly && !disabled && (open || !multiple),\n listRef: labelsRef,\n activeIndex,\n selectedIndex,\n onMatch(index) {\n if (open) {\n store.set('activeIndex', index);\n } else {\n setValue(valuesRef.current[index], createChangeEventDetails('none'));\n }\n },\n onTypingChange(typing) {\n // FIXME: Floating UI doesn't support allowing space to select an item while the popup is\n // closed and the trigger isn't a native <button>.\n typingRef.current = typing;\n }\n });\n const {\n getReferenceProps,\n getFloatingProps,\n getItemProps\n } = useInteractions([click, dismiss, listNavigation, typeahead]);\n const mergedTriggerProps = React.useMemo(() => {\n return mergeProps(getReferenceProps(), interactionTypeProps, generatedId ? {\n id: generatedId\n } : EMPTY_OBJECT);\n }, [getReferenceProps, interactionTypeProps, generatedId]);\n useOnFirstRender(() => {\n store.update({\n popupProps: getFloatingProps(),\n triggerProps: mergedTriggerProps\n });\n });\n useIsoLayoutEffect(() => {\n store.update({\n id: generatedId,\n modal,\n multiple,\n value,\n open,\n mounted,\n transitionStatus,\n popupProps: getFloatingProps(),\n triggerProps: mergedTriggerProps,\n items,\n itemToStringLabel,\n itemToStringValue,\n isItemEqualToValue,\n openMethod\n });\n }, [store, generatedId, modal, multiple, value, open, mounted, transitionStatus, getFloatingProps, mergedTriggerProps, items, itemToStringLabel, itemToStringValue, isItemEqualToValue, openMethod]);\n const contextValue = React.useMemo(() => ({\n store,\n name,\n required,\n disabled,\n readOnly,\n multiple,\n itemToStringLabel,\n itemToStringValue,\n highlightItemOnHover,\n setValue,\n setOpen,\n listRef,\n popupRef,\n scrollHandlerRef,\n handleScrollArrowVisibility,\n scrollArrowsMountedCountRef,\n getItemProps,\n events: floatingContext.context.events,\n valueRef,\n valuesRef,\n labelsRef,\n typingRef,\n selectionRef,\n selectedItemTextRef,\n validation,\n onOpenChangeComplete,\n keyboardActiveRef,\n alignItemWithTriggerActiveRef,\n initialValueRef\n }), [store, name, required, disabled, readOnly, multiple, itemToStringLabel, itemToStringValue, highlightItemOnHover, setValue, setOpen, getItemProps, floatingContext.context.events, validation, onOpenChangeComplete, handleScrollArrowVisibility]);\n const ref = useMergedRefs(inputRef, validation.inputRef);\n const hasMultipleSelection = multiple && Array.isArray(value) && value.length > 0;\n const hiddenInputs = React.useMemo(() => {\n if (!multiple || !Array.isArray(value) || !name) {\n return null;\n }\n return value.map(v => {\n const currentSerializedValue = stringifyAsValue(v, itemToStringValue);\n return /*#__PURE__*/_jsx(\"input\", {\n type: \"hidden\",\n name: name,\n value: currentSerializedValue\n }, currentSerializedValue);\n });\n }, [multiple, value, name, itemToStringValue]);\n return /*#__PURE__*/_jsx(SelectRootContext.Provider, {\n value: contextValue,\n children: /*#__PURE__*/_jsxs(SelectFloatingContext.Provider, {\n value: floatingContext,\n children: [children, /*#__PURE__*/_jsx(\"input\", {\n ...validation.getInputValidationProps({\n onFocus() {\n // Move focus to the trigger element when the hidden input is focused.\n store.state.triggerElement?.focus({\n // Supported in Chrome from 144 (January 2026)\n // @ts-expect-error - focusVisible is not yet in the lib.dom.d.ts\n focusVisible: true\n });\n },\n // Handle browser autofill.\n onChange(event) {\n // Workaround for https://github.com/facebook/react/issues/9023\n if (event.nativeEvent.defaultPrevented) {\n return;\n }\n const nextValue = event.target.value;\n const details = createChangeEventDetails(REASONS.none, event.nativeEvent);\n function handleChange() {\n if (multiple) {\n // Browser autofill only writes a single scalar value.\n return;\n }\n\n // Handle single selection: match against registered values using serialization\n const matchingValue = valuesRef.current.find(v => {\n const candidate = stringifyAsValue(v, itemToStringValue);\n if (candidate.toLowerCase() === nextValue.toLowerCase()) {\n return true;\n }\n return false;\n });\n if (matchingValue != null) {\n setDirty(matchingValue !== validityData.initialValue);\n setValue(matchingValue, details);\n if (shouldValidateOnChange()) {\n validation.commit(matchingValue);\n }\n }\n }\n store.set('forceMount', true);\n queueMicrotask(handleChange);\n }\n }),\n name: multiple ? undefined : name,\n autoComplete: autoComplete,\n value: serializedValue,\n disabled: disabled,\n required: required && !hasMultipleSelection,\n readOnly: readOnly,\n ref: ref,\n style: name ? visuallyHiddenInput : visuallyHidden,\n tabIndex: -1,\n \"aria-hidden\": true\n }), hiddenInputs]\n })\n });\n}","export function getPseudoElementBounds(element) {\n const elementRect = element.getBoundingClientRect();\n\n // Avoid \"Not implemented: window.getComputedStyle(elt, pseudoElt)\"\n if (process.env.NODE_ENV !== 'production') {\n return elementRect;\n }\n const beforeStyles = window.getComputedStyle(element, '::before');\n const afterStyles = window.getComputedStyle(element, '::after');\n const hasPseudoElements = beforeStyles.content !== 'none' || afterStyles.content !== 'none';\n if (!hasPseudoElements) {\n return elementRect;\n }\n\n // Get dimensions of pseudo-elements\n const beforeWidth = parseFloat(beforeStyles.width) || 0;\n const beforeHeight = parseFloat(beforeStyles.height) || 0;\n const afterWidth = parseFloat(afterStyles.width) || 0;\n const afterHeight = parseFloat(afterStyles.height) || 0;\n\n // Calculate max dimensions including pseudo-elements\n const totalWidth = Math.max(elementRect.width, beforeWidth, afterWidth);\n const totalHeight = Math.max(elementRect.height, beforeHeight, afterHeight);\n\n // Calculate the differences to extend the bounds\n const widthDiff = totalWidth - elementRect.width;\n const heightDiff = totalHeight - elementRect.height;\n return {\n left: elementRect.left - widthDiff / 2,\n right: elementRect.right + widthDiff / 2,\n top: elementRect.top - heightDiff / 2,\n bottom: elementRect.bottom + heightDiff / 2\n };\n}","'use client';\n\nimport * as React from 'react';\nimport { ownerDocument } from '@base-ui/utils/owner';\nimport { useTimeout } from '@base-ui/utils/useTimeout';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useMergedRefs } from '@base-ui/utils/useMergedRefs';\nimport { useValueAsRef } from '@base-ui/utils/useValueAsRef';\nimport { useStore } from '@base-ui/utils/store';\nimport { useSelectRootContext } from \"../root/SelectRootContext.js\";\nimport { useFieldRootContext } from \"../../field/root/FieldRootContext.js\";\nimport { useLabelableContext } from \"../../labelable-provider/LabelableContext.js\";\nimport { pressableTriggerOpenStateMapping } from \"../../utils/popupStateMapping.js\";\nimport { fieldValidityMapping } from \"../../field/utils/constants.js\";\nimport { useRenderElement } from \"../../utils/useRenderElement.js\";\nimport { selectors } from \"../store.js\";\nimport { getPseudoElementBounds } from \"../../utils/getPseudoElementBounds.js\";\nimport { contains, getFloatingFocusElement } from \"../../floating-ui-react/utils.js\";\nimport { mergeProps } from \"../../merge-props/index.js\";\nimport { useButton } from \"../../use-button/index.js\";\nimport { createChangeEventDetails } from \"../../utils/createBaseUIEventDetails.js\";\nimport { REASONS } from \"../../utils/reasons.js\";\nimport { useLabelableId } from \"../../labelable-provider/useLabelableId.js\";\nconst BOUNDARY_OFFSET = 2;\nconst SELECTED_DELAY = 400;\nconst UNSELECTED_DELAY = 200;\nconst stateAttributesMapping = {\n ...pressableTriggerOpenStateMapping,\n ...fieldValidityMapping,\n value: () => null\n};\n\n/**\n * A button that opens the select popup.\n * Renders a `<button>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nexport const SelectTrigger = /*#__PURE__*/React.forwardRef(function SelectTrigger(componentProps, forwardedRef) {\n const {\n render,\n className,\n id: idProp,\n disabled: disabledProp = false,\n nativeButton = true,\n ...elementProps\n } = componentProps;\n const {\n setTouched,\n setFocused,\n validationMode,\n state: fieldState,\n disabled: fieldDisabled\n } = useFieldRootContext();\n const {\n labelId\n } = useLabelableContext();\n const {\n store,\n setOpen,\n selectionRef,\n validation,\n readOnly,\n required,\n alignItemWithTriggerActiveRef,\n disabled: selectDisabled,\n keyboardActiveRef\n } = useSelectRootContext();\n const disabled = fieldDisabled || selectDisabled || disabledProp;\n const open = useStore(store, selectors.open);\n const value = useStore(store, selectors.value);\n const triggerProps = useStore(store, selectors.triggerProps);\n const positionerElement = useStore(store, selectors.positionerElement);\n const listElement = useStore(store, selectors.listElement);\n const rootId = useStore(store, selectors.id);\n const hasSelectedValue = useStore(store, selectors.hasSelectedValue);\n const shouldCheckNullItemLabel = !hasSelectedValue && open;\n const hasNullItemLabel = useStore(store, selectors.hasNullItemLabel, shouldCheckNullItemLabel);\n const id = idProp ?? rootId;\n useLabelableId({\n id\n });\n const positionerRef = useValueAsRef(positionerElement);\n const triggerRef = React.useRef(null);\n const {\n getButtonProps,\n buttonRef\n } = useButton({\n disabled,\n native: nativeButton\n });\n const setTriggerElement = useStableCallback(element => {\n store.set('triggerElement', element);\n });\n const mergedRef = useMergedRefs(forwardedRef, triggerRef, buttonRef, setTriggerElement);\n const timeoutFocus = useTimeout();\n const timeoutMouseDown = useTimeout();\n const selectedDelayTimeout = useTimeout();\n const unselectedDelayTimeout = useTimeout();\n React.useEffect(() => {\n if (open) {\n const hasSelectedItemInList = hasSelectedValue || hasNullItemLabel;\n const shouldDelayUnselectedMouseUpLonger = !hasSelectedItemInList;\n\n // When there is no selected item in the list (placeholder-only selects), a mousedown\n // on the trigger followed by a quick mouseup over the first option can accidentally select\n // within 200ms. Delay unselected mouseup to match the safer 400ms window.\n if (shouldDelayUnselectedMouseUpLonger) {\n selectedDelayTimeout.start(SELECTED_DELAY, () => {\n selectionRef.current.allowUnselectedMouseUp = true;\n selectionRef.current.allowSelectedMouseUp = true;\n });\n } else {\n // mousedown -> move to unselected item -> mouseup should not select within 200ms.\n unselectedDelayTimeout.start(UNSELECTED_DELAY, () => {\n selectionRef.current.allowUnselectedMouseUp = true;\n\n // mousedown -> mouseup on selected item should not select within 400ms.\n selectedDelayTimeout.start(UNSELECTED_DELAY, () => {\n selectionRef.current.allowSelectedMouseUp = true;\n });\n });\n }\n return () => {\n selectedDelayTimeout.clear();\n unselectedDelayTimeout.clear();\n };\n }\n selectionRef.current = {\n allowSelectedMouseUp: false,\n allowUnselectedMouseUp: false\n };\n timeoutMouseDown.clear();\n return undefined;\n }, [open, hasSelectedValue, hasNullItemLabel, selectionRef, timeoutMouseDown, selectedDelayTimeout, unselectedDelayTimeout]);\n const ariaControlsId = React.useMemo(() => {\n return listElement?.id ?? getFloatingFocusElement(positionerElement)?.id;\n }, [listElement, positionerElement]);\n const props = mergeProps(triggerProps, {\n id,\n role: 'combobox',\n 'aria-expanded': open ? 'true' : 'false',\n 'aria-haspopup': 'listbox',\n 'aria-controls': open ? ariaControlsId : undefined,\n 'aria-labelledby': labelId,\n 'aria-readonly': readOnly || undefined,\n 'aria-required': required || undefined,\n tabIndex: disabled ? -1 : 0,\n ref: mergedRef,\n onFocus(event) {\n setFocused(true);\n\n // The popup element shouldn't obscure the focused trigger.\n if (open && alignItemWithTriggerActiveRef.current) {\n setOpen(false, createChangeEventDetails(REASONS.none, event.nativeEvent));\n }\n\n // Saves a re-render on initial click: `forceMount === true` mounts\n // the items before `open === true`. We could sync those cycles better\n // without a timeout, but this is enough for now.\n //\n // XXX: might be causing `act()` warnings.\n timeoutFocus.start(0, () => {\n store.set('forceMount', true);\n });\n },\n onBlur(event) {\n // If focus is moving into the popup, don't count it as a blur.\n if (contains(positionerElement, event.relatedTarget)) {\n return;\n }\n setTouched(true);\n setFocused(false);\n if (validationMode === 'onBlur') {\n validation.commit(value);\n }\n },\n onPointerMove() {\n keyboardActiveRef.current = false;\n },\n onKeyDown() {\n keyboardActiveRef.current = true;\n },\n onMouseDown(event) {\n if (open) {\n return;\n }\n const doc = ownerDocument(event.currentTarget);\n function handleMouseUp(mouseEvent) {\n if (!triggerRef.current) {\n return;\n }\n const mouseUpTarget = mouseEvent.target;\n\n // Early return if clicked on trigger element or its children\n if (contains(triggerRef.current, mouseUpTarget) || contains(positionerRef.current, mouseUpTarget) || mouseUpTarget === triggerRef.current) {\n return;\n }\n const bounds = getPseudoElementBounds(triggerRef.current);\n if (mouseEvent.clientX >= bounds.left - BOUNDARY_OFFSET && mouseEvent.clientX <= bounds.right + BOUNDARY_OFFSET && mouseEvent.clientY >= bounds.top - BOUNDARY_OFFSET && mouseEvent.clientY <= bounds.bottom + BOUNDARY_OFFSET) {\n return;\n }\n setOpen(false, createChangeEventDetails(REASONS.cancelOpen, mouseEvent));\n }\n\n // Firefox can fire this upon mousedown\n timeoutMouseDown.start(0, () => {\n doc.addEventListener('mouseup', handleMouseUp, {\n once: true\n });\n });\n }\n }, validation.getValidationProps, elementProps, getButtonProps);\n\n // ensure nested useButton does not overwrite the combobox role:\n // <Toolbar.Button render={<Select.Trigger />} />\n props.role = 'combobox';\n const state = {\n ...fieldState,\n open,\n disabled,\n value,\n readOnly,\n placeholder: !hasSelectedValue\n };\n return useRenderElement('button', componentProps, {\n ref: [forwardedRef, triggerRef],\n state,\n stateAttributesMapping,\n props\n });\n});\nif (process.env.NODE_ENV !== \"production\") SelectTrigger.displayName = \"SelectTrigger\";","'use client';\n\nimport * as React from 'react';\nimport { useStore } from '@base-ui/utils/store';\nimport { useRenderElement } from \"../../utils/useRenderElement.js\";\nimport { useSelectRootContext } from \"../root/SelectRootContext.js\";\nimport { resolveMultipleLabels, resolveSelectedLabel } from \"../../utils/resolveValueLabel.js\";\nimport { selectors } from \"../store.js\";\nconst stateAttributesMapping = {\n value: () => null\n};\n\n/**\n * A text label of the currently selected item.\n * Renders a `<span>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nexport const SelectValue = /*#__PURE__*/React.forwardRef(function SelectValue(componentProps, forwardedRef) {\n const {\n className,\n render,\n children: childrenProp,\n placeholder,\n ...elementProps\n } = componentProps;\n const {\n store,\n valueRef\n } = useSelectRootContext();\n const value = useStore(store, selectors.value);\n const items = useStore(store, selectors.items);\n const itemToStringLabel = useStore(store, selectors.itemToStringLabel);\n const hasSelectedValue = useStore(store, selectors.hasSelectedValue);\n const shouldCheckNullItemLabel = !hasSelectedValue && placeholder != null && childrenProp == null;\n const hasNullLabel = useStore(store, selectors.hasNullItemLabel, shouldCheckNullItemLabel);\n const state = {\n value,\n placeholder: !hasSelectedValue\n };\n let children = null;\n if (typeof childrenProp === 'function') {\n children = childrenProp(value);\n } else if (childrenProp != null) {\n children = childrenProp;\n } else if (!hasSelectedValue && placeholder != null && !hasNullLabel) {\n children = placeholder;\n } else if (Array.isArray(value)) {\n children = resolveMultipleLabels(value, items, itemToStringLabel);\n } else {\n children = resolveSelectedLabel(value, items, itemToStringLabel);\n }\n const element = useRenderElement('span', componentProps, {\n state,\n ref: [forwardedRef, valueRef],\n props: [{\n children\n }, elementProps],\n stateAttributesMapping\n });\n return element;\n});\nif (process.env.NODE_ENV !== \"production\") SelectValue.displayName = \"SelectValue\";","'use client';\n\nimport * as React from 'react';\nimport { useStore } from '@base-ui/utils/store';\nimport { useRenderElement } from \"../../utils/useRenderElement.js\";\nimport { useSelectRootContext } from \"../root/SelectRootContext.js\";\nimport { triggerOpenStateMapping } from \"../../utils/popupStateMapping.js\";\nimport { selectors } from \"../store.js\";\n\n/**\n * An icon that indicates that the trigger button opens a select popup.\n * Renders a `<span>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nexport const SelectIcon = /*#__PURE__*/React.forwardRef(function SelectIcon(componentProps, forwardedRef) {\n const {\n className,\n render,\n ...elementProps\n } = componentProps;\n const {\n store\n } = useSelectRootContext();\n const open = useStore(store, selectors.open);\n const state = {\n open\n };\n const element = useRenderElement('span', componentProps, {\n state,\n ref: forwardedRef,\n props: [{\n 'aria-hidden': true,\n children: '▼'\n }, elementProps],\n stateAttributesMapping: triggerOpenStateMapping\n });\n return element;\n});\nif (process.env.NODE_ENV !== \"production\") SelectIcon.displayName = \"SelectIcon\";","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const SelectPortalContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") SelectPortalContext.displayName = \"SelectPortalContext\";\nexport function useSelectPortalContext() {\n const value = React.useContext(SelectPortalContext);\n if (value === undefined) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: <Select.Portal> is missing.' : _formatErrorMessage(58));\n }\n return value;\n}","'use client';\n\nimport * as React from 'react';\nimport { useStore } from '@base-ui/utils/store';\nimport { FloatingPortal } from \"../../floating-ui-react/index.js\";\nimport { SelectPortalContext } from \"./SelectPortalContext.js\";\nimport { useSelectRootContext } from \"../root/SelectRootContext.js\";\nimport { selectors } from \"../store.js\";\n\n/**\n * A portal element that moves the popup to a different part of the DOM.\n * By default, the portal element is appended to `<body>`.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const SelectPortal = /*#__PURE__*/React.forwardRef(function SelectPortal(portalProps, forwardedRef) {\n const {\n store\n } = useSelectRootContext();\n const mounted = useStore(store, selectors.mounted);\n const forceMount = useStore(store, selectors.forceMount);\n const shouldRender = mounted || forceMount;\n if (!shouldRender) {\n return null;\n }\n return /*#__PURE__*/_jsx(SelectPortalContext.Provider, {\n value: true,\n children: /*#__PURE__*/_jsx(FloatingPortal, {\n ref: forwardedRef,\n ...portalProps\n })\n });\n});\nif (process.env.NODE_ENV !== \"production\") SelectPortal.displayName = \"SelectPortal\";","'use client';\n\nimport * as React from 'react';\nexport const CompositeListContext = /*#__PURE__*/React.createContext({\n register: () => {},\n unregister: () => {},\n subscribeMapChange: () => {\n return () => {};\n },\n elementsRef: {\n current: []\n },\n nextIndexRef: {\n current: 0\n }\n});\nif (process.env.NODE_ENV !== \"production\") CompositeListContext.displayName = \"CompositeListContext\";\nexport function useCompositeListContext() {\n return React.useContext(CompositeListContext);\n}","/* eslint-disable no-bitwise */\n'use client';\n\nimport * as React from 'react';\nimport { useRefWithInit } from '@base-ui/utils/useRefWithInit';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { CompositeListContext } from \"./CompositeListContext.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Provides context for a list of items in a composite component.\n * @internal\n */\nexport function CompositeList(props) {\n const {\n children,\n elementsRef,\n labelsRef,\n onMapChange: onMapChangeProp\n } = props;\n const onMapChange = useStableCallback(onMapChangeProp);\n const nextIndexRef = React.useRef(0);\n const listeners = useRefWithInit(createListeners).current;\n\n // We use a stable `map` to avoid O(n^2) re-allocation costs for large lists.\n // `mapTick` is our re-render trigger mechanism. We also need to update the\n // elements and label refs, but there's a lot of async work going on and sometimes\n // the effect that handles `onMapChange` gets called after those refs have been\n // filled, and we don't want to lose those values by setting their lengths to `0`.\n // We also need to have them at the proper length because floating-ui uses that\n // information for list navigation.\n\n const map = useRefWithInit(createMap).current;\n // `mapTick` uses a counter rather than objects for low precision-loss risk and better memory efficiency\n const [mapTick, setMapTick] = React.useState(0);\n const lastTickRef = React.useRef(mapTick);\n const register = useStableCallback((node, metadata) => {\n map.set(node, metadata ?? null);\n lastTickRef.current += 1;\n setMapTick(lastTickRef.current);\n });\n const unregister = useStableCallback(node => {\n map.delete(node);\n lastTickRef.current += 1;\n setMapTick(lastTickRef.current);\n });\n const sortedMap = React.useMemo(() => {\n // `mapTick` is the `useMemo` trigger as `map` is stable.\n disableEslintWarning(mapTick);\n const newMap = new Map();\n // Filter out disconnected elements before sorting to avoid inconsistent\n // compareDocumentPosition results when elements are detached from the DOM.\n const sortedNodes = Array.from(map.keys()).filter(node => node.isConnected).sort(sortByDocumentPosition);\n sortedNodes.forEach((node, index) => {\n const metadata = map.get(node) ?? {};\n newMap.set(node, {\n ...metadata,\n index\n });\n });\n return newMap;\n }, [map, mapTick]);\n useIsoLayoutEffect(() => {\n if (typeof MutationObserver !== 'function' || sortedMap.size === 0) {\n return undefined;\n }\n const mutationObserver = new MutationObserver(entries => {\n const diff = new Set();\n const updateDiff = node => diff.has(node) ? diff.delete(node) : diff.add(node);\n entries.forEach(entry => {\n entry.removedNodes.forEach(updateDiff);\n entry.addedNodes.forEach(updateDiff);\n });\n if (diff.size === 0) {\n lastTickRef.current += 1;\n setMapTick(lastTickRef.current);\n }\n });\n sortedMap.forEach((_, node) => {\n if (node.parentElement) {\n mutationObserver.observe(node.parentElement, {\n childList: true\n });\n }\n });\n return () => {\n mutationObserver.disconnect();\n };\n }, [sortedMap]);\n useIsoLayoutEffect(() => {\n const shouldUpdateLengths = lastTickRef.current === mapTick;\n if (shouldUpdateLengths) {\n if (elementsRef.current.length !== sortedMap.size) {\n elementsRef.current.length = sortedMap.size;\n }\n if (labelsRef && labelsRef.current.length !== sortedMap.size) {\n labelsRef.current.length = sortedMap.size;\n }\n nextIndexRef.current = sortedMap.size;\n }\n onMapChange(sortedMap);\n }, [onMapChange, sortedMap, elementsRef, labelsRef, mapTick]);\n useIsoLayoutEffect(() => {\n return () => {\n elementsRef.current = [];\n };\n }, [elementsRef]);\n useIsoLayoutEffect(() => {\n return () => {\n if (labelsRef) {\n labelsRef.current = [];\n }\n };\n }, [labelsRef]);\n const subscribeMapChange = useStableCallback(fn => {\n listeners.add(fn);\n return () => {\n listeners.delete(fn);\n };\n });\n useIsoLayoutEffect(() => {\n listeners.forEach(l => l(sortedMap));\n }, [listeners, sortedMap]);\n const contextValue = React.useMemo(() => ({\n register,\n unregister,\n subscribeMapChange,\n elementsRef,\n labelsRef,\n nextIndexRef\n }), [register, unregister, subscribeMapChange, elementsRef, labelsRef, nextIndexRef]);\n return /*#__PURE__*/_jsx(CompositeListContext.Provider, {\n value: contextValue,\n children: children\n });\n}\nfunction createMap() {\n return new Map();\n}\nfunction createListeners() {\n return new Set();\n}\nfunction sortByDocumentPosition(a, b) {\n const position = a.compareDocumentPosition(b);\n if (position & Node.DOCUMENT_POSITION_FOLLOWING || position & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return -1;\n }\n if (position & Node.DOCUMENT_POSITION_PRECEDING || position & Node.DOCUMENT_POSITION_CONTAINS) {\n return 1;\n }\n return 0;\n}\nfunction disableEslintWarning(_) {}","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const SelectPositionerContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") SelectPositionerContext.displayName = \"SelectPositionerContext\";\nexport function useSelectPositionerContext() {\n const context = React.useContext(SelectPositionerContext);\n if (!context) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: SelectPositionerContext is missing. SelectPositioner parts must be placed within <Select.Positioner>.' : _formatErrorMessage(59));\n }\n return context;\n}","export function clearStyles(element, originalStyles) {\n if (element) {\n Object.assign(element.style, originalStyles);\n }\n}\nexport const LIST_FUNCTIONAL_STYLES = {\n position: 'relative',\n maxHeight: '100%',\n overflowX: 'hidden',\n overflowY: 'auto'\n};","'use client';\n\nimport * as React from 'react';\nimport { inertValue } from '@base-ui/utils/inertValue';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useScrollLock } from '@base-ui/utils/useScrollLock';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useStore } from '@base-ui/utils/store';\nimport { useSelectRootContext, useSelectFloatingContext } from \"../root/SelectRootContext.js\";\nimport { CompositeList } from \"../../composite/list/CompositeList.js\";\nimport { popupStateMapping } from \"../../utils/popupStateMapping.js\";\nimport { useAnchorPositioning } from \"../../utils/useAnchorPositioning.js\";\nimport { SelectPositionerContext } from \"./SelectPositionerContext.js\";\nimport { InternalBackdrop } from \"../../utils/InternalBackdrop.js\";\nimport { useRenderElement } from \"../../utils/useRenderElement.js\";\nimport { DROPDOWN_COLLISION_AVOIDANCE } from \"../../utils/constants.js\";\nimport { getDisabledMountTransitionStyles } from \"../../utils/getDisabledMountTransitionStyles.js\";\nimport { clearStyles } from \"../popup/utils.js\";\nimport { selectors } from \"../store.js\";\nimport { createChangeEventDetails } from \"../../utils/createBaseUIEventDetails.js\";\nimport { REASONS } from \"../../utils/reasons.js\";\nimport { findItemIndex, selectedValueIncludes } from \"../../utils/itemEquality.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst FIXED = {\n position: 'fixed'\n};\n\n/**\n * Positions the select popup.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nexport const SelectPositioner = /*#__PURE__*/React.forwardRef(function SelectPositioner(componentProps, forwardedRef) {\n const {\n anchor,\n positionMethod = 'absolute',\n className,\n render,\n side = 'bottom',\n align = 'center',\n sideOffset = 0,\n alignOffset = 0,\n collisionBoundary = 'clipping-ancestors',\n collisionPadding,\n arrowPadding = 5,\n sticky = false,\n disableAnchorTracking,\n alignItemWithTrigger = true,\n collisionAvoidance = DROPDOWN_COLLISION_AVOIDANCE,\n ...elementProps\n } = componentProps;\n const {\n store,\n listRef,\n labelsRef,\n alignItemWithTriggerActiveRef,\n selectedItemTextRef,\n valuesRef,\n initialValueRef,\n popupRef,\n setValue\n } = useSelectRootContext();\n const floatingRootContext = useSelectFloatingContext();\n const open = useStore(store, selectors.open);\n const mounted = useStore(store, selectors.mounted);\n const modal = useStore(store, selectors.modal);\n const value = useStore(store, selectors.value);\n const openMethod = useStore(store, selectors.openMethod);\n const positionerElement = useStore(store, selectors.positionerElement);\n const triggerElement = useStore(store, selectors.triggerElement);\n const isItemEqualToValue = useStore(store, selectors.isItemEqualToValue);\n const transitionStatus = useStore(store, selectors.transitionStatus);\n const scrollUpArrowRef = React.useRef(null);\n const scrollDownArrowRef = React.useRef(null);\n const [controlledAlignItemWithTrigger, setControlledAlignItemWithTrigger] = React.useState(alignItemWithTrigger);\n const alignItemWithTriggerActive = mounted && controlledAlignItemWithTrigger && openMethod !== 'touch';\n if (!mounted && controlledAlignItemWithTrigger !== alignItemWithTrigger) {\n setControlledAlignItemWithTrigger(alignItemWithTrigger);\n }\n useIsoLayoutEffect(() => {\n if (!mounted) {\n if (selectors.scrollUpArrowVisible(store.state)) {\n store.set('scrollUpArrowVisible', false);\n }\n if (selectors.scrollDownArrowVisible(store.state)) {\n store.set('scrollDownArrowVisible', false);\n }\n }\n }, [store, mounted]);\n React.useImperativeHandle(alignItemWithTriggerActiveRef, () => alignItemWithTriggerActive);\n useScrollLock((alignItemWithTriggerActive || modal) && open && openMethod !== 'touch', triggerElement);\n const positioning = useAnchorPositioning({\n anchor,\n floatingRootContext,\n positionMethod,\n mounted,\n side,\n sideOffset,\n align,\n alignOffset,\n arrowPadding,\n collisionBoundary,\n collisionPadding,\n sticky,\n disableAnchorTracking: disableAnchorTracking ?? alignItemWithTriggerActive,\n collisionAvoidance,\n keepMounted: true\n });\n const renderedSide = alignItemWithTriggerActive ? 'none' : positioning.side;\n const positionerStyles = alignItemWithTriggerActive ? FIXED : positioning.positionerStyles;\n const defaultProps = React.useMemo(() => {\n const hiddenStyles = {};\n if (!open) {\n hiddenStyles.pointerEvents = 'none';\n }\n return {\n role: 'presentation',\n hidden: !mounted,\n style: {\n ...positionerStyles,\n ...hiddenStyles\n }\n };\n }, [open, mounted, positionerStyles]);\n const state = {\n open,\n side: renderedSide,\n align: positioning.align,\n anchorHidden: positioning.anchorHidden\n };\n const setPositionerElement = useStableCallback(element => {\n store.set('positionerElement', element);\n });\n const element = useRenderElement('div', componentProps, {\n ref: [forwardedRef, setPositionerElement],\n state,\n stateAttributesMapping: popupStateMapping,\n props: [defaultProps, getDisabledMountTransitionStyles(transitionStatus), elementProps]\n });\n const prevMapSizeRef = React.useRef(0);\n const onMapChange = useStableCallback(map => {\n if (map.size === 0 && prevMapSizeRef.current === 0) {\n return;\n }\n if (valuesRef.current.length === 0) {\n return;\n }\n const prevSize = prevMapSizeRef.current;\n prevMapSizeRef.current = map.size;\n if (map.size === prevSize) {\n return;\n }\n const eventDetails = createChangeEventDetails(REASONS.none);\n if (prevSize !== 0 && !store.state.multiple && value !== null) {\n const selectedValueIndex = findItemIndex(valuesRef.current, value, isItemEqualToValue);\n if (selectedValueIndex === -1) {\n const initialSelectedValue = initialValueRef.current;\n const hasInitial = initialSelectedValue != null && findItemIndex(valuesRef.current, initialSelectedValue, isItemEqualToValue) !== -1;\n const nextValue = hasInitial ? initialSelectedValue : null;\n setValue(nextValue, eventDetails);\n if (nextValue === null) {\n store.set('selectedIndex', null);\n selectedItemTextRef.current = null;\n }\n }\n }\n if (prevSize !== 0 && store.state.multiple && Array.isArray(value)) {\n const hasVisibleItem = selectedItemValue => findItemIndex(valuesRef.current, selectedItemValue, isItemEqualToValue) !== -1;\n const nextValue = value.filter(selectedItemValue => hasVisibleItem(selectedItemValue));\n if (nextValue.length !== value.length || nextValue.some(selectedItemValue => !selectedValueIncludes(value, selectedItemValue, isItemEqualToValue))) {\n setValue(nextValue, eventDetails);\n if (nextValue.length === 0) {\n store.set('selectedIndex', null);\n selectedItemTextRef.current = null;\n }\n }\n }\n if (open && alignItemWithTriggerActive) {\n store.update({\n scrollUpArrowVisible: false,\n scrollDownArrowVisible: false\n });\n const stylesToClear = {\n height: ''\n };\n clearStyles(positionerElement, stylesToClear);\n clearStyles(popupRef.current, stylesToClear);\n }\n });\n const contextValue = React.useMemo(() => ({\n ...positioning,\n side: renderedSide,\n alignItemWithTriggerActive,\n setControlledAlignItemWithTrigger,\n scrollUpArrowRef,\n scrollDownArrowRef\n }), [positioning, renderedSide, alignItemWithTriggerActive, setControlledAlignItemWithTrigger]);\n return /*#__PURE__*/_jsx(CompositeList, {\n elementsRef: listRef,\n labelsRef: labelsRef,\n onMapChange: onMapChange,\n children: /*#__PURE__*/_jsxs(SelectPositionerContext.Provider, {\n value: contextValue,\n children: [mounted && modal && /*#__PURE__*/_jsx(InternalBackdrop, {\n inert: inertValue(!open),\n cutout: triggerElement\n }), element]\n })\n });\n});\nif (process.env.NODE_ENV !== \"production\") SelectPositioner.displayName = \"SelectPositioner\";","export function isMouseWithinBounds(event) {\n const targetRect = event.currentTarget.getBoundingClientRect();\n\n // Safari randomly fires `mouseleave` incorrectly when the item is\n // aligned to the trigger. This is a workaround to prevent the highlight\n // from being removed while the cursor is still within the bounds of the item.\n // https://github.com/mui/base-ui/issues/869\n const isWithinBounds = targetRect.top + 1 <= event.clientY && event.clientY <= targetRect.bottom - 1 && targetRect.left + 1 <= event.clientX && event.clientX <= targetRect.right - 1;\n return isWithinBounds;\n}","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const ToolbarRootContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") ToolbarRootContext.displayName = \"ToolbarRootContext\";\nexport function useToolbarRootContext(optional) {\n const context = React.useContext(ToolbarRootContext);\n if (context === undefined && !optional) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: ToolbarRootContext is missing. Toolbar parts must be placed within <Toolbar.Root>.' : _formatErrorMessage(69));\n }\n return context;\n}","'use client';\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { useTimeout } from '@base-ui/utils/useTimeout';\nimport { isWebKit } from '@base-ui/utils/detectBrowser';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { ownerDocument, ownerWindow } from '@base-ui/utils/owner';\nimport { isMouseWithinBounds } from '@base-ui/utils/isMouseWithinBounds';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useStore } from '@base-ui/utils/store';\nimport { useAnimationFrame } from '@base-ui/utils/useAnimationFrame';\nimport { FloatingFocusManager } from \"../../floating-ui-react/index.js\";\nimport { useSelectFloatingContext, useSelectRootContext } from \"../root/SelectRootContext.js\";\nimport { popupStateMapping } from \"../../utils/popupStateMapping.js\";\nimport { useSelectPositionerContext } from \"../positioner/SelectPositionerContext.js\";\nimport { styleDisableScrollbar } from \"../../utils/styles.js\";\nimport { transitionStatusMapping } from \"../../utils/stateAttributesMapping.js\";\nimport { useOpenChangeComplete } from \"../../utils/useOpenChangeComplete.js\";\nimport { useRenderElement } from \"../../utils/useRenderElement.js\";\nimport { selectors } from \"../store.js\";\nimport { clearStyles, LIST_FUNCTIONAL_STYLES } from \"./utils.js\";\nimport { createChangeEventDetails } from \"../../utils/createBaseUIEventDetails.js\";\nimport { REASONS } from \"../../utils/reasons.js\";\nimport { useToolbarRootContext } from \"../../toolbar/root/ToolbarRootContext.js\";\nimport { COMPOSITE_KEYS } from \"../../composite/composite.js\";\nimport { getDisabledMountTransitionStyles } from \"../../utils/getDisabledMountTransitionStyles.js\";\nimport { clamp } from \"../../utils/clamp.js\";\nimport { useCSPContext } from \"../../csp-provider/CSPContext.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst SCROLL_EPS_PX = 1;\nconst stateAttributesMapping = {\n ...popupStateMapping,\n ...transitionStatusMapping\n};\n\n/**\n * A container for the select list.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nexport const SelectPopup = /*#__PURE__*/React.forwardRef(function SelectPopup(componentProps, forwardedRef) {\n const {\n render,\n className,\n finalFocus,\n ...elementProps\n } = componentProps;\n const {\n store,\n popupRef,\n onOpenChangeComplete,\n setOpen,\n valueRef,\n selectedItemTextRef,\n keyboardActiveRef,\n multiple,\n handleScrollArrowVisibility,\n scrollHandlerRef,\n highlightItemOnHover\n } = useSelectRootContext();\n const {\n side,\n align,\n alignItemWithTriggerActive,\n setControlledAlignItemWithTrigger,\n scrollDownArrowRef,\n scrollUpArrowRef\n } = useSelectPositionerContext();\n const insideToolbar = useToolbarRootContext(true) != null;\n const floatingRootContext = useSelectFloatingContext();\n const {\n nonce,\n disableStyleElements\n } = useCSPContext();\n const highlightTimeout = useTimeout();\n const id = useStore(store, selectors.id);\n const open = useStore(store, selectors.open);\n const mounted = useStore(store, selectors.mounted);\n const popupProps = useStore(store, selectors.popupProps);\n const transitionStatus = useStore(store, selectors.transitionStatus);\n const triggerElement = useStore(store, selectors.triggerElement);\n const positionerElement = useStore(store, selectors.positionerElement);\n const listElement = useStore(store, selectors.listElement);\n const initialHeightRef = React.useRef(0);\n const reachedMaxHeightRef = React.useRef(false);\n const maxHeightRef = React.useRef(0);\n const initialPlacedRef = React.useRef(false);\n const originalPositionerStylesRef = React.useRef({});\n const scrollArrowFrame = useAnimationFrame();\n const handleScroll = useStableCallback(scroller => {\n if (!positionerElement || !popupRef.current || !initialPlacedRef.current) {\n return;\n }\n if (reachedMaxHeightRef.current || !alignItemWithTriggerActive) {\n handleScrollArrowVisibility();\n return;\n }\n const isTopPositioned = positionerElement.style.top === '0px';\n const isBottomPositioned = positionerElement.style.bottom === '0px';\n const currentHeight = positionerElement.getBoundingClientRect().height;\n const doc = ownerDocument(positionerElement);\n const positionerStyles = getComputedStyle(positionerElement);\n const marginTop = parseFloat(positionerStyles.marginTop);\n const marginBottom = parseFloat(positionerStyles.marginBottom);\n const maxPopupHeight = getMaxPopupHeight(getComputedStyle(popupRef.current));\n const maxAvailableHeight = Math.min(doc.documentElement.clientHeight - marginTop - marginBottom, maxPopupHeight);\n const scrollTop = scroller.scrollTop;\n const maxScrollTop = getMaxScrollTop(scroller);\n let nextPositionerHeight = 0;\n let nextScrollTop = null;\n let setReachedMax = false;\n let scrollToMax = false;\n const setHeight = height => {\n positionerElement.style.height = `${height}px`;\n };\n const handleSmallDiff = (diff, targetScrollTop) => {\n const heightDelta = clamp(diff, 0, maxAvailableHeight - currentHeight);\n if (heightDelta > 0) {\n // Consume the remaining scroll in height.\n setHeight(currentHeight + heightDelta);\n }\n scroller.scrollTop = targetScrollTop;\n if (maxAvailableHeight - (currentHeight + heightDelta) <= SCROLL_EPS_PX) {\n reachedMaxHeightRef.current = true;\n }\n handleScrollArrowVisibility();\n };\n if (isTopPositioned) {\n const diff = maxScrollTop - scrollTop;\n const idealHeight = currentHeight + diff;\n const nextHeight = Math.min(idealHeight, maxAvailableHeight);\n nextPositionerHeight = nextHeight;\n if (diff <= SCROLL_EPS_PX) {\n handleSmallDiff(diff, maxScrollTop);\n return;\n }\n if (maxAvailableHeight - nextHeight > SCROLL_EPS_PX) {\n scrollToMax = true;\n } else {\n setReachedMax = true;\n }\n } else if (isBottomPositioned) {\n const diff = scrollTop;\n const idealHeight = currentHeight + diff;\n const nextHeight = Math.min(idealHeight, maxAvailableHeight);\n const overshoot = idealHeight - maxAvailableHeight;\n nextPositionerHeight = nextHeight;\n if (diff <= SCROLL_EPS_PX) {\n handleSmallDiff(diff, 0);\n return;\n }\n if (maxAvailableHeight - nextHeight > SCROLL_EPS_PX) {\n nextScrollTop = 0;\n } else {\n setReachedMax = true;\n if (scrollTop < maxScrollTop) {\n nextScrollTop = scrollTop - (diff - overshoot);\n }\n }\n }\n nextPositionerHeight = Math.ceil(nextPositionerHeight);\n if (nextPositionerHeight !== 0) {\n setHeight(nextPositionerHeight);\n }\n if (scrollToMax || nextScrollTop != null) {\n // Recompute bounds after resizing (clientHeight likely changed).\n const nextMaxScrollTop = getMaxScrollTop(scroller);\n const target = scrollToMax ? nextMaxScrollTop : clamp(nextScrollTop, 0, nextMaxScrollTop);\n\n // Avoid adjustments that re-trigger scroll events forever.\n if (Math.abs(scroller.scrollTop - target) > SCROLL_EPS_PX) {\n scroller.scrollTop = target;\n }\n }\n if (setReachedMax || nextPositionerHeight >= maxAvailableHeight - SCROLL_EPS_PX) {\n reachedMaxHeightRef.current = true;\n }\n handleScrollArrowVisibility();\n });\n React.useImperativeHandle(scrollHandlerRef, () => handleScroll, [handleScroll]);\n useOpenChangeComplete({\n open,\n ref: popupRef,\n onComplete() {\n if (open) {\n onOpenChangeComplete?.(true);\n }\n }\n });\n const state = {\n open,\n transitionStatus,\n side,\n align\n };\n useIsoLayoutEffect(() => {\n if (!positionerElement || !popupRef.current || Object.keys(originalPositionerStylesRef.current).length) {\n return;\n }\n originalPositionerStylesRef.current = {\n top: positionerElement.style.top || '0',\n left: positionerElement.style.left || '0',\n right: positionerElement.style.right,\n height: positionerElement.style.height,\n bottom: positionerElement.style.bottom,\n minHeight: positionerElement.style.minHeight,\n maxHeight: positionerElement.style.maxHeight,\n marginTop: positionerElement.style.marginTop,\n marginBottom: positionerElement.style.marginBottom\n };\n }, [popupRef, positionerElement]);\n useIsoLayoutEffect(() => {\n if (open || alignItemWithTriggerActive) {\n return;\n }\n initialPlacedRef.current = false;\n reachedMaxHeightRef.current = false;\n initialHeightRef.current = 0;\n maxHeightRef.current = 0;\n clearStyles(positionerElement, originalPositionerStylesRef.current);\n }, [open, alignItemWithTriggerActive, positionerElement, popupRef]);\n useIsoLayoutEffect(() => {\n const popupElement = popupRef.current;\n if (!open || !triggerElement || !positionerElement || !popupElement || store.state.transitionStatus === 'ending') {\n return;\n }\n if (!alignItemWithTriggerActive) {\n initialPlacedRef.current = true;\n scrollArrowFrame.request(handleScrollArrowVisibility);\n popupElement.style.removeProperty('--transform-origin');\n return;\n }\n\n // Wait for `selectedItemTextRef.current` to be set.\n queueMicrotask(() => {\n // Ensure we remove any transforms that can affect the location of the popup\n // and therefore the calculations.\n const restoreTransformStyles = unsetTransformStyles(popupElement);\n popupElement.style.removeProperty('--transform-origin');\n try {\n const positionerStyles = getComputedStyle(positionerElement);\n const popupStyles = getComputedStyle(popupElement);\n const doc = ownerDocument(triggerElement);\n const win = ownerWindow(positionerElement);\n const triggerRect = triggerElement.getBoundingClientRect();\n const positionerRect = positionerElement.getBoundingClientRect();\n const triggerX = triggerRect.left;\n const triggerHeight = triggerRect.height;\n const scroller = listElement || popupElement;\n const scrollHeight = scroller.scrollHeight;\n const borderBottom = parseFloat(popupStyles.borderBottomWidth);\n const marginTop = parseFloat(positionerStyles.marginTop) || 10;\n const marginBottom = parseFloat(positionerStyles.marginBottom) || 10;\n const minHeight = parseFloat(positionerStyles.minHeight) || 100;\n const maxPopupHeight = getMaxPopupHeight(popupStyles);\n const paddingLeft = 5;\n const paddingRight = 5;\n const triggerCollisionThreshold = 20;\n const viewportHeight = doc.documentElement.clientHeight - marginTop - marginBottom;\n const viewportWidth = doc.documentElement.clientWidth;\n const availableSpaceBeneathTrigger = viewportHeight - triggerRect.bottom + triggerHeight;\n const textElement = selectedItemTextRef.current;\n const valueElement = valueRef.current;\n let textRect;\n let offsetX = 0;\n let offsetY = 0;\n if (textElement && valueElement) {\n const valueRect = valueElement.getBoundingClientRect();\n textRect = textElement.getBoundingClientRect();\n const valueLeftFromTriggerLeft = valueRect.left - triggerX;\n const textLeftFromPositionerLeft = textRect.left - positionerRect.left;\n const valueCenterFromPositionerTop = valueRect.top - triggerRect.top + valueRect.height / 2;\n const textCenterFromTriggerTop = textRect.top - positionerRect.top + textRect.height / 2;\n offsetX = valueLeftFromTriggerLeft - textLeftFromPositionerLeft;\n offsetY = textCenterFromTriggerTop - valueCenterFromPositionerTop;\n }\n const idealHeight = availableSpaceBeneathTrigger + offsetY + marginBottom + borderBottom;\n let height = Math.min(viewportHeight, idealHeight);\n const maxHeight = viewportHeight - marginTop - marginBottom;\n const scrollTop = idealHeight - height;\n const left = Math.max(paddingLeft, triggerX + offsetX);\n const maxRight = viewportWidth - paddingRight;\n const rightOverflow = Math.max(0, left + positionerRect.width - maxRight);\n positionerElement.style.left = `${left - rightOverflow}px`;\n positionerElement.style.height = `${height}px`;\n positionerElement.style.maxHeight = 'auto';\n positionerElement.style.marginTop = `${marginTop}px`;\n positionerElement.style.marginBottom = `${marginBottom}px`;\n popupElement.style.height = '100%';\n const maxScrollTop = scroller.scrollHeight - scroller.clientHeight;\n const isTopPositioned = scrollTop >= maxScrollTop;\n if (isTopPositioned) {\n height = Math.min(viewportHeight, positionerRect.height) - (scrollTop - maxScrollTop);\n }\n\n // When the trigger is too close to the top or bottom of the viewport, or the minHeight is\n // reached, we fallback to aligning the popup to the trigger as the UX is poor otherwise.\n const fallbackToAlignPopupToTrigger = triggerRect.top < triggerCollisionThreshold || triggerRect.bottom > viewportHeight - triggerCollisionThreshold || height < Math.min(scrollHeight, minHeight);\n\n // Safari doesn't position the popup correctly when pinch-zoomed.\n const isPinchZoomed = (win.visualViewport?.scale ?? 1) !== 1 && isWebKit;\n if (fallbackToAlignPopupToTrigger || isPinchZoomed) {\n initialPlacedRef.current = true;\n clearStyles(positionerElement, originalPositionerStylesRef.current);\n ReactDOM.flushSync(() => setControlledAlignItemWithTrigger(false));\n return;\n }\n if (isTopPositioned) {\n const topOffset = Math.max(0, viewportHeight - idealHeight);\n positionerElement.style.top = positionerRect.height >= maxHeight ? '0' : `${topOffset}px`;\n positionerElement.style.height = `${height}px`;\n scroller.scrollTop = scroller.scrollHeight - scroller.clientHeight;\n initialHeightRef.current = Math.max(minHeight, height);\n } else {\n positionerElement.style.bottom = '0';\n initialHeightRef.current = Math.max(minHeight, height);\n scroller.scrollTop = scrollTop;\n }\n if (textRect) {\n const popupTop = positionerRect.top;\n const popupHeight = positionerRect.height;\n const textCenterY = textRect.top + textRect.height / 2;\n const transformOriginY = popupHeight > 0 ? (textCenterY - popupTop) / popupHeight * 100 : 50;\n const clampedY = clamp(transformOriginY, 0, 100);\n popupElement.style.setProperty('--transform-origin', `50% ${clampedY}%`);\n }\n if (initialHeightRef.current === viewportHeight || height >= maxPopupHeight) {\n reachedMaxHeightRef.current = true;\n }\n handleScrollArrowVisibility();\n\n // Avoid the `onScroll` event logic from triggering before the popup is placed.\n setTimeout(() => {\n initialPlacedRef.current = true;\n });\n } finally {\n restoreTransformStyles();\n }\n });\n }, [store, open, positionerElement, triggerElement, valueRef, selectedItemTextRef, popupRef, handleScrollArrowVisibility, alignItemWithTriggerActive, setControlledAlignItemWithTrigger, scrollArrowFrame, scrollDownArrowRef, scrollUpArrowRef, listElement]);\n React.useEffect(() => {\n if (!alignItemWithTriggerActive || !positionerElement || !open) {\n return undefined;\n }\n const win = ownerWindow(positionerElement);\n function handleResize(event) {\n setOpen(false, createChangeEventDetails(REASONS.windowResize, event));\n }\n win.addEventListener('resize', handleResize);\n return () => {\n win.removeEventListener('resize', handleResize);\n };\n }, [setOpen, alignItemWithTriggerActive, positionerElement, open]);\n const defaultProps = {\n ...(listElement ? {\n role: 'presentation',\n 'aria-orientation': undefined\n } : {\n role: 'listbox',\n 'aria-multiselectable': multiple || undefined,\n id: `${id}-list`\n }),\n onKeyDown(event) {\n keyboardActiveRef.current = true;\n if (insideToolbar && COMPOSITE_KEYS.has(event.key)) {\n event.stopPropagation();\n }\n },\n onMouseMove() {\n keyboardActiveRef.current = false;\n },\n onPointerLeave(event) {\n if (!highlightItemOnHover || isMouseWithinBounds(event) || event.pointerType === 'touch') {\n return;\n }\n const popup = event.currentTarget;\n highlightTimeout.start(0, () => {\n store.set('activeIndex', null);\n popup.focus({\n preventScroll: true\n });\n });\n },\n onScroll(event) {\n if (listElement) {\n return;\n }\n handleScroll(event.currentTarget);\n },\n ...(alignItemWithTriggerActive && {\n style: listElement ? {\n height: '100%'\n } : LIST_FUNCTIONAL_STYLES\n })\n };\n const element = useRenderElement('div', componentProps, {\n ref: [forwardedRef, popupRef],\n state,\n stateAttributesMapping,\n props: [popupProps, defaultProps, getDisabledMountTransitionStyles(transitionStatus), {\n className: !listElement && alignItemWithTriggerActive ? styleDisableScrollbar.className : undefined\n }, elementProps]\n });\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [!disableStyleElements && styleDisableScrollbar.getElement(nonce), /*#__PURE__*/_jsx(FloatingFocusManager, {\n context: floatingRootContext,\n modal: false,\n disabled: !mounted,\n returnFocus: finalFocus,\n restoreFocus: true,\n children: element\n })]\n });\n});\nif (process.env.NODE_ENV !== \"production\") SelectPopup.displayName = \"SelectPopup\";\nfunction getMaxPopupHeight(popupStyles) {\n const maxHeightStyle = popupStyles.maxHeight || '';\n return maxHeightStyle.endsWith('px') ? parseFloat(maxHeightStyle) || Infinity : Infinity;\n}\nfunction getMaxScrollTop(scroller) {\n return Math.max(0, scroller.scrollHeight - scroller.clientHeight);\n}\nconst TRANSFORM_STYLE_RESETS = [['transform', 'none'], ['scale', '1'], ['translate', '0 0']];\nfunction unsetTransformStyles(popupElement) {\n const {\n style\n } = popupElement;\n const originalStyles = {};\n for (const [property, value] of TRANSFORM_STYLE_RESETS) {\n originalStyles[property] = style.getPropertyValue(property);\n style.setProperty(property, value, 'important');\n }\n return () => {\n for (const [property] of TRANSFORM_STYLE_RESETS) {\n const originalValue = originalStyles[property];\n if (originalValue) {\n style.setProperty(property, originalValue);\n } else {\n style.removeProperty(property);\n }\n }\n };\n}","'use client';\n\nimport * as React from 'react';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useStore } from '@base-ui/utils/store';\nimport { useSelectRootContext } from \"../root/SelectRootContext.js\";\nimport { useSelectPositionerContext } from \"../positioner/SelectPositionerContext.js\";\nimport { useRenderElement } from \"../../utils/useRenderElement.js\";\nimport { styleDisableScrollbar } from \"../../utils/styles.js\";\nimport { LIST_FUNCTIONAL_STYLES } from \"../popup/utils.js\";\nimport { selectors } from \"../store.js\";\n\n/**\n * A container for the select items.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nexport const SelectList = /*#__PURE__*/React.forwardRef(function SelectList(componentProps, forwardedRef) {\n const {\n className,\n render,\n ...elementProps\n } = componentProps;\n const {\n store,\n scrollHandlerRef\n } = useSelectRootContext();\n const {\n alignItemWithTriggerActive\n } = useSelectPositionerContext();\n const hasScrollArrows = useStore(store, selectors.hasScrollArrows);\n const openMethod = useStore(store, selectors.openMethod);\n const multiple = useStore(store, selectors.multiple);\n const id = useStore(store, selectors.id);\n const defaultProps = {\n id: `${id}-list`,\n role: 'listbox',\n 'aria-multiselectable': multiple || undefined,\n onScroll(event) {\n scrollHandlerRef.current?.(event.currentTarget);\n },\n ...(alignItemWithTriggerActive && {\n style: LIST_FUNCTIONAL_STYLES\n }),\n className: hasScrollArrows && openMethod !== 'touch' ? styleDisableScrollbar.className : undefined\n };\n const setListElement = useStableCallback(element => {\n store.set('listElement', element);\n });\n return useRenderElement('div', componentProps, {\n ref: [forwardedRef, setListElement],\n props: [defaultProps, elementProps]\n });\n});\nif (process.env.NODE_ENV !== \"production\") SelectList.displayName = \"SelectList\";","'use client';\n\nimport * as React from 'react';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useCompositeListContext } from \"./CompositeListContext.js\";\nexport let IndexGuessBehavior = /*#__PURE__*/function (IndexGuessBehavior) {\n IndexGuessBehavior[IndexGuessBehavior[\"None\"] = 0] = \"None\";\n IndexGuessBehavior[IndexGuessBehavior[\"GuessFromOrder\"] = 1] = \"GuessFromOrder\";\n return IndexGuessBehavior;\n}({});\n\n/**\n * Used to register a list item and its index (DOM position) in the `CompositeList`.\n */\nexport function useCompositeListItem(params = {}) {\n const {\n label,\n metadata,\n textRef,\n indexGuessBehavior,\n index: externalIndex\n } = params;\n const {\n register,\n unregister,\n subscribeMapChange,\n elementsRef,\n labelsRef,\n nextIndexRef\n } = useCompositeListContext();\n const indexRef = React.useRef(-1);\n const [index, setIndex] = React.useState(externalIndex ?? (indexGuessBehavior === IndexGuessBehavior.GuessFromOrder ? () => {\n if (indexRef.current === -1) {\n const newIndex = nextIndexRef.current;\n nextIndexRef.current += 1;\n indexRef.current = newIndex;\n }\n return indexRef.current;\n } : -1));\n const componentRef = React.useRef(null);\n const ref = React.useCallback(node => {\n componentRef.current = node;\n if (index !== -1 && node !== null) {\n elementsRef.current[index] = node;\n if (labelsRef) {\n const isLabelDefined = label !== undefined;\n labelsRef.current[index] = isLabelDefined ? label : textRef?.current?.textContent ?? node.textContent;\n }\n }\n }, [index, elementsRef, labelsRef, label, textRef]);\n useIsoLayoutEffect(() => {\n if (externalIndex != null) {\n return undefined;\n }\n const node = componentRef.current;\n if (node) {\n register(node, metadata);\n return () => {\n unregister(node);\n };\n }\n return undefined;\n }, [externalIndex, register, unregister, metadata]);\n useIsoLayoutEffect(() => {\n if (externalIndex != null) {\n return undefined;\n }\n return subscribeMapChange(map => {\n const i = componentRef.current ? map.get(componentRef.current)?.index : null;\n if (i != null) {\n setIndex(i);\n }\n });\n }, [externalIndex, subscribeMapChange, setIndex]);\n return React.useMemo(() => ({\n ref,\n index\n }), [index, ref]);\n}","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const SelectItemContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") SelectItemContext.displayName = \"SelectItemContext\";\nexport function useSelectItemContext() {\n const context = React.useContext(SelectItemContext);\n if (!context) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: SelectItemContext is missing. SelectItem parts must be placed within <Select.Item>.' : _formatErrorMessage(57));\n }\n return context;\n}","'use client';\n\nimport * as React from 'react';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useValueAsRef } from '@base-ui/utils/useValueAsRef';\nimport { isMouseWithinBounds } from '@base-ui/utils/isMouseWithinBounds';\nimport { useTimeout } from '@base-ui/utils/useTimeout';\nimport { useStore } from '@base-ui/utils/store';\nimport { useSelectRootContext } from \"../root/SelectRootContext.js\";\nimport { useCompositeListItem, IndexGuessBehavior } from \"../../composite/list/useCompositeListItem.js\";\nimport { useRenderElement } from \"../../utils/useRenderElement.js\";\nimport { SelectItemContext } from \"./SelectItemContext.js\";\nimport { selectors } from \"../store.js\";\nimport { useButton } from \"../../use-button/index.js\";\nimport { createChangeEventDetails } from \"../../utils/createBaseUIEventDetails.js\";\nimport { REASONS } from \"../../utils/reasons.js\";\nimport { compareItemEquality, removeItem } from \"../../utils/itemEquality.js\";\n\n/**\n * An individual option in the select popup.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const SelectItem = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function SelectItem(componentProps, forwardedRef) {\n const {\n render,\n className,\n value: itemValue = null,\n label,\n disabled = false,\n nativeButton = false,\n ...elementProps\n } = componentProps;\n const textRef = React.useRef(null);\n const listItem = useCompositeListItem({\n label,\n textRef,\n indexGuessBehavior: IndexGuessBehavior.GuessFromOrder\n });\n const {\n store,\n getItemProps,\n setOpen,\n setValue,\n selectionRef,\n typingRef,\n valuesRef,\n keyboardActiveRef,\n multiple,\n highlightItemOnHover\n } = useSelectRootContext();\n const highlightTimeout = useTimeout();\n const highlighted = useStore(store, selectors.isActive, listItem.index);\n const selected = useStore(store, selectors.isSelected, listItem.index, itemValue);\n const selectedByFocus = useStore(store, selectors.isSelectedByFocus, listItem.index);\n const isItemEqualToValue = useStore(store, selectors.isItemEqualToValue);\n const index = listItem.index;\n const hasRegistered = index !== -1;\n const itemRef = React.useRef(null);\n const indexRef = useValueAsRef(index);\n useIsoLayoutEffect(() => {\n if (!hasRegistered) {\n return undefined;\n }\n const values = valuesRef.current;\n values[index] = itemValue;\n return () => {\n delete values[index];\n };\n }, [hasRegistered, index, itemValue, valuesRef]);\n useIsoLayoutEffect(() => {\n if (!hasRegistered) {\n return undefined;\n }\n const selectedValue = store.state.value;\n let selectedCandidate = selectedValue;\n if (multiple && Array.isArray(selectedValue) && selectedValue.length > 0) {\n selectedCandidate = selectedValue[selectedValue.length - 1];\n }\n if (selectedCandidate !== undefined && compareItemEquality(itemValue, selectedCandidate, isItemEqualToValue)) {\n store.set('selectedIndex', index);\n }\n return undefined;\n }, [hasRegistered, index, multiple, isItemEqualToValue, store, itemValue]);\n const state = {\n disabled,\n selected,\n highlighted\n };\n const rootProps = getItemProps({\n active: highlighted,\n selected\n });\n // With our custom `focusItemOnHover` implementation, this interferes with the logic and can\n // cause the index state to be stuck when leaving the select popup.\n rootProps.onFocus = undefined;\n rootProps.id = undefined;\n const lastKeyRef = React.useRef(null);\n const pointerTypeRef = React.useRef('mouse');\n const didPointerDownRef = React.useRef(false);\n const {\n getButtonProps,\n buttonRef\n } = useButton({\n disabled,\n focusableWhenDisabled: true,\n native: nativeButton\n });\n function commitSelection(event) {\n const selectedValue = store.state.value;\n if (multiple) {\n const currentValue = Array.isArray(selectedValue) ? selectedValue : [];\n const nextValue = selected ? removeItem(currentValue, itemValue, isItemEqualToValue) : [...currentValue, itemValue];\n setValue(nextValue, createChangeEventDetails(REASONS.itemPress, event));\n } else {\n setValue(itemValue, createChangeEventDetails(REASONS.itemPress, event));\n setOpen(false, createChangeEventDetails(REASONS.itemPress, event));\n }\n }\n const defaultProps = {\n role: 'option',\n 'aria-selected': selected,\n tabIndex: highlighted ? 0 : -1,\n onFocus() {\n store.set('activeIndex', index);\n },\n onMouseEnter() {\n if (!keyboardActiveRef.current && store.state.selectedIndex === null && highlightItemOnHover) {\n store.set('activeIndex', index);\n }\n },\n onMouseMove() {\n if (highlightItemOnHover) {\n store.set('activeIndex', index);\n }\n },\n onMouseLeave(event) {\n if (!highlightItemOnHover || keyboardActiveRef.current || isMouseWithinBounds(event)) {\n return;\n }\n highlightTimeout.start(0, () => {\n if (store.state.activeIndex === index) {\n store.set('activeIndex', null);\n }\n });\n },\n onTouchStart() {\n selectionRef.current = {\n allowSelectedMouseUp: false,\n allowUnselectedMouseUp: false\n };\n },\n onKeyDown(event) {\n lastKeyRef.current = event.key;\n store.set('activeIndex', index);\n },\n onClick(event) {\n didPointerDownRef.current = false;\n\n // Prevent double commit on {Enter}\n if (event.type === 'keydown' && lastKeyRef.current === null) {\n return;\n }\n if (disabled || lastKeyRef.current === ' ' && typingRef.current || pointerTypeRef.current !== 'touch' && !highlighted) {\n return;\n }\n lastKeyRef.current = null;\n commitSelection(event.nativeEvent);\n },\n onPointerEnter(event) {\n pointerTypeRef.current = event.pointerType;\n },\n onPointerDown(event) {\n pointerTypeRef.current = event.pointerType;\n didPointerDownRef.current = true;\n },\n onMouseUp(event) {\n if (disabled) {\n return;\n }\n if (didPointerDownRef.current) {\n didPointerDownRef.current = false;\n return;\n }\n const disallowSelectedMouseUp = !selectionRef.current.allowSelectedMouseUp && selected;\n const disallowUnselectedMouseUp = !selectionRef.current.allowUnselectedMouseUp && !selected;\n if (disallowSelectedMouseUp || disallowUnselectedMouseUp || pointerTypeRef.current !== 'touch' && !highlighted) {\n return;\n }\n commitSelection(event.nativeEvent);\n }\n };\n const element = useRenderElement('div', componentProps, {\n ref: [buttonRef, forwardedRef, listItem.ref, itemRef],\n state,\n props: [rootProps, defaultProps, elementProps, getButtonProps]\n });\n const contextValue = React.useMemo(() => ({\n selected,\n indexRef,\n textRef,\n selectedByFocus,\n hasRegistered\n }), [selected, indexRef, textRef, selectedByFocus, hasRegistered]);\n return /*#__PURE__*/_jsx(SelectItemContext.Provider, {\n value: contextValue,\n children: element\n });\n}));\nif (process.env.NODE_ENV !== \"production\") SelectItem.displayName = \"SelectItem\";","'use client';\n\nimport * as React from 'react';\nimport { useSelectItemContext } from \"../item/SelectItemContext.js\";\nimport { useTransitionStatus } from \"../../utils/useTransitionStatus.js\";\nimport { useOpenChangeComplete } from \"../../utils/useOpenChangeComplete.js\";\nimport { useRenderElement } from \"../../utils/useRenderElement.js\";\nimport { transitionStatusMapping } from \"../../utils/stateAttributesMapping.js\";\n\n/**\n * Indicates whether the select item is selected.\n * Renders a `<span>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const SelectItemIndicator = /*#__PURE__*/React.forwardRef(function SelectItemIndicator(componentProps, forwardedRef) {\n const keepMounted = componentProps.keepMounted ?? false;\n const {\n selected\n } = useSelectItemContext();\n const shouldRender = keepMounted || selected;\n if (!shouldRender) {\n return null;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return /*#__PURE__*/_jsx(Inner, {\n ...componentProps,\n ref: forwardedRef\n });\n});\n\n/** The core implementation of the indicator is split here to avoid paying the hooks\n * costs unless the element needs to be mounted. */\nif (process.env.NODE_ENV !== \"production\") SelectItemIndicator.displayName = \"SelectItemIndicator\";\nconst Inner = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef((componentProps, forwardedRef) => {\n const {\n render,\n className,\n keepMounted,\n ...elementProps\n } = componentProps;\n const {\n selected\n } = useSelectItemContext();\n const indicatorRef = React.useRef(null);\n const {\n transitionStatus,\n setMounted\n } = useTransitionStatus(selected);\n const state = {\n selected,\n transitionStatus\n };\n const element = useRenderElement('span', componentProps, {\n ref: [forwardedRef, indicatorRef],\n state,\n props: [{\n 'aria-hidden': true,\n children: '✔️'\n }, elementProps],\n stateAttributesMapping: transitionStatusMapping\n });\n useOpenChangeComplete({\n open: selected,\n ref: indicatorRef,\n onComplete() {\n if (!selected) {\n setMounted(false);\n }\n }\n });\n return element;\n}));\nif (process.env.NODE_ENV !== \"production\") Inner.displayName = \"Inner\";","'use client';\n\nimport * as React from 'react';\nimport { useSelectRootContext } from \"../root/SelectRootContext.js\";\nimport { useSelectItemContext } from \"../item/SelectItemContext.js\";\nimport { useRenderElement } from \"../../utils/useRenderElement.js\";\n\n/**\n * A text label of the select item.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nexport const SelectItemText = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function SelectItemText(componentProps, forwardedRef) {\n const {\n indexRef,\n textRef,\n selectedByFocus,\n hasRegistered\n } = useSelectItemContext();\n const {\n selectedItemTextRef\n } = useSelectRootContext();\n const {\n className,\n render,\n ...elementProps\n } = componentProps;\n const localRef = React.useCallback(node => {\n if (!node || !hasRegistered) {\n return;\n }\n const hasNoSelectedItemText = selectedItemTextRef.current === null || !selectedItemTextRef.current.isConnected;\n if (selectedByFocus || hasNoSelectedItemText && indexRef.current === 0) {\n selectedItemTextRef.current = node;\n }\n }, [selectedItemTextRef, indexRef, selectedByFocus, hasRegistered]);\n const element = useRenderElement('div', componentProps, {\n ref: [localRef, forwardedRef, textRef],\n props: elementProps\n });\n return element;\n}));\nif (process.env.NODE_ENV !== \"production\") SelectItemText.displayName = \"SelectItemText\";","'use client';\n\nimport * as React from 'react';\nimport { useTimeout } from '@base-ui/utils/useTimeout';\nimport { useStore } from '@base-ui/utils/store';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useSelectRootContext } from \"../root/SelectRootContext.js\";\nimport { useSelectPositionerContext } from \"../positioner/SelectPositionerContext.js\";\nimport { useTransitionStatus } from \"../../utils/useTransitionStatus.js\";\nimport { useOpenChangeComplete } from \"../../utils/useOpenChangeComplete.js\";\nimport { useRenderElement } from \"../../utils/useRenderElement.js\";\nimport { selectors } from \"../store.js\";\n\n/**\n * @internal\n */\nexport const SelectScrollArrow = /*#__PURE__*/React.forwardRef(function SelectScrollArrow(componentProps, forwardedRef) {\n const {\n render,\n className,\n direction,\n keepMounted = false,\n ...elementProps\n } = componentProps;\n const {\n store,\n popupRef,\n listRef,\n handleScrollArrowVisibility,\n scrollArrowsMountedCountRef\n } = useSelectRootContext();\n const {\n side,\n scrollDownArrowRef,\n scrollUpArrowRef\n } = useSelectPositionerContext();\n const visibleSelector = direction === 'up' ? selectors.scrollUpArrowVisible : selectors.scrollDownArrowVisible;\n const stateVisible = useStore(store, visibleSelector);\n const openMethod = useStore(store, selectors.openMethod);\n\n // Scroll arrows are disabled for touch modality as they are a hover-only element.\n const visible = stateVisible && openMethod !== 'touch';\n const timeout = useTimeout();\n const scrollArrowRef = direction === 'up' ? scrollUpArrowRef : scrollDownArrowRef;\n const {\n transitionStatus,\n setMounted\n } = useTransitionStatus(visible);\n useIsoLayoutEffect(() => {\n scrollArrowsMountedCountRef.current += 1;\n if (!store.state.hasScrollArrows) {\n store.set('hasScrollArrows', true);\n }\n return () => {\n scrollArrowsMountedCountRef.current = Math.max(0, scrollArrowsMountedCountRef.current - 1);\n if (scrollArrowsMountedCountRef.current === 0 && store.state.hasScrollArrows) {\n store.set('hasScrollArrows', false);\n }\n };\n }, [store, scrollArrowsMountedCountRef]);\n useOpenChangeComplete({\n open: visible,\n ref: scrollArrowRef,\n onComplete() {\n if (!visible) {\n setMounted(false);\n }\n }\n });\n const state = {\n direction,\n visible,\n side,\n transitionStatus\n };\n const defaultProps = {\n 'aria-hidden': true,\n children: direction === 'up' ? '▲' : '▼',\n style: {\n position: 'absolute'\n },\n onMouseMove(event) {\n if (event.movementX === 0 && event.movementY === 0 || timeout.isStarted()) {\n return;\n }\n store.set('activeIndex', null);\n function scrollNextItem() {\n const scroller = store.state.listElement ?? popupRef.current;\n if (!scroller) {\n return;\n }\n store.set('activeIndex', null);\n handleScrollArrowVisibility();\n const isScrolledToTop = scroller.scrollTop === 0;\n const isScrolledToBottom = Math.round(scroller.scrollTop + scroller.clientHeight) >= scroller.scrollHeight;\n const list = listRef.current;\n\n // Fallback when there are no items registered yet.\n if (list.length === 0) {\n if (direction === 'up') {\n store.set('scrollUpArrowVisible', !isScrolledToTop);\n } else {\n store.set('scrollDownArrowVisible', !isScrolledToBottom);\n }\n }\n if (direction === 'up' && isScrolledToTop || direction === 'down' && isScrolledToBottom) {\n timeout.clear();\n return;\n }\n if ((store.state.listElement || popupRef.current) && listRef.current && listRef.current.length > 0) {\n const items = listRef.current;\n const scrollArrowHeight = scrollArrowRef.current?.offsetHeight || 0;\n if (direction === 'up') {\n let firstVisibleIndex = 0;\n const scrollTop = scroller.scrollTop + scrollArrowHeight;\n for (let i = 0; i < items.length; i += 1) {\n const item = items[i];\n if (item) {\n const itemTop = item.offsetTop;\n if (itemTop >= scrollTop) {\n firstVisibleIndex = i;\n break;\n }\n }\n }\n const targetIndex = Math.max(0, firstVisibleIndex - 1);\n if (targetIndex < firstVisibleIndex) {\n const targetItem = items[targetIndex];\n if (targetItem) {\n scroller.scrollTop = Math.max(0, targetItem.offsetTop - scrollArrowHeight);\n }\n } else {\n // Already at the first item; ensure we reach the absolute top to account for group labels.\n scroller.scrollTop = 0;\n }\n } else {\n let lastVisibleIndex = items.length - 1;\n const scrollBottom = scroller.scrollTop + scroller.clientHeight - scrollArrowHeight;\n for (let i = 0; i < items.length; i += 1) {\n const item = items[i];\n if (item) {\n const itemBottom = item.offsetTop + item.offsetHeight;\n if (itemBottom > scrollBottom) {\n lastVisibleIndex = Math.max(0, i - 1);\n break;\n }\n }\n }\n const targetIndex = Math.min(items.length - 1, lastVisibleIndex + 1);\n if (targetIndex > lastVisibleIndex) {\n const targetItem = items[targetIndex];\n if (targetItem) {\n scroller.scrollTop = targetItem.offsetTop + targetItem.offsetHeight - scroller.clientHeight + scrollArrowHeight;\n }\n } else {\n // Already at the last item; ensure we reach the true bottom.\n scroller.scrollTop = scroller.scrollHeight - scroller.clientHeight;\n }\n }\n }\n timeout.start(40, scrollNextItem);\n }\n timeout.start(40, scrollNextItem);\n },\n onMouseLeave() {\n timeout.clear();\n }\n };\n const element = useRenderElement('div', componentProps, {\n ref: [forwardedRef, scrollArrowRef],\n state,\n props: [defaultProps, elementProps]\n });\n const shouldRender = visible || keepMounted;\n if (!shouldRender) {\n return null;\n }\n return element;\n});\nif (process.env.NODE_ENV !== \"production\") SelectScrollArrow.displayName = \"SelectScrollArrow\";","'use client';\n\nimport * as React from 'react';\nimport { SelectScrollArrow } from \"../scroll-arrow/SelectScrollArrow.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * An element that scrolls the select popup down when hovered. Does not render when using touch input.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nexport const SelectScrollDownArrow = /*#__PURE__*/React.forwardRef(function SelectScrollDownArrow(props, forwardedRef) {\n return /*#__PURE__*/_jsx(SelectScrollArrow, {\n ...props,\n ref: forwardedRef,\n direction: \"down\"\n });\n});\nif (process.env.NODE_ENV !== \"production\") SelectScrollDownArrow.displayName = \"SelectScrollDownArrow\";","'use client';\n\nimport * as React from 'react';\nimport { SelectScrollArrow } from \"../scroll-arrow/SelectScrollArrow.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * An element that scrolls the select popup up when hovered. Does not render when using touch input.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nexport const SelectScrollUpArrow = /*#__PURE__*/React.forwardRef(function SelectScrollUpArrow(props, forwardedRef) {\n return /*#__PURE__*/_jsx(SelectScrollArrow, {\n ...props,\n ref: forwardedRef,\n direction: \"up\"\n });\n});\nif (process.env.NODE_ENV !== \"production\") SelectScrollUpArrow.displayName = \"SelectScrollUpArrow\";","import * as React from \"react\"\nimport { Select as SelectPrimitive } from \"@base-ui/react/select\"\n\nimport { cn } from \"@/lib/utils\"\nimport { ChevronDownIcon, CheckIcon, ChevronUpIcon } from \"lucide-react\"\n\nconst Select = SelectPrimitive.Root\n\nfunction SelectGroup({ className, ...props }: SelectPrimitive.Group.Props) {\n return (\n <SelectPrimitive.Group\n data-slot=\"select-group\"\n className={cn(\"scroll-my-1 p-1\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectValue({ className, ...props }: SelectPrimitive.Value.Props) {\n return (\n <SelectPrimitive.Value\n data-slot=\"select-value\"\n className={cn(\"flex flex-1 text-left\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: SelectPrimitive.Trigger.Props & {\n size?: \"sm\" | \"default\"\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input data-placeholder:text-muted-foreground dark:bg-input/30 dark:hover:bg-input/50 focus-visible:border-ring focus-visible:ring-ring/30 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 gap-1.5 rounded-lg border bg-transparent py-2 pr-2 pl-2.5 text-sm transition-colors select-none focus-visible:ring-2 aria-invalid:ring-2 data-[size=default]:h-8 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] *:data-[slot=select-value]:gap-1.5 [&_svg:not([class*='size-'])]:size-4 flex w-fit items-center justify-between whitespace-nowrap outline-none disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon\n render={\n <ChevronDownIcon className=\"text-muted-foreground size-4 pointer-events-none\" />\n }\n />\n </SelectPrimitive.Trigger>\n )\n}\n\nfunction SelectContent({\n className,\n children,\n side = \"bottom\",\n sideOffset = 4,\n align = \"center\",\n alignOffset = 0,\n alignItemWithTrigger = true,\n ...props\n}: SelectPrimitive.Popup.Props &\n Pick<\n SelectPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\" | \"alignItemWithTrigger\"\n >) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Positioner\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n alignItemWithTrigger={alignItemWithTrigger}\n className=\"isolate z-50\"\n >\n <SelectPrimitive.Popup\n data-slot=\"select-content\"\n data-align-trigger={alignItemWithTrigger}\n className={cn(\"bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-36 rounded-lg shadow-md ring-1 duration-100 data-[side=inline-start]:slide-in-from-right-2 data-[side=inline-end]:slide-in-from-left-2 relative isolate z-50 max-h-(--available-height) w-(--anchor-width) origin-(--transform-origin) overflow-x-hidden overflow-y-auto data-[align-trigger=true]:animate-none\", className )}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.List>{children}</SelectPrimitive.List>\n <SelectScrollDownButton />\n </SelectPrimitive.Popup>\n </SelectPrimitive.Positioner>\n </SelectPrimitive.Portal>\n )\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: SelectPrimitive.GroupLabel.Props) {\n return (\n <SelectPrimitive.GroupLabel\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-1.5 py-1 text-xs\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: SelectPrimitive.Item.Props) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2 relative flex w-full cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className\n )}\n {...props}\n >\n <SelectPrimitive.ItemText className=\"flex flex-1 gap-2 shrink-0 whitespace-nowrap\">\n {children}\n </SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator\n render={<span className=\"pointer-events-none absolute right-2 flex size-4 items-center justify-center\" />}\n >\n <CheckIcon className=\"pointer-events-none\" />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n )\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: SelectPrimitive.Separator.Props) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px pointer-events-none\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpArrow>) {\n return (\n <SelectPrimitive.ScrollUpArrow\n data-slot=\"select-scroll-up-button\"\n className={cn(\"bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4 top-0 w-full\", className)}\n {...props}\n >\n <ChevronUpIcon\n />\n </SelectPrimitive.ScrollUpArrow>\n )\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownArrow>) {\n return (\n <SelectPrimitive.ScrollDownArrow\n data-slot=\"select-scroll-down-button\"\n className={cn(\"bg-popover z-10 flex cursor-default items-center justify-center py-1 [&_svg:not([class*='size-'])]:size-4 bottom-0 w-full\", className)}\n {...props}\n >\n <ChevronDownIcon\n />\n </SelectPrimitive.ScrollDownArrow>\n )\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n}\n"],"names":["MutationObserver","_a","Subscribable","client","options","__privateAdd","_MutationObserver_instances","_client","_currentResult","_currentMutation","_mutateOptions","__privateSet","__privateMethod","updateResult_fn","prevOptions","__privateGet","shallowEqualObjects","hashKey","action","notify_fn","variables","state","getDefaultState","notifyManager","onMutateResult","context","_b","e","_d","_c","_f","_e","_h","_g","listener","useMutation","queryClient","useQueryClient","observer","React.useState","React.useEffect","result","React.useSyncExternalStore","React.useCallback","onStoreChange","mutate","mutateOptions","noop","shouldThrowError","__iconNode","Check","createLucideIcon","ChevronDown","ChevronUp","isDifferentGridRow","index","cols","prevRow","isIndexOutOfListBounds","listRef","getMinListIndex","disabledIndices","findNonDisabledListIndex","getMaxListIndex","startingIndex","decrement","amount","isListIndexDisabled","getGridNavigatedIndex","event","orientation","loopFocus","rtl","minIndex","maxIndex","prevIndex","stop","nextIndex","rows","rowIndexMap","hasRoleRow","currentRowEl","currentRowIndex","el","idx","rowEl","hasDomRows","row","navigateVertically","direction","currentRow","colInRow","nextRow","visited","targetRow","clampedCol","col","candidate","ARROW_UP","domBasedCandidate","stopEvent","maxCol","offset","ARROW_DOWN","floor","ARROW_LEFT","ARROW_RIGHT","lastRow","createGridCellMap","sizes","dense","cellMap","startIndex","width","height","itemPlaced","targetCells","i","j","cell","getGridCellIndexOfCorner","corner","firstCellIndex","sizeItem","getGridCellIndices","indices","cellIndex","element","FieldControl","React.forwardRef","componentProps","forwardedRef","render","className","idProp","nameProp","valueProp","disabledProp","onValueChange","defaultValue","autoFocus","elementProps","fieldState","fieldName","fieldDisabled","setTouched","setDirty","validityData","setFocused","setFilled","validationMode","validation","useFieldRootContext","disabled","name","labelId","useLabelableContext","id","useLabelableId","useIsoLayoutEffect","hasExternalValue","inputRef","React.useRef","activeElement","ownerDocument","valueUnwrapped","useControlled","isControlled","value","useField","useRenderElement","inputValue","createChangeEventDetails","REASONS.none","fieldValidityMapping","Input","props","_jsx","Field.Control","type","jsx","InputPrimitive","cn","useClick","store","dataRef","enabled","eventOption","toggle","ignoreMouse","stickIfOpen","touchOpenDelay","reason","REASONS.triggerPress","pointerTypeRef","frame","useAnimationFrame","touchOpenTimeout","useTimeout","reference","React.useMemo","pointerType","nativeEvent","open","isMouseLikePointerType","openEvent","openEventType","hasClickedOnInactiveTrigger","nextOpen","isTypeableElement","details","eventCurrentTarget","isClickLikeEvent","EMPTY_OBJECT","ESCAPE","doSwitch","vertical","horizontal","isMainOrientationKey","key","isMainOrientationToEndKey","isCrossOrientationOpenKey","isCrossOrientationCloseKey","useListNavigation","floatingElement","domReferenceElement","activeIndex","onNavigateProp","selectedIndex","allowEscape","nested","virtual","focusItemOnOpen","focusItemOnHover","openOnArrowKeyDown","parentOrientation","resetOnPointerLeave","externalTree","floatingFocusElement","getFloatingFocusElement","floatingFocusElementRef","useValueAsRef","parentId","useFloatingParentNodeId","tree","useFloatingTree","typeableComboboxReference","isTypeableCombobox","focusItemOnOpenRef","indexRef","keyRef","isPointerModalityRef","onNavigate","useStableCallback","previousOnNavigateRef","previousMountedRef","previousOpenRef","forceSyncFocusRef","forceScrollIntoViewRef","disabledIndicesRef","latestOpenRef","selectedIndexRef","resetOnPointerLeaveRef","focusItem","runFocus","item","enqueueFocus","initialItem","forceScrollIntoView","v","waitedItem","runs","waitForListPopulated","nodes","parent","node","activeEl","treeContainsActiveEl","contains","hasActiveIndex","syncCurrentTarget","currentTarget","relatedTarget","getParentOrientation","commonOnKeyDown","REASONS.listNavigation","isHTMLElement","currentIndex","minGridIndex","maxGridIndex","foundIndex","itemIndex","_","listIndex","ariaActiveDescendantProp","floating","target","getTarget","REASONS.focusOut","trigger","checkVirtualMouse","isVirtualClick","checkVirtualPointer","isVirtualPointerEvent","currentOpen","isArrowKey","isParentCrossOpenKey","isMainKey","isNavigationKey","isParentMainKey","useTypeahead","onMatchProp","onTypingChange","resetMs","timeout","stringRef","prevIndexRef","matchIndexRef","setTypingChange","onKeyDown","getMatchingIndex","list","orderedList","string","str","text","listContent","isNewSession","onBlur","next","currentDomReferenceElement","currentFloatingElement","withinReference","withinFloating","Card","size","CardHeader","CardTitle","CardDescription","CardContent","SelectRootContext","React.createContext","SelectFloatingContext","useSelectRootContext","React.useContext","_formatErrorMessage","useSelectFloatingContext","defaultItemEquality","itemValue","selectedValue","compareItemEquality","comparer","selectedValueIncludes","selectedValues","findItemIndex","itemValues","removeItem","serializeValue","isGroupedItems","items","hasNullItemLabel","group","stringifyAsLabel","itemToStringLabel","stringifyAsValue","itemToStringValue","resolveSelectedLabel","fallback","flatItems","g","match","resolveMultipleLabels","values","acc","React.Fragment","selectors","createSelector","multiple","storeValue","selectedItem","SelectRoot","openProp","defaultOpen","onOpenChange","autoComplete","readOnly","required","modal","actionsRef","onOpenChangeComplete","isItemEqualToValue","highlightItemOnHover","children","clearErrors","useFormContext","shouldValidateOnChange","generatedId","setValueUnwrapped","EMPTY_ARRAY","setOpenUnwrapped","labelsRef","popupRef","scrollHandlerRef","scrollArrowsMountedCountRef","valueRef","valuesRef","typingRef","keyboardActiveRef","selectedItemTextRef","selectionRef","alignItemWithTriggerActiveRef","mounted","setMounted","transitionStatus","useTransitionStatus","openMethod","interactionTypeProps","resetOpenInteractionType","useOpenInteractionType","useRefWithInit","Store","useStore","triggerElement","positionerElement","serializedValue","fieldStringValue","currentValue","controlRef","initialValueRef","registry","lastValue","lastIndex","useValueChanged","setOpen","eventDetails","REASONS.outsidePress","activeOption","handleUnmount","useOpenChangeComplete","React.useImperativeHandle","setValue","nextValue","handleScrollArrowVisibility","scroller","viewportTop","viewportBottom","shouldShowUp","shouldShowDown","floatingContext","useFloatingRootContext","click","dismiss","useDismiss","listNavigation","nextActiveIndex","typeahead","typing","getReferenceProps","getFloatingProps","getItemProps","useInteractions","mergedTriggerProps","mergeProps","useOnFirstRender","contextValue","ref","useMergedRefs","hasMultipleSelection","hiddenInputs","currentSerializedValue","_jsxs","handleChange","matchingValue","visuallyHiddenInput","visuallyHidden","getPseudoElementBounds","elementRect","beforeStyles","afterStyles","beforeWidth","beforeHeight","afterWidth","afterHeight","totalWidth","totalHeight","widthDiff","heightDiff","BOUNDARY_OFFSET","SELECTED_DELAY","UNSELECTED_DELAY","stateAttributesMapping","pressableTriggerOpenStateMapping","SelectTrigger","nativeButton","selectDisabled","triggerProps","listElement","rootId","hasSelectedValue","shouldCheckNullItemLabel","positionerRef","triggerRef","getButtonProps","buttonRef","useButton","setTriggerElement","mergedRef","timeoutFocus","timeoutMouseDown","selectedDelayTimeout","unselectedDelayTimeout","ariaControlsId","doc","handleMouseUp","mouseEvent","mouseUpTarget","bounds","REASONS.cancelOpen","SelectValue","childrenProp","placeholder","hasNullLabel","SelectIcon","triggerOpenStateMapping","SelectPortalContext","SelectPortal","portalProps","forceMount","FloatingPortal","CompositeListContext","useCompositeListContext","CompositeList","elementsRef","onMapChangeProp","onMapChange","nextIndexRef","listeners","createListeners","map","createMap","mapTick","setMapTick","lastTickRef","register","metadata","unregister","sortedMap","newMap","sortByDocumentPosition","mutationObserver","entries","diff","updateDiff","entry","subscribeMapChange","fn","l","a","b","position","SelectPositionerContext","useSelectPositionerContext","clearStyles","originalStyles","LIST_FUNCTIONAL_STYLES","FIXED","SelectPositioner","anchor","positionMethod","side","align","sideOffset","alignOffset","collisionBoundary","collisionPadding","arrowPadding","sticky","disableAnchorTracking","alignItemWithTrigger","collisionAvoidance","DROPDOWN_COLLISION_AVOIDANCE","floatingRootContext","scrollUpArrowRef","scrollDownArrowRef","controlledAlignItemWithTrigger","setControlledAlignItemWithTrigger","alignItemWithTriggerActive","useScrollLock","positioning","useAnchorPositioning","renderedSide","positionerStyles","defaultProps","hiddenStyles","setPositionerElement","popupStateMapping","getDisabledMountTransitionStyles","prevMapSizeRef","prevSize","initialSelectedValue","hasVisibleItem","selectedItemValue","stylesToClear","InternalBackdrop","inertValue","isMouseWithinBounds","targetRect","ToolbarRootContext","useToolbarRootContext","optional","SCROLL_EPS_PX","transitionStatusMapping","SelectPopup","finalFocus","insideToolbar","nonce","disableStyleElements","useCSPContext","highlightTimeout","popupProps","initialHeightRef","reachedMaxHeightRef","maxHeightRef","initialPlacedRef","originalPositionerStylesRef","scrollArrowFrame","handleScroll","isTopPositioned","isBottomPositioned","currentHeight","marginTop","marginBottom","maxPopupHeight","getMaxPopupHeight","maxAvailableHeight","scrollTop","maxScrollTop","getMaxScrollTop","nextPositionerHeight","nextScrollTop","setReachedMax","scrollToMax","setHeight","handleSmallDiff","targetScrollTop","heightDelta","clamp","idealHeight","nextHeight","overshoot","nextMaxScrollTop","popupElement","restoreTransformStyles","unsetTransformStyles","popupStyles","win","ownerWindow","triggerRect","positionerRect","triggerX","triggerHeight","scrollHeight","borderBottom","minHeight","paddingLeft","paddingRight","triggerCollisionThreshold","viewportHeight","viewportWidth","availableSpaceBeneathTrigger","textElement","valueElement","textRect","offsetX","offsetY","valueRect","valueLeftFromTriggerLeft","textLeftFromPositionerLeft","valueCenterFromPositionerTop","textCenterFromTriggerTop","maxHeight","left","maxRight","rightOverflow","fallbackToAlignPopupToTrigger","isPinchZoomed","isWebKit","ReactDOM.flushSync","topOffset","popupTop","popupHeight","textCenterY","transformOriginY","clampedY","handleResize","REASONS.windowResize","COMPOSITE_KEYS","popup","styleDisableScrollbar","FloatingFocusManager","maxHeightStyle","TRANSFORM_STYLE_RESETS","style","property","originalValue","SelectList","hasScrollArrows","setListElement","IndexGuessBehavior","useCompositeListItem","params","label","textRef","indexGuessBehavior","externalIndex","setIndex","newIndex","componentRef","isLabelDefined","SelectItemContext","useSelectItemContext","SelectItem","listItem","highlighted","selected","selectedByFocus","hasRegistered","itemRef","selectedCandidate","rootProps","lastKeyRef","didPointerDownRef","commitSelection","REASONS.itemPress","disallowSelectedMouseUp","disallowUnselectedMouseUp","SelectItemIndicator","keepMounted","Inner","React.memo","indicatorRef","SelectItemText","localRef","hasNoSelectedItemText","SelectScrollArrow","visibleSelector","stateVisible","visible","scrollArrowRef","scrollNextItem","isScrolledToTop","isScrolledToBottom","scrollArrowHeight","firstVisibleIndex","targetIndex","targetItem","lastVisibleIndex","scrollBottom","SelectScrollDownArrow","SelectScrollUpArrow","Select","SelectPrimitive.Root","SelectPrimitive.Value","jsxs","SelectPrimitive.Trigger","SelectPrimitive.Icon","ChevronDownIcon","SelectContent","SelectPrimitive.Portal","SelectPrimitive.Positioner","SelectPrimitive.Popup","SelectScrollUpButton","SelectPrimitive.List","SelectScrollDownButton","SelectPrimitive.Item","SelectPrimitive.ItemText","SelectPrimitive.ItemIndicator","CheckIcon","SelectPrimitive.ScrollUpArrow","ChevronUpIcon","SelectPrimitive.ScrollDownArrow"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,9,10,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41]}